@stuartshay/otel-graphql-types 1.0.0 → 1.0.95

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 +563 -24
  2. package/package.json +1 -1
  3. package/schema.graphql +1398 -5
package/index.d.ts CHANGED
@@ -1,211 +1,703 @@
1
1
  export type Maybe<T> = T | null;
2
2
  export type InputMaybe<T> = Maybe<T>;
3
- export type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };
4
- export type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };
5
- export type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };
6
- export type MakeEmpty<T extends { [key: string]: unknown }, K extends keyof T> = { [_ in K]?: never };
7
- export type Incremental<T> = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never };
8
3
  /** All built-in and custom scalars, mapped to their actual values */
9
4
  export interface Scalars {
10
- ID: { input: string; output: string; }
11
- String: { input: string; output: string; }
12
- Boolean: { input: boolean; output: boolean; }
13
- Int: { input: number; output: number; }
14
- Float: { input: number; output: number; }
15
- DateTime: { input: string; output: string; }
16
- JSON: { input: Record<string, unknown>; output: Record<string, unknown>; }
5
+ ID: { input: string; output: string };
6
+ String: { input: string; output: string };
7
+ Boolean: { input: boolean; output: boolean };
8
+ Int: { input: number; output: number };
9
+ Float: { input: number; output: number };
10
+ DateTime: { input: string; output: string };
11
+ JSON: { input: Record<string, unknown>; output: Record<string, unknown> };
17
12
  }
18
13
 
14
+ /** Per-day aggregate combining OwnTracks location stats and Garmin activity metrics. */
19
15
  export interface DailyActivitySummary {
20
16
  __typename?: 'DailyActivitySummary';
17
+ /** Calendar date in YYYY-MM-DD format */
21
18
  activity_date?: Maybe<Scalars['String']['output']>;
19
+ /** Mean horizontal GPS accuracy in meters */
22
20
  avg_accuracy?: Maybe<Scalars['Float']['output']>;
21
+ /** Mean heart rate across Garmin activities in BPM */
23
22
  avg_heart_rate?: Maybe<Scalars['Int']['output']>;
23
+ /** Number of Garmin activities recorded */
24
24
  garmin_activities?: Maybe<Scalars['Int']['output']>;
25
+ /** Garmin sport type for activities on this day */
25
26
  garmin_sport?: Maybe<Scalars['String']['output']>;
27
+ /** Highest device battery percentage observed */
26
28
  max_battery?: Maybe<Scalars['Int']['output']>;
29
+ /** Lowest device battery percentage observed */
27
30
  min_battery?: Maybe<Scalars['Int']['output']>;
31
+ /** OwnTracks device that reported data for this day */
28
32
  owntracks_device?: Maybe<Scalars['String']['output']>;
33
+ /** Number of OwnTracks GPS points recorded */
29
34
  owntracks_points?: Maybe<Scalars['Int']['output']>;
35
+ /** Total calories burned across Garmin activities */
30
36
  total_calories?: Maybe<Scalars['Int']['output']>;
37
+ /** Combined Garmin activity distance in km */
31
38
  total_distance_km?: Maybe<Scalars['Float']['output']>;
39
+ /** Combined Garmin activity duration in seconds */
32
40
  total_duration_seconds?: Maybe<Scalars['Float']['output']>;
33
41
  }
34
42
 
43
+ /** Paginated list of daily activity summaries. */
44
+ export interface DailySummaryConnection {
45
+ __typename?: 'DailySummaryConnection';
46
+ /** List of daily activity summary items in the current page */
47
+ items: Array<DailyActivitySummary>;
48
+ /** Maximum number of items per page */
49
+ limit: Scalars['Int']['output'];
50
+ /** Number of items skipped from the start */
51
+ offset: Scalars['Int']['output'];
52
+ /** Total number of items matching the query */
53
+ total: Scalars['Int']['output'];
54
+ }
55
+
56
+ /** Earliest and latest activity dates available in the daily activity summary view. */
57
+ export interface DailySummaryDateRange {
58
+ __typename?: 'DailySummaryDateRange';
59
+ /** Latest activity date with daily summary data (YYYY-MM-DD) */
60
+ max_date: Scalars['String']['output'];
61
+ /** Earliest activity date with daily summary data (YYYY-MM-DD) */
62
+ min_date: Scalars['String']['output'];
63
+ }
64
+
65
+ /** Distinct OwnTracks device identifier. */
35
66
  export interface DeviceInfo {
36
67
  __typename?: 'DeviceInfo';
68
+ /** OwnTracks device identifier */
37
69
  device_id: Scalars['String']['output'];
38
70
  }
39
71
 
72
+ /** Geodesic distance calculation result between two geographic points. */
40
73
  export interface DistanceResult {
41
74
  __typename?: 'DistanceResult';
75
+ /** Geodesic distance between the two points in meters */
42
76
  distance_meters: Scalars['Float']['output'];
77
+ /** Origin latitude in decimal degrees */
43
78
  from_lat: Scalars['Float']['output'];
79
+ /** Origin longitude in decimal degrees */
44
80
  from_lon: Scalars['Float']['output'];
81
+ /** Destination latitude in decimal degrees */
45
82
  to_lat: Scalars['Float']['output'];
83
+ /** Destination longitude in decimal degrees */
46
84
  to_lon: Scalars['Float']['output'];
47
85
  }
48
86
 
