@ancplua/qyl-api-schema 1.0.3 → 1.0.4
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.
- package/README.md +4 -0
- package/api/routes.tsp +0 -90
- package/generated/json-schema/qyl-api-schema.json +120 -1360
- package/generated/openapi/qyl.openapi.json +4101 -6025
- package/generated/ts-runtime/api.d.ts +0 -228
- package/generated/ts-runtime/api.js +0 -43
- package/index.tsp +0 -2
- package/models/runner-mcp.tsp +0 -4
- package/otel/enums.tsp +0 -119
- package/otel/otel-conventions.tsp +0 -2
- package/package.json +1 -3
- package/otel/metrics.tsp +0 -237
- package/otel/profiles.tsp +0 -335
package/otel/metrics.tsp
DELETED
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
// =============================================================================
|
|
2
|
-
// OpenTelemetry metric data-point JSON projection
|
|
3
|
-
// =============================================================================
|
|
4
|
-
// The collector receives the official OTLP protobuf contract. This model is the
|
|
5
|
-
// generated client-facing projection returned by the Qyl product API.
|
|
6
|
-
// =============================================================================
|
|
7
|
-
|
|
8
|
-
import "@typespec/openapi";
|
|
9
|
-
import "../common/types.tsp";
|
|
10
|
-
import "./enums.tsp";
|
|
11
|
-
import "./resource.tsp";
|
|
12
|
-
|
|
13
|
-
using TypeSpec.OpenAPI;
|
|
14
|
-
using Qyl.Api.Contracts.Common;
|
|
15
|
-
using Qyl.Api.Contracts.OTel.Enums;
|
|
16
|
-
|
|
17
|
-
namespace Qyl.Api.Contracts.OTel.Metrics;
|
|
18
|
-
|
|
19
|
-
@doc("An OTLP signed 64-bit metric integer encoded as a decimal JSON string.")
|
|
20
|
-
@encode(string)
|
|
21
|
-
@TypeSpec.OpenAPI.extension("x-csharp-type", "long")
|
|
22
|
-
scalar MetricInt64 extends int64;
|
|
23
|
-
|
|
24
|
-
@doc("An OTLP unsigned 64-bit metric count encoded as a decimal JSON string.")
|
|
25
|
-
@encode(string)
|
|
26
|
-
@TypeSpec.OpenAPI.extension("x-csharp-type", "ulong")
|
|
27
|
-
scalar MetricUInt64 extends uint64;
|
|
28
|
-
|
|
29
|
-
@doc("A non-zero OTLP metric or exemplar timestamp in Unix nanoseconds.")
|
|
30
|
-
@encode(string)
|
|
31
|
-
@minValue(1)
|
|
32
|
-
@TypeSpec.OpenAPI.extension("x-csharp-type", "ulong")
|
|
33
|
-
scalar MetricUnixNanos extends uint64;
|
|
34
|
-
|
|
35
|
-
@doc("An optional OTLP metric start timestamp in Unix nanoseconds, encoded as a decimal JSON string.")
|
|
36
|
-
@encode(string)
|
|
37
|
-
@minValue(0)
|
|
38
|
-
@TypeSpec.OpenAPI.extension("x-csharp-type", "ulong")
|
|
39
|
-
scalar MetricStartUnixNanos extends uint64;
|
|
40
|
-
|
|
41
|
-
@doc("An OTLP double encoded as a JSON number when finite or as a canonical named string when non-finite.")
|
|
42
|
-
union MetricDouble {
|
|
43
|
-
finite: float64,
|
|
44
|
-
nan: "NaN",
|
|
45
|
-
positiveInfinity: "Infinity",
|
|
46
|
-
negativeInfinity: "-Infinity",
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
@doc("A finite, non-negative value observed at an OTLP summary quantile.")
|
|
50
|
-
@minValue(0)
|
|
51
|
-
scalar SummaryQuantileFiniteValue extends float64;
|
|
52
|
-
|
|
53
|
-
@doc("A non-negative OTLP summary quantile value, including canonical positive infinity.")
|
|
54
|
-
union SummaryQuantileDouble {
|
|
55
|
-
finite: SummaryQuantileFiniteValue,
|
|
56
|
-
positiveInfinity: "Infinity",
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
@doc("An integer measurement value from an OTLP number data point or exemplar.")
|
|
60
|
-
model MetricIntegerValue {
|
|
61
|
-
@encodedName("application/json", "as_int")
|
|
62
|
-
asInt: MetricInt64;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
@doc("A floating-point measurement value from an OTLP number data point or exemplar.")
|
|
66
|
-
model MetricDoubleValue {
|
|
67
|
-
@encodedName("application/json", "as_double")
|
|
68
|
-
asDouble: MetricDouble;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
@doc("The exactly-one numeric value carried by an OTLP number data point or exemplar.")
|
|
72
|
-
union MetricNumberValue {
|
|
73
|
-
integer: MetricIntegerValue,
|
|
74
|
-
double: MetricDoubleValue,
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
@doc("A sampled measurement linked to the trace or span active when it was recorded.")
|
|
78
|
-
model MetricExemplar {
|
|
79
|
-
@encodedName("application/json", "time_unix_nano")
|
|
80
|
-
timeUnixNano: MetricUnixNanos;
|
|
81
|
-
|
|
82
|
-
value: MetricNumberValue;
|
|
83
|
-
|
|
84
|
-
@encodedName("application/json", "span_id")
|
|
85
|
-
spanId?: SpanId;
|
|
86
|
-
|
|
87
|
-
@encodedName("application/json", "trace_id")
|
|
88
|
-
traceId?: TraceId;
|
|
89
|
-
|
|
90
|
-
@encodedName("application/json", "filtered_attributes")
|
|
91
|
-
filteredAttributes?: Attribute[];
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
@doc("Bucket range used by an OTLP exponential histogram data point.")
|
|
95
|
-
model ExponentialHistogramBuckets {
|
|
96
|
-
@doc("Index of the first bucket count.")
|
|
97
|
-
offset: int32;
|
|
98
|
-
|
|
99
|
-
@encodedName("application/json", "bucket_counts")
|
|
100
|
-
bucketCounts: MetricUInt64[];
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
@doc("A quantile and value reported by an OTLP summary data point.")
|
|
104
|
-
model SummaryQuantileValue {
|
|
105
|
-
@minValue(0)
|
|
106
|
-
@maxValue(1)
|
|
107
|
-
quantile: float64;
|
|
108
|
-
|
|
109
|
-
value: SummaryQuantileDouble;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
@doc("Fields shared by every persisted OTLP metric data point.")
|
|
113
|
-
model MetricPointBase {
|
|
114
|
-
@doc("Metric stream name.")
|
|
115
|
-
@minLength(1)
|
|
116
|
-
name: string;
|
|
117
|
-
|
|
118
|
-
description?: string;
|
|
119
|
-
unit?: string;
|
|
120
|
-
|
|
121
|
-
@doc("Non-identifying metadata attached to the OTLP metric descriptor.")
|
|
122
|
-
metadata?: Attribute[];
|
|
123
|
-
|
|
124
|
-
@doc("Attributes identifying this metric time series.")
|
|
125
|
-
attributes?: Attribute[];
|
|
126
|
-
|
|
127
|
-
@encodedName("application/json", "start_time_unix_nano")
|
|
128
|
-
startTimeUnixNano: MetricStartUnixNanos;
|
|
129
|
-
|
|
130
|
-
@encodedName("application/json", "time_unix_nano")
|
|
131
|
-
timeUnixNano: MetricUnixNanos;
|
|
132
|
-
|
|
133
|
-
@doc("OTLP data-point flags preserved as an extensible bit field.")
|
|
134
|
-
flags: uint32;
|
|
135
|
-
|
|
136
|
-
@doc("Resource describing the entity that produced the metric.")
|
|
137
|
-
resource: Qyl.Api.Contracts.OTel.Resource.Resource;
|
|
138
|
-
|
|
139
|
-
@encodedName("application/json", "resource_schema_url")
|
|
140
|
-
resourceSchemaUrl?: string;
|
|
141
|
-
|
|
142
|
-
@encodedName("application/json", "instrumentation_scope")
|
|
143
|
-
instrumentationScope?: InstrumentationScope;
|
|
144
|
-
|
|
145
|
-
@encodedName("application/json", "scope_schema_url")
|
|
146
|
-
scopeSchemaUrl?: string;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
@doc("Instantaneous gauge measurement.")
|
|
150
|
-
model GaugeMetricPoint extends MetricPointBase {
|
|
151
|
-
type: "gauge";
|
|
152
|
-
|
|
153
|
-
@doc("Recorded value, absent when flags contain NO_RECORDED_VALUE (bit 1).")
|
|
154
|
-
value?: MetricNumberValue;
|
|
155
|
-
|
|
156
|
-
exemplars?: MetricExemplar[];
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
@doc("Delta or cumulative sum measurement.")
|
|
160
|
-
model SumMetricPoint extends MetricPointBase {
|
|
161
|
-
type: "sum";
|
|
162
|
-
|
|
163
|
-
@doc("Recorded value, absent when flags contain NO_RECORDED_VALUE (bit 1).")
|
|
164
|
-
value?: MetricNumberValue;
|
|
165
|
-
|
|
166
|
-
@encodedName("application/json", "aggregation_temporality")
|
|
167
|
-
aggregationTemporality: AggregationTemporality;
|
|
168
|
-
|
|
169
|
-
@encodedName("application/json", "is_monotonic")
|
|
170
|
-
isMonotonic: boolean;
|
|
171
|
-
|
|
172
|
-
exemplars?: MetricExemplar[];
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
@doc("Explicit-bucket histogram measurement.")
|
|
176
|
-
model HistogramMetricPoint extends MetricPointBase {
|
|
177
|
-
type: "histogram";
|
|
178
|
-
count: MetricUInt64;
|
|
179
|
-
sum?: MetricDouble;
|
|
180
|
-
|
|
181
|
-
@encodedName("application/json", "bucket_counts")
|
|
182
|
-
bucketCounts: MetricUInt64[];
|
|
183
|
-
|
|
184
|
-
@encodedName("application/json", "explicit_bounds")
|
|
185
|
-
explicitBounds: float64[];
|
|
186
|
-
|
|
187
|
-
min?: MetricDouble;
|
|
188
|
-
max?: MetricDouble;
|
|
189
|
-
|
|
190
|
-
@encodedName("application/json", "aggregation_temporality")
|
|
191
|
-
aggregationTemporality: AggregationTemporality;
|
|
192
|
-
|
|
193
|
-
exemplars?: MetricExemplar[];
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
@doc("Base-2 exponential histogram measurement.")
|
|
197
|
-
model ExponentialHistogramMetricPoint extends MetricPointBase {
|
|
198
|
-
type: "exponential_histogram";
|
|
199
|
-
count: MetricUInt64;
|
|
200
|
-
sum?: MetricDouble;
|
|
201
|
-
scale: int32;
|
|
202
|
-
|
|
203
|
-
@encodedName("application/json", "zero_count")
|
|
204
|
-
zeroCount: MetricUInt64;
|
|
205
|
-
|
|
206
|
-
@encodedName("application/json", "zero_threshold")
|
|
207
|
-
zeroThreshold: MetricDouble;
|
|
208
|
-
|
|
209
|
-
positive: ExponentialHistogramBuckets;
|
|
210
|
-
negative: ExponentialHistogramBuckets;
|
|
211
|
-
min?: MetricDouble;
|
|
212
|
-
max?: MetricDouble;
|
|
213
|
-
|
|
214
|
-
@encodedName("application/json", "aggregation_temporality")
|
|
215
|
-
aggregationTemporality: AggregationTemporality;
|
|
216
|
-
|
|
217
|
-
exemplars?: MetricExemplar[];
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
@doc("Pre-aggregated summary measurement.")
|
|
221
|
-
model SummaryMetricPoint extends MetricPointBase {
|
|
222
|
-
type: "summary";
|
|
223
|
-
count: MetricUInt64;
|
|
224
|
-
sum: MetricDouble;
|
|
225
|
-
|
|
226
|
-
@encodedName("application/json", "quantile_values")
|
|
227
|
-
quantileValues: SummaryQuantileValue[];
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
@doc("One persisted OTLP metric data point, discriminated by aggregation kind.")
|
|
231
|
-
union MetricPoint {
|
|
232
|
-
gauge: GaugeMetricPoint,
|
|
233
|
-
sum: SumMetricPoint,
|
|
234
|
-
histogram: HistogramMetricPoint,
|
|
235
|
-
exponentialHistogram: ExponentialHistogramMetricPoint,
|
|
236
|
-
summary: SummaryMetricPoint,
|
|
237
|
-
}
|
package/otel/profiles.tsp
DELETED
|
@@ -1,335 +0,0 @@
|
|
|
1
|
-
// =============================================================================
|
|
2
|
-
// OpenTelemetry profiles JSON projection (v1development)
|
|
3
|
-
// =============================================================================
|
|
4
|
-
// Continuous profiling signal following OTel Profiles proto specification.
|
|
5
|
-
// Proto package: opentelemetry.proto.profiles.v1development
|
|
6
|
-
// All attributes are Development stability (semconv v1.39.0-v1.40.0).
|
|
7
|
-
// =============================================================================
|
|
8
|
-
|
|
9
|
-
import "@typespec/http";
|
|
10
|
-
import "@typespec/openapi";
|
|
11
|
-
import "../common/types.tsp";
|
|
12
|
-
import "./enums.tsp";
|
|
13
|
-
import "./resource.tsp";
|
|
14
|
-
|
|
15
|
-
using TypeSpec.Http;
|
|
16
|
-
using TypeSpec.OpenAPI;
|
|
17
|
-
using Qyl.Api.Contracts.Common;
|
|
18
|
-
using Qyl.Api.Contracts.OTel.Enums;
|
|
19
|
-
using Qyl.Api.Contracts.OTel.Resource;
|
|
20
|
-
|
|
21
|
-
namespace Qyl.Api.Contracts.OTel.Profiles;
|
|
22
|
-
|
|
23
|
-
// =============================================================================
|
|
24
|
-
// Profile Model
|
|
25
|
-
// =============================================================================
|
|
26
|
-
|
|
27
|
-
@doc("OpenTelemetry Profile representing a continuous profiling snapshot")
|
|
28
|
-
model Profile {
|
|
29
|
-
@doc("Unique profile identifier (16 hex chars)")
|
|
30
|
-
@key
|
|
31
|
-
@encodedName("application/json", "profile_id")
|
|
32
|
-
profileId: string;
|
|
33
|
-
|
|
34
|
-
@doc("Sample type describing what was measured")
|
|
35
|
-
@encodedName("application/json", "sample_type")
|
|
36
|
-
sampleType?: ProfileValueType;
|
|
37
|
-
|
|
38
|
-
@doc("Profiling samples")
|
|
39
|
-
samples?: ProfileSample[];
|
|
40
|
-
|
|
41
|
-
@doc("Profile start timestamp in nanoseconds since epoch")
|
|
42
|
-
@encodedName("application/json", "time_unix_nano")
|
|
43
|
-
timeUnixNano: UnixNanos;
|
|
44
|
-
|
|
45
|
-
@doc("Profile duration in nanoseconds")
|
|
46
|
-
@encodedName("application/json", "duration_nano")
|
|
47
|
-
durationNano: DurationNs;
|
|
48
|
-
|
|
49
|
-
@doc("Sampling period type")
|
|
50
|
-
@encodedName("application/json", "period_type")
|
|
51
|
-
periodType?: ProfileValueType;
|
|
52
|
-
|
|
53
|
-
@doc("Sampling period value")
|
|
54
|
-
period?: int64;
|
|
55
|
-
|
|
56
|
-
@doc("Original payload format (pprof, jfr, linux_perf)")
|
|
57
|
-
@encodedName("application/json", "original_payload_format")
|
|
58
|
-
originalPayloadFormat?: OriginalPayloadFormat;
|
|
59
|
-
|
|
60
|
-
@doc("Original payload bytes (base64 encoded, opaque — not parsed)")
|
|
61
|
-
@encodedName("application/json", "original_payload")
|
|
62
|
-
originalPayload?: bytes;
|
|
63
|
-
|
|
64
|
-
@doc("Profile attributes")
|
|
65
|
-
attributes?: Attribute[];
|
|
66
|
-
|
|
67
|
-
@doc("Dropped attributes count")
|
|
68
|
-
@encodedName("application/json", "dropped_attributes_count")
|
|
69
|
-
droppedAttributesCount?: Count;
|
|
70
|
-
|
|
71
|
-
@doc("Resource describing the entity that produced this profile")
|
|
72
|
-
resource: Qyl.Api.Contracts.OTel.Resource.Resource;
|
|
73
|
-
|
|
74
|
-
@doc("Instrumentation scope")
|
|
75
|
-
@encodedName("application/json", "instrumentation_scope")
|
|
76
|
-
instrumentationScope?: InstrumentationScope;
|
|
77
|
-
|
|
78
|
-
// Dictionary tables (dereferenced from ProfilesDictionary)
|
|
79
|
-
|
|
80
|
-
@doc("String table for index-based lookups")
|
|
81
|
-
@encodedName("application/json", "string_table")
|
|
82
|
-
stringTable?: string[];
|
|
83
|
-
|
|
84
|
-
@doc("Function table")
|
|
85
|
-
@encodedName("application/json", "function_table")
|
|
86
|
-
functionTable?: ProfileFunction[];
|
|
87
|
-
|
|
88
|
-
@doc("Location table")
|
|
89
|
-
@encodedName("application/json", "location_table")
|
|
90
|
-
locationTable?: ProfileLocation[];
|
|
91
|
-
|
|
92
|
-
@doc("Mapping table (memory-mapped binaries)")
|
|
93
|
-
@encodedName("application/json", "mapping_table")
|
|
94
|
-
mappingTable?: ProfileMapping[];
|
|
95
|
-
|
|
96
|
-
@doc("Link table for cross-signal correlation")
|
|
97
|
-
@encodedName("application/json", "link_table")
|
|
98
|
-
linkTable?: ProfileLink[];
|
|
99
|
-
|
|
100
|
-
@doc("Stack table (ordered location sequences)")
|
|
101
|
-
@encodedName("application/json", "stack_table")
|
|
102
|
-
stackTable?: ProfileStack[];
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
// =============================================================================
|
|
106
|
-
// Profile Sub-Models
|
|
107
|
-
// =============================================================================
|
|
108
|
-
|
|
109
|
-
@doc("Sample type descriptor (what was measured and in what unit)")
|
|
110
|
-
model ProfileValueType {
|
|
111
|
-
@doc("Type string index into string table")
|
|
112
|
-
@encodedName("application/json", "type_strindex")
|
|
113
|
-
typeStrindex?: int32;
|
|
114
|
-
|
|
115
|
-
@doc("Unit string index into string table")
|
|
116
|
-
@encodedName("application/json", "unit_strindex")
|
|
117
|
-
unitStrindex?: int32;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
@doc("Individual profiling sample")
|
|
121
|
-
model ProfileSample {
|
|
122
|
-
@doc("Stack index into stack table")
|
|
123
|
-
@encodedName("application/json", "stack_index")
|
|
124
|
-
stackIndex?: int32;
|
|
125
|
-
|
|
126
|
-
@doc("Attribute indices into attribute table")
|
|
127
|
-
@encodedName("application/json", "attribute_indices")
|
|
128
|
-
attributeIndices?: int32[];
|
|
129
|
-
|
|
130
|
-
@doc("Link index into link table for cross-signal correlation")
|
|
131
|
-
@encodedName("application/json", "link_index")
|
|
132
|
-
linkIndex?: int32;
|
|
133
|
-
|
|
134
|
-
@doc("Sample values (one per sample type)")
|
|
135
|
-
values?: int64[];
|
|
136
|
-
|
|
137
|
-
@doc("Timestamps for each value in nanoseconds since epoch")
|
|
138
|
-
@encodedName("application/json", "timestamps_unix_nano")
|
|
139
|
-
timestampsUnixNano?: UnixNanos[];
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
@doc("Code location within a profiled binary")
|
|
143
|
-
model ProfileLocation {
|
|
144
|
-
@doc("Mapping index into mapping table")
|
|
145
|
-
@encodedName("application/json", "mapping_index")
|
|
146
|
-
mappingIndex?: int32;
|
|
147
|
-
|
|
148
|
-
@doc("Instruction address (program counter)")
|
|
149
|
-
address?: uint64;
|
|
150
|
-
|
|
151
|
-
@doc("Source lines at this location")
|
|
152
|
-
lines?: ProfileLine[];
|
|
153
|
-
|
|
154
|
-
@doc("Attribute indices")
|
|
155
|
-
@encodedName("application/json", "attribute_indices")
|
|
156
|
-
attributeIndices?: int32[];
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
@doc("Source line within a location")
|
|
160
|
-
model ProfileLine {
|
|
161
|
-
@doc("Function index into function table")
|
|
162
|
-
@encodedName("application/json", "function_index")
|
|
163
|
-
functionIndex?: int32;
|
|
164
|
-
|
|
165
|
-
@doc("Source line number")
|
|
166
|
-
line?: int64;
|
|
167
|
-
|
|
168
|
-
@doc("Source column number")
|
|
169
|
-
column?: int64;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
@doc("Function identity in a profiled binary")
|
|
173
|
-
model ProfileFunction {
|
|
174
|
-
@doc("Function name string index")
|
|
175
|
-
@encodedName("application/json", "name_strindex")
|
|
176
|
-
nameStrindex?: int32;
|
|
177
|
-
|
|
178
|
-
@doc("System/mangled function name string index")
|
|
179
|
-
@encodedName("application/json", "system_name_strindex")
|
|
180
|
-
systemNameStrindex?: int32;
|
|
181
|
-
|
|
182
|
-
@doc("Source filename string index")
|
|
183
|
-
@encodedName("application/json", "filename_strindex")
|
|
184
|
-
filenameStrindex?: int32;
|
|
185
|
-
|
|
186
|
-
@doc("First line number of the function in source")
|
|
187
|
-
@encodedName("application/json", "start_line")
|
|
188
|
-
startLine?: int64;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
@doc("Memory mapping for a loaded binary or shared library")
|
|
192
|
-
model ProfileMapping {
|
|
193
|
-
@doc("Start address of the mapping in virtual memory")
|
|
194
|
-
@encodedName("application/json", "memory_start")
|
|
195
|
-
memoryStart?: uint64;
|
|
196
|
-
|
|
197
|
-
@doc("Limit address (exclusive) of the mapping")
|
|
198
|
-
@encodedName("application/json", "memory_limit")
|
|
199
|
-
memoryLimit?: uint64;
|
|
200
|
-
|
|
201
|
-
@doc("Offset within the mapped file")
|
|
202
|
-
@encodedName("application/json", "file_offset")
|
|
203
|
-
fileOffset?: uint64;
|
|
204
|
-
|
|
205
|
-
@doc("Filename string index of the mapped binary")
|
|
206
|
-
@encodedName("application/json", "filename_strindex")
|
|
207
|
-
filenameStrindex?: int32;
|
|
208
|
-
|
|
209
|
-
@doc("Attribute indices")
|
|
210
|
-
@encodedName("application/json", "attribute_indices")
|
|
211
|
-
attributeIndices?: int32[];
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
@doc("Cross-signal link from profile sample to trace/span")
|
|
215
|
-
model ProfileLink {
|
|
216
|
-
@doc("Linked trace ID (16 bytes, W3C format)")
|
|
217
|
-
@encodedName("application/json", "trace_id")
|
|
218
|
-
traceId?: TraceId;
|
|
219
|
-
|
|
220
|
-
@doc("Linked span ID (8 bytes)")
|
|
221
|
-
@encodedName("application/json", "span_id")
|
|
222
|
-
spanId?: SpanId;
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
@doc("Ordered sequence of location indices forming a call stack")
|
|
226
|
-
model ProfileStack {
|
|
227
|
-
@doc("Location indices from leaf (index 0) to root")
|
|
228
|
-
@encodedName("application/json", "location_indices")
|
|
229
|
-
locationIndices?: int32[];
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
// =============================================================================
|
|
233
|
-
// Profile Query Filters
|
|
234
|
-
// =============================================================================
|
|
235
|
-
|
|
236
|
-
@doc("Filter parameters for querying profiles")
|
|
237
|
-
model ProfileQueryFilters {
|
|
238
|
-
@doc("Filter by trace ID")
|
|
239
|
-
@query
|
|
240
|
-
@encodedName("application/json", "trace_id")
|
|
241
|
-
traceId?: TraceId;
|
|
242
|
-
|
|
243
|
-
@doc("Filter by span ID")
|
|
244
|
-
@query
|
|
245
|
-
@encodedName("application/json", "span_id")
|
|
246
|
-
spanId?: SpanId;
|
|
247
|
-
|
|
248
|
-
@doc("Filter by session ID")
|
|
249
|
-
@query
|
|
250
|
-
@encodedName("application/json", "session_id")
|
|
251
|
-
sessionId?: SessionId;
|
|
252
|
-
|
|
253
|
-
@doc("Filter by service name")
|
|
254
|
-
@query
|
|
255
|
-
@encodedName("application/json", "service_name")
|
|
256
|
-
serviceName?: string;
|
|
257
|
-
|
|
258
|
-
@doc("Filter by sample type (e.g., cpu, alloc_objects, wall)")
|
|
259
|
-
@query
|
|
260
|
-
@encodedName("application/json", "sample_type")
|
|
261
|
-
sampleType?: string;
|
|
262
|
-
|
|
263
|
-
@doc("Filter by profile frame type (e.g., dotnet, jvm, cpython)")
|
|
264
|
-
@query
|
|
265
|
-
@encodedName("application/json", "profile_frame_type")
|
|
266
|
-
profileFrameType?: string;
|
|
267
|
-
|
|
268
|
-
@doc("Filter by original payload format")
|
|
269
|
-
@query
|
|
270
|
-
@encodedName("application/json", "original_payload_format")
|
|
271
|
-
originalPayloadFormat?: OriginalPayloadFormat;
|
|
272
|
-
|
|
273
|
-
@doc("Minimum duration in nanoseconds")
|
|
274
|
-
@query
|
|
275
|
-
@encodedName("application/json", "min_duration_nano")
|
|
276
|
-
minDurationNano?: DurationNs;
|
|
277
|
-
|
|
278
|
-
@doc("Start of time range (inclusive, ISO 8601)")
|
|
279
|
-
@query
|
|
280
|
-
@encodedName("application/json", "time_from")
|
|
281
|
-
timeFrom?: utcDateTime;
|
|
282
|
-
|
|
283
|
-
@doc("End of time range (exclusive, ISO 8601)")
|
|
284
|
-
@query
|
|
285
|
-
@encodedName("application/json", "time_to")
|
|
286
|
-
timeTo?: utcDateTime;
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
// =============================================================================
|
|
290
|
-
// Profile Aggregations
|
|
291
|
-
// =============================================================================
|
|
292
|
-
|
|
293
|
-
@doc("Aggregated profile statistics")
|
|
294
|
-
model ProfileStats {
|
|
295
|
-
@doc("Total profile count")
|
|
296
|
-
@encodedName("application/json", "total_count")
|
|
297
|
-
totalCount: Count;
|
|
298
|
-
|
|
299
|
-
@doc("Total sample count across all profiles")
|
|
300
|
-
@encodedName("application/json", "total_sample_count")
|
|
301
|
-
totalSampleCount: Count;
|
|
302
|
-
|
|
303
|
-
@doc("Average duration in nanoseconds")
|
|
304
|
-
@encodedName("application/json", "avg_duration_nano")
|
|
305
|
-
avgDurationNano: float64;
|
|
306
|
-
|
|
307
|
-
@doc("Stats grouped by sample type")
|
|
308
|
-
@encodedName("application/json", "by_sample_type")
|
|
309
|
-
bySampleType?: ProfileStatsByDimension[];
|
|
310
|
-
|
|
311
|
-
@doc("Stats grouped by service")
|
|
312
|
-
@encodedName("application/json", "by_service")
|
|
313
|
-
byService?: ProfileStatsByDimension[];
|
|
314
|
-
|
|
315
|
-
@doc("Stats grouped by frame type")
|
|
316
|
-
@encodedName("application/json", "by_frame_type")
|
|
317
|
-
byFrameType?: ProfileStatsByDimension[];
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
@doc("Profile statistics for a specific dimension value")
|
|
321
|
-
model ProfileStatsByDimension {
|
|
322
|
-
@doc("Dimension value")
|
|
323
|
-
dimension: string;
|
|
324
|
-
|
|
325
|
-
@doc("Profile count for this dimension")
|
|
326
|
-
count: Count;
|
|
327
|
-
|
|
328
|
-
@doc("Total sample count for this dimension")
|
|
329
|
-
@encodedName("application/json", "sample_count")
|
|
330
|
-
sampleCount: Count;
|
|
331
|
-
|
|
332
|
-
@doc("Average duration in nanoseconds")
|
|
333
|
-
@encodedName("application/json", "avg_duration_nano")
|
|
334
|
-
avgDurationNano: float64;
|
|
335
|
-
}
|