@ancplua/qyl-api-schema 0.2.0
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/LICENSE +201 -0
- package/README.md +89 -0
- package/VERSIONING.md +74 -0
- package/api/routes.tsp +1052 -0
- package/api/streaming.tsp +335 -0
- package/common/errors.tsp +206 -0
- package/common/pagination.tsp +254 -0
- package/common/types.tsp +345 -0
- package/generated/README.md +26 -0
- package/generated/otel-keys.gen.tsp +1648 -0
- package/index.tsp +55 -0
- package/intelligence/causal-rules.tsp +34 -0
- package/intelligence/diagnostic-patterns.tsp +54 -0
- package/intelligence/investigation-strategies.tsp +37 -0
- package/intelligence/main.tsp +19 -0
- package/intelligence/seed/patterns.tsp +172 -0
- package/intelligence/seed/rules.tsp +44 -0
- package/intelligence/seed/strategies.tsp +56 -0
- package/intelligence/signals.tsp +60 -0
- package/models/agent/agent-run.tsp +154 -0
- package/models/agent/tool-call.tsp +122 -0
- package/models/agent/workflow-checkpoint.tsp +50 -0
- package/models/agent/workflow-execution.tsp +136 -0
- package/models/alerting.tsp +436 -0
- package/models/configurator.tsp +433 -0
- package/models/control-graph.tsp +197 -0
- package/models/db.tsp +810 -0
- package/models/deployment.tsp +365 -0
- package/models/error.tsp +433 -0
- package/models/genai.tsp +1368 -0
- package/models/http.tsp +600 -0
- package/models/identity.tsp +213 -0
- package/models/issues.tsp +484 -0
- package/models/log.tsp +140 -0
- package/models/messaging.tsp +304 -0
- package/models/otel-config.tsp +455 -0
- package/models/retention.tsp +240 -0
- package/models/rpc.tsp +309 -0
- package/models/search.tsp +243 -0
- package/models/session.tsp +274 -0
- package/models/system.tsp +400 -0
- package/models/test.tsp +346 -0
- package/models/triage.tsp +113 -0
- package/models/workflow.tsp +396 -0
- package/models/workspace.tsp +435 -0
- package/otel/enums.tsp +392 -0
- package/otel/logs.tsp +135 -0
- package/otel/metrics.tsp +358 -0
- package/otel/otel-conventions.tsp +14 -0
- package/otel/profiles.tsp +335 -0
- package/otel/resource.tsp +257 -0
- package/otel/span.tsp +307 -0
- package/package.json +88 -0
- package/tspconfig.yaml +49 -0
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// ANcpLua v2.0 - User/Client/Service Semantic Conventions (OTel v1.40)
|
|
3
|
+
// =============================================================================
|
|
4
|
+
// User, client, service, and app identity attributes.
|
|
5
|
+
// =============================================================================
|
|
6
|
+
|
|
7
|
+
import "../common/types.tsp";
|
|
8
|
+
|
|
9
|
+
using Qyl.Api.Contracts.Common;
|
|
10
|
+
|
|
11
|
+
namespace Qyl.Api.Contracts.Domains.Identity;
|
|
12
|
+
|
|
13
|
+
// =============================================================================
|
|
14
|
+
// User Attributes
|
|
15
|
+
// =============================================================================
|
|
16
|
+
|
|
17
|
+
@doc("User attributes")
|
|
18
|
+
model UserAttributes {
|
|
19
|
+
@doc("User ID (unique identifier)")
|
|
20
|
+
@encodedName("application/json", ANcpLua.OpenTelemetry.SemanticConventions.Keys.User.Id)
|
|
21
|
+
id?: UserId;
|
|
22
|
+
|
|
23
|
+
@doc("User name (may be pseudonymized)")
|
|
24
|
+
@encodedName("application/json", ANcpLua.OpenTelemetry.SemanticConventions.Keys.User.Name)
|
|
25
|
+
name?: string;
|
|
26
|
+
|
|
27
|
+
@doc("User email (may be hashed)")
|
|
28
|
+
@encodedName("application/json", ANcpLua.OpenTelemetry.SemanticConventions.Keys.User.Email)
|
|
29
|
+
email?: string;
|
|
30
|
+
|
|
31
|
+
@doc("User full name")
|
|
32
|
+
@encodedName("application/json", ANcpLua.OpenTelemetry.SemanticConventions.Keys.User.FullName)
|
|
33
|
+
fullName?: string;
|
|
34
|
+
|
|
35
|
+
@doc("User hash (for privacy)")
|
|
36
|
+
@encodedName("application/json", ANcpLua.OpenTelemetry.SemanticConventions.Keys.User.Hash)
|
|
37
|
+
hash?: string;
|
|
38
|
+
|
|
39
|
+
@doc("User roles")
|
|
40
|
+
@encodedName("application/json", ANcpLua.OpenTelemetry.SemanticConventions.Keys.User.Roles)
|
|
41
|
+
roles?: string[];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// =============================================================================
|
|
45
|
+
// Client Attributes
|
|
46
|
+
// =============================================================================
|
|
47
|
+
|
|
48
|
+
@doc("Client attributes")
|
|
49
|
+
model ClientAttributes {
|
|
50
|
+
@doc("Client address (IP, hostname, or Unix socket path)")
|
|
51
|
+
@encodedName("application/json", ANcpLua.OpenTelemetry.SemanticConventions.Keys.Client.Address)
|
|
52
|
+
address?: IpAddress | string;
|
|
53
|
+
|
|
54
|
+
@doc("Client port")
|
|
55
|
+
@encodedName("application/json", ANcpLua.OpenTelemetry.SemanticConventions.Keys.Client.Port)
|
|
56
|
+
port?: Port;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// =============================================================================
|
|
60
|
+
// Service Attributes
|
|
61
|
+
// =============================================================================
|
|
62
|
+
|
|
63
|
+
@doc("Service resource attributes")
|
|
64
|
+
model ServiceAttributes {
|
|
65
|
+
@doc("Service name (required)")
|
|
66
|
+
@encodedName("application/json", ANcpLua.OpenTelemetry.SemanticConventions.Keys.Service.Name)
|
|
67
|
+
name: string;
|
|
68
|
+
|
|
69
|
+
@doc("Service namespace")
|
|
70
|
+
@encodedName("application/json", ANcpLua.OpenTelemetry.SemanticConventions.Keys.Service.Namespace)
|
|
71
|
+
`namespace`?: string;
|
|
72
|
+
|
|
73
|
+
@doc("Service instance ID (unique per instance)")
|
|
74
|
+
@encodedName("application/json", ANcpLua.OpenTelemetry.SemanticConventions.Keys.Service.InstanceId)
|
|
75
|
+
instanceId?: string;
|
|
76
|
+
|
|
77
|
+
@doc("Service version")
|
|
78
|
+
@encodedName("application/json", ANcpLua.OpenTelemetry.SemanticConventions.Keys.Service.Version)
|
|
79
|
+
version?: SemVer;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// =============================================================================
|
|
83
|
+
// App Attributes
|
|
84
|
+
// =============================================================================
|
|
85
|
+
|
|
86
|
+
@doc("Application attributes")
|
|
87
|
+
model AppAttributes {
|
|
88
|
+
@doc("Application name")
|
|
89
|
+
@encodedName("application/json", "app.name")
|
|
90
|
+
name?: string;
|
|
91
|
+
|
|
92
|
+
@doc("Application version")
|
|
93
|
+
@encodedName("application/json", "app.version")
|
|
94
|
+
version?: SemVer;
|
|
95
|
+
|
|
96
|
+
@doc("Application build ID")
|
|
97
|
+
@encodedName("application/json", "app.build.id")
|
|
98
|
+
buildId?: string;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// =============================================================================
|
|
102
|
+
// Server Attributes
|
|
103
|
+
// =============================================================================
|
|
104
|
+
|
|
105
|
+
@doc("Server attributes")
|
|
106
|
+
model ServerAttributes {
|
|
107
|
+
@doc("Server address (hostname or IP)")
|
|
108
|
+
@encodedName("application/json", ANcpLua.OpenTelemetry.SemanticConventions.Keys.Server.Address)
|
|
109
|
+
address?: string;
|
|
110
|
+
|
|
111
|
+
@doc("Server port")
|
|
112
|
+
@encodedName("application/json", ANcpLua.OpenTelemetry.SemanticConventions.Keys.Server.Port)
|
|
113
|
+
port?: Port;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// =============================================================================
|
|
117
|
+
// Destination Attributes
|
|
118
|
+
// =============================================================================
|
|
119
|
+
|
|
120
|
+
@doc("Destination attributes (for client spans)")
|
|
121
|
+
model DestinationAttributes {
|
|
122
|
+
@doc("Destination address")
|
|
123
|
+
@encodedName("application/json", ANcpLua.OpenTelemetry.SemanticConventions.Keys.Destination.Address)
|
|
124
|
+
address?: string;
|
|
125
|
+
|
|
126
|
+
@doc("Destination port")
|
|
127
|
+
@encodedName("application/json", ANcpLua.OpenTelemetry.SemanticConventions.Keys.Destination.Port)
|
|
128
|
+
port?: Port;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// =============================================================================
|
|
132
|
+
// Source Attributes
|
|
133
|
+
// =============================================================================
|
|
134
|
+
|
|
135
|
+
@doc("Source attributes")
|
|
136
|
+
model SourceAttributes {
|
|
137
|
+
@doc("Source address (IP, hostname, or Unix socket path)")
|
|
138
|
+
@encodedName("application/json", ANcpLua.OpenTelemetry.SemanticConventions.Keys.Source.Address)
|
|
139
|
+
address?: IpAddress | string;
|
|
140
|
+
|
|
141
|
+
@doc("Source port")
|
|
142
|
+
@encodedName("application/json", ANcpLua.OpenTelemetry.SemanticConventions.Keys.Source.Port)
|
|
143
|
+
port?: Port;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// =============================================================================
|
|
147
|
+
// Peer Attributes (Deprecated, for compatibility)
|
|
148
|
+
// =============================================================================
|
|
149
|
+
|
|
150
|
+
@doc("Peer attributes (deprecated)")
|
|
151
|
+
model PeerAttributes {
|
|
152
|
+
@doc("Peer service name")
|
|
153
|
+
@encodedName("application/json", "peer.service")
|
|
154
|
+
service?: string;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// =============================================================================
|
|
158
|
+
// Identity Statistics
|
|
159
|
+
// =============================================================================
|
|
160
|
+
|
|
161
|
+
@doc("User activity statistics")
|
|
162
|
+
model UserActivityStats {
|
|
163
|
+
@doc("Total unique users")
|
|
164
|
+
@encodedName("application/json", "total_users")
|
|
165
|
+
totalUsers: Count;
|
|
166
|
+
|
|
167
|
+
@doc("Active users in time range")
|
|
168
|
+
@encodedName("application/json", "active_users")
|
|
169
|
+
activeUsers: Count;
|
|
170
|
+
|
|
171
|
+
@doc("New users in time range")
|
|
172
|
+
@encodedName("application/json", "new_users")
|
|
173
|
+
newUsers: Count;
|
|
174
|
+
|
|
175
|
+
@doc("Users by role")
|
|
176
|
+
@encodedName("application/json", "by_role")
|
|
177
|
+
byRole?: UserRoleStats[];
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
@doc("User stats by role")
|
|
181
|
+
model UserRoleStats {
|
|
182
|
+
@doc("Role name")
|
|
183
|
+
role: string;
|
|
184
|
+
|
|
185
|
+
@doc("User count")
|
|
186
|
+
count: Count;
|
|
187
|
+
|
|
188
|
+
@doc("Percentage of total")
|
|
189
|
+
percentage: Percentage;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
@doc("Service dependency map")
|
|
193
|
+
model ServiceDependency {
|
|
194
|
+
@doc("Source service")
|
|
195
|
+
@encodedName("application/json", "source_service")
|
|
196
|
+
sourceService: string;
|
|
197
|
+
|
|
198
|
+
@doc("Target service")
|
|
199
|
+
@encodedName("application/json", "target_service")
|
|
200
|
+
targetService: string;
|
|
201
|
+
|
|
202
|
+
@doc("Request count")
|
|
203
|
+
@encodedName("application/json", "request_count")
|
|
204
|
+
requestCount: Count;
|
|
205
|
+
|
|
206
|
+
@doc("Error rate")
|
|
207
|
+
@encodedName("application/json", "error_rate")
|
|
208
|
+
errorRate: Ratio;
|
|
209
|
+
|
|
210
|
+
@doc("Average latency in milliseconds")
|
|
211
|
+
@encodedName("application/json", "avg_latency_ms")
|
|
212
|
+
avgLatencyMs: float64;
|
|
213
|
+
}
|
|
@@ -0,0 +1,484 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// ANcpLua v2.0 - Error Issue Engine Entities
|
|
3
|
+
// =============================================================================
|
|
4
|
+
// Issue aggregates, events, breadcrumbs, regressions, ownership, releases.
|
|
5
|
+
// Sentry-replacement error tracking engine.
|
|
6
|
+
// =============================================================================
|
|
7
|
+
|
|
8
|
+
import "@typespec/openapi";
|
|
9
|
+
import "../common/types.tsp";
|
|
10
|
+
|
|
11
|
+
using TypeSpec.OpenAPI;
|
|
12
|
+
using Qyl.Api.Contracts.Common;
|
|
13
|
+
|
|
14
|
+
namespace Qyl.Api.Contracts.Domains.Issues;
|
|
15
|
+
|
|
16
|
+
// =============================================================================
|
|
17
|
+
// Error Issue
|
|
18
|
+
// =============================================================================
|
|
19
|
+
|
|
20
|
+
@doc("Error issue aggregate with lifecycle tracking")
|
|
21
|
+
@extension("x-csharp-type", "ErrorIssueEntity")
|
|
22
|
+
model ErrorIssueEntity {
|
|
23
|
+
@doc("Issue ID")
|
|
24
|
+
@key
|
|
25
|
+
@visibility(Lifecycle.Read)
|
|
26
|
+
id: string;
|
|
27
|
+
|
|
28
|
+
@doc("Owning project")
|
|
29
|
+
@visibility(Lifecycle.Read)
|
|
30
|
+
@encodedName("application/json", "project_id")
|
|
31
|
+
projectId: string;
|
|
32
|
+
|
|
33
|
+
@doc("Error fingerprint for grouping")
|
|
34
|
+
@visibility(Lifecycle.Read)
|
|
35
|
+
fingerprint: string;
|
|
36
|
+
|
|
37
|
+
@doc("Issue title")
|
|
38
|
+
@visibility(Lifecycle.Read)
|
|
39
|
+
title: string;
|
|
40
|
+
|
|
41
|
+
@doc("Culprit (function/module causing the error)")
|
|
42
|
+
@visibility(Lifecycle.Read)
|
|
43
|
+
culprit?: string;
|
|
44
|
+
|
|
45
|
+
@doc("Error type (exception class name or code)")
|
|
46
|
+
@visibility(Lifecycle.Read)
|
|
47
|
+
@encodedName("application/json", "error_type")
|
|
48
|
+
errorType: string;
|
|
49
|
+
|
|
50
|
+
@doc("Error category")
|
|
51
|
+
@visibility(Lifecycle.Read)
|
|
52
|
+
category: string;
|
|
53
|
+
|
|
54
|
+
@doc("Severity level")
|
|
55
|
+
@visibility(Lifecycle.Read)
|
|
56
|
+
level: IssueLevel;
|
|
57
|
+
|
|
58
|
+
@doc("Platform (csharp, javascript, python, etc.)")
|
|
59
|
+
@visibility(Lifecycle.Read)
|
|
60
|
+
platform?: string;
|
|
61
|
+
|
|
62
|
+
@doc("First occurrence")
|
|
63
|
+
@visibility(Lifecycle.Read)
|
|
64
|
+
@encodedName("application/json", "first_seen_at")
|
|
65
|
+
firstSeenAt: utcDateTime;
|
|
66
|
+
|
|
67
|
+
@doc("Last occurrence")
|
|
68
|
+
@visibility(Lifecycle.Read)
|
|
69
|
+
@encodedName("application/json", "last_seen_at")
|
|
70
|
+
lastSeenAt: utcDateTime;
|
|
71
|
+
|
|
72
|
+
@doc("Total occurrence count")
|
|
73
|
+
@visibility(Lifecycle.Read)
|
|
74
|
+
@encodedName("application/json", "occurrence_count")
|
|
75
|
+
occurrenceCount: int64;
|
|
76
|
+
|
|
77
|
+
@doc("Affected unique users count")
|
|
78
|
+
@visibility(Lifecycle.Read)
|
|
79
|
+
@encodedName("application/json", "affected_users_count")
|
|
80
|
+
affectedUsersCount: int32;
|
|
81
|
+
|
|
82
|
+
@doc("Issue status")
|
|
83
|
+
@visibility(Lifecycle.Read, Lifecycle.Update)
|
|
84
|
+
status: IssueStatus;
|
|
85
|
+
|
|
86
|
+
@doc("Issue substatus")
|
|
87
|
+
@visibility(Lifecycle.Read)
|
|
88
|
+
substatus?: string;
|
|
89
|
+
|
|
90
|
+
@doc("Priority level")
|
|
91
|
+
@visibility(Lifecycle.Read, Lifecycle.Update)
|
|
92
|
+
priority: IssuePriority;
|
|
93
|
+
|
|
94
|
+
@doc("Assigned team member")
|
|
95
|
+
@visibility(Lifecycle.Read, Lifecycle.Update)
|
|
96
|
+
@encodedName("application/json", "assigned_to")
|
|
97
|
+
assignedTo?: string;
|
|
98
|
+
|
|
99
|
+
@doc("Resolution timestamp")
|
|
100
|
+
@visibility(Lifecycle.Read)
|
|
101
|
+
@encodedName("application/json", "resolved_at")
|
|
102
|
+
resolvedAt?: utcDateTime;
|
|
103
|
+
|
|
104
|
+
@doc("Resolved by")
|
|
105
|
+
@visibility(Lifecycle.Read)
|
|
106
|
+
@encodedName("application/json", "resolved_by")
|
|
107
|
+
resolvedBy?: string;
|
|
108
|
+
|
|
109
|
+
@doc("Number of regressions")
|
|
110
|
+
@visibility(Lifecycle.Read)
|
|
111
|
+
@encodedName("application/json", "regression_count")
|
|
112
|
+
regressionCount: int32;
|
|
113
|
+
|
|
114
|
+
@doc("Last associated release")
|
|
115
|
+
@visibility(Lifecycle.Read)
|
|
116
|
+
@encodedName("application/json", "last_release")
|
|
117
|
+
lastRelease?: string;
|
|
118
|
+
|
|
119
|
+
@doc("Issue tags")
|
|
120
|
+
@visibility(Lifecycle.Read)
|
|
121
|
+
@encodedName("application/json", "tags_json")
|
|
122
|
+
tagsJson?: string;
|
|
123
|
+
|
|
124
|
+
@doc("Issue metadata")
|
|
125
|
+
@visibility(Lifecycle.Read)
|
|
126
|
+
@encodedName("application/json", "metadata_json")
|
|
127
|
+
metadataJson?: string;
|
|
128
|
+
|
|
129
|
+
@doc("Creation timestamp")
|
|
130
|
+
@visibility(Lifecycle.Read)
|
|
131
|
+
@encodedName("application/json", "created_at")
|
|
132
|
+
createdAt: utcDateTime;
|
|
133
|
+
|
|
134
|
+
@doc("Last update timestamp")
|
|
135
|
+
@visibility(Lifecycle.Read)
|
|
136
|
+
@encodedName("application/json", "updated_at")
|
|
137
|
+
updatedAt: utcDateTime;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
@doc("Issue severity level")
|
|
141
|
+
enum IssueLevel {
|
|
142
|
+
@doc("Debug level")
|
|
143
|
+
debug: "debug",
|
|
144
|
+
|
|
145
|
+
@doc("Info level")
|
|
146
|
+
info: "info",
|
|
147
|
+
|
|
148
|
+
@doc("Warning level")
|
|
149
|
+
warning: "warning",
|
|
150
|
+
|
|
151
|
+
@doc("Error level")
|
|
152
|
+
error: "error",
|
|
153
|
+
|
|
154
|
+
@doc("Fatal/critical level")
|
|
155
|
+
fatal: "fatal",
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
@doc("Issue lifecycle status")
|
|
159
|
+
enum IssueStatus {
|
|
160
|
+
@doc("Unresolved/new")
|
|
161
|
+
unresolved: "unresolved",
|
|
162
|
+
|
|
163
|
+
@doc("Acknowledged by team")
|
|
164
|
+
acknowledged: "acknowledged",
|
|
165
|
+
|
|
166
|
+
@doc("Being investigated")
|
|
167
|
+
investigating: "investigating",
|
|
168
|
+
|
|
169
|
+
@doc("Fix in progress")
|
|
170
|
+
inProgress: "in_progress",
|
|
171
|
+
|
|
172
|
+
@doc("Resolved")
|
|
173
|
+
resolved: "resolved",
|
|
174
|
+
|
|
175
|
+
@doc("Ignored")
|
|
176
|
+
ignored: "ignored",
|
|
177
|
+
|
|
178
|
+
@doc("Regressed after resolution")
|
|
179
|
+
regressed: "regressed",
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
@doc("Issue priority")
|
|
183
|
+
enum IssuePriority {
|
|
184
|
+
@doc("Critical priority")
|
|
185
|
+
critical: "critical",
|
|
186
|
+
|
|
187
|
+
@doc("High priority")
|
|
188
|
+
high: "high",
|
|
189
|
+
|
|
190
|
+
@doc("Medium priority")
|
|
191
|
+
medium: "medium",
|
|
192
|
+
|
|
193
|
+
@doc("Low priority")
|
|
194
|
+
low: "low",
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
// =============================================================================
|
|
198
|
+
// Error Issue Event
|
|
199
|
+
// =============================================================================
|
|
200
|
+
|
|
201
|
+
@doc("Individual error occurrence linked to an issue")
|
|
202
|
+
@extension("x-csharp-type", "ErrorIssueEventEntity")
|
|
203
|
+
model ErrorIssueEventEntity {
|
|
204
|
+
@doc("Event ID")
|
|
205
|
+
@key
|
|
206
|
+
id: string;
|
|
207
|
+
|
|
208
|
+
@doc("Parent issue")
|
|
209
|
+
@encodedName("application/json", "issue_id")
|
|
210
|
+
issueId: string;
|
|
211
|
+
|
|
212
|
+
@doc("Associated trace ID")
|
|
213
|
+
@encodedName("application/json", "trace_id")
|
|
214
|
+
traceId?: string;
|
|
215
|
+
|
|
216
|
+
@doc("Associated span ID")
|
|
217
|
+
@encodedName("application/json", "span_id")
|
|
218
|
+
spanId?: string;
|
|
219
|
+
|
|
220
|
+
@doc("Error message")
|
|
221
|
+
message?: string;
|
|
222
|
+
|
|
223
|
+
@doc("Stack trace")
|
|
224
|
+
@encodedName("application/json", "stack_trace")
|
|
225
|
+
stackTrace?: string;
|
|
226
|
+
|
|
227
|
+
@doc("Parsed stack frames")
|
|
228
|
+
@encodedName("application/json", "stack_frames_json")
|
|
229
|
+
stackFramesJson?: string;
|
|
230
|
+
|
|
231
|
+
@doc("Environment (dev, staging, prod)")
|
|
232
|
+
environment?: string;
|
|
233
|
+
|
|
234
|
+
@doc("Release version")
|
|
235
|
+
@encodedName("application/json", "release_version")
|
|
236
|
+
releaseVersion?: string;
|
|
237
|
+
|
|
238
|
+
@doc("Affected user ID")
|
|
239
|
+
@encodedName("application/json", "user_id")
|
|
240
|
+
userId?: string;
|
|
241
|
+
|
|
242
|
+
@doc("Client IP address")
|
|
243
|
+
@encodedName("application/json", "user_ip")
|
|
244
|
+
userIp?: string;
|
|
245
|
+
|
|
246
|
+
@doc("Request URL")
|
|
247
|
+
@encodedName("application/json", "request_url")
|
|
248
|
+
requestUrl?: string;
|
|
249
|
+
|
|
250
|
+
@doc("HTTP request method")
|
|
251
|
+
@encodedName("application/json", "request_method")
|
|
252
|
+
requestMethod?: string;
|
|
253
|
+
|
|
254
|
+
@doc("Browser info")
|
|
255
|
+
browser?: string;
|
|
256
|
+
|
|
257
|
+
@doc("Operating system")
|
|
258
|
+
os?: string;
|
|
259
|
+
|
|
260
|
+
@doc("Device info")
|
|
261
|
+
device?: string;
|
|
262
|
+
|
|
263
|
+
@doc("Runtime name")
|
|
264
|
+
runtime?: string;
|
|
265
|
+
|
|
266
|
+
@doc("Runtime version")
|
|
267
|
+
@encodedName("application/json", "runtime_version")
|
|
268
|
+
runtimeVersion?: string;
|
|
269
|
+
|
|
270
|
+
@doc("Additional context data")
|
|
271
|
+
@encodedName("application/json", "context_json")
|
|
272
|
+
contextJson?: string;
|
|
273
|
+
|
|
274
|
+
@doc("Event tags")
|
|
275
|
+
@encodedName("application/json", "tags_json")
|
|
276
|
+
tagsJson?: string;
|
|
277
|
+
|
|
278
|
+
@doc("Event timestamp")
|
|
279
|
+
timestamp: utcDateTime;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
// =============================================================================
|
|
283
|
+
// Error Breadcrumb
|
|
284
|
+
// =============================================================================
|
|
285
|
+
|
|
286
|
+
@doc("Pre-error context breadcrumb")
|
|
287
|
+
@extension("x-csharp-type", "ErrorBreadcrumbEntity")
|
|
288
|
+
model ErrorBreadcrumbEntity {
|
|
289
|
+
@doc("Breadcrumb ID")
|
|
290
|
+
@key
|
|
291
|
+
id: string;
|
|
292
|
+
|
|
293
|
+
@doc("Parent event")
|
|
294
|
+
@encodedName("application/json", "event_id")
|
|
295
|
+
eventId: string;
|
|
296
|
+
|
|
297
|
+
@doc("Breadcrumb type")
|
|
298
|
+
@encodedName("application/json", "breadcrumb_type")
|
|
299
|
+
breadcrumbType: BreadcrumbType;
|
|
300
|
+
|
|
301
|
+
@doc("Category (e.g. http, db, ui)")
|
|
302
|
+
category?: string;
|
|
303
|
+
|
|
304
|
+
@doc("Breadcrumb message")
|
|
305
|
+
message?: string;
|
|
306
|
+
|
|
307
|
+
@doc("Severity level")
|
|
308
|
+
level: string;
|
|
309
|
+
|
|
310
|
+
@doc("Breadcrumb data")
|
|
311
|
+
@encodedName("application/json", "data_json")
|
|
312
|
+
dataJson?: string;
|
|
313
|
+
|
|
314
|
+
@doc("Breadcrumb timestamp")
|
|
315
|
+
timestamp: utcDateTime;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
@doc("Breadcrumb types")
|
|
319
|
+
enum BreadcrumbType {
|
|
320
|
+
@doc("Navigation event")
|
|
321
|
+
navigation: "navigation",
|
|
322
|
+
|
|
323
|
+
@doc("HTTP request")
|
|
324
|
+
http: "http",
|
|
325
|
+
|
|
326
|
+
@doc("Database query")
|
|
327
|
+
query: "query",
|
|
328
|
+
|
|
329
|
+
@doc("User interaction")
|
|
330
|
+
user: "user",
|
|
331
|
+
|
|
332
|
+
@doc("Log message")
|
|
333
|
+
log: "log",
|
|
334
|
+
|
|
335
|
+
@doc("Error occurrence")
|
|
336
|
+
error: "error",
|
|
337
|
+
|
|
338
|
+
@doc("Debug information")
|
|
339
|
+
debug: "debug",
|
|
340
|
+
|
|
341
|
+
@doc("Default/other")
|
|
342
|
+
default: "default",
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
// =============================================================================
|
|
346
|
+
// Error Regression
|
|
347
|
+
// =============================================================================
|
|
348
|
+
|
|
349
|
+
@doc("Regression window across releases")
|
|
350
|
+
@extension("x-csharp-type", "ErrorRegressionEntity")
|
|
351
|
+
model ErrorRegressionEntity {
|
|
352
|
+
@doc("Regression ID")
|
|
353
|
+
@key
|
|
354
|
+
id: string;
|
|
355
|
+
|
|
356
|
+
@doc("Regressed issue")
|
|
357
|
+
@encodedName("application/json", "issue_id")
|
|
358
|
+
issueId: string;
|
|
359
|
+
|
|
360
|
+
@doc("Release where issue was resolved")
|
|
361
|
+
@encodedName("application/json", "resolved_in_release")
|
|
362
|
+
resolvedInRelease: string;
|
|
363
|
+
|
|
364
|
+
@doc("Release where issue regressed")
|
|
365
|
+
@encodedName("application/json", "regressed_in_release")
|
|
366
|
+
regressedInRelease: string;
|
|
367
|
+
|
|
368
|
+
@doc("Resolution timestamp")
|
|
369
|
+
@encodedName("application/json", "resolved_at")
|
|
370
|
+
resolvedAt: utcDateTime;
|
|
371
|
+
|
|
372
|
+
@doc("Regression timestamp")
|
|
373
|
+
@encodedName("application/json", "regressed_at")
|
|
374
|
+
regressedAt: utcDateTime;
|
|
375
|
+
|
|
376
|
+
@doc("Occurrences before regression")
|
|
377
|
+
@encodedName("application/json", "occurrence_count_before")
|
|
378
|
+
occurrenceCountBefore: int32;
|
|
379
|
+
|
|
380
|
+
@doc("Occurrences after regression")
|
|
381
|
+
@encodedName("application/json", "occurrence_count_after")
|
|
382
|
+
occurrenceCountAfter: int32;
|
|
383
|
+
|
|
384
|
+
@doc("Whether auto-detected")
|
|
385
|
+
@encodedName("application/json", "auto_detected")
|
|
386
|
+
autoDetected: boolean;
|
|
387
|
+
|
|
388
|
+
@doc("Detection timestamp")
|
|
389
|
+
@encodedName("application/json", "created_at")
|
|
390
|
+
createdAt: utcDateTime;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
// =============================================================================
|
|
394
|
+
// Error Ownership
|
|
395
|
+
// =============================================================================
|
|
396
|
+
|
|
397
|
+
@doc("Code ownership rule for auto-triage")
|
|
398
|
+
@extension("x-csharp-type", "ErrorOwnershipEntity")
|
|
399
|
+
model ErrorOwnershipEntity {
|
|
400
|
+
@doc("Rule ID")
|
|
401
|
+
@key
|
|
402
|
+
id: string;
|
|
403
|
+
|
|
404
|
+
@doc("Owning project")
|
|
405
|
+
@encodedName("application/json", "project_id")
|
|
406
|
+
projectId: string;
|
|
407
|
+
|
|
408
|
+
@doc("Rule type (path, tag, url, module)")
|
|
409
|
+
@encodedName("application/json", "rule_type")
|
|
410
|
+
ruleType: string;
|
|
411
|
+
|
|
412
|
+
@doc("Match pattern (glob, regex, or exact)")
|
|
413
|
+
pattern: string;
|
|
414
|
+
|
|
415
|
+
@doc("Owner type (user, team)")
|
|
416
|
+
@encodedName("application/json", "owner_type")
|
|
417
|
+
ownerType: string;
|
|
418
|
+
|
|
419
|
+
@doc("Owner identifier")
|
|
420
|
+
@encodedName("application/json", "owner_id")
|
|
421
|
+
ownerId: string;
|
|
422
|
+
|
|
423
|
+
@doc("Rule priority (higher wins)")
|
|
424
|
+
priority: int32;
|
|
425
|
+
|
|
426
|
+
@doc("Creation timestamp")
|
|
427
|
+
@encodedName("application/json", "created_at")
|
|
428
|
+
createdAt: utcDateTime;
|
|
429
|
+
|
|
430
|
+
@doc("Last update timestamp")
|
|
431
|
+
@encodedName("application/json", "updated_at")
|
|
432
|
+
updatedAt: utcDateTime;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
// =============================================================================
|
|
436
|
+
// Error Release Marker
|
|
437
|
+
// =============================================================================
|
|
438
|
+
|
|
439
|
+
@doc("Deploy marker for issue auto-transition")
|
|
440
|
+
@extension("x-csharp-type", "ErrorReleaseMarkerEntity")
|
|
441
|
+
model ErrorReleaseMarkerEntity {
|
|
442
|
+
@doc("Marker ID")
|
|
443
|
+
@key
|
|
444
|
+
id: string;
|
|
445
|
+
|
|
446
|
+
@doc("Owning project")
|
|
447
|
+
@encodedName("application/json", "project_id")
|
|
448
|
+
projectId: string;
|
|
449
|
+
|
|
450
|
+
@doc("Release version")
|
|
451
|
+
@encodedName("application/json", "release_version")
|
|
452
|
+
releaseVersion: string;
|
|
453
|
+
|
|
454
|
+
@doc("Target environment")
|
|
455
|
+
environment: string;
|
|
456
|
+
|
|
457
|
+
@doc("Git commit SHA")
|
|
458
|
+
@encodedName("application/json", "commit_sha")
|
|
459
|
+
commitSha?: string;
|
|
460
|
+
|
|
461
|
+
@doc("Commit message")
|
|
462
|
+
@encodedName("application/json", "commit_message")
|
|
463
|
+
commitMessage?: string;
|
|
464
|
+
|
|
465
|
+
@doc("Deployed by")
|
|
466
|
+
@encodedName("application/json", "deployed_by")
|
|
467
|
+
deployedBy?: string;
|
|
468
|
+
|
|
469
|
+
@doc("Issues resolved by this release")
|
|
470
|
+
@encodedName("application/json", "issues_resolved_count")
|
|
471
|
+
issuesResolvedCount: int32;
|
|
472
|
+
|
|
473
|
+
@doc("Issues regressed by this release")
|
|
474
|
+
@encodedName("application/json", "issues_regressed_count")
|
|
475
|
+
issuesRegressedCount: int32;
|
|
476
|
+
|
|
477
|
+
@doc("Deployment timestamp")
|
|
478
|
+
@encodedName("application/json", "deployed_at")
|
|
479
|
+
deployedAt: utcDateTime;
|
|
480
|
+
|
|
481
|
+
@doc("Creation timestamp")
|
|
482
|
+
@encodedName("application/json", "created_at")
|
|
483
|
+
createdAt: utcDateTime;
|
|
484
|
+
}
|