87
+ /** Summary of a Garmin Connect activity parsed from a FIT file. */
49
88
  export interface GarminActivity {
50
89
  __typename?: 'GarminActivity';
90
+ /** Garmin Connect activity identifier */
51
91
  activity_id: Scalars['String']['output'];
92
+ /** Aerobic training effect score */
93
+ aerobic_training_effect?: Maybe<Scalars['Float']['output']>;
94
+ /** Anaerobic training effect score */
95
+ anaerobic_training_effect?: Maybe<Scalars['Float']['output']>;
96
+ /** Average cadence in RPM */
52
97
  avg_cadence?: Maybe<Scalars['Int']['output']>;
98
+ /** Average heart rate in beats per minute */
53
99
  avg_heart_rate?: Maybe<Scalars['Int']['output']>;
100
+ /** Average pace in minutes per kilometre */
54
101
  avg_pace?: Maybe<Scalars['Float']['output']>;
102
+ /** Average respiration rate in breaths per minute */
103
+ avg_respiration_rate?: Maybe<Scalars['Int']['output']>;
104
+ /** Average speed in km/h */
55
105
  avg_speed_kmh?: Maybe<Scalars['Float']['output']>;
106
+ /** Average ambient temperature in degrees C */
56
107
  avg_temperature_c?: Maybe<Scalars['Int']['output']>;
108
+ /** Total calories burned */
57
109
  calories?: Maybe<Scalars['Int']['output']>;
110
+ /** UTC timestamp when the record was inserted */
58
111
  created_at?: Maybe<Scalars['String']['output']>;
112
+ /** Recording device metadata (manufacturer, model, firmware) */
113
+ device?: Maybe<GarminDevice>;
114
+ /** Device manufacturer (e.g. garmin) */
59
115
  device_manufacturer?: Maybe<Scalars['String']['output']>;
116
+ /** Total distance in kilometres */
60
117
  distance_km?: Maybe<Scalars['Float']['output']>;
118
+ /** Active duration in seconds (excludes pauses) */
61
119
  duration_seconds?: Maybe<Scalars['Float']['output']>;
120
+ /** Activity end time in UTC */
62
121
  end_time?: Maybe<Scalars['String']['output']>;
122
+ /** Exercise load score */
123
+ exercise_load?: Maybe<Scalars['Int']['output']>;
124
+ /** Whether this activity has usable heart-rate data in summary or track points */
125
+ hr_available: Scalars['Boolean']['output'];
126
+ /** Maximum cadence in RPM */
63
127
  max_cadence?: Maybe<Scalars['Int']['output']>;
128
+ /** Maximum heart rate in beats per minute */
64
129
  max_heart_rate?: Maybe<Scalars['Int']['output']>;
130
+ /** Maximum respiration rate in breaths per minute */
131
+ max_respiration_rate?: Maybe<Scalars['Int']['output']>;
132
+ /** Maximum speed in km/h */
65
133
  max_speed_kmh?: Maybe<Scalars['Float']['output']>;
134
+ /** Maximum ambient temperature in degrees C */
66
135
  max_temperature_c?: Maybe<Scalars['Int']['output']>;
136
+ /** Minimum heart rate in beats per minute */
137
+ min_heart_rate?: Maybe<Scalars['Int']['output']>;
138
+ /** Minimum respiration rate in breaths per minute */
139
+ min_respiration_rate?: Maybe<Scalars['Int']['output']>;
140
+ /** Minimum ambient temperature in degrees C */
67
141
  min_temperature_c?: Maybe<Scalars['Int']['output']>;
142
+ /** Moderate intensity minutes */
143
+ moderate_intensity_minutes?: Maybe<Scalars['Int']['output']>;
144
+ /** Distance over paved surfaces in kilometres */
145
+ paved_distance_km?: Maybe<Scalars['Float']['output']>;
146
+ /** Primary sport type (e.g. cycling, running) */
68
147
  sport: Scalars['String']['output'];
148
+ /** Activity start time in UTC */
69
149
  start_time?: Maybe<Scalars['String']['output']>;
150
+ /** Sub-sport classification (e.g. road, trail) */
70
151
  sub_sport?: Maybe<Scalars['String']['output']>;
152
+ /** Estimated sweat loss in millilitres */
153
+ sweat_loss_ml?: Maybe<Scalars['Int']['output']>;
154
+ /** Total elevation gain in meters */
71
155
  total_ascent_m?: Maybe<Scalars['Float']['output']>;
156
+ /** Total elevation loss in meters */
72
157
  total_descent_m?: Maybe<Scalars['Float']['output']>;
158
+ /** Raw total distance in meters from FIT file */
73
159
  total_distance?: Maybe<Scalars['Float']['output']>;
160
+ /** Total elapsed time in seconds (includes pauses) */
74
161
  total_elapsed_time?: Maybe<Scalars['Float']['output']>;
162
+ /** Total intensity minutes */
163
+ total_intensity_minutes?: Maybe<Scalars['Int']['output']>;
164
+ /** Total activity strokes */
165
+ total_strokes?: Maybe<Scalars['Int']['output']>;
166
+ /** Total timer time in seconds (active recording) */
75
167
  total_timer_time?: Maybe<Scalars['Float']['output']>;
168
+ /** Number of GPS track points in this activity */
76
169
  track_point_count?: Maybe<Scalars['Int']['output']>;
170
+ /** Distance over unpaved surfaces in kilometres */
171
+ unpaved_distance_km?: Maybe<Scalars['Float']['output']>;
172
+ /** UTC timestamp when the FIT file was uploaded */
77
173
  uploaded_at?: Maybe<Scalars['String']['output']>;
174
+ /** Vigorous intensity minutes */
175
+ vigorous_intensity_minutes?: Maybe<Scalars['Int']['output']>;
78
176
  }
79
177
 
