-
Notifications
You must be signed in to change notification settings - Fork 5.8k
Expand file tree
/
Copy pathIncident.tsp
More file actions
201 lines (182 loc) · 4.86 KB
/
Copy pathIncident.tsp
File metadata and controls
201 lines (182 loc) · 4.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
import "@azure-tools/typespec-azure-core";
import "@azure-tools/typespec-azure-resource-manager";
import "@typespec/openapi";
import "@typespec/rest";
import "./models.tsp";
import "./VirtualResource.tsp";
using TypeSpec.Rest;
using Azure.ResourceManager;
using TypeSpec.Http;
using TypeSpec.Versioning;
namespace Microsoft.SecurityInsights;
/**
* Represents an incident in Azure Security Insights.
*/
model Incident is Azure.ResourceManager.ProxyResource<IncidentProperties> {
...ResourceNameParameter<
Resource = Incident,
KeyName = "incidentId",
SegmentName = "incidents",
NamePattern = ""
>;
/**
* Etag of the azure resource
*/
#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details"
etag?: string;
}
// Added manually only to fix KeyName difference from Incident resource, A.K.A. incidentId vs incidentIdentifier
alias IncidentOps = Azure.ResourceManager.Legacy.ExtensionOperations<
{
...ApiVersionParameter;
...SubscriptionIdParameter;
...ResourceGroupParameter;
/** the provider namespace */
@path
@segment("providers")
@key
providerNamespace: "Microsoft.OperationalInsights";
/**
* The name of the workspace.
*/
@segment("workspaces")
@key
@path
@minLength(1)
@maxLength(90)
@pattern("^[A-Za-z0-9][A-Za-z0-9-]+[A-Za-z0-9]$")
workspaceName: string;
},
{
...Extension.ExtensionProviderNamespace<Incident>;
},
{
...Extension.ExtensionProviderNamespace<Incident>;
/**
* The incident identifier.
*/
@path
@key
@segment("incidents")
incidentIdentifier: string;
}
>;
@armResourceOperations(#{ omitTags: true })
interface Incidents {
/**
* Gets a given incident.
*/
@tag("Incidents")
get is Extension.Read<OperationalInsights, Incident, Error = CloudError>;
/**
* Creates or updates an incident.
*/
@tag("Incidents")
createOrUpdate is Extension.CreateOrReplaceSync<
OperationalInsights,
Incident,
Error = CloudError
>;
/**
* Deletes a given incident.
*/
@tag("Incidents")
delete is Extension.DeleteSync<
OperationalInsights,
Incident,
Error = CloudError
>;
/**
* Gets all incidents.
*/
@tag("Incidents")
list is Extension.ListByTarget<
OperationalInsights,
Incident,
Parameters = {
/**
* Filters the results, based on a Boolean condition. Optional.
*/
@query("$filter")
$filter?: string;
/**
* Sorts the results. Optional.
*/
@query("$orderby")
$orderby?: string;
/**
* Returns only the first n results. Optional.
*/
@maxValue(1000)
@query("$top")
$top?: int32;
/**
* Skiptoken is only used if a previous operation returned a partial result. If a previous response contains a nextLink element, the value of the nextLink element will include a skiptoken parameter that specifies a starting point to use for subsequent calls. Optional.
*/
@query("$skipToken")
$skipToken?: string;
},
Response = ArmResponse<IncidentList>,
Error = CloudError
>;
/**
* Triggers playbook on a specific incident
*/
#suppress "@azure-tools/typespec-azure-resource-manager/no-response-body" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details"
@tag("manualTrigger")
runPlaybook is IncidentOps.ActionSync<
Incident,
Request = ManualTriggerRequestBody,
Response = NoContentResponse & {
#suppress "@azure-tools/typespec-azure-core/no-unknown" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details"
@added(Versions.v2025_10_01_preview)
@body
body: unknown;
},
ErrorType = CloudError,
OptionalRequestBody = true
>;
/**
* Gets all alerts for an incident.
*/
@action("alerts")
@tag("IncidentAlerts")
listAlerts is Extension.ActionSync<
OperationalInsights,
Incident,
void,
ArmResponse<IncidentAlertList>,
Error = CloudError
>;
/**
* Gets all bookmarks for an incident.
*/
@action("bookmarks")
@tag("IncidentBookmarks")
listBookmarks is Extension.ActionSync<
OperationalInsights,
Incident,
void,
ArmResponse<IncidentBookmarkList>,
Error = CloudError
>;
/**
* Gets all entities for an incident.
*/
@action("entities")
@tag("IncidentEntities")
listEntities is Extension.ActionSync<
OperationalInsights,
Incident,
void,
ArmResponse<IncidentEntitiesResponse>,
Error = CloudError
>;
}
@@doc(Incident.name, "Incident ID");
@@doc(Incident.properties, "Incident properties");
@@doc(Incidents.createOrUpdate::parameters.resource, "The incident");
@@doc(
Incidents.runPlaybook::parameters.body,
"Describes the request body for triggering a playbook on an incident."
);