178
+ /** Full reverse-geocoded address attached to a Garmin activity waypoint. */
179
+ export interface GarminActivityAddress {
180
+ __typename?: 'GarminActivityAddress';
181
+ /** Parent Garmin activity identifier */
182
+ activity_id: Scalars['String']['output'];
183
+ /** Pelias confidence score (0-1) */
184
+ confidence?: Maybe<Scalars['Float']['output']>;
185
+ /** Country name */
186
+ country?: Maybe<Scalars['String']['output']>;
187
+ /** Full formatted address label from Pelias */
188
+ display_address?: Maybe<Scalars['String']['output']>;
189
+ /** UTC timestamp when geocoding was performed */
190
+ geocoded_at?: Maybe<Scalars['String']['output']>;
191
+ /** House or building number */
192
+ housenumber?: Maybe<Scalars['String']['output']>;
193
+ /** GPS latitude in decimal degrees (WGS 84) */
194
+ latitude: Scalars['Float']['output'];
195
+ /** City or town */
196
+ locality?: Maybe<Scalars['String']['output']>;
197
+ /** GPS longitude in decimal degrees (WGS 84) */
198
+ longitude: Scalars['Float']['output'];
199
+ /** Neighbourhood name */
200
+ neighbourhood?: Maybe<Scalars['String']['output']>;
201
+ /** Postal or ZIP code */
202
+ postalcode?: Maybe<Scalars['String']['output']>;
203
+ /** State or province */
204
+ region?: Maybe<Scalars['String']['output']>;
205
+ /** Geocoding status: success, no_coverage, error, pending */
206
+ status: Scalars['String']['output'];
207
+ /** Street name */
208
+ street?: Maybe<Scalars['String']['output']>;
209
+ /** UTC timestamp of the track point this address was derived from */
210
+ timestamp: Scalars['DateTime']['output'];
211
+ /** garmin_track_points.id this address was geocoded from */
212
+ track_point_id: Scalars['Int']['output'];
213
+ /** Role of this waypoint within the activity: start, end, or waypoint */
214
+ waypoint_kind: Scalars['String']['output'];
215
+ }
216
+
217
+ /** Paginated list of Garmin activities. */
80
218
  export interface GarminActivityConnection {
81
219
  __typename?: 'GarminActivityConnection';
220
+ /** List of Garmin activity items in the current page */
82
221
  items: Array<GarminActivity>;
222
+ /** Maximum number of items per page */
83
223
  limit: Scalars['Int']['output'];
224
+ /** Number of items skipped from the start */
84
225
  offset: Scalars['Int']['output'];
226
+ /** Total number of items matching the query */
85
227
  total: Scalars['Int']['output'];
86
228
  }
87
229
 
230
+ /** Aggregated Garmin activity totals for a single time bucket (week, month, or year). */
231
+ export interface GarminActivityTotal {
232
+ __typename?: 'GarminActivityTotal';
233
+ /** Number of activities in the period */
234
+ activity_count: Scalars['Int']['output'];
235
+ /** Start date of the period bucket (DATE_TRUNC of week/month/year) */
236
+ period_start: Scalars['String']['output'];
237
+ /** Sum of elevation gain in meters */
238
+ total_ascent_m?: Maybe<Scalars['Int']['output']>;
239
+ /** Sum of calories burned */
240
+ total_calories?: Maybe<Scalars['Int']['output']>;
241
+ /** Sum of distance in kilometres */
242
+ total_distance_km?: Maybe<Scalars['Float']['output']>;
243
+ /** Sum of active duration in seconds (excludes pauses) */
244
+ total_duration_seconds?: Maybe<Scalars['Int']['output']>;
245
+ }
246
+
247
+ /** Lightweight track point optimised for time-series chart rendering. */
248
+ export interface GarminChartPoint {
249
+ __typename?: 'GarminChartPoint';
250
+ /** Elevation above sea level in meters */
251
+ altitude?: Maybe<Scalars['Float']['output']>;
252
+ /** Pedal/step cadence in RPM */
253
+ cadence?: Maybe<Scalars['Int']['output']>;
254
+ /** Cumulative distance from activity start in km */
255
+ distance_from_start_km?: Maybe<Scalars['Float']['output']>;
256
+ /** Heart rate in beats per minute */
257
+ heart_rate?: Maybe<Scalars['Int']['output']>;
258
+ /** Heart-rate zone index (1-5) */
259
+ hr_zone?: Maybe<Scalars['Int']['output']>;
260
+ /** GPS latitude in decimal degrees (WGS 84) */
261
+ latitude: Scalars['Float']['output'];
262
+ /** GPS longitude in decimal degrees (WGS 84) */
263
+ longitude: Scalars['Float']['output'];
264
+ /** Respiration rate in breaths per minute */
265
+ respiration_rate?: Maybe<Scalars['Int']['output']>;
266
+ /** Instantaneous speed in km/h */
267
+ speed_kmh?: Maybe<Scalars['Float']['output']>;
268
+ /** Ambient temperature in degrees C */
269
+ temperature_c?: Maybe<Scalars['Float']['output']>;
270
+ /** UTC timestamp of the data point */
271
+ timestamp: Scalars['DateTime']['output'];
272
+ }
273
+
274
+ /** Earliest and latest timestamps in the Garmin activities table. */
275
+ export interface GarminDateRange {
276
+ __typename?: 'GarminDateRange';
277
+ /** Latest Garmin activity timestamp (ISO 8601) */
278
+ max_date: Scalars['DateTime']['output'];
279
+ /** Earliest Garmin activity timestamp (ISO 8601) */
280
+ min_date: Scalars['DateTime']['output'];
281
+ }
282
+
283
+ /** Recording device metadata captured from a Garmin activity's FIT file. */
284
+ export interface GarminDevice {
285
+ __typename?: 'GarminDevice';
286
+ /** Recording device serial number */
287
+ device_id?: Maybe<Scalars['Float']['output']>;
288
+ /** Raw Garmin product enum id from the FIT file (e.g. 4061) */
289
+ garmin_product?: Maybe<Scalars['Int']['output']>;
290
+ /** Device manufacturer (e.g. garmin) */
291
+ manufacturer?: Maybe<Scalars['String']['output']>;
292
+ /** Friendly device model name (e.g. Edge 540 Solar) */
293
+ model?: Maybe<Scalars['String']['output']>;
294
+ /** Device firmware/software version (e.g. 31.30) */
295
+ software_version?: Maybe<Scalars['String']['output']>;
296
+ }
297
+
298
+ /** Result payload returned when triggering an on-demand Garmin sync. */
299
+ export interface GarminSyncTriggerResult {
300
+ __typename?: 'GarminSyncTriggerResult';
301
+ /** True when a new sync run was accepted and triggered */
302
+ accepted: Scalars['Boolean']['output'];
303
+ /** Effective lookback value, when provided */
304
+ lookback?: Maybe<Scalars['Int']['output']>;
305
+ /** Human-readable status message from upstream sync service */
306
+ message: Scalars['String']['output'];
307
+ /** UTC timestamp when an already-running sync started */
308
+ started_at?: Maybe<Scalars['String']['output']>;
309
+ /** Sync trigger status (e.g. accepted, conflict, bad_request, error) */
310
+ status: Scalars['String']['output'];
311
+ /** UTC timestamp when sync was triggered */
312
+ triggered_at?: Maybe<Scalars['String']['output']>;
313
+ /** Effective sync window in hours */
314
+ window_hours?: Maybe<Scalars['Int']['output']>;
315
+ /** Window start timestamp computed by upstream service, when available */
316
+ window_start?: Maybe<Scalars['String']['output']>;
317
+ }
318
+
319
+ /** Individual GPS track point within a Garmin activity. */
88
320
  export interface GarminTrackPoint {
89
321
  __typename?: 'GarminTrackPoint';
322
+ /** Parent Garmin activity identifier */
90
323
  activity_id: Scalars['String']['output'];
324
+ /** Compact reverse-geocoded address summary, when geocoded */
325
+ address?: Maybe<GeocodedAddressSummary>;
326
+ /** Elevation above sea level in meters */
91
327
  altitude?: Maybe<Scalars['Float']['output']>;
328
+ /** Pedal/step cadence in RPM */
92
329
  cadence?: Maybe<Scalars['Int']['output']>;
330
+ /** UTC timestamp when the record was inserted */
93
331
  created_at?: Maybe<Scalars['String']['output']>;
332
+ /** Cumulative distance from activity start in km */
94
333
  distance_from_start_km?: Maybe<Scalars['Float']['output']>;
334
+ /** Effort classification label */
335
+ effort_level?: Maybe<Scalars['String']['output']>;
336
+ /** Heart rate in beats per minute */
95
337
  heart_rate?: Maybe<Scalars['Int']['output']>;
338
+ /** Heart-rate zone index (1-5) */
339
+ hr_zone?: Maybe<Scalars['Int']['output']>;
340
+ /** Unique track point record identifier */
96
341
  id: Scalars['Int']['output'];
342
+ /** GPS latitude in decimal degrees (WGS 84) */
97
343
  latitude: Scalars['Float']['output'];
344
+ /** GPS longitude in decimal degrees (WGS 84) */
98
345
  longitude: Scalars['Float']['output'];
346
+ /** Respiration rate in breaths per minute */
347
+ respiration_rate?: Maybe<Scalars['Int']['output']>;
348
+ /** Instantaneous speed in km/h */
99
349
  speed_kmh?: Maybe<Scalars['Float']['output']>;
350
+ /** Road or terrain type */
351
+ surface_type?: Maybe<Scalars['String']['output']>;
352
+ /** Ambient temperature in degrees C */
100
353
  temperature_c?: Maybe<Scalars['Float']['output']>;
354
+ /** UTC timestamp of the track point recording */
101
355
  timestamp: Scalars['DateTime']['output'];
102
356
  }
103
357
 
358
+ /** Paginated list of Garmin track points. */
104
359
  export interface GarminTrackPointConnection {
105
360
  __typename?: 'GarminTrackPointConnection';
361
+ /** List of track point items in the current page */
106
362
  items: Array<GarminTrackPoint>;
363
+ /** Maximum number of items per page */
107
364
  limit: Scalars['Int']['output'];
365
+ /** Number of items skipped from the start */
108
366
  offset: Scalars['Int']['output'];
367
+ /** Total number of items matching the query */
368
+ total: Scalars['Int']['output'];
369
+ }
370
+
371
+ /** Reverse-geocoded address components from Pelias. */
372
+ export interface GeocodedAddress {
373
+ __typename?: 'GeocodedAddress';
374
+ /** Pelias confidence score (0-1) */
375
+ confidence?: Maybe<Scalars['Float']['output']>;
376
+ /** Country name */
377
+ country?: Maybe<Scalars['String']['output']>;
378
+ /** Full formatted address label from Pelias */
379
+ display_address?: Maybe<Scalars['String']['output']>;
380
+ /** UTC timestamp when geocoding was performed */
381
+ geocoded_at?: Maybe<Scalars['String']['output']>;
382
+ /** House or building number */
383
+ housenumber?: Maybe<Scalars['String']['output']>;
384
+ /** City or town */
385
+ locality?: Maybe<Scalars['String']['output']>;
386
+ /** Neighbourhood name */
387
+ neighbourhood?: Maybe<Scalars['String']['output']>;
388
+ /** Postal or ZIP code */
389
+ postalcode?: Maybe<Scalars['String']['output']>;
390
+ /** State or province */
391
+ region?: Maybe<Scalars['String']['output']>;
392
+ /** Geocoding status: success, no_coverage, error, pending */
393
+ status: Scalars['String']['output'];
394
+ /** Street name */
395
+ street?: Maybe<Scalars['String']['output']>;
396
+ }
397
+
398
+ /** Compact reverse-geocoded address summary embedded in track-point payloads. */
399
+ export interface GeocodedAddressSummary {
400
+ __typename?: 'GeocodedAddressSummary';
401
+ /** Pelias confidence score (0-1) */
402
+ confidence?: Maybe<Scalars['Float']['output']>;
403
+ /** Country name */
404
+ country?: Maybe<Scalars['String']['output']>;
405
+ /** Full formatted address label from Pelias */
406
+ display_address?: Maybe<Scalars['String']['output']>;
407
+ /** UTC timestamp when geocoding was performed */
408
+ geocoded_at?: Maybe<Scalars['String']['output']>;
409
+ /** House or building number */
410
+ housenumber?: Maybe<Scalars['String']['output']>;
411
+ /** City or town */
412
+ locality?: Maybe<Scalars['String']['output']>;
413
+ /** Neighbourhood name */
414
+ neighbourhood?: Maybe<Scalars['String']['output']>;
415
+ /** Postal or ZIP code */
416
+ postalcode?: Maybe<Scalars['String']['output']>;
417
+ /** State or province */
418
+ region?: Maybe<Scalars['String']['output']>;
419
+ /** Geocoding status: success, no_coverage, error, pending */
420
+ status: Scalars['String']['output'];
421
+ /** Street name */
422
+ street?: Maybe<Scalars['String']['output']>;
423
+ /** Role of this waypoint within a Garmin activity (start, end, waypoint). Null for OwnTracks records. */
424
+ waypoint_kind?: Maybe<Scalars['String']['output']>;
425
+ }
426
+
427
+ /** Coverage statistics for a single geocoding source (owntracks or garmin). */
428
+ export interface GeocodingSourceStatus {
429
+ __typename?: 'GeocodingSourceStatus';
430
+ /** Number of records that failed geocoding */
431
+ errors: Scalars['Int']['output'];
432
+ /** Number of records outside Pelias coverage area */
433
+ no_coverage: Scalars['Int']['output'];
434
+ /** Number of records awaiting geocoding for this source */
435
+ pending: Scalars['Int']['output'];
436
+ /** Number of successfully geocoded records for this source */
437
+ success: Scalars['Int']['output'];
438
+ /** Total number of geocoded_addresses rows for this source */
109
439
  total: Scalars['Int']['output'];
110
440
  }
111
441
 
442
+ /** Coverage statistics for geocoded location records. */
443
+ export interface GeocodingStatus {
444
+ __typename?: 'GeocodingStatus';
445
+ /** Per-source breakdown of geocoding coverage (owntracks, garmin) */
446
+ by_source: GeocodingStatusBySource;
447
+ /** Percentage of locations with a geocoded address */
448
+ coverage_percent: Scalars['Float']['output'];
449
+ /** Number of locations that failed geocoding */
450
+ errors: Scalars['Int']['output'];
451
+ /** Number of locations with a geocoded address (any status) */
452
+ geocoded: Scalars['Int']['output'];
453
+ /** Number of locations outside Pelias coverage area */
454
+ no_coverage: Scalars['Int']['output'];
455
+ /** Number of locations awaiting geocoding */
456
+ pending: Scalars['Int']['output'];
457
+ /** Number of successfully geocoded locations */
458
+ success: Scalars['Int']['output'];
459
+ /** Total number of OwnTracks location records */
460
+ total_locations: Scalars['Int']['output'];
461
+ }
462
+
463
+ /** Per-source breakdown of geocoding coverage. */
464
+ export interface GeocodingStatusBySource {
465
+ __typename?: 'GeocodingStatusBySource';
466
+ /** Coverage stats for Garmin rows */
467
+ garmin: GeocodingSourceStatus;
468
+ /** Number of Garmin activities that have at least one address row */
469
+ garmin_activities_geocoded: Scalars['Int']['output'];
470
+ /** Total number of Garmin activities (denominator for activity-level coverage) */
471
+ garmin_activities_total: Scalars['Int']['output'];
472
+ /** Percentage of Garmin activities with at least one geocoded address */
473
+ garmin_coverage_percent: Scalars['Float']['output'];
474
+ /** Coverage stats for OwnTracks rows */
475
+ owntracks: GeocodingSourceStatus;
476
+ }
477
+
478
+ /** Result of triggering a batch geocoding operation. */
479
+ export interface GeocodingTriggerResult {
480
+ __typename?: 'GeocodingTriggerResult';
481
+ /** Number of records processed in this batch */
482
+ processed: Scalars['Int']['output'];
483
+ /** Number of records still awaiting geocoding */
484
+ remaining: Scalars['Int']['output'];
485
+ /** Number of records skipped via proximity deduplication */
486
+ skipped_dedup: Scalars['Int']['output'];
487
+ }
488
+
489
+ /** Service health status. */
112
490
  export interface HealthStatus {
113
491
  __typename?: 'HealthStatus';
492
+ /** Service health status (healthy or unhealthy) */
114
493
  status: Scalars['String']['output'];
494
+ /** Application version from VERSION file */
115
495
  version: Scalars['String']['output'];
116
496
  }
117
497
 
498
+ /** GPS location recorded by the OwnTracks mobile app. */
118
499
  export interface Location {
119
500
  __typename?: 'Location';
501
+ /** Horizontal accuracy of the GPS fix in meters */
120
502
  accuracy?: Maybe<Scalars['Float']['output']>;
503
+ /** Altitude above sea level in meters */
121
504
  altitude?: Maybe<Scalars['Float']['output']>;
505
+ /** Device battery level as a percentage (0-100) */
122
506
  battery?: Maybe<Scalars['Int']['output']>;
507
+ /** Battery charging state (0=unknown, 1=unplugged, 2=charging, 3=full) */
123
508
  battery_status?: Maybe<Scalars['Int']['output']>;
509
+ /** Network connection type (w=WiFi, m=mobile) */
124
510
  connection_type?: Maybe<Scalars['String']['output']>;
511
+ /** UTC timestamp when the record was inserted into the database */
125
512
  created_at?: Maybe<Scalars['String']['output']>;
513
+ /** OwnTracks device identifier (e.g. iphone_stuart) */
126
514
  device_id: Scalars['String']['output'];
515
+ /** Short formatted address from reverse geocoding */
516
+ display_address?: Maybe<Scalars['String']['output']>;
517
+ /** Unique location record identifier */
127
518
  id: Scalars['Int']['output'];
519
+ /** GPS latitude in decimal degrees (WGS 84) */
128
520
  latitude: Scalars['Float']['output'];
521
+ /** GPS longitude in decimal degrees (WGS 84) */
129
522
  longitude: Scalars['Float']['output'];
523
+ /** Two-character tracker ID set in the OwnTracks app */
130
524
  tid?: Maybe<Scalars['String']['output']>;
525
+ /** UTC timestamp when the device recorded the location */
131
526
  timestamp: Scalars['DateTime']['output'];
527
+ /** What triggered this location report (p=ping, c=circular, t=timer) */
132
528
  trigger?: Maybe<Scalars['String']['output']>;
529
+ /** Device velocity in km/h at time of report */
133
530
  velocity?: Maybe<Scalars['Float']['output']>;
134
531
  }
135
532
 
533
+ /** Paginated list of OwnTracks location records. */
136
534
  export interface LocationConnection {
137
535
  __typename?: 'LocationConnection';
536
+ /** List of location items in the current page */
138
537
  items: Array<Location>;
538
+ /** Maximum number of items per page */
139
539
  limit: Scalars['Int']['output'];
540
+ /** Number of items skipped from the start */
140
541
  offset: Scalars['Int']['output'];
542
+ /** Total number of items matching the query */
141
543
  total: Scalars['Int']['output'];
142
544
  }
143
545
 
546
+ /** Aggregate location count with optional filter context. */
144
547
  export interface LocationCount {
145
548
  __typename?: 'LocationCount';
549
+ /** Total number of location records matching the filter */
146
550
  count: Scalars['Int']['output'];
551
+ /** Date filter applied (YYYY-MM-DD), if any */
147
552
  date?: Maybe<Scalars['String']['output']>;
553
+ /** Device ID filter applied, if any */
148
554
  device_id?: Maybe<Scalars['String']['output']>;
149
555
  }
150
556
 
557
+ /** Earliest and latest timestamps in the locations table. */
558
+ export interface LocationDateRange {
559
+ __typename?: 'LocationDateRange';
560
+ /** Latest location timestamp (ISO 8601) */
561
+ max_date: Scalars['DateTime']['output'];
562
+ /** Earliest location timestamp (ISO 8601) */
563
+ min_date: Scalars['DateTime']['output'];
564
+ }
565
+
566
+ /** Full location detail including the original OwnTracks JSON payload. */
151
567
  export interface LocationDetail {
152
568
  __typename?: 'LocationDetail';
569
+ /** Horizontal accuracy of the GPS fix in meters */
153
570
  accuracy?: Maybe<Scalars['Float']['output']>;
571
+ /** Full reverse-geocoded address components from Pelias */
572
+ address?: Maybe<GeocodedAddress>;
573
+ /** Altitude above sea level in meters */
154
574
  altitude?: Maybe<Scalars['Float']['output']>;
575
+ /** Device battery level as a percentage (0-100) */
155
576
  battery?: Maybe<Scalars['Int']['output']>;
577
+ /** Battery charging state (0=unknown, 1=unplugged, 2=charging, 3=full) */
156
578
  battery_status?: Maybe<Scalars['Int']['output']>;
579
+ /** Network connection type (w=WiFi, m=mobile) */
157
580
  connection_type?: Maybe<Scalars['String']['output']>;
581
+ /** UTC timestamp when the record was inserted into the database */
158
582
  created_at?: Maybe<Scalars['String']['output']>;
583
+ /** OwnTracks device identifier (e.g. iphone_stuart) */
159
584
  device_id: Scalars['String']['output'];
585
+ /** Unique location record identifier */
160
586
  id: Scalars['Int']['output'];
587
+ /** GPS latitude in decimal degrees (WGS 84) */
161
588
  latitude: Scalars['Float']['output'];
589
+ /** GPS longitude in decimal degrees (WGS 84) */
162
590
  longitude: Scalars['Float']['output'];
591
+ /** Original OwnTracks JSON payload as received from the MQTT broker */
163
592
  raw_payload?: Maybe<Scalars['JSON']['output']>;
593
+ /** Two-character tracker ID set in the OwnTracks app */
164
594
  tid?: Maybe<Scalars['String']['output']>;
595
+ /** UTC timestamp when the device recorded the location */
165
596
  timestamp: Scalars['DateTime']['output'];
597
+ /** What triggered this location report (p=ping, c=circular, t=timer) */
166
598
  trigger?: Maybe<Scalars['String']['output']>;
599
+ /** Device velocity in km/h at time of report */
167
600
  velocity?: Maybe<Scalars['Float']['output']>;
168
601
  }
169
602
 
603
+ export interface Mutation {
604
+ __typename?: 'Mutation';
605
+ /** Trigger an on-demand Garmin sync in the upstream API. */
606
+ triggerGarminSync: GarminSyncTriggerResult;
607
+ /** Trigger batch reverse-geocoding of un-geocoded location records. */
608
+ triggerGeocoding: GeocodingTriggerResult;
609
+ }
610
+
611
+ export interface MutationTriggerGarminSyncArgs {
612
+ lookback?: InputMaybe<Scalars['Int']['input']>;
613
+ window_hours?: InputMaybe<Scalars['Int']['input']>;
614
+ }
615
+
616
+ export interface MutationTriggerGeocodingArgs {
617
+ batch_size?: InputMaybe<Scalars['Int']['input']>;
618
+ retry_failed?: InputMaybe<Scalars['Boolean']['input']>;
619
+ }
620
+
621
+ /** GPS point found within a spatial proximity search. */
170
622
  export interface NearbyPoint {
171
623
  __typename?: 'NearbyPoint';
624
+ /** Distance from the search center point in meters */
172
625
  distance_meters: Scalars['Float']['output'];
626
+ /** Record identifier in the source table */
173
627
  id: Scalars['Int']['output'];
628
+ /** GPS latitude in decimal degrees (WGS 84) */
174
629
  latitude: Scalars['Float']['output'];
630
+ /** GPS longitude in decimal degrees (WGS 84) */
175
631
  longitude: Scalars['Float']['output'];
632
+ /** Data source: 'owntracks' or 'garmin' */
176
633
  source: Scalars['String']['output'];
634
+ /** UTC timestamp of the GPS recording */
177
635
  timestamp: Scalars['DateTime']['output'];
178
636
  }
179
637
 
638
+ /** Pagination metadata for paginated list responses. */
180
639
  export interface PaginationInfo {
181
640
  __typename?: 'PaginationInfo';
641
+ /** Maximum number of items per page */
182
642
  limit: Scalars['Int']['output'];
643
+ /** Number of items skipped from the start */
183
644
  offset: Scalars['Int']['output'];
645
+ /** Total number of items matching the query */
184
646
  total: Scalars['Int']['output'];
185
647
  }
186
648
 
187
649
  export interface Query {
188
650
  __typename?: 'Query';
651
+ /** Calculate the geodesic distance between two geographic points. */
189
652
  calculateDistance: DistanceResult;
190
- dailySummary: Array<DailyActivitySummary>;
653
+ /** Retrieve daily activity summaries combining OwnTracks and Garmin data. */
654
+ dailySummary: DailySummaryConnection;
655
+ /** Get the earliest and latest activity dates available in the daily activity summary view. */
656
+ dailySummaryDateRange: DailySummaryDateRange;
657
+ /** List all distinct OwnTracks device identifiers. */
191
658
  devices: Array<DeviceInfo>;
659
+ /** Retrieve a paginated list of Garmin activities. */
192
660
  garminActivities: GarminActivityConnection;
661
+ /** Retrieve a single Garmin activity by its ID. */
193
662
  garminActivity?: Maybe<GarminActivity>;
663
+ /** Retrieve all reverse-geocoded addresses for a Garmin activity (start, mid-route waypoints, and end). */
664
+ garminActivityAddresses: Array<GarminActivityAddress>;
665
+ /** Aggregate Garmin activity totals grouped by week, month, or year. */
666
+ garminActivityTotals: Array<GarminActivityTotal>;
667
+ /** Retrieve chart-optimised track points for a Garmin activity. */
668
+ garminChartData: Array<GarminChartPoint>;
669
+ /** Get the earliest and latest Garmin activity timestamps. */
670
+ garminDateRange: GarminDateRange;
671
+ /** List all distinct sport types with activity counts. */
194
672
  garminSports: Array<SportInfo>;
673
+ /** Retrieve paginated GPS track points for a Garmin activity. */
195
674
  garminTrackPoints: GarminTrackPointConnection;
675
+ /** Get geocoding coverage statistics. */
676
+ geocodingStatus: GeocodingStatus;
677
+ /** Get service health status. */
196
678
  health: HealthStatus;
679
+ /** Retrieve a single location by its ID, including raw payload. */
197
680
  location?: Maybe<LocationDetail>;
681
+ /** Get aggregate count of location records with optional filters. */
198
682
  locationCount: LocationCount;
683
+ /** Get the earliest and latest location timestamps. */
684
+ locationDateRange: LocationDateRange;
685
+ /** Retrieve a paginated list of OwnTracks location records. */
199
686
  locations: LocationConnection;
687
+ /** Find GPS points within a radius of a geographic coordinate. */
200
688
  nearbyPoints: Array<NearbyPoint>;
689
+ /** Get service readiness status including database connectivity. */
201
690
  ready: ReadyStatus;
691
+ /** Retrieve a single reference location by its ID. */
202
692
  referenceLocation?: Maybe<ReferenceLocation>;
693
+ /** List all named reference locations. */
203
694
  referenceLocations: Array<ReferenceLocation>;
695
+ /** Retrieve a paginated list of unified GPS points from all sources. */
204
696
  unifiedGps: UnifiedGpsConnection;
697
+ /** Find GPS points within a named reference location's geofence. */
205
698
  withinReference: WithinReferenceResult;
206
699
  }
207
700
 
208
-
209
701
  export interface QueryCalculateDistanceArgs {
210
702
  from_lat: Scalars['Float']['input'];
211
703
  from_lon: Scalars['Float']['input'];
@@ -213,14 +705,13 @@ export interface QueryCalculateDistanceArgs {
213
705
  to_lon: Scalars['Float']['input'];
214
706
  }
215
707
 
216
-
217
708
  export interface QueryDailySummaryArgs {
218
709
  date_from?: InputMaybe<Scalars['String']['input']>;
219
710
  date_to?: InputMaybe<Scalars['String']['input']>;
220
711
  limit?: InputMaybe<Scalars['Int']['input']>;
712
+ offset?: InputMaybe<Scalars['Int']['input']>;
221
713
  }
222
714
 
223
-
224
715
  export interface QueryGarminActivitiesArgs {
225
716
  date_from?: InputMaybe<Scalars['String']['input']>;
226
717
  date_to?: InputMaybe<Scalars['String']['input']>;
@@ -231,11 +722,24 @@ export interface QueryGarminActivitiesArgs {
231
722
  sport?: InputMaybe<Scalars['String']['input']>;
232
723
  }
233
724
 
234
-
235
725
  export interface QueryGarminActivityArgs {
236
726
  activity_id: Scalars['String']['input'];
237
727
  }
238
728
 
729
+ export interface QueryGarminActivityAddressesArgs {
730
+ activity_id: Scalars['String']['input'];
731
+ }
732
+
733
+ export interface QueryGarminActivityTotalsArgs {
734
+ date_from?: InputMaybe<Scalars['String']['input']>;
735
+ date_to?: InputMaybe<Scalars['String']['input']>;
736
+ period: Scalars['String']['input'];
737
+ sport?: InputMaybe<Scalars['String']['input']>;
738
+ }
739
+
740
+ export interface QueryGarminChartDataArgs {
741
+ activity_id: Scalars['String']['input'];
742
+ }
239
743
 
240
744
  export interface QueryGarminTrackPointsArgs {
241
745
  activity_id: Scalars['String']['input'];
@@ -246,18 +750,15 @@ export interface QueryGarminTrackPointsArgs {
246
750
  sort?: InputMaybe<Scalars['String']['input']>;
247
751
  }
248
752
 
249
-
250
753
  export interface QueryLocationArgs {
251
754
  id: Scalars['Int']['input'];
252
755
  }
253
756
 
254
-
255
757
  export interface QueryLocationCountArgs {
256
758
  date?: InputMaybe<Scalars['String']['input']>;
257
759
  device_id?: InputMaybe<Scalars['String']['input']>;
258
760
  }
259
761
 
260
-
261
762
  export interface QueryLocationsArgs {
262
763
  date_from?: InputMaybe<Scalars['String']['input']>;
263
764
  date_to?: InputMaybe<Scalars['String']['input']>;
@@ -268,7 +769,6 @@ export interface QueryLocationsArgs {
268
769
  sort?: InputMaybe<Scalars['String']['input']>;
269
770
  }
270
771
 
271
-
272
772
  export interface QueryNearbyPointsArgs {
273
773
  lat: Scalars['Float']['input'];
274
774
  limit?: InputMaybe<Scalars['Int']['input']>;
@@ -277,83 +777,122 @@ export interface QueryNearbyPointsArgs {
277
777
  source?: InputMaybe<Scalars['String']['input']>;
278
778
  }
279
779
 
280
-
281
780
  export interface QueryReferenceLocationArgs {
282
781
  id: Scalars['Int']['input'];
283
782
  }
284
783
 
285
-
286
784
  export interface QueryUnifiedGpsArgs {
287
785
  date_from?: InputMaybe<Scalars['String']['input']>;
288
786
  date_to?: InputMaybe<Scalars['String']['input']>;
787
+ deduplicate?: InputMaybe<Scalars['Boolean']['input']>;
788
+ exclude_stationary?: InputMaybe<Scalars['Boolean']['input']>;
289
789
  limit?: InputMaybe<Scalars['Int']['input']>;
290
790
  offset?: InputMaybe<Scalars['Int']['input']>;
291
791
  order?: InputMaybe<SortOrder>;
292
792
  source?: InputMaybe<Scalars['String']['input']>;
293
793
  }
294
794
 
295
-
296
795
  export interface QueryWithinReferenceArgs {
297
796
  limit?: InputMaybe<Scalars['Int']['input']>;
298
797
  name: Scalars['String']['input'];
299
798
  source?: InputMaybe<Scalars['String']['input']>;
300
799
  }
301
800
 
801
+ /** Service readiness status including database connectivity. */
302
802
  export interface ReadyStatus {
303
803
  __typename?: 'ReadyStatus';
804
+ /** Database connection status */
304
805
  database?: Maybe<Scalars['String']['output']>;
806
+ /** Service readiness status */
305
807
  status: Scalars['String']['output'];
808
+ /** Application version from VERSION file */
306
809
  version?: Maybe<Scalars['String']['output']>;
307
810
  }
308
811
 
812
+ /** Named geographic reference point used for spatial queries (e.g. home, office). */
309
813
  export interface ReferenceLocation {
310
814
  __typename?: 'ReferenceLocation';
815
+ /** UTC timestamp when the record was created */
311
816
  created_at?: Maybe<Scalars['String']['output']>;
817
+ /** Optional human-readable description of the location */
312
818
  description?: Maybe<Scalars['String']['output']>;
819
+ /** Unique reference location identifier */
313
820
  id: Scalars['Int']['output'];
821
+ /** GPS latitude in decimal degrees (WGS 84) */
314
822
  latitude: Scalars['Float']['output'];
823
+ /** GPS longitude in decimal degrees (WGS 84) */
315
824
  longitude: Scalars['Float']['output'];
825
+ /** Short, unique name for the location (e.g. home, office) */
316
826
  name: Scalars['String']['output'];
827
+ /** Geofence radius in meters for proximity queries */
317
828
  radius_meters: Scalars['Float']['output'];
829
+ /** UTC timestamp when the record was last updated */
318
830
  updated_at?: Maybe<Scalars['String']['output']>;
319
831
  }
320
832
 
833
+ /** Sort direction for query results. */
321
834
  export type SortOrder =
835
+ /** Ascending order (oldest first, A-Z) */
322
836
  | 'asc'
837
+ /** Descending order (newest first, Z-A) */
323
838
  | 'desc';
324
839
 
840
+ /** Sport type with its activity count. */
325
841
  export interface SportInfo {
326
842
  __typename?: 'SportInfo';
843
+ /** Number of activities for this sport */
327
844
  activity_count: Scalars['Int']['output'];
845
+ /** Sport type name (e.g. cycling, running) */
328
846
  sport: Scalars['String']['output'];
329
847
  }
330
848
 
849
+ /** Paginated list of unified GPS data points. */
331
850
  export interface UnifiedGpsConnection {
332
851
  __typename?: 'UnifiedGpsConnection';
852
+ /** List of unified GPS items in the current page */
333
853
  items: Array<UnifiedGpsPoint>;
854
+ /** Maximum number of items per page */
334
855
  limit: Scalars['Int']['output'];
856
+ /** Number of items skipped from the start */
335
857
  offset: Scalars['Int']['output'];
858
+ /** Total number of items matching the query */
336
859
  total: Scalars['Int']['output'];
337
860
  }
338
861
 
862
+ /** Single GPS data point from the unified view combining OwnTracks and Garmin sources. */
339
863
  export interface UnifiedGpsPoint {
340
864
  __typename?: 'UnifiedGpsPoint';
865
+ /** Horizontal GPS accuracy in meters (OwnTracks only) */
341
866
  accuracy?: Maybe<Scalars['Float']['output']>;
867
+ /** Device battery percentage (OwnTracks only) */
342
868
  battery?: Maybe<Scalars['Int']['output']>;
869
+ /** UTC timestamp when the record was inserted */
343
870
  created_at?: Maybe<Scalars['String']['output']>;
871
+ /** Heart rate in BPM (Garmin only) */
344
872
  heart_rate?: Maybe<Scalars['Int']['output']>;
873
+ /** Device or activity identifier from the source */
345
874
  identifier: Scalars['String']['output'];
875
+ /** GPS latitude in decimal degrees (WGS 84) */
346
876
  latitude: Scalars['Float']['output'];
877
+ /** GPS longitude in decimal degrees (WGS 84) */
347
878
  longitude: Scalars['Float']['output'];
879
+ /** Data source: 'owntracks' or 'garmin' */
348
880
  source: Scalars['String']['output'];
881
+ /** Instantaneous speed in km/h (Garmin only) */
349
882
  speed_kmh?: Maybe<Scalars['Float']['output']>;
883
+ /** UTC timestamp of the GPS recording */
350
884
  timestamp: Scalars['DateTime']['output'];
351
885
  }
352
886
 
887
+ /** GPS points found within a named reference location's geofence radius. */
353
888
  export interface WithinReferenceResult {
354
889
  __typename?: 'WithinReferenceResult';
890
+ /** GPS points within the radius, sorted by distance */
355
891
  points: Array<NearbyPoint>;
892
+ /** Geofence radius used for the search in meters */
356
893
  radius_meters: Scalars['Float']['output'];
894
+ /** Name of the reference location searched */
357
895
  reference_name: Scalars['String']['output'];
896
+ /** Number of GPS points found within the radius */
358
897
  total_points: Scalars['Int']['output'];
359
898
  }