@keystrokehq/sentry 0.0.15 → 0.0.16-integration-id-canonicalization.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/README.md +40 -187
- package/dist/credential-sets/index.d.mts +2 -0
- package/dist/credential-sets/index.mjs +4 -0
- package/dist/index.d.mts +4 -1
- package/dist/index.mjs +6 -1
- package/dist/operations/index.d.mts +2 -0
- package/dist/operations/index.mjs +3 -0
- package/dist/{schemas.d.mts → schemas/index.d.mts} +3 -3
- package/dist/schemas/index.mjs +3 -0
- package/dist/{schemas.mjs → sentry-api-DjJ24hwX.mjs} +2 -2
- package/dist/sentry-app.credential-set-4DLRUKF9.d.mts +59 -0
- package/dist/sentry-app.credential-set-Cdj6Qxiz.mjs +23 -0
- package/dist/sentry.credential-set-2b3TPFqv.mjs +696 -0
- package/dist/view-organization-notification-actions.operation-BI2aB_Mj.mjs +4548 -0
- package/dist/view-organization-notification-actions.operation-C7pc8cl_.d.mts +6840 -0
- package/package.json +14 -121
- package/dist/_official/index.d.mts +0 -41
- package/dist/_official/index.mjs +0 -3
- package/dist/_runtime/index.d.mts +0 -2
- package/dist/_runtime/index.mjs +0 -3
- package/dist/alerts.d.mts +0 -462
- package/dist/alerts.mjs +0 -300
- package/dist/client.d.mts +0 -86
- package/dist/client.mjs +0 -233
- package/dist/connection.d.mts +0 -3
- package/dist/connection.mjs +0 -3
- package/dist/dashboards.d.mts +0 -162
- package/dist/dashboards.mjs +0 -122
- package/dist/debug-files.d.mts +0 -102
- package/dist/debug-files.mjs +0 -73
- package/dist/deploys.d.mts +0 -86
- package/dist/deploys.mjs +0 -67
- package/dist/discover.d.mts +0 -194
- package/dist/discover.mjs +0 -138
- package/dist/endpoint-factory-DcT49a8O.mjs +0 -96
- package/dist/environments.d.mts +0 -96
- package/dist/environments.mjs +0 -71
- package/dist/errors-DfEFwcTe.mjs +0 -142
- package/dist/events-api.d.mts +0 -254
- package/dist/events-api.mjs +0 -184
- package/dist/events.d.mts +0 -754
- package/dist/events.mjs +0 -142
- package/dist/feedback.d.mts +0 -82
- package/dist/feedback.mjs +0 -63
- package/dist/integration-D7KCM1-p.mjs +0 -75
- package/dist/integration-veqa_7yB.d.mts +0 -33
- package/dist/issues.d.mts +0 -458
- package/dist/issues.mjs +0 -324
- package/dist/members.d.mts +0 -308
- package/dist/members.mjs +0 -156
- package/dist/messaging.d.mts +0 -1
- package/dist/messaging.mjs +0 -1
- package/dist/monitors.d.mts +0 -458
- package/dist/monitors.mjs +0 -234
- package/dist/notifications.d.mts +0 -180
- package/dist/notifications.mjs +0 -133
- package/dist/organizations.d.mts +0 -442
- package/dist/organizations.mjs +0 -334
- package/dist/pagination-PlgAqbZt.mjs +0 -116
- package/dist/project-keys.d.mts +0 -246
- package/dist/project-keys.mjs +0 -122
- package/dist/projects.d.mts +0 -534
- package/dist/projects.mjs +0 -378
- package/dist/releases.d.mts +0 -780
- package/dist/releases.mjs +0 -479
- package/dist/replays.d.mts +0 -234
- package/dist/replays.mjs +0 -192
- package/dist/scim.d.mts +0 -324
- package/dist/scim.mjs +0 -249
- package/dist/scopes-RRU0vt-a.mjs +0 -36
- package/dist/teams.d.mts +0 -448
- package/dist/teams.mjs +0 -266
- package/dist/triggers.d.mts +0 -41
- package/dist/triggers.mjs +0 -56
- package/dist/user-emails.d.mts +0 -84
- package/dist/user-emails.mjs +0 -60
- package/dist/verification.d.mts +0 -30
- package/dist/verification.mjs +0 -83
- package/dist/webhooks.d.mts +0 -158
- package/dist/webhooks.mjs +0 -108
|
@@ -0,0 +1,4548 @@
|
|
|
1
|
+
import { n as createSentryClient, t as sentryCredentialSet } from "./sentry.credential-set-2b3TPFqv.mjs";
|
|
2
|
+
import { A as sentryNotificationActionSchema, B as sentryReleaseFileSchema, C as sentryJsonArraySchema, D as sentryMetricAlertRuleSchema, E as sentryMemberSchema, G as sentryScimUserSchema, H as sentryReplaySchema, I as sentryProjectDetailsSchema, J as sentryUserEmailSchema, K as sentrySlugSchema, L as sentryProjectHookSchema, M as sentryOrganizationDetailsSchema, O as sentryMonitorSchema, R as sentryProjectKeySchema, T as sentryListInputSchema, U as sentryRepositorySchema, V as sentryReleaseSchema, W as sentryScimGroupSchema, a as orgTeamScopeInputSchema, b as sentryIssueSchema, d as sentryDeploySchema, f as sentryDiscoverSavedQuerySchema, g as sentryIdSchema, h as sentryFeedbackSchema, i as orgScopeInputSchema, l as sentryDashboardSchema, m as sentryEventSchema, n as orgProjectScopeInputSchema, p as sentryEnvironmentSchema, q as sentryTeamSchema, r as orgReleaseScopeInputSchema, s as sentryCommitSchema, t as orgIssueScopeInputSchema, u as sentryDebugFileSchema, w as sentryJsonObjectSchema, x as sentryIssueStatusSchema, y as sentryIssueAlertRuleSchema, z as sentryProjectSummarySchema } from "./sentry-api-DjJ24hwX.mjs";
|
|
3
|
+
import { Operation } from "@keystrokehq/core";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
|
|
6
|
+
//#region src/utils/endpoint-factory.ts
|
|
7
|
+
/**
|
|
8
|
+
* Endpoint factory for Sentry management-API operations.
|
|
9
|
+
*
|
|
10
|
+
* Pattern inspired by `kalshi/src/endpoint-factory.ts`: every
|
|
11
|
+
* domain module declares a small table of endpoint specs, and this module
|
|
12
|
+
* emits one operation per entry. Because the Sentry API is deeply
|
|
13
|
+
* regular (REST + path params + optional query + optional body), we can
|
|
14
|
+
* cover 176 actions with ~10 lines of code per endpoint instead of ~40.
|
|
15
|
+
*/
|
|
16
|
+
const ORGANIZATION_SLUG_TOKEN = "organization_slug";
|
|
17
|
+
function substitutePath(template, pathParams, input, credentials) {
|
|
18
|
+
let url = template;
|
|
19
|
+
for (const param of pathParams) {
|
|
20
|
+
const raw = input[param.name];
|
|
21
|
+
let value;
|
|
22
|
+
if (typeof raw === "string" && raw.length > 0) value = raw;
|
|
23
|
+
else if (param.name === ORGANIZATION_SLUG_TOKEN && typeof credentials.SENTRY_ORG_SLUG === "string" && credentials.SENTRY_ORG_SLUG.length > 0) value = credentials.SENTRY_ORG_SLUG;
|
|
24
|
+
else throw new Error(`Sentry endpoint requires path param "${param.name}" but it was not supplied on the operation input and could not be inferred from credentials.`);
|
|
25
|
+
url = url.replaceAll(param.placeholder, encodeURIComponent(value));
|
|
26
|
+
}
|
|
27
|
+
if (url.includes("{")) throw new Error(`Sentry endpoint path template "${template}" contains unresolved placeholders; every "{token}" must have a matching pathParams entry.`);
|
|
28
|
+
return url;
|
|
29
|
+
}
|
|
30
|
+
function pickFields(input, fields) {
|
|
31
|
+
if (!fields || fields.length === 0) return void 0;
|
|
32
|
+
const picked = {};
|
|
33
|
+
let any = false;
|
|
34
|
+
for (const key of fields) {
|
|
35
|
+
const value = input[key];
|
|
36
|
+
if (value !== void 0) {
|
|
37
|
+
picked[key] = value;
|
|
38
|
+
any = true;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return any ? picked : void 0;
|
|
42
|
+
}
|
|
43
|
+
function toBody(input, definition) {
|
|
44
|
+
if (definition.method === "GET" || definition.method === "DELETE") return void 0;
|
|
45
|
+
if (definition.bodyFields && definition.bodyFields.length > 0) return pickFields(input, definition.bodyFields) ?? {};
|
|
46
|
+
return {};
|
|
47
|
+
}
|
|
48
|
+
/** Exported so domain-module tests can exercise path substitution directly. */
|
|
49
|
+
function buildSentryEndpointRequest(definition, input, credentials) {
|
|
50
|
+
return {
|
|
51
|
+
url: substitutePath(definition.path, definition.pathParams ?? [], input, credentials),
|
|
52
|
+
query: pickFields(input, definition.queryFields),
|
|
53
|
+
body: toBody(input, definition)
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
async function executeEndpoint(definition, rawInput, credentials) {
|
|
57
|
+
const input = rawInput;
|
|
58
|
+
const client = createSentryClient({
|
|
59
|
+
SENTRY_ACCESS_TOKEN: credentials.SENTRY_ACCESS_TOKEN,
|
|
60
|
+
...credentials.SENTRY_REGION_URL ? { SENTRY_REGION_URL: credentials.SENTRY_REGION_URL } : {},
|
|
61
|
+
...credentials.SENTRY_ORG_SLUG ? { SENTRY_ORG_SLUG: credentials.SENTRY_ORG_SLUG } : {}
|
|
62
|
+
});
|
|
63
|
+
const { url, query, body } = buildSentryEndpointRequest(definition, input, credentials);
|
|
64
|
+
if (definition.pagination === "cursor") {
|
|
65
|
+
const items = [];
|
|
66
|
+
for await (const page of client.paginate(url, query ?? {})) if (Array.isArray(page.data)) items.push(...page.data);
|
|
67
|
+
else items.push(page.data);
|
|
68
|
+
return items;
|
|
69
|
+
}
|
|
70
|
+
switch (definition.method) {
|
|
71
|
+
case "GET": return (await client.get(url, query)).data;
|
|
72
|
+
case "POST": return (await client.post(url, body, query)).data;
|
|
73
|
+
case "PUT": return (await client.put(url, body, query)).data;
|
|
74
|
+
case "PATCH": return (await client.patch(url, body, query)).data;
|
|
75
|
+
case "DELETE": return (await client.delete(url, query)).data;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Materializes a single Sentry endpoint definition into an `Operation`
|
|
80
|
+
* wrapped with the official-integration factory.
|
|
81
|
+
*/
|
|
82
|
+
function defineSentryEndpoint(definition, credentialSet = sentryCredentialSet) {
|
|
83
|
+
return new Operation({
|
|
84
|
+
credentialSets: [credentialSet],
|
|
85
|
+
id: definition.id,
|
|
86
|
+
name: definition.name,
|
|
87
|
+
description: definition.description,
|
|
88
|
+
input: definition.input,
|
|
89
|
+
output: definition.output,
|
|
90
|
+
...definition.needsApproval ? { needsApproval: true } : {},
|
|
91
|
+
...definition.requiredOAuthScopes ? { requiredOAuthScopes: definition.requiredOAuthScopes } : {},
|
|
92
|
+
run: async (input, context) => {
|
|
93
|
+
return await executeEndpoint(definition, input, context.credentials.sentry);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
//#endregion
|
|
99
|
+
//#region src/utils/scopes.ts
|
|
100
|
+
/**
|
|
101
|
+
* Centralised OAuth scope constants for Sentry.
|
|
102
|
+
*
|
|
103
|
+
* Every exported operation declares the minimum set of scopes the platform
|
|
104
|
+
* must see on the connected token before invoking it. These drive the
|
|
105
|
+
* per-operation scope-composition check that `@keystrokehq/core`
|
|
106
|
+
* performs at runtime (see #263).
|
|
107
|
+
*
|
|
108
|
+
* Scope strings are lifted verbatim from Sentry's API permission matrix at
|
|
109
|
+
* <https://docs.sentry.io/api/permissions/>.
|
|
110
|
+
*/
|
|
111
|
+
const SENTRY_SCOPE = {
|
|
112
|
+
orgRead: ["org:read"],
|
|
113
|
+
orgWrite: ["org:write"],
|
|
114
|
+
orgAdmin: ["org:admin"],
|
|
115
|
+
memberRead: ["member:read"],
|
|
116
|
+
memberWrite: ["member:write"],
|
|
117
|
+
memberAdmin: ["member:admin"],
|
|
118
|
+
teamRead: ["team:read"],
|
|
119
|
+
teamWrite: ["team:write"],
|
|
120
|
+
teamAdmin: ["team:admin"],
|
|
121
|
+
projectRead: ["project:read"],
|
|
122
|
+
projectWrite: ["project:write"],
|
|
123
|
+
projectAdmin: ["project:admin"],
|
|
124
|
+
projectReleases: ["project:releases"],
|
|
125
|
+
eventRead: ["event:read"],
|
|
126
|
+
eventWrite: ["event:write"],
|
|
127
|
+
eventAdmin: ["event:admin"],
|
|
128
|
+
alertsRead: ["alerts:read"],
|
|
129
|
+
alertsWrite: ["alerts:write"],
|
|
130
|
+
releaseAdmin: ["release:admin"]
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
//#endregion
|
|
134
|
+
//#region src/utils/projects-endpoints.ts
|
|
135
|
+
/**
|
|
136
|
+
* Sentry project operations. Maps to PLAN.md §6.4 (19 actions).
|
|
137
|
+
*/
|
|
138
|
+
const ORG_PROJECT$8 = [{
|
|
139
|
+
name: "organization_slug",
|
|
140
|
+
placeholder: "{organization_slug}"
|
|
141
|
+
}, {
|
|
142
|
+
name: "project_slug",
|
|
143
|
+
placeholder: "{project_slug}"
|
|
144
|
+
}];
|
|
145
|
+
const ORG_PROJECT_TEAM = [...ORG_PROJECT$8, {
|
|
146
|
+
name: "team_slug",
|
|
147
|
+
placeholder: "{team_slug}"
|
|
148
|
+
}];
|
|
149
|
+
const ORG_TEAM_FOR_PROJECT = [{
|
|
150
|
+
name: "organization_slug",
|
|
151
|
+
placeholder: "{organization_slug}"
|
|
152
|
+
}, {
|
|
153
|
+
name: "team_slug",
|
|
154
|
+
placeholder: "{team_slug}"
|
|
155
|
+
}];
|
|
156
|
+
const accessProjectInformationDefinition = {
|
|
157
|
+
id: "sentry.access-project-information",
|
|
158
|
+
name: "Access Project Information",
|
|
159
|
+
description: "Fetch a project by its org slug + project slug.",
|
|
160
|
+
method: "GET",
|
|
161
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/",
|
|
162
|
+
pathParams: ORG_PROJECT$8,
|
|
163
|
+
input: orgProjectScopeInputSchema,
|
|
164
|
+
output: sentryProjectDetailsSchema,
|
|
165
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectRead]
|
|
166
|
+
};
|
|
167
|
+
const getProjectListDefinition = {
|
|
168
|
+
id: "sentry.get-project-list",
|
|
169
|
+
name: "List Projects",
|
|
170
|
+
description: "List projects visible to the authenticated token across all orgs.",
|
|
171
|
+
method: "GET",
|
|
172
|
+
path: "/api/0/projects/",
|
|
173
|
+
input: sentryListInputSchema,
|
|
174
|
+
queryFields: [
|
|
175
|
+
"cursor",
|
|
176
|
+
"per_page",
|
|
177
|
+
"query"
|
|
178
|
+
],
|
|
179
|
+
output: z.array(sentryProjectSummarySchema),
|
|
180
|
+
pagination: "cursor",
|
|
181
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectRead]
|
|
182
|
+
};
|
|
183
|
+
const updateProjectDetailsDefinition = {
|
|
184
|
+
id: "sentry.update-project-details",
|
|
185
|
+
name: "Update Project Details",
|
|
186
|
+
description: "Patch project-level settings.",
|
|
187
|
+
method: "PUT",
|
|
188
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/",
|
|
189
|
+
pathParams: ORG_PROJECT$8,
|
|
190
|
+
input: orgProjectScopeInputSchema.extend({
|
|
191
|
+
name: z.string().min(1).optional(),
|
|
192
|
+
slug: sentrySlugSchema.optional(),
|
|
193
|
+
platform: z.string().optional(),
|
|
194
|
+
team: sentrySlugSchema.optional(),
|
|
195
|
+
digestsMinDelay: z.number().int().optional(),
|
|
196
|
+
digestsMaxDelay: z.number().int().optional(),
|
|
197
|
+
resolveAge: z.number().int().optional(),
|
|
198
|
+
dataScrubber: z.boolean().optional(),
|
|
199
|
+
dataScrubberDefaults: z.boolean().optional(),
|
|
200
|
+
sensitiveFields: z.array(z.string()).optional(),
|
|
201
|
+
safeFields: z.array(z.string()).optional(),
|
|
202
|
+
scrubIPAddresses: z.boolean().optional(),
|
|
203
|
+
storeCrashReports: z.number().int().optional(),
|
|
204
|
+
relayPiiConfig: z.string().optional(),
|
|
205
|
+
allowedDomains: z.array(z.string()).optional()
|
|
206
|
+
}),
|
|
207
|
+
bodyFields: [
|
|
208
|
+
"name",
|
|
209
|
+
"slug",
|
|
210
|
+
"platform",
|
|
211
|
+
"team",
|
|
212
|
+
"digestsMinDelay",
|
|
213
|
+
"digestsMaxDelay",
|
|
214
|
+
"resolveAge",
|
|
215
|
+
"dataScrubber",
|
|
216
|
+
"dataScrubberDefaults",
|
|
217
|
+
"sensitiveFields",
|
|
218
|
+
"safeFields",
|
|
219
|
+
"scrubIPAddresses",
|
|
220
|
+
"storeCrashReports",
|
|
221
|
+
"relayPiiConfig",
|
|
222
|
+
"allowedDomains"
|
|
223
|
+
],
|
|
224
|
+
output: sentryProjectDetailsSchema,
|
|
225
|
+
needsApproval: true,
|
|
226
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectWrite]
|
|
227
|
+
};
|
|
228
|
+
const deleteProjectByIdDefinition = {
|
|
229
|
+
id: "sentry.delete-project-by-id",
|
|
230
|
+
name: "Delete Project",
|
|
231
|
+
description: "Delete a project by slug.",
|
|
232
|
+
method: "DELETE",
|
|
233
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/",
|
|
234
|
+
pathParams: ORG_PROJECT$8,
|
|
235
|
+
input: orgProjectScopeInputSchema,
|
|
236
|
+
output: z.unknown(),
|
|
237
|
+
needsApproval: true,
|
|
238
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectAdmin]
|
|
239
|
+
};
|
|
240
|
+
const createTeamProjectForOrganizationDefinition = {
|
|
241
|
+
id: "sentry.create-team-project-for-organization",
|
|
242
|
+
name: "Create Team Project",
|
|
243
|
+
description: "Create a new project owned by a team.",
|
|
244
|
+
method: "POST",
|
|
245
|
+
path: "/api/0/teams/{organization_slug}/{team_slug}/projects/",
|
|
246
|
+
pathParams: ORG_TEAM_FOR_PROJECT,
|
|
247
|
+
input: z.object({
|
|
248
|
+
organization_slug: sentrySlugSchema.optional(),
|
|
249
|
+
team_slug: sentrySlugSchema,
|
|
250
|
+
name: z.string().min(1),
|
|
251
|
+
slug: sentrySlugSchema.optional(),
|
|
252
|
+
platform: z.string().optional(),
|
|
253
|
+
default_rules: z.boolean().optional()
|
|
254
|
+
}),
|
|
255
|
+
bodyFields: [
|
|
256
|
+
"name",
|
|
257
|
+
"slug",
|
|
258
|
+
"platform",
|
|
259
|
+
"default_rules"
|
|
260
|
+
],
|
|
261
|
+
output: sentryProjectDetailsSchema,
|
|
262
|
+
needsApproval: true,
|
|
263
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectWrite]
|
|
264
|
+
};
|
|
265
|
+
const addTeamToProjectDefinition = {
|
|
266
|
+
id: "sentry.add-team-to-project",
|
|
267
|
+
name: "Add Team To Project",
|
|
268
|
+
description: "Grant a team access to an existing project.",
|
|
269
|
+
method: "POST",
|
|
270
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/teams/{team_slug}/",
|
|
271
|
+
pathParams: ORG_PROJECT_TEAM,
|
|
272
|
+
input: orgProjectScopeInputSchema.extend({ team_slug: sentrySlugSchema }),
|
|
273
|
+
output: sentryProjectDetailsSchema,
|
|
274
|
+
needsApproval: true,
|
|
275
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectWrite]
|
|
276
|
+
};
|
|
277
|
+
const retrieveProjectTeamsDefinition = {
|
|
278
|
+
id: "sentry.retrieve-project-teams",
|
|
279
|
+
name: "Retrieve Project Teams",
|
|
280
|
+
description: "List the teams that own a project.",
|
|
281
|
+
method: "GET",
|
|
282
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/teams/",
|
|
283
|
+
pathParams: ORG_PROJECT$8,
|
|
284
|
+
input: sentryListInputSchema.merge(orgProjectScopeInputSchema),
|
|
285
|
+
queryFields: [
|
|
286
|
+
"cursor",
|
|
287
|
+
"per_page",
|
|
288
|
+
"query"
|
|
289
|
+
],
|
|
290
|
+
output: z.array(sentryTeamSchema),
|
|
291
|
+
pagination: "cursor",
|
|
292
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectRead]
|
|
293
|
+
};
|
|
294
|
+
const deleteProjectTeamAssociationDefinition = {
|
|
295
|
+
id: "sentry.delete-project-team-association",
|
|
296
|
+
name: "Delete Project Team Association",
|
|
297
|
+
description: "Revoke a team’s access to a project.",
|
|
298
|
+
method: "DELETE",
|
|
299
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/teams/{team_slug}/",
|
|
300
|
+
pathParams: ORG_PROJECT_TEAM,
|
|
301
|
+
input: orgProjectScopeInputSchema.extend({ team_slug: sentrySlugSchema }),
|
|
302
|
+
output: z.unknown(),
|
|
303
|
+
needsApproval: true,
|
|
304
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectWrite]
|
|
305
|
+
};
|
|
306
|
+
const retrieveProjectMembersListDefinition = {
|
|
307
|
+
id: "sentry.retrieve-project-members-list",
|
|
308
|
+
name: "Retrieve Project Members",
|
|
309
|
+
description: "List the members who have access to a project.",
|
|
310
|
+
method: "GET",
|
|
311
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/members/",
|
|
312
|
+
pathParams: ORG_PROJECT$8,
|
|
313
|
+
input: sentryListInputSchema.merge(orgProjectScopeInputSchema),
|
|
314
|
+
queryFields: [
|
|
315
|
+
"cursor",
|
|
316
|
+
"per_page",
|
|
317
|
+
"query"
|
|
318
|
+
],
|
|
319
|
+
output: z.array(sentryMemberSchema),
|
|
320
|
+
pagination: "cursor",
|
|
321
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectRead]
|
|
322
|
+
};
|
|
323
|
+
const listProjectUsersDefinition = {
|
|
324
|
+
id: "sentry.list-project-users",
|
|
325
|
+
name: "List Project Users",
|
|
326
|
+
description: "List distinct end users who have reported events for a project.",
|
|
327
|
+
method: "GET",
|
|
328
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/users/",
|
|
329
|
+
pathParams: ORG_PROJECT$8,
|
|
330
|
+
input: sentryListInputSchema.merge(orgProjectScopeInputSchema),
|
|
331
|
+
queryFields: [
|
|
332
|
+
"cursor",
|
|
333
|
+
"per_page",
|
|
334
|
+
"query"
|
|
335
|
+
],
|
|
336
|
+
output: sentryJsonArraySchema,
|
|
337
|
+
pagination: "cursor",
|
|
338
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectRead]
|
|
339
|
+
};
|
|
340
|
+
const retrieveProjectFilterDataDefinition = {
|
|
341
|
+
id: "sentry.retrieve-project-filter-data",
|
|
342
|
+
name: "Retrieve Project Filter Data",
|
|
343
|
+
description: "Return project-level inbound filter configuration.",
|
|
344
|
+
method: "GET",
|
|
345
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/filters/",
|
|
346
|
+
pathParams: ORG_PROJECT$8,
|
|
347
|
+
input: orgProjectScopeInputSchema,
|
|
348
|
+
output: sentryJsonArraySchema,
|
|
349
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectRead]
|
|
350
|
+
};
|
|
351
|
+
const toggleProjectFilterStatusDefinition = {
|
|
352
|
+
id: "sentry.toggle-project-filter-status",
|
|
353
|
+
name: "Toggle Project Filter",
|
|
354
|
+
description: "Enable or disable a single project inbound filter by id.",
|
|
355
|
+
method: "PUT",
|
|
356
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/filters/{filter_id}/",
|
|
357
|
+
pathParams: [...ORG_PROJECT$8, {
|
|
358
|
+
name: "filter_id",
|
|
359
|
+
placeholder: "{filter_id}"
|
|
360
|
+
}],
|
|
361
|
+
input: orgProjectScopeInputSchema.extend({
|
|
362
|
+
filter_id: z.string().min(1),
|
|
363
|
+
active: z.union([z.boolean(), z.array(z.string())]).optional(),
|
|
364
|
+
subfilters: z.array(z.string()).optional()
|
|
365
|
+
}),
|
|
366
|
+
bodyFields: ["active", "subfilters"],
|
|
367
|
+
output: sentryJsonObjectSchema,
|
|
368
|
+
needsApproval: true,
|
|
369
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectWrite]
|
|
370
|
+
};
|
|
371
|
+
const fetchProjectOwnershipDetailsDefinition = {
|
|
372
|
+
id: "sentry.fetch-project-ownership-details",
|
|
373
|
+
name: "Fetch Project Ownership",
|
|
374
|
+
description: "Retrieve a project’s ownership rules configuration.",
|
|
375
|
+
method: "GET",
|
|
376
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/ownership/",
|
|
377
|
+
pathParams: ORG_PROJECT$8,
|
|
378
|
+
input: orgProjectScopeInputSchema,
|
|
379
|
+
output: sentryJsonObjectSchema,
|
|
380
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectRead]
|
|
381
|
+
};
|
|
382
|
+
const updateProjectOwnershipSettingsDefinition = {
|
|
383
|
+
id: "sentry.update-project-ownership-settings",
|
|
384
|
+
name: "Update Project Ownership",
|
|
385
|
+
description: "Update a project’s ownership rule set and fallthrough.",
|
|
386
|
+
method: "PUT",
|
|
387
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/ownership/",
|
|
388
|
+
pathParams: ORG_PROJECT$8,
|
|
389
|
+
input: orgProjectScopeInputSchema.extend({
|
|
390
|
+
raw: z.string().optional(),
|
|
391
|
+
fallthrough: z.boolean().optional(),
|
|
392
|
+
autoAssignment: z.enum([
|
|
393
|
+
"Auto Assign to Issue Owner",
|
|
394
|
+
"Auto Assign to Suspect Commits",
|
|
395
|
+
"Turn off Auto-Assignment"
|
|
396
|
+
]).optional(),
|
|
397
|
+
codeownersAutoSync: z.boolean().optional()
|
|
398
|
+
}),
|
|
399
|
+
bodyFields: [
|
|
400
|
+
"raw",
|
|
401
|
+
"fallthrough",
|
|
402
|
+
"autoAssignment",
|
|
403
|
+
"codeownersAutoSync"
|
|
404
|
+
],
|
|
405
|
+
output: sentryJsonObjectSchema,
|
|
406
|
+
needsApproval: true,
|
|
407
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectWrite]
|
|
408
|
+
};
|
|
409
|
+
const retrieveProjectTagValuesDefinition = {
|
|
410
|
+
id: "sentry.retrieve-project-tag-values",
|
|
411
|
+
name: "Retrieve Project Tag Values",
|
|
412
|
+
description: "List the distinct values observed for a given tag key on a project.",
|
|
413
|
+
method: "GET",
|
|
414
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/tags/{tag_key}/values/",
|
|
415
|
+
pathParams: [...ORG_PROJECT$8, {
|
|
416
|
+
name: "tag_key",
|
|
417
|
+
placeholder: "{tag_key}"
|
|
418
|
+
}],
|
|
419
|
+
input: sentryListInputSchema.merge(orgProjectScopeInputSchema).extend({ tag_key: z.string().min(1) }),
|
|
420
|
+
queryFields: [
|
|
421
|
+
"cursor",
|
|
422
|
+
"per_page",
|
|
423
|
+
"query"
|
|
424
|
+
],
|
|
425
|
+
output: sentryJsonArraySchema,
|
|
426
|
+
pagination: "cursor",
|
|
427
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectRead]
|
|
428
|
+
};
|
|
429
|
+
const postProjectSymbolSourcesDefinition = {
|
|
430
|
+
id: "sentry.post-project-symbol-sources",
|
|
431
|
+
name: "Create Project Symbol Source",
|
|
432
|
+
description: "Register a new custom symbol source on a project.",
|
|
433
|
+
method: "POST",
|
|
434
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/symbol-sources/",
|
|
435
|
+
pathParams: ORG_PROJECT$8,
|
|
436
|
+
input: orgProjectScopeInputSchema.extend({ source: sentryJsonObjectSchema }),
|
|
437
|
+
bodyFields: ["source"],
|
|
438
|
+
output: sentryJsonObjectSchema,
|
|
439
|
+
needsApproval: true,
|
|
440
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectAdmin]
|
|
441
|
+
};
|
|
442
|
+
const retrieveProjectSymbolSourcesDefinition = {
|
|
443
|
+
id: "sentry.retrieve-project-symbol-sources",
|
|
444
|
+
name: "Retrieve Project Symbol Sources",
|
|
445
|
+
description: "List the custom symbol sources configured on a project.",
|
|
446
|
+
method: "GET",
|
|
447
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/symbol-sources/",
|
|
448
|
+
pathParams: ORG_PROJECT$8,
|
|
449
|
+
input: orgProjectScopeInputSchema,
|
|
450
|
+
output: sentryJsonArraySchema,
|
|
451
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectAdmin]
|
|
452
|
+
};
|
|
453
|
+
const updateSymbolSourceSettingsDefinition = {
|
|
454
|
+
id: "sentry.update-symbol-source-settings",
|
|
455
|
+
name: "Update Project Symbol Source",
|
|
456
|
+
description: "Update a project symbol source by its id.",
|
|
457
|
+
method: "PUT",
|
|
458
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/symbol-sources/",
|
|
459
|
+
pathParams: ORG_PROJECT$8,
|
|
460
|
+
input: orgProjectScopeInputSchema.extend({
|
|
461
|
+
id: sentryIdSchema,
|
|
462
|
+
source: sentryJsonObjectSchema
|
|
463
|
+
}),
|
|
464
|
+
queryFields: ["id"],
|
|
465
|
+
bodyFields: ["source"],
|
|
466
|
+
output: sentryJsonObjectSchema,
|
|
467
|
+
needsApproval: true,
|
|
468
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectAdmin]
|
|
469
|
+
};
|
|
470
|
+
const deleteProjectSymbolSourcesDefinition = {
|
|
471
|
+
id: "sentry.delete-project-symbol-sources",
|
|
472
|
+
name: "Delete Project Symbol Source",
|
|
473
|
+
description: "Delete a project symbol source by id.",
|
|
474
|
+
method: "DELETE",
|
|
475
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/symbol-sources/",
|
|
476
|
+
pathParams: ORG_PROJECT$8,
|
|
477
|
+
input: orgProjectScopeInputSchema.extend({ id: sentryIdSchema }),
|
|
478
|
+
queryFields: ["id"],
|
|
479
|
+
output: z.unknown(),
|
|
480
|
+
needsApproval: true,
|
|
481
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectAdmin]
|
|
482
|
+
};
|
|
483
|
+
|
|
484
|
+
//#endregion
|
|
485
|
+
//#region src/operations/access-project-information.operation.ts
|
|
486
|
+
const accessProjectInformationOperation = defineSentryEndpoint(accessProjectInformationDefinition, sentryCredentialSet);
|
|
487
|
+
|
|
488
|
+
//#endregion
|
|
489
|
+
//#region src/utils/members-endpoints.ts
|
|
490
|
+
/**
|
|
491
|
+
* Sentry organization member operations. Maps to PLAN.md §6.2 (7 actions).
|
|
492
|
+
*/
|
|
493
|
+
const ORG$11 = [{
|
|
494
|
+
name: "organization_slug",
|
|
495
|
+
placeholder: "{organization_slug}"
|
|
496
|
+
}];
|
|
497
|
+
const ORG_MEMBER = [...ORG$11, {
|
|
498
|
+
name: "member_id",
|
|
499
|
+
placeholder: "{member_id}"
|
|
500
|
+
}];
|
|
501
|
+
const listOrganizationMembersDefinition = {
|
|
502
|
+
id: "sentry.list-organization-members",
|
|
503
|
+
name: "List Organization Members",
|
|
504
|
+
description: "List the members of an organization with pagination.",
|
|
505
|
+
method: "GET",
|
|
506
|
+
path: "/api/0/organizations/{organization_slug}/members/",
|
|
507
|
+
pathParams: ORG$11,
|
|
508
|
+
input: sentryListInputSchema.merge(orgScopeInputSchema),
|
|
509
|
+
queryFields: [
|
|
510
|
+
"query",
|
|
511
|
+
"cursor",
|
|
512
|
+
"per_page"
|
|
513
|
+
],
|
|
514
|
+
output: z.array(sentryMemberSchema),
|
|
515
|
+
pagination: "cursor",
|
|
516
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.memberRead]
|
|
517
|
+
};
|
|
518
|
+
const retrieveOrganizationMemberDefinition = {
|
|
519
|
+
id: "sentry.retrieve-organization-member",
|
|
520
|
+
name: "Retrieve Organization Member",
|
|
521
|
+
description: "Fetch a single organization member by id.",
|
|
522
|
+
method: "GET",
|
|
523
|
+
path: "/api/0/organizations/{organization_slug}/members/{member_id}/",
|
|
524
|
+
pathParams: ORG_MEMBER,
|
|
525
|
+
input: orgScopeInputSchema.extend({ member_id: sentryIdSchema }),
|
|
526
|
+
output: sentryMemberSchema,
|
|
527
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.memberRead]
|
|
528
|
+
};
|
|
529
|
+
const addOrganizationMemberViaEmailDefinition = {
|
|
530
|
+
id: "sentry.add-organization-member-via-email",
|
|
531
|
+
name: "Invite Member by Email",
|
|
532
|
+
description: "Invite a new member by email address with an optional org role and team list.",
|
|
533
|
+
method: "POST",
|
|
534
|
+
path: "/api/0/organizations/{organization_slug}/members/",
|
|
535
|
+
pathParams: ORG$11,
|
|
536
|
+
input: orgScopeInputSchema.extend({
|
|
537
|
+
email: z.string().email(),
|
|
538
|
+
role: z.string().optional(),
|
|
539
|
+
orgRole: z.string().optional(),
|
|
540
|
+
teams: z.array(z.string()).optional(),
|
|
541
|
+
teamRoles: z.array(z.object({
|
|
542
|
+
teamSlug: z.string(),
|
|
543
|
+
role: z.string().nullable()
|
|
544
|
+
})).optional(),
|
|
545
|
+
sendInvite: z.boolean().optional(),
|
|
546
|
+
reinvite: z.boolean().optional()
|
|
547
|
+
}),
|
|
548
|
+
bodyFields: [
|
|
549
|
+
"email",
|
|
550
|
+
"role",
|
|
551
|
+
"orgRole",
|
|
552
|
+
"teams",
|
|
553
|
+
"teamRoles",
|
|
554
|
+
"sendInvite",
|
|
555
|
+
"reinvite"
|
|
556
|
+
],
|
|
557
|
+
output: sentryMemberSchema,
|
|
558
|
+
needsApproval: true,
|
|
559
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.memberWrite]
|
|
560
|
+
};
|
|
561
|
+
const updateOrganizationMemberRoleDefinition = {
|
|
562
|
+
id: "sentry.update-organization-member-role",
|
|
563
|
+
name: "Update Member Role",
|
|
564
|
+
description: "Update an organization member’s role and/or team assignments.",
|
|
565
|
+
method: "PUT",
|
|
566
|
+
path: "/api/0/organizations/{organization_slug}/members/{member_id}/",
|
|
567
|
+
pathParams: ORG_MEMBER,
|
|
568
|
+
input: orgScopeInputSchema.extend({
|
|
569
|
+
member_id: sentryIdSchema,
|
|
570
|
+
role: z.string().optional(),
|
|
571
|
+
orgRole: z.string().optional(),
|
|
572
|
+
teams: z.array(z.string()).optional(),
|
|
573
|
+
teamRoles: z.array(z.object({
|
|
574
|
+
teamSlug: z.string(),
|
|
575
|
+
role: z.string().nullable()
|
|
576
|
+
})).optional()
|
|
577
|
+
}),
|
|
578
|
+
bodyFields: [
|
|
579
|
+
"role",
|
|
580
|
+
"orgRole",
|
|
581
|
+
"teams",
|
|
582
|
+
"teamRoles"
|
|
583
|
+
],
|
|
584
|
+
output: sentryMemberSchema,
|
|
585
|
+
needsApproval: true,
|
|
586
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.memberWrite]
|
|
587
|
+
};
|
|
588
|
+
const deleteOrganizationMemberDefinition = {
|
|
589
|
+
id: "sentry.delete-organization-member",
|
|
590
|
+
name: "Delete Organization Member",
|
|
591
|
+
description: "Remove a member from the organization.",
|
|
592
|
+
method: "DELETE",
|
|
593
|
+
path: "/api/0/organizations/{organization_slug}/members/{member_id}/",
|
|
594
|
+
pathParams: ORG_MEMBER,
|
|
595
|
+
input: orgScopeInputSchema.extend({ member_id: sentryIdSchema }),
|
|
596
|
+
output: z.unknown(),
|
|
597
|
+
needsApproval: true,
|
|
598
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.memberAdmin]
|
|
599
|
+
};
|
|
600
|
+
const patchUserActiveStatusInOrganizationDefinition = {
|
|
601
|
+
id: "sentry.patch-user-active-status-in-organization",
|
|
602
|
+
name: "Update Member Active Status",
|
|
603
|
+
description: "Toggle a member’s active flag without removing them.",
|
|
604
|
+
method: "PATCH",
|
|
605
|
+
path: "/api/0/organizations/{organization_slug}/members/{member_id}/",
|
|
606
|
+
pathParams: ORG_MEMBER,
|
|
607
|
+
input: orgScopeInputSchema.extend({
|
|
608
|
+
member_id: sentryIdSchema,
|
|
609
|
+
active: z.boolean()
|
|
610
|
+
}),
|
|
611
|
+
bodyFields: ["active"],
|
|
612
|
+
output: sentryMemberSchema,
|
|
613
|
+
needsApproval: true,
|
|
614
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.memberWrite]
|
|
615
|
+
};
|
|
616
|
+
const deleteUserFromOrgDefinition = {
|
|
617
|
+
id: "sentry.delete-user-from-org",
|
|
618
|
+
name: "Delete User From Organization",
|
|
619
|
+
description: "Alias of `delete_organization_member`. Kept for Composio parity.",
|
|
620
|
+
method: "DELETE",
|
|
621
|
+
path: "/api/0/organizations/{organization_slug}/members/{member_id}/",
|
|
622
|
+
pathParams: ORG_MEMBER,
|
|
623
|
+
input: orgScopeInputSchema.extend({ member_id: sentryIdSchema }),
|
|
624
|
+
output: z.unknown(),
|
|
625
|
+
needsApproval: true,
|
|
626
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.memberAdmin]
|
|
627
|
+
};
|
|
628
|
+
|
|
629
|
+
//#endregion
|
|
630
|
+
//#region src/operations/add-organization-member-via-email.operation.ts
|
|
631
|
+
const addOrganizationMemberViaEmailOperation = defineSentryEndpoint(addOrganizationMemberViaEmailDefinition, sentryCredentialSet);
|
|
632
|
+
|
|
633
|
+
//#endregion
|
|
634
|
+
//#region src/utils/user-emails-endpoints.ts
|
|
635
|
+
/**
|
|
636
|
+
* Sentry user-email operations (current-user account scope).
|
|
637
|
+
* Maps to PLAN.md §6.21 (4 actions).
|
|
638
|
+
*/
|
|
639
|
+
const retrieveUserEmailInformationDefinition = {
|
|
640
|
+
id: "sentry.retrieve-user-email-information",
|
|
641
|
+
name: "Retrieve User Emails",
|
|
642
|
+
description: "List the emails on the authenticated Sentry account.",
|
|
643
|
+
method: "GET",
|
|
644
|
+
path: "/api/0/users/me/emails/",
|
|
645
|
+
input: z.object({}),
|
|
646
|
+
output: z.array(sentryUserEmailSchema)
|
|
647
|
+
};
|
|
648
|
+
const addRemoveUserEmailByIdDefinition = {
|
|
649
|
+
id: "sentry.add-remove-user-email-by-id",
|
|
650
|
+
name: "Add User Email",
|
|
651
|
+
description: "Add a new email to the authenticated Sentry account.",
|
|
652
|
+
method: "POST",
|
|
653
|
+
path: "/api/0/users/me/emails/",
|
|
654
|
+
input: z.object({ email: z.string().email() }),
|
|
655
|
+
bodyFields: ["email"],
|
|
656
|
+
output: sentryUserEmailSchema,
|
|
657
|
+
needsApproval: true
|
|
658
|
+
};
|
|
659
|
+
const updateUserEmailDefinition = {
|
|
660
|
+
id: "sentry.update-user-email",
|
|
661
|
+
name: "Set Primary Email",
|
|
662
|
+
description: "Mark an email as the primary address on the authenticated account.",
|
|
663
|
+
method: "PUT",
|
|
664
|
+
path: "/api/0/users/me/emails/",
|
|
665
|
+
input: z.object({ email: z.string().email() }),
|
|
666
|
+
bodyFields: ["email"],
|
|
667
|
+
output: sentryUserEmailSchema,
|
|
668
|
+
needsApproval: true
|
|
669
|
+
};
|
|
670
|
+
const deleteUserEmailsByIdDefinition = {
|
|
671
|
+
id: "sentry.delete-user-emails-by-id",
|
|
672
|
+
name: "Delete User Email",
|
|
673
|
+
description: "Remove an email from the authenticated Sentry account.",
|
|
674
|
+
method: "DELETE",
|
|
675
|
+
path: "/api/0/users/me/emails/",
|
|
676
|
+
input: z.object({ email: z.string().email() }),
|
|
677
|
+
queryFields: ["email"],
|
|
678
|
+
output: z.unknown(),
|
|
679
|
+
needsApproval: true
|
|
680
|
+
};
|
|
681
|
+
|
|
682
|
+
//#endregion
|
|
683
|
+
//#region src/operations/add-remove-user-email-by-id.operation.ts
|
|
684
|
+
const addRemoveUserEmailByIdOperation = defineSentryEndpoint(addRemoveUserEmailByIdDefinition, sentryCredentialSet);
|
|
685
|
+
|
|
686
|
+
//#endregion
|
|
687
|
+
//#region src/utils/teams-endpoints.ts
|
|
688
|
+
/**
|
|
689
|
+
* Sentry team operations. Maps to PLAN.md §6.3 (14 actions).
|
|
690
|
+
*/
|
|
691
|
+
const ORG$10 = [{
|
|
692
|
+
name: "organization_slug",
|
|
693
|
+
placeholder: "{organization_slug}"
|
|
694
|
+
}];
|
|
695
|
+
const ORG_TEAM = [...ORG$10, {
|
|
696
|
+
name: "team_slug",
|
|
697
|
+
placeholder: "{team_slug}"
|
|
698
|
+
}];
|
|
699
|
+
const ORG_TEAM_MEMBER = [...ORG_TEAM, {
|
|
700
|
+
name: "member_id",
|
|
701
|
+
placeholder: "{member_id}"
|
|
702
|
+
}];
|
|
703
|
+
const listTeamsInOrganizationDefinition = {
|
|
704
|
+
id: "sentry.list-teams-in-organization",
|
|
705
|
+
name: "List Teams In Organization",
|
|
706
|
+
description: "List the teams in an organization with pagination.",
|
|
707
|
+
method: "GET",
|
|
708
|
+
path: "/api/0/organizations/{organization_slug}/teams/",
|
|
709
|
+
pathParams: ORG$10,
|
|
710
|
+
input: sentryListInputSchema.merge(orgScopeInputSchema).extend({ detailed: z.string().optional() }),
|
|
711
|
+
queryFields: [
|
|
712
|
+
"query",
|
|
713
|
+
"cursor",
|
|
714
|
+
"per_page",
|
|
715
|
+
"detailed"
|
|
716
|
+
],
|
|
717
|
+
output: z.array(sentryTeamSchema),
|
|
718
|
+
pagination: "cursor",
|
|
719
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.teamRead]
|
|
720
|
+
};
|
|
721
|
+
const listOrganizationUserTeamsDefinition = {
|
|
722
|
+
id: "sentry.list-organization-user-teams",
|
|
723
|
+
name: "List Teams For Current User",
|
|
724
|
+
description: "List the teams the authenticated user belongs to in this organization.",
|
|
725
|
+
method: "GET",
|
|
726
|
+
path: "/api/0/organizations/{organization_slug}/user-teams/",
|
|
727
|
+
pathParams: ORG$10,
|
|
728
|
+
input: orgScopeInputSchema,
|
|
729
|
+
output: z.array(sentryTeamSchema),
|
|
730
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.teamRead]
|
|
731
|
+
};
|
|
732
|
+
const createOrganizationTeamDefinition = {
|
|
733
|
+
id: "sentry.create-organization-team",
|
|
734
|
+
name: "Create Organization Team",
|
|
735
|
+
description: "Create a new team inside the organization.",
|
|
736
|
+
method: "POST",
|
|
737
|
+
path: "/api/0/organizations/{organization_slug}/teams/",
|
|
738
|
+
pathParams: ORG$10,
|
|
739
|
+
input: orgScopeInputSchema.extend({
|
|
740
|
+
slug: sentrySlugSchema.optional(),
|
|
741
|
+
name: z.string().min(1).optional(),
|
|
742
|
+
idp_provisioned: z.boolean().optional()
|
|
743
|
+
}),
|
|
744
|
+
bodyFields: [
|
|
745
|
+
"slug",
|
|
746
|
+
"name",
|
|
747
|
+
"idp_provisioned"
|
|
748
|
+
],
|
|
749
|
+
output: sentryTeamSchema,
|
|
750
|
+
needsApproval: true,
|
|
751
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.teamWrite]
|
|
752
|
+
};
|
|
753
|
+
const retrieveTeamInfoViaOrganizationIdOrSlugDefinition = {
|
|
754
|
+
id: "sentry.retrieve-team-info-via-organization-id-or-slug",
|
|
755
|
+
name: "Retrieve Team Info",
|
|
756
|
+
description: "Fetch a single team by its slug.",
|
|
757
|
+
method: "GET",
|
|
758
|
+
path: "/api/0/teams/{organization_slug}/{team_slug}/",
|
|
759
|
+
pathParams: ORG_TEAM,
|
|
760
|
+
input: orgTeamScopeInputSchema,
|
|
761
|
+
output: sentryTeamSchema,
|
|
762
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.teamRead]
|
|
763
|
+
};
|
|
764
|
+
const updateTeamInformationByOrganizationIdDefinition = {
|
|
765
|
+
id: "sentry.update-team-information-by-organization-id",
|
|
766
|
+
name: "Update Team",
|
|
767
|
+
description: "Update a team’s slug or display name.",
|
|
768
|
+
method: "PUT",
|
|
769
|
+
path: "/api/0/teams/{organization_slug}/{team_slug}/",
|
|
770
|
+
pathParams: ORG_TEAM,
|
|
771
|
+
input: orgTeamScopeInputSchema.extend({
|
|
772
|
+
slug: sentrySlugSchema.optional(),
|
|
773
|
+
name: z.string().min(1).optional()
|
|
774
|
+
}),
|
|
775
|
+
bodyFields: ["slug", "name"],
|
|
776
|
+
output: sentryTeamSchema,
|
|
777
|
+
needsApproval: true,
|
|
778
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.teamWrite]
|
|
779
|
+
};
|
|
780
|
+
const deleteTeamByOrganizationOrTeamSlugDefinition = {
|
|
781
|
+
id: "sentry.delete-team-by-organization-or-team-slug",
|
|
782
|
+
name: "Delete Team",
|
|
783
|
+
description: "Delete a team by slug.",
|
|
784
|
+
method: "DELETE",
|
|
785
|
+
path: "/api/0/teams/{organization_slug}/{team_slug}/",
|
|
786
|
+
pathParams: ORG_TEAM,
|
|
787
|
+
input: orgTeamScopeInputSchema,
|
|
788
|
+
output: z.unknown(),
|
|
789
|
+
needsApproval: true,
|
|
790
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.teamAdmin]
|
|
791
|
+
};
|
|
792
|
+
const addTeamMemberInOrganizationDefinition = {
|
|
793
|
+
id: "sentry.add-team-member-in-organization",
|
|
794
|
+
name: "Add Team Member",
|
|
795
|
+
description: "Add a member to a team.",
|
|
796
|
+
method: "POST",
|
|
797
|
+
path: "/api/0/organizations/{organization_slug}/members/{member_id}/teams/{team_slug}/",
|
|
798
|
+
pathParams: ORG_TEAM_MEMBER,
|
|
799
|
+
input: orgTeamScopeInputSchema.extend({ member_id: sentryIdSchema }),
|
|
800
|
+
output: sentryMemberSchema,
|
|
801
|
+
needsApproval: true,
|
|
802
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.teamWrite]
|
|
803
|
+
};
|
|
804
|
+
const getTeamMembersByIdOrSlugDefinition = {
|
|
805
|
+
id: "sentry.get-team-members-by-id-or-slug",
|
|
806
|
+
name: "Get Team Members",
|
|
807
|
+
description: "List the members of a team.",
|
|
808
|
+
method: "GET",
|
|
809
|
+
path: "/api/0/teams/{organization_slug}/{team_slug}/members/",
|
|
810
|
+
pathParams: ORG_TEAM,
|
|
811
|
+
input: sentryListInputSchema.merge(orgTeamScopeInputSchema),
|
|
812
|
+
queryFields: [
|
|
813
|
+
"cursor",
|
|
814
|
+
"per_page",
|
|
815
|
+
"query"
|
|
816
|
+
],
|
|
817
|
+
output: z.array(sentryMemberSchema),
|
|
818
|
+
pagination: "cursor",
|
|
819
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.teamRead]
|
|
820
|
+
};
|
|
821
|
+
const deleteMemberFromTeamDefinition = {
|
|
822
|
+
id: "sentry.delete-member-from-team",
|
|
823
|
+
name: "Remove Member From Team",
|
|
824
|
+
description: "Remove a member from a team.",
|
|
825
|
+
method: "DELETE",
|
|
826
|
+
path: "/api/0/organizations/{organization_slug}/members/{member_id}/teams/{team_slug}/",
|
|
827
|
+
pathParams: ORG_TEAM_MEMBER,
|
|
828
|
+
input: orgTeamScopeInputSchema.extend({ member_id: sentryIdSchema }),
|
|
829
|
+
output: z.unknown(),
|
|
830
|
+
needsApproval: true,
|
|
831
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.teamWrite]
|
|
832
|
+
};
|
|
833
|
+
const switchTeamRoleForMemberDefinition = {
|
|
834
|
+
id: "sentry.switch-team-role-for-member",
|
|
835
|
+
name: "Switch Member Team Role",
|
|
836
|
+
description: "Update a member’s role within a team.",
|
|
837
|
+
method: "PUT",
|
|
838
|
+
path: "/api/0/organizations/{organization_slug}/members/{member_id}/teams/{team_slug}/",
|
|
839
|
+
pathParams: ORG_TEAM_MEMBER,
|
|
840
|
+
input: orgTeamScopeInputSchema.extend({
|
|
841
|
+
member_id: sentryIdSchema,
|
|
842
|
+
teamRole: z.string().nullable()
|
|
843
|
+
}),
|
|
844
|
+
bodyFields: ["teamRole"],
|
|
845
|
+
output: sentryMemberSchema,
|
|
846
|
+
needsApproval: true,
|
|
847
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.teamWrite]
|
|
848
|
+
};
|
|
849
|
+
const retrieveTeamProjectsDefinition = {
|
|
850
|
+
id: "sentry.retrieve-team-projects",
|
|
851
|
+
name: "Retrieve Team Projects",
|
|
852
|
+
description: "List the projects owned by a team.",
|
|
853
|
+
method: "GET",
|
|
854
|
+
path: "/api/0/teams/{organization_slug}/{team_slug}/projects/",
|
|
855
|
+
pathParams: ORG_TEAM,
|
|
856
|
+
input: sentryListInputSchema.merge(orgTeamScopeInputSchema),
|
|
857
|
+
queryFields: [
|
|
858
|
+
"cursor",
|
|
859
|
+
"per_page",
|
|
860
|
+
"query"
|
|
861
|
+
],
|
|
862
|
+
output: z.array(sentryProjectSummarySchema),
|
|
863
|
+
pagination: "cursor",
|
|
864
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectRead]
|
|
865
|
+
};
|
|
866
|
+
const manageTeamExternalIntegrationsDefinition = {
|
|
867
|
+
id: "sentry.manage-team-external-integrations",
|
|
868
|
+
name: "Manage Team External Integrations",
|
|
869
|
+
description: "Create an external-team link between a Sentry team and a third-party team (Slack, PagerDuty, etc.).",
|
|
870
|
+
method: "POST",
|
|
871
|
+
path: "/api/0/teams/{organization_slug}/{team_slug}/external-teams/",
|
|
872
|
+
pathParams: ORG_TEAM,
|
|
873
|
+
input: orgTeamScopeInputSchema.extend({
|
|
874
|
+
externalName: z.string().min(1),
|
|
875
|
+
provider: z.string().min(1),
|
|
876
|
+
externalId: z.string().optional(),
|
|
877
|
+
integrationId: z.string().optional()
|
|
878
|
+
}),
|
|
879
|
+
bodyFields: [
|
|
880
|
+
"externalName",
|
|
881
|
+
"provider",
|
|
882
|
+
"externalId",
|
|
883
|
+
"integrationId"
|
|
884
|
+
],
|
|
885
|
+
output: sentryJsonObjectSchema,
|
|
886
|
+
needsApproval: true,
|
|
887
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.teamWrite]
|
|
888
|
+
};
|
|
889
|
+
const updateExternalTeamIntegrationDefinition = {
|
|
890
|
+
id: "sentry.update-external-team-integration",
|
|
891
|
+
name: "Update External Team Integration",
|
|
892
|
+
description: "Update an existing external-team link by id.",
|
|
893
|
+
method: "PUT",
|
|
894
|
+
path: "/api/0/teams/{organization_slug}/{team_slug}/external-teams/{external_team_id}/",
|
|
895
|
+
pathParams: [...ORG_TEAM, {
|
|
896
|
+
name: "external_team_id",
|
|
897
|
+
placeholder: "{external_team_id}"
|
|
898
|
+
}],
|
|
899
|
+
input: orgTeamScopeInputSchema.extend({
|
|
900
|
+
external_team_id: sentryIdSchema,
|
|
901
|
+
externalName: z.string().min(1).optional(),
|
|
902
|
+
integrationId: z.string().optional(),
|
|
903
|
+
externalId: z.string().optional()
|
|
904
|
+
}),
|
|
905
|
+
bodyFields: [
|
|
906
|
+
"externalName",
|
|
907
|
+
"integrationId",
|
|
908
|
+
"externalId"
|
|
909
|
+
],
|
|
910
|
+
output: sentryJsonObjectSchema,
|
|
911
|
+
needsApproval: true,
|
|
912
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.teamWrite]
|
|
913
|
+
};
|
|
914
|
+
const deleteExternalTeamByIdDefinition = {
|
|
915
|
+
id: "sentry.delete-external-team-by-id",
|
|
916
|
+
name: "Delete External Team",
|
|
917
|
+
description: "Remove an external-team link by id.",
|
|
918
|
+
method: "DELETE",
|
|
919
|
+
path: "/api/0/teams/{organization_slug}/{team_slug}/external-teams/{external_team_id}/",
|
|
920
|
+
pathParams: [...ORG_TEAM, {
|
|
921
|
+
name: "external_team_id",
|
|
922
|
+
placeholder: "{external_team_id}"
|
|
923
|
+
}],
|
|
924
|
+
input: orgTeamScopeInputSchema.extend({ external_team_id: sentryIdSchema }),
|
|
925
|
+
output: z.unknown(),
|
|
926
|
+
needsApproval: true,
|
|
927
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.teamAdmin]
|
|
928
|
+
};
|
|
929
|
+
|
|
930
|
+
//#endregion
|
|
931
|
+
//#region src/operations/add-team-member-in-organization.operation.ts
|
|
932
|
+
const addTeamMemberInOrganizationOperation = defineSentryEndpoint(addTeamMemberInOrganizationDefinition, sentryCredentialSet);
|
|
933
|
+
|
|
934
|
+
//#endregion
|
|
935
|
+
//#region src/operations/add-team-to-project.operation.ts
|
|
936
|
+
const addTeamToProjectOperation = defineSentryEndpoint(addTeamToProjectDefinition, sentryCredentialSet);
|
|
937
|
+
|
|
938
|
+
//#endregion
|
|
939
|
+
//#region src/utils/dashboards-endpoints.ts
|
|
940
|
+
/**
|
|
941
|
+
* Sentry dashboard operations. Maps to PLAN.md §6.14 (5 actions).
|
|
942
|
+
*/
|
|
943
|
+
const ORG$9 = [{
|
|
944
|
+
name: "organization_slug",
|
|
945
|
+
placeholder: "{organization_slug}"
|
|
946
|
+
}];
|
|
947
|
+
const ORG_DASHBOARD = [...ORG$9, {
|
|
948
|
+
name: "dashboard_id",
|
|
949
|
+
placeholder: "{dashboard_id}"
|
|
950
|
+
}];
|
|
951
|
+
const createDashboardWithWidgetsDefinition = {
|
|
952
|
+
id: "sentry.create-dashboard-with-widgets",
|
|
953
|
+
name: "Create Dashboard",
|
|
954
|
+
description: "Create a new dashboard with widgets.",
|
|
955
|
+
method: "POST",
|
|
956
|
+
path: "/api/0/organizations/{organization_slug}/dashboards/",
|
|
957
|
+
pathParams: ORG$9,
|
|
958
|
+
input: orgScopeInputSchema.extend({
|
|
959
|
+
title: z.string().min(1),
|
|
960
|
+
widgets: z.array(sentryJsonObjectSchema).optional(),
|
|
961
|
+
projects: z.array(z.number().int()).optional(),
|
|
962
|
+
environment: z.array(z.string()).optional(),
|
|
963
|
+
period: z.string().optional(),
|
|
964
|
+
filters: sentryJsonObjectSchema.optional()
|
|
965
|
+
}),
|
|
966
|
+
bodyFields: [
|
|
967
|
+
"title",
|
|
968
|
+
"widgets",
|
|
969
|
+
"projects",
|
|
970
|
+
"environment",
|
|
971
|
+
"period",
|
|
972
|
+
"filters"
|
|
973
|
+
],
|
|
974
|
+
output: sentryDashboardSchema,
|
|
975
|
+
needsApproval: true,
|
|
976
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.orgWrite]
|
|
977
|
+
};
|
|
978
|
+
const listOrganizationDashboardsDefinition = {
|
|
979
|
+
id: "sentry.list-organization-dashboards",
|
|
980
|
+
name: "List Dashboards",
|
|
981
|
+
description: "List organization dashboards.",
|
|
982
|
+
method: "GET",
|
|
983
|
+
path: "/api/0/organizations/{organization_slug}/dashboards/",
|
|
984
|
+
pathParams: ORG$9,
|
|
985
|
+
input: sentryListInputSchema.merge(orgScopeInputSchema),
|
|
986
|
+
queryFields: [
|
|
987
|
+
"cursor",
|
|
988
|
+
"per_page",
|
|
989
|
+
"query"
|
|
990
|
+
],
|
|
991
|
+
output: z.array(sentryDashboardSchema),
|
|
992
|
+
pagination: "cursor",
|
|
993
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.orgRead]
|
|
994
|
+
};
|
|
995
|
+
const retrieveOrganizationDashboardDefinition = {
|
|
996
|
+
id: "sentry.retrieve-organization-dashboard",
|
|
997
|
+
name: "Retrieve Dashboard",
|
|
998
|
+
description: "Fetch one dashboard by id.",
|
|
999
|
+
method: "GET",
|
|
1000
|
+
path: "/api/0/organizations/{organization_slug}/dashboards/{dashboard_id}/",
|
|
1001
|
+
pathParams: ORG_DASHBOARD,
|
|
1002
|
+
input: orgScopeInputSchema.extend({ dashboard_id: sentryIdSchema }),
|
|
1003
|
+
output: sentryDashboardSchema,
|
|
1004
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.orgRead]
|
|
1005
|
+
};
|
|
1006
|
+
const updateOrganizationDashboardDefinition = {
|
|
1007
|
+
id: "sentry.update-organization-dashboard",
|
|
1008
|
+
name: "Update Dashboard",
|
|
1009
|
+
description: "Update a dashboard’s title or widget layout.",
|
|
1010
|
+
method: "PUT",
|
|
1011
|
+
path: "/api/0/organizations/{organization_slug}/dashboards/{dashboard_id}/",
|
|
1012
|
+
pathParams: ORG_DASHBOARD,
|
|
1013
|
+
input: orgScopeInputSchema.extend({
|
|
1014
|
+
dashboard_id: sentryIdSchema,
|
|
1015
|
+
title: z.string().optional(),
|
|
1016
|
+
widgets: z.array(sentryJsonObjectSchema).optional(),
|
|
1017
|
+
projects: z.array(z.number().int()).optional(),
|
|
1018
|
+
environment: z.array(z.string()).optional(),
|
|
1019
|
+
period: z.string().optional(),
|
|
1020
|
+
filters: sentryJsonObjectSchema.optional()
|
|
1021
|
+
}),
|
|
1022
|
+
bodyFields: [
|
|
1023
|
+
"title",
|
|
1024
|
+
"widgets",
|
|
1025
|
+
"projects",
|
|
1026
|
+
"environment",
|
|
1027
|
+
"period",
|
|
1028
|
+
"filters"
|
|
1029
|
+
],
|
|
1030
|
+
output: sentryDashboardSchema,
|
|
1031
|
+
needsApproval: true,
|
|
1032
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.orgWrite]
|
|
1033
|
+
};
|
|
1034
|
+
const deleteOrganizationDashboardDefinition = {
|
|
1035
|
+
id: "sentry.delete-organization-dashboard",
|
|
1036
|
+
name: "Delete Dashboard",
|
|
1037
|
+
description: "Delete a dashboard by id.",
|
|
1038
|
+
method: "DELETE",
|
|
1039
|
+
path: "/api/0/organizations/{organization_slug}/dashboards/{dashboard_id}/",
|
|
1040
|
+
pathParams: ORG_DASHBOARD,
|
|
1041
|
+
input: orgScopeInputSchema.extend({ dashboard_id: sentryIdSchema }),
|
|
1042
|
+
output: z.unknown(),
|
|
1043
|
+
needsApproval: true,
|
|
1044
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.orgWrite]
|
|
1045
|
+
};
|
|
1046
|
+
|
|
1047
|
+
//#endregion
|
|
1048
|
+
//#region src/operations/create-dashboard-with-widgets.operation.ts
|
|
1049
|
+
const createDashboardWithWidgetsOperation = defineSentryEndpoint(createDashboardWithWidgetsDefinition, sentryCredentialSet);
|
|
1050
|
+
|
|
1051
|
+
//#endregion
|
|
1052
|
+
//#region src/utils/scim-endpoints.ts
|
|
1053
|
+
/**
|
|
1054
|
+
* Sentry SCIM + SAML + external-user operations.
|
|
1055
|
+
* Maps to PLAN.md §6.20 (11 actions).
|
|
1056
|
+
*/
|
|
1057
|
+
const ORG$8 = [{
|
|
1058
|
+
name: "organization_slug",
|
|
1059
|
+
placeholder: "{organization_slug}"
|
|
1060
|
+
}];
|
|
1061
|
+
const ORG_SCIM_USER = [...ORG$8, {
|
|
1062
|
+
name: "member_id",
|
|
1063
|
+
placeholder: "{member_id}"
|
|
1064
|
+
}];
|
|
1065
|
+
const ORG_SCIM_GROUP = [...ORG$8, {
|
|
1066
|
+
name: "group_id",
|
|
1067
|
+
placeholder: "{group_id}"
|
|
1068
|
+
}];
|
|
1069
|
+
const ORG_EXT_USER = [...ORG$8, {
|
|
1070
|
+
name: "external_user_id",
|
|
1071
|
+
placeholder: "{external_user_id}"
|
|
1072
|
+
}];
|
|
1073
|
+
const listScimV2OrganizationUsersDefinition = {
|
|
1074
|
+
id: "sentry.list-scim-v2-organization-users",
|
|
1075
|
+
name: "List SCIM Users",
|
|
1076
|
+
description: "List organization SCIM v2 users.",
|
|
1077
|
+
method: "GET",
|
|
1078
|
+
path: "/api/0/organizations/{organization_slug}/scim/v2/Users",
|
|
1079
|
+
pathParams: ORG$8,
|
|
1080
|
+
input: sentryListInputSchema.merge(orgScopeInputSchema).extend({
|
|
1081
|
+
startIndex: z.number().int().optional(),
|
|
1082
|
+
count: z.number().int().optional(),
|
|
1083
|
+
filter: z.string().optional()
|
|
1084
|
+
}),
|
|
1085
|
+
queryFields: [
|
|
1086
|
+
"cursor",
|
|
1087
|
+
"per_page",
|
|
1088
|
+
"query",
|
|
1089
|
+
"startIndex",
|
|
1090
|
+
"count",
|
|
1091
|
+
"filter"
|
|
1092
|
+
],
|
|
1093
|
+
output: sentryJsonObjectSchema,
|
|
1094
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.memberRead]
|
|
1095
|
+
};
|
|
1096
|
+
const retrieveUserViaScimApiDefinition = {
|
|
1097
|
+
id: "sentry.retrieve-user-via-scim-api",
|
|
1098
|
+
name: "Retrieve SCIM User",
|
|
1099
|
+
description: "Fetch a SCIM user by member id.",
|
|
1100
|
+
method: "GET",
|
|
1101
|
+
path: "/api/0/organizations/{organization_slug}/scim/v2/Users/{member_id}",
|
|
1102
|
+
pathParams: ORG_SCIM_USER,
|
|
1103
|
+
input: orgScopeInputSchema.extend({ member_id: sentryIdSchema }),
|
|
1104
|
+
output: sentryScimUserSchema,
|
|
1105
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.memberRead]
|
|
1106
|
+
};
|
|
1107
|
+
const createUserForSamlIntegrationDefinition = {
|
|
1108
|
+
id: "sentry.create-user-for-saml-integration",
|
|
1109
|
+
name: "Create SAML User",
|
|
1110
|
+
description: "Provision a new SAML/SCIM user.",
|
|
1111
|
+
method: "POST",
|
|
1112
|
+
path: "/api/0/organizations/{organization_slug}/scim/v2/Users",
|
|
1113
|
+
pathParams: ORG$8,
|
|
1114
|
+
input: orgScopeInputSchema.extend({
|
|
1115
|
+
userName: z.string().min(1),
|
|
1116
|
+
active: z.boolean().optional(),
|
|
1117
|
+
displayName: z.string().optional(),
|
|
1118
|
+
emails: z.array(z.object({
|
|
1119
|
+
value: z.string().email(),
|
|
1120
|
+
primary: z.boolean().optional()
|
|
1121
|
+
})).optional(),
|
|
1122
|
+
name: z.object({
|
|
1123
|
+
givenName: z.string().optional(),
|
|
1124
|
+
familyName: z.string().optional()
|
|
1125
|
+
}).optional()
|
|
1126
|
+
}),
|
|
1127
|
+
bodyFields: [
|
|
1128
|
+
"userName",
|
|
1129
|
+
"active",
|
|
1130
|
+
"displayName",
|
|
1131
|
+
"emails",
|
|
1132
|
+
"name"
|
|
1133
|
+
],
|
|
1134
|
+
output: sentryScimUserSchema,
|
|
1135
|
+
needsApproval: true,
|
|
1136
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.memberAdmin]
|
|
1137
|
+
};
|
|
1138
|
+
const createScimGroupForOrganizationDefinition = {
|
|
1139
|
+
id: "sentry.create-scim-group-for-organization",
|
|
1140
|
+
name: "Create SCIM Group",
|
|
1141
|
+
description: "Create a new SCIM group.",
|
|
1142
|
+
method: "POST",
|
|
1143
|
+
path: "/api/0/organizations/{organization_slug}/scim/v2/Groups",
|
|
1144
|
+
pathParams: ORG$8,
|
|
1145
|
+
input: orgScopeInputSchema.extend({
|
|
1146
|
+
displayName: z.string().min(1),
|
|
1147
|
+
members: z.array(z.object({
|
|
1148
|
+
value: sentryIdSchema,
|
|
1149
|
+
display: z.string().optional()
|
|
1150
|
+
})).optional()
|
|
1151
|
+
}),
|
|
1152
|
+
bodyFields: ["displayName", "members"],
|
|
1153
|
+
output: sentryScimGroupSchema,
|
|
1154
|
+
needsApproval: true,
|
|
1155
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.teamAdmin]
|
|
1156
|
+
};
|
|
1157
|
+
const getScimGroupByTeamIdDefinition = {
|
|
1158
|
+
id: "sentry.get-scim-group-by-team-id",
|
|
1159
|
+
name: "Get SCIM Group",
|
|
1160
|
+
description: "Fetch a SCIM group by id.",
|
|
1161
|
+
method: "GET",
|
|
1162
|
+
path: "/api/0/organizations/{organization_slug}/scim/v2/Groups/{group_id}",
|
|
1163
|
+
pathParams: ORG_SCIM_GROUP,
|
|
1164
|
+
input: orgScopeInputSchema.extend({ group_id: sentryIdSchema }),
|
|
1165
|
+
output: sentryScimGroupSchema,
|
|
1166
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.teamRead]
|
|
1167
|
+
};
|
|
1168
|
+
const retrieveOrganizationScimGroupsDefinition = {
|
|
1169
|
+
id: "sentry.retrieve-organization-scim-groups",
|
|
1170
|
+
name: "List SCIM Groups",
|
|
1171
|
+
description: "List SCIM groups for the organization.",
|
|
1172
|
+
method: "GET",
|
|
1173
|
+
path: "/api/0/organizations/{organization_slug}/scim/v2/Groups",
|
|
1174
|
+
pathParams: ORG$8,
|
|
1175
|
+
input: sentryListInputSchema.merge(orgScopeInputSchema).extend({
|
|
1176
|
+
startIndex: z.number().int().optional(),
|
|
1177
|
+
count: z.number().int().optional(),
|
|
1178
|
+
filter: z.string().optional()
|
|
1179
|
+
}),
|
|
1180
|
+
queryFields: [
|
|
1181
|
+
"cursor",
|
|
1182
|
+
"per_page",
|
|
1183
|
+
"query",
|
|
1184
|
+
"startIndex",
|
|
1185
|
+
"count",
|
|
1186
|
+
"filter"
|
|
1187
|
+
],
|
|
1188
|
+
output: sentryJsonObjectSchema,
|
|
1189
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.teamRead]
|
|
1190
|
+
};
|
|
1191
|
+
const patchScimGroupOperationsDefinition = {
|
|
1192
|
+
id: "sentry.patch-scim-group-operations",
|
|
1193
|
+
name: "Patch SCIM Group",
|
|
1194
|
+
description: "Apply PATCH operations to a SCIM group.",
|
|
1195
|
+
method: "PATCH",
|
|
1196
|
+
path: "/api/0/organizations/{organization_slug}/scim/v2/Groups/{group_id}",
|
|
1197
|
+
pathParams: ORG_SCIM_GROUP,
|
|
1198
|
+
input: orgScopeInputSchema.extend({
|
|
1199
|
+
group_id: sentryIdSchema,
|
|
1200
|
+
Operations: z.array(sentryJsonObjectSchema).min(1)
|
|
1201
|
+
}),
|
|
1202
|
+
bodyFields: ["Operations"],
|
|
1203
|
+
output: sentryScimGroupSchema,
|
|
1204
|
+
needsApproval: true,
|
|
1205
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.teamAdmin]
|
|
1206
|
+
};
|
|
1207
|
+
const deleteTeamFromOrgScimV2Definition = {
|
|
1208
|
+
id: "sentry.delete-team-from-org-scim-v2",
|
|
1209
|
+
name: "Delete SCIM Group",
|
|
1210
|
+
description: "Delete a SCIM group by id.",
|
|
1211
|
+
method: "DELETE",
|
|
1212
|
+
path: "/api/0/organizations/{organization_slug}/scim/v2/Groups/{group_id}",
|
|
1213
|
+
pathParams: ORG_SCIM_GROUP,
|
|
1214
|
+
input: orgScopeInputSchema.extend({ group_id: sentryIdSchema }),
|
|
1215
|
+
output: z.unknown(),
|
|
1216
|
+
needsApproval: true,
|
|
1217
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.teamAdmin]
|
|
1218
|
+
};
|
|
1219
|
+
const createExternalUserForOrganizationDefinition = {
|
|
1220
|
+
id: "sentry.create-external-user-for-organization",
|
|
1221
|
+
name: "Create External User",
|
|
1222
|
+
description: "Link a Sentry user to an external-provider user (github, slack, etc.).",
|
|
1223
|
+
method: "POST",
|
|
1224
|
+
path: "/api/0/organizations/{organization_slug}/external-users/",
|
|
1225
|
+
pathParams: ORG$8,
|
|
1226
|
+
input: orgScopeInputSchema.extend({
|
|
1227
|
+
userId: sentryIdSchema,
|
|
1228
|
+
externalName: z.string().min(1),
|
|
1229
|
+
provider: z.string().min(1),
|
|
1230
|
+
externalId: z.string().optional(),
|
|
1231
|
+
integrationId: z.string().optional()
|
|
1232
|
+
}),
|
|
1233
|
+
bodyFields: [
|
|
1234
|
+
"userId",
|
|
1235
|
+
"externalName",
|
|
1236
|
+
"provider",
|
|
1237
|
+
"externalId",
|
|
1238
|
+
"integrationId"
|
|
1239
|
+
],
|
|
1240
|
+
output: sentryJsonObjectSchema,
|
|
1241
|
+
needsApproval: true,
|
|
1242
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.memberAdmin]
|
|
1243
|
+
};
|
|
1244
|
+
const updateExternalUserForOrganizationDefinition = {
|
|
1245
|
+
id: "sentry.update-external-user-for-organization",
|
|
1246
|
+
name: "Update External User",
|
|
1247
|
+
description: "Update an external-user link.",
|
|
1248
|
+
method: "PUT",
|
|
1249
|
+
path: "/api/0/organizations/{organization_slug}/external-users/{external_user_id}/",
|
|
1250
|
+
pathParams: ORG_EXT_USER,
|
|
1251
|
+
input: orgScopeInputSchema.extend({
|
|
1252
|
+
external_user_id: sentryIdSchema,
|
|
1253
|
+
externalName: z.string().optional(),
|
|
1254
|
+
provider: z.string().optional(),
|
|
1255
|
+
externalId: z.string().optional(),
|
|
1256
|
+
integrationId: z.string().optional()
|
|
1257
|
+
}),
|
|
1258
|
+
bodyFields: [
|
|
1259
|
+
"externalName",
|
|
1260
|
+
"provider",
|
|
1261
|
+
"externalId",
|
|
1262
|
+
"integrationId"
|
|
1263
|
+
],
|
|
1264
|
+
output: sentryJsonObjectSchema,
|
|
1265
|
+
needsApproval: true,
|
|
1266
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.memberAdmin]
|
|
1267
|
+
};
|
|
1268
|
+
const deleteExternalUserFromOrganizationDefinition = {
|
|
1269
|
+
id: "sentry.delete-external-user-from-organization",
|
|
1270
|
+
name: "Delete External User",
|
|
1271
|
+
description: "Remove an external-user link by id.",
|
|
1272
|
+
method: "DELETE",
|
|
1273
|
+
path: "/api/0/organizations/{organization_slug}/external-users/{external_user_id}/",
|
|
1274
|
+
pathParams: ORG_EXT_USER,
|
|
1275
|
+
input: orgScopeInputSchema.extend({ external_user_id: sentryIdSchema }),
|
|
1276
|
+
output: z.unknown(),
|
|
1277
|
+
needsApproval: true,
|
|
1278
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.memberAdmin]
|
|
1279
|
+
};
|
|
1280
|
+
|
|
1281
|
+
//#endregion
|
|
1282
|
+
//#region src/operations/create-external-user-for-organization.operation.ts
|
|
1283
|
+
const createExternalUserForOrganizationOperation = defineSentryEndpoint(createExternalUserForOrganizationDefinition, sentryCredentialSet);
|
|
1284
|
+
|
|
1285
|
+
//#endregion
|
|
1286
|
+
//#region src/utils/alerts-endpoints.ts
|
|
1287
|
+
/**
|
|
1288
|
+
* Sentry alert-rule operations (metric + issue alert rules).
|
|
1289
|
+
* Maps to PLAN.md §6.11 (11 actions).
|
|
1290
|
+
*/
|
|
1291
|
+
const ORG$7 = [{
|
|
1292
|
+
name: "organization_slug",
|
|
1293
|
+
placeholder: "{organization_slug}"
|
|
1294
|
+
}];
|
|
1295
|
+
const ORG_RULE = [...ORG$7, {
|
|
1296
|
+
name: "alert_rule_id",
|
|
1297
|
+
placeholder: "{alert_rule_id}"
|
|
1298
|
+
}];
|
|
1299
|
+
const ORG_PROJECT$7 = [...ORG$7, {
|
|
1300
|
+
name: "project_slug",
|
|
1301
|
+
placeholder: "{project_slug}"
|
|
1302
|
+
}];
|
|
1303
|
+
const ORG_PROJECT_RULE = [...ORG_PROJECT$7, {
|
|
1304
|
+
name: "rule_id",
|
|
1305
|
+
placeholder: "{rule_id}"
|
|
1306
|
+
}];
|
|
1307
|
+
const createOrganizationAlertRuleDefinition = {
|
|
1308
|
+
id: "sentry.create-organization-alert-rule",
|
|
1309
|
+
name: "Create Metric Alert Rule",
|
|
1310
|
+
description: "Create a new organization metric alert rule.",
|
|
1311
|
+
method: "POST",
|
|
1312
|
+
path: "/api/0/organizations/{organization_slug}/alert-rules/",
|
|
1313
|
+
pathParams: ORG$7,
|
|
1314
|
+
input: orgScopeInputSchema.extend({
|
|
1315
|
+
name: z.string().min(1),
|
|
1316
|
+
dataset: z.string().optional(),
|
|
1317
|
+
query: z.string().optional(),
|
|
1318
|
+
aggregate: z.string().min(1),
|
|
1319
|
+
timeWindow: z.number().int(),
|
|
1320
|
+
projects: z.array(z.string()).min(1),
|
|
1321
|
+
environment: z.string().optional(),
|
|
1322
|
+
comparisonDelta: z.number().int().optional(),
|
|
1323
|
+
resolveThreshold: z.number().optional(),
|
|
1324
|
+
thresholdType: z.number().int().optional(),
|
|
1325
|
+
triggers: z.array(sentryJsonObjectSchema).min(1),
|
|
1326
|
+
owner: z.string().nullable().optional()
|
|
1327
|
+
}),
|
|
1328
|
+
bodyFields: [
|
|
1329
|
+
"name",
|
|
1330
|
+
"dataset",
|
|
1331
|
+
"query",
|
|
1332
|
+
"aggregate",
|
|
1333
|
+
"timeWindow",
|
|
1334
|
+
"projects",
|
|
1335
|
+
"environment",
|
|
1336
|
+
"comparisonDelta",
|
|
1337
|
+
"resolveThreshold",
|
|
1338
|
+
"thresholdType",
|
|
1339
|
+
"triggers",
|
|
1340
|
+
"owner"
|
|
1341
|
+
],
|
|
1342
|
+
output: sentryMetricAlertRuleSchema,
|
|
1343
|
+
needsApproval: true,
|
|
1344
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.alertsWrite]
|
|
1345
|
+
};
|
|
1346
|
+
const fetchOrganizationAlertRulesDefinition = {
|
|
1347
|
+
id: "sentry.fetch-organization-alert-rules",
|
|
1348
|
+
name: "List Metric Alert Rules",
|
|
1349
|
+
description: "List organization metric alert rules.",
|
|
1350
|
+
method: "GET",
|
|
1351
|
+
path: "/api/0/organizations/{organization_slug}/alert-rules/",
|
|
1352
|
+
pathParams: ORG$7,
|
|
1353
|
+
input: sentryListInputSchema.merge(orgScopeInputSchema),
|
|
1354
|
+
queryFields: [
|
|
1355
|
+
"cursor",
|
|
1356
|
+
"per_page",
|
|
1357
|
+
"query"
|
|
1358
|
+
],
|
|
1359
|
+
output: z.array(sentryMetricAlertRuleSchema),
|
|
1360
|
+
pagination: "cursor",
|
|
1361
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.alertsRead]
|
|
1362
|
+
};
|
|
1363
|
+
const retrieveAlertRuleDetailsDefinition = {
|
|
1364
|
+
id: "sentry.retrieve-alert-rule-details",
|
|
1365
|
+
name: "Retrieve Metric Alert Rule",
|
|
1366
|
+
description: "Fetch a metric alert rule by id.",
|
|
1367
|
+
method: "GET",
|
|
1368
|
+
path: "/api/0/organizations/{organization_slug}/alert-rules/{alert_rule_id}/",
|
|
1369
|
+
pathParams: ORG_RULE,
|
|
1370
|
+
input: orgScopeInputSchema.extend({ alert_rule_id: sentryIdSchema }),
|
|
1371
|
+
output: sentryMetricAlertRuleSchema,
|
|
1372
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.alertsRead]
|
|
1373
|
+
};
|
|
1374
|
+
const updateOrganizationAlertRulesDefinition = {
|
|
1375
|
+
id: "sentry.update-organization-alert-rules",
|
|
1376
|
+
name: "Update Metric Alert Rule",
|
|
1377
|
+
description: "Update a metric alert rule in place.",
|
|
1378
|
+
method: "PUT",
|
|
1379
|
+
path: "/api/0/organizations/{organization_slug}/alert-rules/{alert_rule_id}/",
|
|
1380
|
+
pathParams: ORG_RULE,
|
|
1381
|
+
input: orgScopeInputSchema.extend({
|
|
1382
|
+
alert_rule_id: sentryIdSchema,
|
|
1383
|
+
name: z.string().optional(),
|
|
1384
|
+
dataset: z.string().optional(),
|
|
1385
|
+
query: z.string().optional(),
|
|
1386
|
+
aggregate: z.string().optional(),
|
|
1387
|
+
timeWindow: z.number().int().optional(),
|
|
1388
|
+
projects: z.array(z.string()).optional(),
|
|
1389
|
+
environment: z.string().optional(),
|
|
1390
|
+
comparisonDelta: z.number().int().optional(),
|
|
1391
|
+
resolveThreshold: z.number().optional(),
|
|
1392
|
+
thresholdType: z.number().int().optional(),
|
|
1393
|
+
triggers: z.array(sentryJsonObjectSchema).optional(),
|
|
1394
|
+
owner: z.string().nullable().optional()
|
|
1395
|
+
}),
|
|
1396
|
+
bodyFields: [
|
|
1397
|
+
"name",
|
|
1398
|
+
"dataset",
|
|
1399
|
+
"query",
|
|
1400
|
+
"aggregate",
|
|
1401
|
+
"timeWindow",
|
|
1402
|
+
"projects",
|
|
1403
|
+
"environment",
|
|
1404
|
+
"comparisonDelta",
|
|
1405
|
+
"resolveThreshold",
|
|
1406
|
+
"thresholdType",
|
|
1407
|
+
"triggers",
|
|
1408
|
+
"owner"
|
|
1409
|
+
],
|
|
1410
|
+
output: sentryMetricAlertRuleSchema,
|
|
1411
|
+
needsApproval: true,
|
|
1412
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.alertsWrite]
|
|
1413
|
+
};
|
|
1414
|
+
const deleteOrganizationAlertRuleDefinition = {
|
|
1415
|
+
id: "sentry.delete-organization-alert-rule",
|
|
1416
|
+
name: "Delete Metric Alert Rule",
|
|
1417
|
+
description: "Delete a metric alert rule by id.",
|
|
1418
|
+
method: "DELETE",
|
|
1419
|
+
path: "/api/0/organizations/{organization_slug}/alert-rules/{alert_rule_id}/",
|
|
1420
|
+
pathParams: ORG_RULE,
|
|
1421
|
+
input: orgScopeInputSchema.extend({ alert_rule_id: sentryIdSchema }),
|
|
1422
|
+
output: z.unknown(),
|
|
1423
|
+
needsApproval: true,
|
|
1424
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.alertsWrite]
|
|
1425
|
+
};
|
|
1426
|
+
const getActivationOfAlertRuleForOrganizationDefinition = {
|
|
1427
|
+
id: "sentry.get-activation-of-alert-rule-for-organization",
|
|
1428
|
+
name: "Get Alert Rule Activation",
|
|
1429
|
+
description: "Fetch the activation history for a metric alert rule.",
|
|
1430
|
+
method: "GET",
|
|
1431
|
+
path: "/api/0/organizations/{organization_slug}/alert-rules/{alert_rule_id}/activations/",
|
|
1432
|
+
pathParams: ORG_RULE,
|
|
1433
|
+
input: orgScopeInputSchema.extend({
|
|
1434
|
+
alert_rule_id: sentryIdSchema,
|
|
1435
|
+
cursor: z.string().optional(),
|
|
1436
|
+
per_page: z.number().int().optional()
|
|
1437
|
+
}),
|
|
1438
|
+
queryFields: ["cursor", "per_page"],
|
|
1439
|
+
output: z.array(sentryJsonObjectSchema),
|
|
1440
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.alertsRead]
|
|
1441
|
+
};
|
|
1442
|
+
const createProjectRuleForAlertsDefinition = {
|
|
1443
|
+
id: "sentry.create-project-rule-for-alerts",
|
|
1444
|
+
name: "Create Issue Alert Rule",
|
|
1445
|
+
description: "Create a project issue alert rule.",
|
|
1446
|
+
method: "POST",
|
|
1447
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/rules/",
|
|
1448
|
+
pathParams: ORG_PROJECT$7,
|
|
1449
|
+
input: orgProjectScopeInputSchema.extend({
|
|
1450
|
+
name: z.string().min(1),
|
|
1451
|
+
actionMatch: z.enum([
|
|
1452
|
+
"all",
|
|
1453
|
+
"any",
|
|
1454
|
+
"none"
|
|
1455
|
+
]),
|
|
1456
|
+
filterMatch: z.enum([
|
|
1457
|
+
"all",
|
|
1458
|
+
"any",
|
|
1459
|
+
"none"
|
|
1460
|
+
]).optional(),
|
|
1461
|
+
frequency: z.number().int(),
|
|
1462
|
+
conditions: z.array(sentryJsonObjectSchema),
|
|
1463
|
+
filters: z.array(sentryJsonObjectSchema).optional(),
|
|
1464
|
+
actions: z.array(sentryJsonObjectSchema),
|
|
1465
|
+
environment: z.string().nullable().optional(),
|
|
1466
|
+
owner: z.string().nullable().optional()
|
|
1467
|
+
}),
|
|
1468
|
+
bodyFields: [
|
|
1469
|
+
"name",
|
|
1470
|
+
"actionMatch",
|
|
1471
|
+
"filterMatch",
|
|
1472
|
+
"frequency",
|
|
1473
|
+
"conditions",
|
|
1474
|
+
"filters",
|
|
1475
|
+
"actions",
|
|
1476
|
+
"environment",
|
|
1477
|
+
"owner"
|
|
1478
|
+
],
|
|
1479
|
+
output: sentryIssueAlertRuleSchema,
|
|
1480
|
+
needsApproval: true,
|
|
1481
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.alertsWrite]
|
|
1482
|
+
};
|
|
1483
|
+
const retrieveProjectRulesByOrgAndProjectIdDefinition = {
|
|
1484
|
+
id: "sentry.retrieve-project-rules-by-org-and-project-id",
|
|
1485
|
+
name: "List Issue Alert Rules",
|
|
1486
|
+
description: "List project issue alert rules.",
|
|
1487
|
+
method: "GET",
|
|
1488
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/rules/",
|
|
1489
|
+
pathParams: ORG_PROJECT$7,
|
|
1490
|
+
input: sentryListInputSchema.merge(orgProjectScopeInputSchema),
|
|
1491
|
+
queryFields: [
|
|
1492
|
+
"cursor",
|
|
1493
|
+
"per_page",
|
|
1494
|
+
"query"
|
|
1495
|
+
],
|
|
1496
|
+
output: z.array(sentryIssueAlertRuleSchema),
|
|
1497
|
+
pagination: "cursor",
|
|
1498
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.alertsRead]
|
|
1499
|
+
};
|
|
1500
|
+
const getProjectRuleDetailsDefinition = {
|
|
1501
|
+
id: "sentry.get-project-rule-details",
|
|
1502
|
+
name: "Get Issue Alert Rule",
|
|
1503
|
+
description: "Fetch a single issue alert rule by id.",
|
|
1504
|
+
method: "GET",
|
|
1505
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/rules/{rule_id}/",
|
|
1506
|
+
pathParams: ORG_PROJECT_RULE,
|
|
1507
|
+
input: orgProjectScopeInputSchema.extend({ rule_id: sentryIdSchema }),
|
|
1508
|
+
output: sentryIssueAlertRuleSchema,
|
|
1509
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.alertsRead]
|
|
1510
|
+
};
|
|
1511
|
+
const updateProjectRuleByIdDefinition = {
|
|
1512
|
+
id: "sentry.update-project-rule-by-id",
|
|
1513
|
+
name: "Update Issue Alert Rule",
|
|
1514
|
+
description: "Update a project issue alert rule.",
|
|
1515
|
+
method: "PUT",
|
|
1516
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/rules/{rule_id}/",
|
|
1517
|
+
pathParams: ORG_PROJECT_RULE,
|
|
1518
|
+
input: orgProjectScopeInputSchema.extend({
|
|
1519
|
+
rule_id: sentryIdSchema,
|
|
1520
|
+
name: z.string().optional(),
|
|
1521
|
+
actionMatch: z.enum([
|
|
1522
|
+
"all",
|
|
1523
|
+
"any",
|
|
1524
|
+
"none"
|
|
1525
|
+
]).optional(),
|
|
1526
|
+
filterMatch: z.enum([
|
|
1527
|
+
"all",
|
|
1528
|
+
"any",
|
|
1529
|
+
"none"
|
|
1530
|
+
]).optional(),
|
|
1531
|
+
frequency: z.number().int().optional(),
|
|
1532
|
+
conditions: z.array(sentryJsonObjectSchema).optional(),
|
|
1533
|
+
filters: z.array(sentryJsonObjectSchema).optional(),
|
|
1534
|
+
actions: z.array(sentryJsonObjectSchema).optional(),
|
|
1535
|
+
environment: z.string().nullable().optional(),
|
|
1536
|
+
owner: z.string().nullable().optional()
|
|
1537
|
+
}),
|
|
1538
|
+
bodyFields: [
|
|
1539
|
+
"name",
|
|
1540
|
+
"actionMatch",
|
|
1541
|
+
"filterMatch",
|
|
1542
|
+
"frequency",
|
|
1543
|
+
"conditions",
|
|
1544
|
+
"filters",
|
|
1545
|
+
"actions",
|
|
1546
|
+
"environment",
|
|
1547
|
+
"owner"
|
|
1548
|
+
],
|
|
1549
|
+
output: sentryIssueAlertRuleSchema,
|
|
1550
|
+
needsApproval: true,
|
|
1551
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.alertsWrite]
|
|
1552
|
+
};
|
|
1553
|
+
const deleteProjectRuleDefinition = {
|
|
1554
|
+
id: "sentry.delete-project-rule",
|
|
1555
|
+
name: "Delete Issue Alert Rule",
|
|
1556
|
+
description: "Delete a project issue alert rule.",
|
|
1557
|
+
method: "DELETE",
|
|
1558
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/rules/{rule_id}/",
|
|
1559
|
+
pathParams: ORG_PROJECT_RULE,
|
|
1560
|
+
input: orgProjectScopeInputSchema.extend({ rule_id: sentryIdSchema }),
|
|
1561
|
+
output: z.unknown(),
|
|
1562
|
+
needsApproval: true,
|
|
1563
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.alertsWrite]
|
|
1564
|
+
};
|
|
1565
|
+
|
|
1566
|
+
//#endregion
|
|
1567
|
+
//#region src/operations/create-organization-alert-rule.operation.ts
|
|
1568
|
+
const createOrganizationAlertRuleOperation = defineSentryEndpoint(createOrganizationAlertRuleDefinition, sentryCredentialSet);
|
|
1569
|
+
|
|
1570
|
+
//#endregion
|
|
1571
|
+
//#region src/utils/monitors-endpoints.ts
|
|
1572
|
+
/**
|
|
1573
|
+
* Sentry cron-monitor operations. Maps to PLAN.md §6.13 (10 actions).
|
|
1574
|
+
*/
|
|
1575
|
+
const ORG$6 = [{
|
|
1576
|
+
name: "organization_slug",
|
|
1577
|
+
placeholder: "{organization_slug}"
|
|
1578
|
+
}];
|
|
1579
|
+
const ORG_MONITOR = [...ORG$6, {
|
|
1580
|
+
name: "monitor_id_or_slug",
|
|
1581
|
+
placeholder: "{monitor_id_or_slug}"
|
|
1582
|
+
}];
|
|
1583
|
+
const ORG_PROJECT_MONITOR = [
|
|
1584
|
+
...ORG$6,
|
|
1585
|
+
{
|
|
1586
|
+
name: "project_slug",
|
|
1587
|
+
placeholder: "{project_slug}"
|
|
1588
|
+
},
|
|
1589
|
+
{
|
|
1590
|
+
name: "monitor_id_or_slug",
|
|
1591
|
+
placeholder: "{monitor_id_or_slug}"
|
|
1592
|
+
}
|
|
1593
|
+
];
|
|
1594
|
+
const createOrganizationMonitorDefinition = {
|
|
1595
|
+
id: "sentry.create-organization-monitor",
|
|
1596
|
+
name: "Create Monitor",
|
|
1597
|
+
description: "Create a new cron-monitor scoped to the organization.",
|
|
1598
|
+
method: "POST",
|
|
1599
|
+
path: "/api/0/organizations/{organization_slug}/monitors/",
|
|
1600
|
+
pathParams: ORG$6,
|
|
1601
|
+
input: orgScopeInputSchema.extend({
|
|
1602
|
+
name: z.string().min(1),
|
|
1603
|
+
slug: sentrySlugSchema.optional(),
|
|
1604
|
+
project: z.string().min(1),
|
|
1605
|
+
type: z.enum(["cron_job"]).default("cron_job"),
|
|
1606
|
+
config: sentryJsonObjectSchema,
|
|
1607
|
+
status: z.enum(["active", "disabled"]).optional(),
|
|
1608
|
+
alert_rule: sentryJsonObjectSchema.optional()
|
|
1609
|
+
}),
|
|
1610
|
+
bodyFields: [
|
|
1611
|
+
"name",
|
|
1612
|
+
"slug",
|
|
1613
|
+
"project",
|
|
1614
|
+
"type",
|
|
1615
|
+
"config",
|
|
1616
|
+
"status",
|
|
1617
|
+
"alert_rule"
|
|
1618
|
+
],
|
|
1619
|
+
output: sentryMonitorSchema,
|
|
1620
|
+
needsApproval: true,
|
|
1621
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectWrite]
|
|
1622
|
+
};
|
|
1623
|
+
const retrieveOrganizationMonitorsDefinition = {
|
|
1624
|
+
id: "sentry.retrieve-organization-monitors",
|
|
1625
|
+
name: "List Monitors",
|
|
1626
|
+
description: "List cron-monitors in an organization.",
|
|
1627
|
+
method: "GET",
|
|
1628
|
+
path: "/api/0/organizations/{organization_slug}/monitors/",
|
|
1629
|
+
pathParams: ORG$6,
|
|
1630
|
+
input: sentryListInputSchema.merge(orgScopeInputSchema).extend({
|
|
1631
|
+
project: z.array(z.number().int()).optional(),
|
|
1632
|
+
environment: z.array(z.string()).optional()
|
|
1633
|
+
}),
|
|
1634
|
+
queryFields: [
|
|
1635
|
+
"cursor",
|
|
1636
|
+
"per_page",
|
|
1637
|
+
"query",
|
|
1638
|
+
"project",
|
|
1639
|
+
"environment"
|
|
1640
|
+
],
|
|
1641
|
+
output: z.array(sentryMonitorSchema),
|
|
1642
|
+
pagination: "cursor",
|
|
1643
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectRead]
|
|
1644
|
+
};
|
|
1645
|
+
const getOrganizationMonitorByIdOrSlugDefinition = {
|
|
1646
|
+
id: "sentry.get-organization-monitor-by-id-or-slug",
|
|
1647
|
+
name: "Get Monitor",
|
|
1648
|
+
description: "Fetch a single monitor by id or slug.",
|
|
1649
|
+
method: "GET",
|
|
1650
|
+
path: "/api/0/organizations/{organization_slug}/monitors/{monitor_id_or_slug}/",
|
|
1651
|
+
pathParams: ORG_MONITOR,
|
|
1652
|
+
input: orgScopeInputSchema.extend({ monitor_id_or_slug: z.string().min(1) }),
|
|
1653
|
+
output: sentryMonitorSchema,
|
|
1654
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectRead]
|
|
1655
|
+
};
|
|
1656
|
+
const modifyOrganizationMonitorDataDefinition = {
|
|
1657
|
+
id: "sentry.modify-organization-monitor-data",
|
|
1658
|
+
name: "Update Monitor",
|
|
1659
|
+
description: "Update an existing monitor by id or slug.",
|
|
1660
|
+
method: "PUT",
|
|
1661
|
+
path: "/api/0/organizations/{organization_slug}/monitors/{monitor_id_or_slug}/",
|
|
1662
|
+
pathParams: ORG_MONITOR,
|
|
1663
|
+
input: orgScopeInputSchema.extend({
|
|
1664
|
+
monitor_id_or_slug: z.string().min(1),
|
|
1665
|
+
name: z.string().optional(),
|
|
1666
|
+
slug: sentrySlugSchema.optional(),
|
|
1667
|
+
project: z.string().optional(),
|
|
1668
|
+
config: sentryJsonObjectSchema.optional(),
|
|
1669
|
+
status: z.enum(["active", "disabled"]).optional(),
|
|
1670
|
+
alert_rule: sentryJsonObjectSchema.optional()
|
|
1671
|
+
}),
|
|
1672
|
+
bodyFields: [
|
|
1673
|
+
"name",
|
|
1674
|
+
"slug",
|
|
1675
|
+
"project",
|
|
1676
|
+
"config",
|
|
1677
|
+
"status",
|
|
1678
|
+
"alert_rule"
|
|
1679
|
+
],
|
|
1680
|
+
output: sentryMonitorSchema,
|
|
1681
|
+
needsApproval: true,
|
|
1682
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectWrite]
|
|
1683
|
+
};
|
|
1684
|
+
const deleteOrganizationMonitorDefinition = {
|
|
1685
|
+
id: "sentry.delete-organization-monitor",
|
|
1686
|
+
name: "Delete Monitor",
|
|
1687
|
+
description: "Delete a monitor by id or slug.",
|
|
1688
|
+
method: "DELETE",
|
|
1689
|
+
path: "/api/0/organizations/{organization_slug}/monitors/{monitor_id_or_slug}/",
|
|
1690
|
+
pathParams: ORG_MONITOR,
|
|
1691
|
+
input: orgScopeInputSchema.extend({ monitor_id_or_slug: z.string().min(1) }),
|
|
1692
|
+
output: z.unknown(),
|
|
1693
|
+
needsApproval: true,
|
|
1694
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectWrite]
|
|
1695
|
+
};
|
|
1696
|
+
const getProjectMonitorByIdDefinition = {
|
|
1697
|
+
id: "sentry.get-project-monitor-by-id",
|
|
1698
|
+
name: "Get Project Monitor",
|
|
1699
|
+
description: "Fetch a monitor scoped to a project.",
|
|
1700
|
+
method: "GET",
|
|
1701
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/monitors/{monitor_id_or_slug}/",
|
|
1702
|
+
pathParams: ORG_PROJECT_MONITOR,
|
|
1703
|
+
input: orgProjectScopeInputSchema.extend({ monitor_id_or_slug: z.string().min(1) }),
|
|
1704
|
+
output: sentryMonitorSchema,
|
|
1705
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectRead]
|
|
1706
|
+
};
|
|
1707
|
+
const updateProjectMonitorDefinition = {
|
|
1708
|
+
id: "sentry.update-project-monitor",
|
|
1709
|
+
name: "Update Project Monitor",
|
|
1710
|
+
description: "Update a project-scoped monitor.",
|
|
1711
|
+
method: "PUT",
|
|
1712
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/monitors/{monitor_id_or_slug}/",
|
|
1713
|
+
pathParams: ORG_PROJECT_MONITOR,
|
|
1714
|
+
input: orgProjectScopeInputSchema.extend({
|
|
1715
|
+
monitor_id_or_slug: z.string().min(1),
|
|
1716
|
+
name: z.string().optional(),
|
|
1717
|
+
slug: sentrySlugSchema.optional(),
|
|
1718
|
+
config: sentryJsonObjectSchema.optional(),
|
|
1719
|
+
status: z.enum(["active", "disabled"]).optional()
|
|
1720
|
+
}),
|
|
1721
|
+
bodyFields: [
|
|
1722
|
+
"name",
|
|
1723
|
+
"slug",
|
|
1724
|
+
"config",
|
|
1725
|
+
"status"
|
|
1726
|
+
],
|
|
1727
|
+
output: sentryMonitorSchema,
|
|
1728
|
+
needsApproval: true,
|
|
1729
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectWrite]
|
|
1730
|
+
};
|
|
1731
|
+
const deleteProjectMonitorDefinition = {
|
|
1732
|
+
id: "sentry.delete-project-monitor",
|
|
1733
|
+
name: "Delete Project Monitor",
|
|
1734
|
+
description: "Delete a project-scoped monitor.",
|
|
1735
|
+
method: "DELETE",
|
|
1736
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/monitors/{monitor_id_or_slug}/",
|
|
1737
|
+
pathParams: ORG_PROJECT_MONITOR,
|
|
1738
|
+
input: orgProjectScopeInputSchema.extend({ monitor_id_or_slug: z.string().min(1) }),
|
|
1739
|
+
output: z.unknown(),
|
|
1740
|
+
needsApproval: true,
|
|
1741
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectWrite]
|
|
1742
|
+
};
|
|
1743
|
+
const retrieveMonitorCheckinsDefinition = {
|
|
1744
|
+
id: "sentry.retrieve-monitor-checkins",
|
|
1745
|
+
name: "Retrieve Monitor Check-Ins",
|
|
1746
|
+
description: "List check-ins for a project monitor.",
|
|
1747
|
+
method: "GET",
|
|
1748
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/monitors/{monitor_id_or_slug}/checkins/",
|
|
1749
|
+
pathParams: ORG_PROJECT_MONITOR,
|
|
1750
|
+
input: sentryListInputSchema.merge(orgProjectScopeInputSchema).extend({
|
|
1751
|
+
monitor_id_or_slug: z.string().min(1),
|
|
1752
|
+
environment: z.string().optional()
|
|
1753
|
+
}),
|
|
1754
|
+
queryFields: [
|
|
1755
|
+
"cursor",
|
|
1756
|
+
"per_page",
|
|
1757
|
+
"query",
|
|
1758
|
+
"environment"
|
|
1759
|
+
],
|
|
1760
|
+
output: sentryJsonArraySchema,
|
|
1761
|
+
pagination: "cursor",
|
|
1762
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectRead]
|
|
1763
|
+
};
|
|
1764
|
+
const retrieveMonitorCheckinsByOrgDefinition = {
|
|
1765
|
+
id: "sentry.retrieve-monitor-checkins-by-org",
|
|
1766
|
+
name: "Retrieve Monitor Check-Ins (Org)",
|
|
1767
|
+
description: "List check-ins for an organization-level monitor.",
|
|
1768
|
+
method: "GET",
|
|
1769
|
+
path: "/api/0/organizations/{organization_slug}/monitors/{monitor_id_or_slug}/checkins/",
|
|
1770
|
+
pathParams: ORG_MONITOR,
|
|
1771
|
+
input: sentryListInputSchema.merge(orgScopeInputSchema).extend({
|
|
1772
|
+
monitor_id_or_slug: z.string().min(1),
|
|
1773
|
+
environment: z.string().optional()
|
|
1774
|
+
}),
|
|
1775
|
+
queryFields: [
|
|
1776
|
+
"cursor",
|
|
1777
|
+
"per_page",
|
|
1778
|
+
"query",
|
|
1779
|
+
"environment"
|
|
1780
|
+
],
|
|
1781
|
+
output: sentryJsonArraySchema,
|
|
1782
|
+
pagination: "cursor",
|
|
1783
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectRead]
|
|
1784
|
+
};
|
|
1785
|
+
|
|
1786
|
+
//#endregion
|
|
1787
|
+
//#region src/operations/create-organization-monitor.operation.ts
|
|
1788
|
+
const createOrganizationMonitorOperation = defineSentryEndpoint(createOrganizationMonitorDefinition, sentryCredentialSet);
|
|
1789
|
+
|
|
1790
|
+
//#endregion
|
|
1791
|
+
//#region src/operations/create-organization-team.operation.ts
|
|
1792
|
+
const createOrganizationTeamOperation = defineSentryEndpoint(createOrganizationTeamDefinition, sentryCredentialSet);
|
|
1793
|
+
|
|
1794
|
+
//#endregion
|
|
1795
|
+
//#region src/utils/project-keys-endpoints.ts
|
|
1796
|
+
/**
|
|
1797
|
+
* Sentry project-key (DSN) operations. Maps to PLAN.md §6.5 (5 actions).
|
|
1798
|
+
*/
|
|
1799
|
+
const ORG_PROJECT$6 = [{
|
|
1800
|
+
name: "organization_slug",
|
|
1801
|
+
placeholder: "{organization_slug}"
|
|
1802
|
+
}, {
|
|
1803
|
+
name: "project_slug",
|
|
1804
|
+
placeholder: "{project_slug}"
|
|
1805
|
+
}];
|
|
1806
|
+
const ORG_PROJECT_KEY = [...ORG_PROJECT$6, {
|
|
1807
|
+
name: "key_id",
|
|
1808
|
+
placeholder: "{key_id}"
|
|
1809
|
+
}];
|
|
1810
|
+
const createProjectKeyWithOptionalRateLimitingDefinition = {
|
|
1811
|
+
id: "sentry.create-project-key-with-optional-rate-limiting",
|
|
1812
|
+
name: "Create Project Key",
|
|
1813
|
+
description: "Create a new project client key (DSN) with an optional rate-limit envelope.",
|
|
1814
|
+
method: "POST",
|
|
1815
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/keys/",
|
|
1816
|
+
pathParams: ORG_PROJECT$6,
|
|
1817
|
+
input: orgProjectScopeInputSchema.extend({
|
|
1818
|
+
name: z.string().optional(),
|
|
1819
|
+
rateLimit: z.object({
|
|
1820
|
+
window: z.number().int(),
|
|
1821
|
+
count: z.number().int()
|
|
1822
|
+
}).optional()
|
|
1823
|
+
}),
|
|
1824
|
+
bodyFields: ["name", "rateLimit"],
|
|
1825
|
+
output: sentryProjectKeySchema,
|
|
1826
|
+
needsApproval: true,
|
|
1827
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectAdmin]
|
|
1828
|
+
};
|
|
1829
|
+
const retrieveProjectKeyDetailsDefinition = {
|
|
1830
|
+
id: "sentry.retrieve-project-key-details",
|
|
1831
|
+
name: "Retrieve Project Key",
|
|
1832
|
+
description: "Fetch one project client key by id.",
|
|
1833
|
+
method: "GET",
|
|
1834
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/keys/{key_id}/",
|
|
1835
|
+
pathParams: ORG_PROJECT_KEY,
|
|
1836
|
+
input: orgProjectScopeInputSchema.extend({ key_id: sentryIdSchema }),
|
|
1837
|
+
output: sentryProjectKeySchema,
|
|
1838
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectAdmin]
|
|
1839
|
+
};
|
|
1840
|
+
const retrieveProjectKeysByOrgAndProjectDefinition = {
|
|
1841
|
+
id: "sentry.retrieve-project-keys-by-org-and-project",
|
|
1842
|
+
name: "List Project Keys",
|
|
1843
|
+
description: "List every project client key (DSN) for a project.",
|
|
1844
|
+
method: "GET",
|
|
1845
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/keys/",
|
|
1846
|
+
pathParams: ORG_PROJECT$6,
|
|
1847
|
+
input: sentryListInputSchema.merge(orgProjectScopeInputSchema),
|
|
1848
|
+
queryFields: [
|
|
1849
|
+
"cursor",
|
|
1850
|
+
"per_page",
|
|
1851
|
+
"query"
|
|
1852
|
+
],
|
|
1853
|
+
output: z.array(sentryProjectKeySchema),
|
|
1854
|
+
pagination: "cursor",
|
|
1855
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectAdmin]
|
|
1856
|
+
};
|
|
1857
|
+
const updateProjectKeyConfigurationDefinition = {
|
|
1858
|
+
id: "sentry.update-project-key-configuration",
|
|
1859
|
+
name: "Update Project Key",
|
|
1860
|
+
description: "Update a project client key’s name, active flag, or rate-limit.",
|
|
1861
|
+
method: "PUT",
|
|
1862
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/keys/{key_id}/",
|
|
1863
|
+
pathParams: ORG_PROJECT_KEY,
|
|
1864
|
+
input: orgProjectScopeInputSchema.extend({
|
|
1865
|
+
key_id: sentryIdSchema,
|
|
1866
|
+
name: z.string().optional(),
|
|
1867
|
+
isActive: z.boolean().optional(),
|
|
1868
|
+
rateLimit: z.object({
|
|
1869
|
+
window: z.number().int().nullable(),
|
|
1870
|
+
count: z.number().int().nullable()
|
|
1871
|
+
}).nullable().optional(),
|
|
1872
|
+
browserSdkVersion: z.string().optional(),
|
|
1873
|
+
dynamicSdkLoaderOptions: z.object({
|
|
1874
|
+
hasReplay: z.boolean().optional(),
|
|
1875
|
+
hasPerformance: z.boolean().optional(),
|
|
1876
|
+
hasDebug: z.boolean().optional()
|
|
1877
|
+
}).optional()
|
|
1878
|
+
}),
|
|
1879
|
+
bodyFields: [
|
|
1880
|
+
"name",
|
|
1881
|
+
"isActive",
|
|
1882
|
+
"rateLimit",
|
|
1883
|
+
"browserSdkVersion",
|
|
1884
|
+
"dynamicSdkLoaderOptions"
|
|
1885
|
+
],
|
|
1886
|
+
output: sentryProjectKeySchema,
|
|
1887
|
+
needsApproval: true,
|
|
1888
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectAdmin]
|
|
1889
|
+
};
|
|
1890
|
+
const deleteProjectKeyDefinition = {
|
|
1891
|
+
id: "sentry.delete-project-key",
|
|
1892
|
+
name: "Delete Project Key",
|
|
1893
|
+
description: "Delete a project client key by id.",
|
|
1894
|
+
method: "DELETE",
|
|
1895
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/keys/{key_id}/",
|
|
1896
|
+
pathParams: ORG_PROJECT_KEY,
|
|
1897
|
+
input: orgProjectScopeInputSchema.extend({ key_id: sentryIdSchema }),
|
|
1898
|
+
output: z.unknown(),
|
|
1899
|
+
needsApproval: true,
|
|
1900
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectAdmin]
|
|
1901
|
+
};
|
|
1902
|
+
|
|
1903
|
+
//#endregion
|
|
1904
|
+
//#region src/operations/create-project-key-with-optional-rate-limiting.operation.ts
|
|
1905
|
+
const createProjectKeyWithOptionalRateLimitingOperation = defineSentryEndpoint(createProjectKeyWithOptionalRateLimitingDefinition, sentryCredentialSet);
|
|
1906
|
+
|
|
1907
|
+
//#endregion
|
|
1908
|
+
//#region src/operations/create-project-rule-for-alerts.operation.ts
|
|
1909
|
+
const createProjectRuleForAlertsOperation = defineSentryEndpoint(createProjectRuleForAlertsDefinition, sentryCredentialSet);
|
|
1910
|
+
|
|
1911
|
+
//#endregion
|
|
1912
|
+
//#region src/utils/webhooks-endpoints.ts
|
|
1913
|
+
/**
|
|
1914
|
+
* Sentry legacy project service-hook operations. Maps to PLAN.md §6.16 (5 actions).
|
|
1915
|
+
*/
|
|
1916
|
+
const ORG_PROJECT$5 = [{
|
|
1917
|
+
name: "organization_slug",
|
|
1918
|
+
placeholder: "{organization_slug}"
|
|
1919
|
+
}, {
|
|
1920
|
+
name: "project_slug",
|
|
1921
|
+
placeholder: "{project_slug}"
|
|
1922
|
+
}];
|
|
1923
|
+
const ORG_PROJECT_HOOK = [...ORG_PROJECT$5, {
|
|
1924
|
+
name: "hook_id",
|
|
1925
|
+
placeholder: "{hook_id}"
|
|
1926
|
+
}];
|
|
1927
|
+
const createProjectWebhookSubscriptionDefinition = {
|
|
1928
|
+
id: "sentry.create-project-webhook-subscription",
|
|
1929
|
+
name: "Create Project Service Hook",
|
|
1930
|
+
description: "Create a legacy per-project service hook. Prefer an integration webhook for new installs.",
|
|
1931
|
+
method: "POST",
|
|
1932
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/hooks/",
|
|
1933
|
+
pathParams: ORG_PROJECT$5,
|
|
1934
|
+
input: orgProjectScopeInputSchema.extend({
|
|
1935
|
+
url: z.string().url(),
|
|
1936
|
+
events: z.array(z.string()).min(1)
|
|
1937
|
+
}),
|
|
1938
|
+
bodyFields: ["url", "events"],
|
|
1939
|
+
output: sentryProjectHookSchema,
|
|
1940
|
+
needsApproval: true,
|
|
1941
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectAdmin]
|
|
1942
|
+
};
|
|
1943
|
+
const retrieveProjectHooksDefinition = {
|
|
1944
|
+
id: "sentry.retrieve-project-hooks",
|
|
1945
|
+
name: "List Project Service Hooks",
|
|
1946
|
+
description: "List the service hooks configured on a project.",
|
|
1947
|
+
method: "GET",
|
|
1948
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/hooks/",
|
|
1949
|
+
pathParams: ORG_PROJECT$5,
|
|
1950
|
+
input: sentryListInputSchema.merge(orgProjectScopeInputSchema),
|
|
1951
|
+
queryFields: [
|
|
1952
|
+
"cursor",
|
|
1953
|
+
"per_page",
|
|
1954
|
+
"query"
|
|
1955
|
+
],
|
|
1956
|
+
output: z.array(sentryProjectHookSchema),
|
|
1957
|
+
pagination: "cursor",
|
|
1958
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectRead]
|
|
1959
|
+
};
|
|
1960
|
+
const getProjectHookDefinition = {
|
|
1961
|
+
id: "sentry.get-project-hook",
|
|
1962
|
+
name: "Get Project Service Hook",
|
|
1963
|
+
description: "Fetch a project service hook by id.",
|
|
1964
|
+
method: "GET",
|
|
1965
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/hooks/{hook_id}/",
|
|
1966
|
+
pathParams: ORG_PROJECT_HOOK,
|
|
1967
|
+
input: orgProjectScopeInputSchema.extend({ hook_id: sentryIdSchema }),
|
|
1968
|
+
output: sentryProjectHookSchema,
|
|
1969
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectRead]
|
|
1970
|
+
};
|
|
1971
|
+
const updateWebhookConfigurationDefinition = {
|
|
1972
|
+
id: "sentry.update-webhook-configuration-xp",
|
|
1973
|
+
name: "Update Project Service Hook",
|
|
1974
|
+
description: "Update a project service hook in place.",
|
|
1975
|
+
method: "PUT",
|
|
1976
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/hooks/{hook_id}/",
|
|
1977
|
+
pathParams: ORG_PROJECT_HOOK,
|
|
1978
|
+
input: orgProjectScopeInputSchema.extend({
|
|
1979
|
+
hook_id: sentryIdSchema,
|
|
1980
|
+
url: z.string().url().optional(),
|
|
1981
|
+
events: z.array(z.string()).optional(),
|
|
1982
|
+
isActive: z.boolean().optional()
|
|
1983
|
+
}),
|
|
1984
|
+
bodyFields: [
|
|
1985
|
+
"url",
|
|
1986
|
+
"events",
|
|
1987
|
+
"isActive"
|
|
1988
|
+
],
|
|
1989
|
+
output: sentryProjectHookSchema,
|
|
1990
|
+
needsApproval: true,
|
|
1991
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectAdmin]
|
|
1992
|
+
};
|
|
1993
|
+
const deleteProjectHookDefinition = {
|
|
1994
|
+
id: "sentry.delete-project-hook",
|
|
1995
|
+
name: "Delete Project Service Hook",
|
|
1996
|
+
description: "Delete a project service hook by id.",
|
|
1997
|
+
method: "DELETE",
|
|
1998
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/hooks/{hook_id}/",
|
|
1999
|
+
pathParams: ORG_PROJECT_HOOK,
|
|
2000
|
+
input: orgProjectScopeInputSchema.extend({ hook_id: sentryIdSchema }),
|
|
2001
|
+
output: z.unknown(),
|
|
2002
|
+
needsApproval: true,
|
|
2003
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectAdmin]
|
|
2004
|
+
};
|
|
2005
|
+
|
|
2006
|
+
//#endregion
|
|
2007
|
+
//#region src/operations/create-project-webhook-subscription.operation.ts
|
|
2008
|
+
const createProjectWebhookSubscriptionOperation = defineSentryEndpoint(createProjectWebhookSubscriptionDefinition, sentryCredentialSet);
|
|
2009
|
+
|
|
2010
|
+
//#endregion
|
|
2011
|
+
//#region src/utils/deploys-endpoints.ts
|
|
2012
|
+
/**
|
|
2013
|
+
* Sentry deploy operations. Maps to PLAN.md §6.9 (2 actions).
|
|
2014
|
+
*/
|
|
2015
|
+
const ORG_VERSION$1 = [{
|
|
2016
|
+
name: "organization_slug",
|
|
2017
|
+
placeholder: "{organization_slug}"
|
|
2018
|
+
}, {
|
|
2019
|
+
name: "version",
|
|
2020
|
+
placeholder: "{version}"
|
|
2021
|
+
}];
|
|
2022
|
+
const createReleaseDeployForOrgDefinition = {
|
|
2023
|
+
id: "sentry.create-release-deploy-for-org",
|
|
2024
|
+
name: "Create Release Deploy",
|
|
2025
|
+
description: "Mark a deploy for a release in an environment.",
|
|
2026
|
+
method: "POST",
|
|
2027
|
+
path: "/api/0/organizations/{organization_slug}/releases/{version}/deploys/",
|
|
2028
|
+
pathParams: ORG_VERSION$1,
|
|
2029
|
+
input: orgReleaseScopeInputSchema.extend({
|
|
2030
|
+
environment: z.string().min(1),
|
|
2031
|
+
name: z.string().optional(),
|
|
2032
|
+
url: z.string().url().optional(),
|
|
2033
|
+
projects: z.array(z.string()).optional(),
|
|
2034
|
+
dateStarted: z.iso.datetime().optional(),
|
|
2035
|
+
dateFinished: z.iso.datetime().optional()
|
|
2036
|
+
}),
|
|
2037
|
+
bodyFields: [
|
|
2038
|
+
"environment",
|
|
2039
|
+
"name",
|
|
2040
|
+
"url",
|
|
2041
|
+
"projects",
|
|
2042
|
+
"dateStarted",
|
|
2043
|
+
"dateFinished"
|
|
2044
|
+
],
|
|
2045
|
+
output: sentryDeploySchema,
|
|
2046
|
+
needsApproval: true,
|
|
2047
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.releaseAdmin]
|
|
2048
|
+
};
|
|
2049
|
+
const retrieveReleaseDeploymentsDefinition = {
|
|
2050
|
+
id: "sentry.retrieve-release-deployments",
|
|
2051
|
+
name: "Retrieve Release Deployments",
|
|
2052
|
+
description: "List deploys previously recorded against a release.",
|
|
2053
|
+
method: "GET",
|
|
2054
|
+
path: "/api/0/organizations/{organization_slug}/releases/{version}/deploys/",
|
|
2055
|
+
pathParams: ORG_VERSION$1,
|
|
2056
|
+
input: sentryListInputSchema.merge(orgReleaseScopeInputSchema),
|
|
2057
|
+
queryFields: [
|
|
2058
|
+
"cursor",
|
|
2059
|
+
"per_page",
|
|
2060
|
+
"query"
|
|
2061
|
+
],
|
|
2062
|
+
output: z.array(sentryDeploySchema),
|
|
2063
|
+
pagination: "cursor",
|
|
2064
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.releaseAdmin]
|
|
2065
|
+
};
|
|
2066
|
+
|
|
2067
|
+
//#endregion
|
|
2068
|
+
//#region src/operations/create-release-deploy-for-org.operation.ts
|
|
2069
|
+
const createReleaseDeployForOrgOperation = defineSentryEndpoint(createReleaseDeployForOrgDefinition, sentryCredentialSet);
|
|
2070
|
+
|
|
2071
|
+
//#endregion
|
|
2072
|
+
//#region src/utils/releases-endpoints.ts
|
|
2073
|
+
/**
|
|
2074
|
+
* Sentry release operations (21 actions — PLAN.md §6.8).
|
|
2075
|
+
* Covers releases, release files, repositories, commits, and release-threshold statuses.
|
|
2076
|
+
*/
|
|
2077
|
+
const ORG$5 = [{
|
|
2078
|
+
name: "organization_slug",
|
|
2079
|
+
placeholder: "{organization_slug}"
|
|
2080
|
+
}];
|
|
2081
|
+
const ORG_VERSION = [...ORG$5, {
|
|
2082
|
+
name: "version",
|
|
2083
|
+
placeholder: "{version}"
|
|
2084
|
+
}];
|
|
2085
|
+
const ORG_PROJECT_VERSION = [
|
|
2086
|
+
...ORG$5,
|
|
2087
|
+
{
|
|
2088
|
+
name: "project_slug",
|
|
2089
|
+
placeholder: "{project_slug}"
|
|
2090
|
+
},
|
|
2091
|
+
{
|
|
2092
|
+
name: "version",
|
|
2093
|
+
placeholder: "{version}"
|
|
2094
|
+
}
|
|
2095
|
+
];
|
|
2096
|
+
const ORG_REPO = [...ORG$5, {
|
|
2097
|
+
name: "repo_id",
|
|
2098
|
+
placeholder: "{repo_id}"
|
|
2099
|
+
}];
|
|
2100
|
+
const listOrganizationReleasesDefinition = {
|
|
2101
|
+
id: "sentry.list-organization-releases",
|
|
2102
|
+
name: "List Organization Releases",
|
|
2103
|
+
description: "List releases for an organization.",
|
|
2104
|
+
method: "GET",
|
|
2105
|
+
path: "/api/0/organizations/{organization_slug}/releases/",
|
|
2106
|
+
pathParams: ORG$5,
|
|
2107
|
+
input: sentryListInputSchema.merge(orgScopeInputSchema).extend({
|
|
2108
|
+
project: z.array(z.number().int()).optional(),
|
|
2109
|
+
environment: z.array(z.string()).optional(),
|
|
2110
|
+
statsPeriod: z.string().optional(),
|
|
2111
|
+
sort: z.enum([
|
|
2112
|
+
"date",
|
|
2113
|
+
"sessions",
|
|
2114
|
+
"users",
|
|
2115
|
+
"crash_free_users",
|
|
2116
|
+
"crash_free_sessions"
|
|
2117
|
+
]).optional(),
|
|
2118
|
+
status: z.enum(["open", "archived"]).optional()
|
|
2119
|
+
}),
|
|
2120
|
+
queryFields: [
|
|
2121
|
+
"cursor",
|
|
2122
|
+
"per_page",
|
|
2123
|
+
"query",
|
|
2124
|
+
"project",
|
|
2125
|
+
"environment",
|
|
2126
|
+
"statsPeriod",
|
|
2127
|
+
"sort",
|
|
2128
|
+
"status"
|
|
2129
|
+
],
|
|
2130
|
+
output: z.array(sentryReleaseSchema),
|
|
2131
|
+
pagination: "cursor",
|
|
2132
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.releaseAdmin]
|
|
2133
|
+
};
|
|
2134
|
+
const createReleaseForOrganizationDefinition = {
|
|
2135
|
+
id: "sentry.create-release-for-organization",
|
|
2136
|
+
name: "Create Release",
|
|
2137
|
+
description: "Create a release at the organization level.",
|
|
2138
|
+
method: "POST",
|
|
2139
|
+
path: "/api/0/organizations/{organization_slug}/releases/",
|
|
2140
|
+
pathParams: ORG$5,
|
|
2141
|
+
input: orgScopeInputSchema.extend({
|
|
2142
|
+
version: z.string().min(1),
|
|
2143
|
+
ref: z.string().optional(),
|
|
2144
|
+
url: z.string().url().optional(),
|
|
2145
|
+
projects: z.array(z.string()).min(1),
|
|
2146
|
+
dateReleased: z.iso.datetime().optional(),
|
|
2147
|
+
commits: z.array(sentryJsonObjectSchema).optional(),
|
|
2148
|
+
refs: z.array(sentryJsonObjectSchema).optional()
|
|
2149
|
+
}),
|
|
2150
|
+
bodyFields: [
|
|
2151
|
+
"version",
|
|
2152
|
+
"ref",
|
|
2153
|
+
"url",
|
|
2154
|
+
"projects",
|
|
2155
|
+
"dateReleased",
|
|
2156
|
+
"commits",
|
|
2157
|
+
"refs"
|
|
2158
|
+
],
|
|
2159
|
+
output: sentryReleaseSchema,
|
|
2160
|
+
needsApproval: true,
|
|
2161
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.releaseAdmin]
|
|
2162
|
+
};
|
|
2163
|
+
const getOrganizationReleaseVersionDefinition = {
|
|
2164
|
+
id: "sentry.get-organization-release-version",
|
|
2165
|
+
name: "Get Release",
|
|
2166
|
+
description: "Fetch a release by version.",
|
|
2167
|
+
method: "GET",
|
|
2168
|
+
path: "/api/0/organizations/{organization_slug}/releases/{version}/",
|
|
2169
|
+
pathParams: ORG_VERSION,
|
|
2170
|
+
input: orgReleaseScopeInputSchema,
|
|
2171
|
+
output: sentryReleaseSchema,
|
|
2172
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.releaseAdmin]
|
|
2173
|
+
};
|
|
2174
|
+
const updateReleaseDetailsForOrganizationDefinition = {
|
|
2175
|
+
id: "sentry.update-release-details-for-organization",
|
|
2176
|
+
name: "Update Release",
|
|
2177
|
+
description: "Update release metadata (e.g. `dateReleased`, `ref`, commits).",
|
|
2178
|
+
method: "PUT",
|
|
2179
|
+
path: "/api/0/organizations/{organization_slug}/releases/{version}/",
|
|
2180
|
+
pathParams: ORG_VERSION,
|
|
2181
|
+
input: orgReleaseScopeInputSchema.extend({
|
|
2182
|
+
ref: z.string().optional(),
|
|
2183
|
+
url: z.string().url().optional(),
|
|
2184
|
+
dateReleased: z.iso.datetime().optional(),
|
|
2185
|
+
commits: z.array(sentryJsonObjectSchema).optional(),
|
|
2186
|
+
refs: z.array(sentryJsonObjectSchema).optional(),
|
|
2187
|
+
projects: z.array(z.string()).optional()
|
|
2188
|
+
}),
|
|
2189
|
+
bodyFields: [
|
|
2190
|
+
"ref",
|
|
2191
|
+
"url",
|
|
2192
|
+
"dateReleased",
|
|
2193
|
+
"commits",
|
|
2194
|
+
"refs",
|
|
2195
|
+
"projects"
|
|
2196
|
+
],
|
|
2197
|
+
output: sentryReleaseSchema,
|
|
2198
|
+
needsApproval: true,
|
|
2199
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.releaseAdmin]
|
|
2200
|
+
};
|
|
2201
|
+
const deleteOrganizationReleaseDefinition = {
|
|
2202
|
+
id: "sentry.delete-organization-release",
|
|
2203
|
+
name: "Delete Release",
|
|
2204
|
+
description: "Delete a release by version.",
|
|
2205
|
+
method: "DELETE",
|
|
2206
|
+
path: "/api/0/organizations/{organization_slug}/releases/{version}/",
|
|
2207
|
+
pathParams: ORG_VERSION,
|
|
2208
|
+
input: orgReleaseScopeInputSchema,
|
|
2209
|
+
output: z.unknown(),
|
|
2210
|
+
needsApproval: true,
|
|
2211
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.releaseAdmin]
|
|
2212
|
+
};
|
|
2213
|
+
const retrieveOrganizationReleaseCommitsDefinition = {
|
|
2214
|
+
id: "sentry.retrieve-organization-release-commits",
|
|
2215
|
+
name: "Retrieve Release Commits (Org)",
|
|
2216
|
+
description: "List the commits associated with a release.",
|
|
2217
|
+
method: "GET",
|
|
2218
|
+
path: "/api/0/organizations/{organization_slug}/releases/{version}/commits/",
|
|
2219
|
+
pathParams: ORG_VERSION,
|
|
2220
|
+
input: sentryListInputSchema.merge(orgReleaseScopeInputSchema),
|
|
2221
|
+
queryFields: [
|
|
2222
|
+
"cursor",
|
|
2223
|
+
"per_page",
|
|
2224
|
+
"query"
|
|
2225
|
+
],
|
|
2226
|
+
output: z.array(sentryCommitSchema),
|
|
2227
|
+
pagination: "cursor",
|
|
2228
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.releaseAdmin]
|
|
2229
|
+
};
|
|
2230
|
+
const retrieveReleaseCommitsDefinition = {
|
|
2231
|
+
id: "sentry.retrieve-release-commits",
|
|
2232
|
+
name: "Retrieve Release Commits (Project)",
|
|
2233
|
+
description: "List the commits associated with a release for a specific project.",
|
|
2234
|
+
method: "GET",
|
|
2235
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/releases/{version}/commits/",
|
|
2236
|
+
pathParams: ORG_PROJECT_VERSION,
|
|
2237
|
+
input: sentryListInputSchema.merge(orgProjectScopeInputSchema).extend({ version: z.string().min(1) }),
|
|
2238
|
+
queryFields: [
|
|
2239
|
+
"cursor",
|
|
2240
|
+
"per_page",
|
|
2241
|
+
"query"
|
|
2242
|
+
],
|
|
2243
|
+
output: z.array(sentryCommitSchema),
|
|
2244
|
+
pagination: "cursor",
|
|
2245
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.releaseAdmin]
|
|
2246
|
+
};
|
|
2247
|
+
const retrieveCommitFilesForReleaseDefinition = {
|
|
2248
|
+
id: "sentry.retrieve-commit-files-for-release",
|
|
2249
|
+
name: "Retrieve Commit Files For Release",
|
|
2250
|
+
description: "List the file-level commit metadata attached to a release.",
|
|
2251
|
+
method: "GET",
|
|
2252
|
+
path: "/api/0/organizations/{organization_slug}/releases/{version}/commitfiles/",
|
|
2253
|
+
pathParams: ORG_VERSION,
|
|
2254
|
+
input: sentryListInputSchema.merge(orgReleaseScopeInputSchema),
|
|
2255
|
+
queryFields: [
|
|
2256
|
+
"cursor",
|
|
2257
|
+
"per_page",
|
|
2258
|
+
"query"
|
|
2259
|
+
],
|
|
2260
|
+
output: sentryJsonArraySchema,
|
|
2261
|
+
pagination: "cursor",
|
|
2262
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.releaseAdmin]
|
|
2263
|
+
};
|
|
2264
|
+
const retrieveCommitsForOrganizationRepoDefinition = {
|
|
2265
|
+
id: "sentry.retrieve-commits-for-organization-repo",
|
|
2266
|
+
name: "Retrieve Commits For Org Repo",
|
|
2267
|
+
description: "List commits for a repository linked to the organization.",
|
|
2268
|
+
method: "GET",
|
|
2269
|
+
path: "/api/0/organizations/{organization_slug}/repos/{repo_id}/commits/",
|
|
2270
|
+
pathParams: ORG_REPO,
|
|
2271
|
+
input: sentryListInputSchema.merge(orgScopeInputSchema).extend({ repo_id: sentryIdSchema }),
|
|
2272
|
+
queryFields: [
|
|
2273
|
+
"cursor",
|
|
2274
|
+
"per_page",
|
|
2275
|
+
"query"
|
|
2276
|
+
],
|
|
2277
|
+
output: z.array(sentryCommitSchema),
|
|
2278
|
+
pagination: "cursor",
|
|
2279
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.releaseAdmin]
|
|
2280
|
+
};
|
|
2281
|
+
const listOrganizationRepositoriesDefinition = {
|
|
2282
|
+
id: "sentry.list-organization-repositories",
|
|
2283
|
+
name: "List Organization Repositories",
|
|
2284
|
+
description: "List repositories linked to the organization.",
|
|
2285
|
+
method: "GET",
|
|
2286
|
+
path: "/api/0/organizations/{organization_slug}/repos/",
|
|
2287
|
+
pathParams: ORG$5,
|
|
2288
|
+
input: sentryListInputSchema.merge(orgScopeInputSchema).extend({ status: z.enum([
|
|
2289
|
+
"active",
|
|
2290
|
+
"disabled",
|
|
2291
|
+
"pending_deletion",
|
|
2292
|
+
"deletion_in_progress"
|
|
2293
|
+
]).optional() }),
|
|
2294
|
+
queryFields: [
|
|
2295
|
+
"cursor",
|
|
2296
|
+
"per_page",
|
|
2297
|
+
"query",
|
|
2298
|
+
"status"
|
|
2299
|
+
],
|
|
2300
|
+
output: z.array(sentryRepositorySchema),
|
|
2301
|
+
pagination: "cursor",
|
|
2302
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.releaseAdmin]
|
|
2303
|
+
};
|
|
2304
|
+
const retrieveFilesForReleaseDefinition = {
|
|
2305
|
+
id: "sentry.retrieve-files-for-release",
|
|
2306
|
+
name: "Retrieve Release Files (Org)",
|
|
2307
|
+
description: "List the uploaded artifact files attached to an org-level release.",
|
|
2308
|
+
method: "GET",
|
|
2309
|
+
path: "/api/0/organizations/{organization_slug}/releases/{version}/files/",
|
|
2310
|
+
pathParams: ORG_VERSION,
|
|
2311
|
+
input: sentryListInputSchema.merge(orgReleaseScopeInputSchema),
|
|
2312
|
+
queryFields: [
|
|
2313
|
+
"cursor",
|
|
2314
|
+
"per_page",
|
|
2315
|
+
"query"
|
|
2316
|
+
],
|
|
2317
|
+
output: z.array(sentryReleaseFileSchema),
|
|
2318
|
+
pagination: "cursor",
|
|
2319
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.releaseAdmin]
|
|
2320
|
+
};
|
|
2321
|
+
const fetchProjectReleaseFilesDefinition = {
|
|
2322
|
+
id: "sentry.fetch-project-release-files",
|
|
2323
|
+
name: "Retrieve Project Release Files",
|
|
2324
|
+
description: "List the uploaded artifact files attached to a project release.",
|
|
2325
|
+
method: "GET",
|
|
2326
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/releases/{version}/files/",
|
|
2327
|
+
pathParams: ORG_PROJECT_VERSION,
|
|
2328
|
+
input: sentryListInputSchema.merge(orgProjectScopeInputSchema).extend({ version: z.string().min(1) }),
|
|
2329
|
+
queryFields: [
|
|
2330
|
+
"cursor",
|
|
2331
|
+
"per_page",
|
|
2332
|
+
"query"
|
|
2333
|
+
],
|
|
2334
|
+
output: z.array(sentryReleaseFileSchema),
|
|
2335
|
+
pagination: "cursor",
|
|
2336
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.releaseAdmin]
|
|
2337
|
+
};
|
|
2338
|
+
const retrieveProjectReleaseFileDetailsDefinition = {
|
|
2339
|
+
id: "sentry.retrieve-project-release-file-details",
|
|
2340
|
+
name: "Retrieve Project Release File",
|
|
2341
|
+
description: "Fetch a single release artifact file by id.",
|
|
2342
|
+
method: "GET",
|
|
2343
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/releases/{version}/files/{file_id}/",
|
|
2344
|
+
pathParams: [...ORG_PROJECT_VERSION, {
|
|
2345
|
+
name: "file_id",
|
|
2346
|
+
placeholder: "{file_id}"
|
|
2347
|
+
}],
|
|
2348
|
+
input: orgProjectScopeInputSchema.extend({
|
|
2349
|
+
version: z.string().min(1),
|
|
2350
|
+
file_id: sentryIdSchema
|
|
2351
|
+
}),
|
|
2352
|
+
output: sentryReleaseFileSchema,
|
|
2353
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.releaseAdmin]
|
|
2354
|
+
};
|
|
2355
|
+
const retrieveReleaseFileByIdDefinition = {
|
|
2356
|
+
id: "sentry.retrieve-release-file-by-id",
|
|
2357
|
+
name: "Retrieve Release File (Org)",
|
|
2358
|
+
description: "Fetch a single release artifact file at the org level by id.",
|
|
2359
|
+
method: "GET",
|
|
2360
|
+
path: "/api/0/organizations/{organization_slug}/releases/{version}/files/{file_id}/",
|
|
2361
|
+
pathParams: [...ORG_VERSION, {
|
|
2362
|
+
name: "file_id",
|
|
2363
|
+
placeholder: "{file_id}"
|
|
2364
|
+
}],
|
|
2365
|
+
input: orgReleaseScopeInputSchema.extend({ file_id: sentryIdSchema }),
|
|
2366
|
+
output: sentryReleaseFileSchema,
|
|
2367
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.releaseAdmin]
|
|
2368
|
+
};
|
|
2369
|
+
const uploadReleaseFileToOrganizationDefinition = {
|
|
2370
|
+
id: "sentry.upload-release-file-to-organization",
|
|
2371
|
+
name: "Upload Release File (Org)",
|
|
2372
|
+
description: "Record the metadata for a release artifact file at the organization level. Actual multipart uploads use the `client.request` escape hatch with `rawBody`.",
|
|
2373
|
+
method: "POST",
|
|
2374
|
+
path: "/api/0/organizations/{organization_slug}/releases/{version}/files/",
|
|
2375
|
+
pathParams: ORG_VERSION,
|
|
2376
|
+
input: orgReleaseScopeInputSchema.extend({
|
|
2377
|
+
name: z.string().min(1),
|
|
2378
|
+
dist: z.string().optional(),
|
|
2379
|
+
headers: z.record(z.string(), z.string()).optional()
|
|
2380
|
+
}),
|
|
2381
|
+
bodyFields: [
|
|
2382
|
+
"name",
|
|
2383
|
+
"dist",
|
|
2384
|
+
"headers"
|
|
2385
|
+
],
|
|
2386
|
+
output: sentryReleaseFileSchema,
|
|
2387
|
+
needsApproval: true,
|
|
2388
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.releaseAdmin]
|
|
2389
|
+
};
|
|
2390
|
+
const uploadFileToProjectReleaseDefinition = {
|
|
2391
|
+
id: "sentry.upload-file-to-project-release",
|
|
2392
|
+
name: "Upload Release File (Project)",
|
|
2393
|
+
description: "Record the metadata for a release artifact file on a project release. Actual multipart uploads use the `client.request` escape hatch with `rawBody`.",
|
|
2394
|
+
method: "POST",
|
|
2395
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/releases/{version}/files/",
|
|
2396
|
+
pathParams: ORG_PROJECT_VERSION,
|
|
2397
|
+
input: orgProjectScopeInputSchema.extend({
|
|
2398
|
+
version: z.string().min(1),
|
|
2399
|
+
name: z.string().min(1),
|
|
2400
|
+
dist: z.string().optional(),
|
|
2401
|
+
headers: z.record(z.string(), z.string()).optional()
|
|
2402
|
+
}),
|
|
2403
|
+
bodyFields: [
|
|
2404
|
+
"name",
|
|
2405
|
+
"dist",
|
|
2406
|
+
"headers"
|
|
2407
|
+
],
|
|
2408
|
+
output: sentryReleaseFileSchema,
|
|
2409
|
+
needsApproval: true,
|
|
2410
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.releaseAdmin]
|
|
2411
|
+
};
|
|
2412
|
+
const modifyReleaseFileAttributesDefinition = {
|
|
2413
|
+
id: "sentry.modify-release-file-attributes",
|
|
2414
|
+
name: "Modify Release File Attributes (Org)",
|
|
2415
|
+
description: "Update metadata on a release artifact file at the org level.",
|
|
2416
|
+
method: "PUT",
|
|
2417
|
+
path: "/api/0/organizations/{organization_slug}/releases/{version}/files/{file_id}/",
|
|
2418
|
+
pathParams: [...ORG_VERSION, {
|
|
2419
|
+
name: "file_id",
|
|
2420
|
+
placeholder: "{file_id}"
|
|
2421
|
+
}],
|
|
2422
|
+
input: orgReleaseScopeInputSchema.extend({
|
|
2423
|
+
file_id: sentryIdSchema,
|
|
2424
|
+
name: z.string().optional(),
|
|
2425
|
+
dist: z.string().optional(),
|
|
2426
|
+
headers: z.record(z.string(), z.string()).optional()
|
|
2427
|
+
}),
|
|
2428
|
+
bodyFields: [
|
|
2429
|
+
"name",
|
|
2430
|
+
"dist",
|
|
2431
|
+
"headers"
|
|
2432
|
+
],
|
|
2433
|
+
output: sentryReleaseFileSchema,
|
|
2434
|
+
needsApproval: true,
|
|
2435
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.releaseAdmin]
|
|
2436
|
+
};
|
|
2437
|
+
const updateProjectReleaseFileDetailsDefinition = {
|
|
2438
|
+
id: "sentry.update-project-release-file-details",
|
|
2439
|
+
name: "Update Project Release File",
|
|
2440
|
+
description: "Update metadata on a release artifact file for a project release.",
|
|
2441
|
+
method: "PUT",
|
|
2442
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/releases/{version}/files/{file_id}/",
|
|
2443
|
+
pathParams: [...ORG_PROJECT_VERSION, {
|
|
2444
|
+
name: "file_id",
|
|
2445
|
+
placeholder: "{file_id}"
|
|
2446
|
+
}],
|
|
2447
|
+
input: orgProjectScopeInputSchema.extend({
|
|
2448
|
+
version: z.string().min(1),
|
|
2449
|
+
file_id: sentryIdSchema,
|
|
2450
|
+
name: z.string().optional(),
|
|
2451
|
+
dist: z.string().optional(),
|
|
2452
|
+
headers: z.record(z.string(), z.string()).optional()
|
|
2453
|
+
}),
|
|
2454
|
+
bodyFields: [
|
|
2455
|
+
"name",
|
|
2456
|
+
"dist",
|
|
2457
|
+
"headers"
|
|
2458
|
+
],
|
|
2459
|
+
output: sentryReleaseFileSchema,
|
|
2460
|
+
needsApproval: true,
|
|
2461
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.releaseAdmin]
|
|
2462
|
+
};
|
|
2463
|
+
const deleteReleaseFileDefinition = {
|
|
2464
|
+
id: "sentry.delete-release-file",
|
|
2465
|
+
name: "Delete Release File (Project)",
|
|
2466
|
+
description: "Delete a release artifact file for a project release.",
|
|
2467
|
+
method: "DELETE",
|
|
2468
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/releases/{version}/files/{file_id}/",
|
|
2469
|
+
pathParams: [...ORG_PROJECT_VERSION, {
|
|
2470
|
+
name: "file_id",
|
|
2471
|
+
placeholder: "{file_id}"
|
|
2472
|
+
}],
|
|
2473
|
+
input: orgProjectScopeInputSchema.extend({
|
|
2474
|
+
version: z.string().min(1),
|
|
2475
|
+
file_id: sentryIdSchema
|
|
2476
|
+
}),
|
|
2477
|
+
output: z.unknown(),
|
|
2478
|
+
needsApproval: true,
|
|
2479
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.releaseAdmin]
|
|
2480
|
+
};
|
|
2481
|
+
const deleteReleaseFileByIdDefinition = {
|
|
2482
|
+
id: "sentry.delete-release-file-by-id",
|
|
2483
|
+
name: "Delete Release File (Org)",
|
|
2484
|
+
description: "Delete a release artifact file at the org level by id.",
|
|
2485
|
+
method: "DELETE",
|
|
2486
|
+
path: "/api/0/organizations/{organization_slug}/releases/{version}/files/{file_id}/",
|
|
2487
|
+
pathParams: [...ORG_VERSION, {
|
|
2488
|
+
name: "file_id",
|
|
2489
|
+
placeholder: "{file_id}"
|
|
2490
|
+
}],
|
|
2491
|
+
input: orgReleaseScopeInputSchema.extend({ file_id: sentryIdSchema }),
|
|
2492
|
+
output: z.unknown(),
|
|
2493
|
+
needsApproval: true,
|
|
2494
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.releaseAdmin]
|
|
2495
|
+
};
|
|
2496
|
+
const fetchOrganizationReleaseThresholdStatusesDefinition = {
|
|
2497
|
+
id: "sentry.fetch-organization-release-threshold-statuses",
|
|
2498
|
+
name: "Fetch Release Threshold Statuses",
|
|
2499
|
+
description: "Return the release-threshold evaluation statuses for the organization.",
|
|
2500
|
+
method: "GET",
|
|
2501
|
+
path: "/api/0/organizations/{organization_slug}/release-threshold-statuses/",
|
|
2502
|
+
pathParams: ORG$5,
|
|
2503
|
+
input: orgScopeInputSchema.extend({
|
|
2504
|
+
project: z.array(z.number().int()).optional(),
|
|
2505
|
+
environment: z.array(z.string()).optional(),
|
|
2506
|
+
release: z.array(z.string()).optional(),
|
|
2507
|
+
start: z.string().optional(),
|
|
2508
|
+
end: z.string().optional()
|
|
2509
|
+
}),
|
|
2510
|
+
queryFields: [
|
|
2511
|
+
"project",
|
|
2512
|
+
"environment",
|
|
2513
|
+
"release",
|
|
2514
|
+
"start",
|
|
2515
|
+
"end"
|
|
2516
|
+
],
|
|
2517
|
+
output: sentryJsonObjectSchema,
|
|
2518
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.releaseAdmin]
|
|
2519
|
+
};
|
|
2520
|
+
|
|
2521
|
+
//#endregion
|
|
2522
|
+
//#region src/operations/create-release-for-organization.operation.ts
|
|
2523
|
+
const createReleaseForOrganizationOperation = defineSentryEndpoint(createReleaseForOrganizationDefinition, sentryCredentialSet);
|
|
2524
|
+
|
|
2525
|
+
//#endregion
|
|
2526
|
+
//#region src/operations/create-scim-group-for-organization.operation.ts
|
|
2527
|
+
const createScimGroupForOrganizationOperation = defineSentryEndpoint(createScimGroupForOrganizationDefinition, sentryCredentialSet);
|
|
2528
|
+
|
|
2529
|
+
//#endregion
|
|
2530
|
+
//#region src/utils/issues-endpoints.ts
|
|
2531
|
+
/**
|
|
2532
|
+
* Sentry issue operations. Maps to PLAN.md §6.6 (13 actions).
|
|
2533
|
+
*/
|
|
2534
|
+
const ORG$4 = [{
|
|
2535
|
+
name: "organization_slug",
|
|
2536
|
+
placeholder: "{organization_slug}"
|
|
2537
|
+
}];
|
|
2538
|
+
const ORG_PROJECT$4 = [...ORG$4, {
|
|
2539
|
+
name: "project_slug",
|
|
2540
|
+
placeholder: "{project_slug}"
|
|
2541
|
+
}];
|
|
2542
|
+
const ORG_ISSUE$1 = [...ORG$4, {
|
|
2543
|
+
name: "issue_id",
|
|
2544
|
+
placeholder: "{issue_id}"
|
|
2545
|
+
}];
|
|
2546
|
+
const retrieveProjectIssuesListDefinition = {
|
|
2547
|
+
id: "sentry.retrieve-project-issues-list",
|
|
2548
|
+
name: "List Project Issues",
|
|
2549
|
+
description: "List issues for a project.",
|
|
2550
|
+
method: "GET",
|
|
2551
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/issues/",
|
|
2552
|
+
pathParams: ORG_PROJECT$4,
|
|
2553
|
+
input: sentryListInputSchema.merge(orgProjectScopeInputSchema).extend({
|
|
2554
|
+
statsPeriod: z.string().optional(),
|
|
2555
|
+
query: z.string().optional(),
|
|
2556
|
+
environment: z.array(z.string()).optional(),
|
|
2557
|
+
sort: z.enum([
|
|
2558
|
+
"date",
|
|
2559
|
+
"new",
|
|
2560
|
+
"priority",
|
|
2561
|
+
"freq",
|
|
2562
|
+
"user",
|
|
2563
|
+
"trends"
|
|
2564
|
+
]).optional(),
|
|
2565
|
+
limit: z.number().int().optional()
|
|
2566
|
+
}),
|
|
2567
|
+
queryFields: [
|
|
2568
|
+
"cursor",
|
|
2569
|
+
"per_page",
|
|
2570
|
+
"query",
|
|
2571
|
+
"statsPeriod",
|
|
2572
|
+
"environment",
|
|
2573
|
+
"sort",
|
|
2574
|
+
"limit"
|
|
2575
|
+
],
|
|
2576
|
+
output: z.array(sentryIssueSchema),
|
|
2577
|
+
pagination: "cursor",
|
|
2578
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventRead]
|
|
2579
|
+
};
|
|
2580
|
+
const getOrganizationIssueDetailsDefinition = {
|
|
2581
|
+
id: "sentry.get-organization-issue-details",
|
|
2582
|
+
name: "Get Issue Details",
|
|
2583
|
+
description: "Fetch a single issue by id.",
|
|
2584
|
+
method: "GET",
|
|
2585
|
+
path: "/api/0/organizations/{organization_slug}/issues/{issue_id}/",
|
|
2586
|
+
pathParams: ORG_ISSUE$1,
|
|
2587
|
+
input: orgIssueScopeInputSchema,
|
|
2588
|
+
output: sentryIssueSchema,
|
|
2589
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventRead]
|
|
2590
|
+
};
|
|
2591
|
+
const updateIssueAttributesInOrganizationDefinition = {
|
|
2592
|
+
id: "sentry.update-issue-attributes-in-organization",
|
|
2593
|
+
name: "Update Issue Attributes (Org Scope)",
|
|
2594
|
+
description: "Update issue status, assignee, or tags on one or more issues identified by id list.",
|
|
2595
|
+
method: "PUT",
|
|
2596
|
+
path: "/api/0/organizations/{organization_slug}/issues/",
|
|
2597
|
+
pathParams: ORG$4,
|
|
2598
|
+
input: orgScopeInputSchema.extend({
|
|
2599
|
+
id: z.array(sentryIdSchema).optional(),
|
|
2600
|
+
status: sentryIssueStatusSchema.optional(),
|
|
2601
|
+
statusDetails: sentryJsonObjectSchema.optional(),
|
|
2602
|
+
assignedTo: z.string().nullable().optional(),
|
|
2603
|
+
hasSeen: z.boolean().optional(),
|
|
2604
|
+
isBookmarked: z.boolean().optional(),
|
|
2605
|
+
isPublic: z.boolean().optional(),
|
|
2606
|
+
merge: z.boolean().optional(),
|
|
2607
|
+
discard: z.boolean().optional(),
|
|
2608
|
+
ignoreDuration: z.number().int().optional(),
|
|
2609
|
+
ignoreCount: z.number().int().optional(),
|
|
2610
|
+
ignoreUserCount: z.number().int().optional(),
|
|
2611
|
+
ignoreWindow: z.number().int().optional(),
|
|
2612
|
+
ignoreUserWindow: z.number().int().optional()
|
|
2613
|
+
}),
|
|
2614
|
+
queryFields: ["id"],
|
|
2615
|
+
bodyFields: [
|
|
2616
|
+
"status",
|
|
2617
|
+
"statusDetails",
|
|
2618
|
+
"assignedTo",
|
|
2619
|
+
"hasSeen",
|
|
2620
|
+
"isBookmarked",
|
|
2621
|
+
"isPublic",
|
|
2622
|
+
"merge",
|
|
2623
|
+
"discard",
|
|
2624
|
+
"ignoreDuration",
|
|
2625
|
+
"ignoreCount",
|
|
2626
|
+
"ignoreUserCount",
|
|
2627
|
+
"ignoreWindow",
|
|
2628
|
+
"ignoreUserWindow"
|
|
2629
|
+
],
|
|
2630
|
+
output: sentryJsonObjectSchema,
|
|
2631
|
+
needsApproval: true,
|
|
2632
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventAdmin]
|
|
2633
|
+
};
|
|
2634
|
+
const updateProjectIssueStatusAndDetailsDefinition = {
|
|
2635
|
+
id: "sentry.update-project-issue-status-and-details",
|
|
2636
|
+
name: "Update Issues (Project Scope)",
|
|
2637
|
+
description: "Bulk-update issues in a single project by id set or query.",
|
|
2638
|
+
method: "PUT",
|
|
2639
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/issues/",
|
|
2640
|
+
pathParams: ORG_PROJECT$4,
|
|
2641
|
+
input: orgProjectScopeInputSchema.extend({
|
|
2642
|
+
id: z.array(sentryIdSchema).optional(),
|
|
2643
|
+
status: sentryIssueStatusSchema.optional(),
|
|
2644
|
+
statusDetails: sentryJsonObjectSchema.optional(),
|
|
2645
|
+
assignedTo: z.string().nullable().optional(),
|
|
2646
|
+
hasSeen: z.boolean().optional(),
|
|
2647
|
+
isBookmarked: z.boolean().optional(),
|
|
2648
|
+
isPublic: z.boolean().optional(),
|
|
2649
|
+
merge: z.boolean().optional(),
|
|
2650
|
+
discard: z.boolean().optional(),
|
|
2651
|
+
ignoreDuration: z.number().int().optional()
|
|
2652
|
+
}),
|
|
2653
|
+
queryFields: ["id"],
|
|
2654
|
+
bodyFields: [
|
|
2655
|
+
"status",
|
|
2656
|
+
"statusDetails",
|
|
2657
|
+
"assignedTo",
|
|
2658
|
+
"hasSeen",
|
|
2659
|
+
"isBookmarked",
|
|
2660
|
+
"isPublic",
|
|
2661
|
+
"merge",
|
|
2662
|
+
"discard",
|
|
2663
|
+
"ignoreDuration"
|
|
2664
|
+
],
|
|
2665
|
+
output: sentryJsonObjectSchema,
|
|
2666
|
+
needsApproval: true,
|
|
2667
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventAdmin]
|
|
2668
|
+
};
|
|
2669
|
+
const deleteOrganizationIssueDefinition = {
|
|
2670
|
+
id: "sentry.delete-organization-issue",
|
|
2671
|
+
name: "Delete Issue (Org Scope)",
|
|
2672
|
+
description: "Delete an issue by id.",
|
|
2673
|
+
method: "DELETE",
|
|
2674
|
+
path: "/api/0/organizations/{organization_slug}/issues/{issue_id}/",
|
|
2675
|
+
pathParams: ORG_ISSUE$1,
|
|
2676
|
+
input: orgIssueScopeInputSchema,
|
|
2677
|
+
output: z.unknown(),
|
|
2678
|
+
needsApproval: true,
|
|
2679
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventAdmin]
|
|
2680
|
+
};
|
|
2681
|
+
const deleteProjectIssuesDefinition = {
|
|
2682
|
+
id: "sentry.delete-project-issues",
|
|
2683
|
+
name: "Delete Project Issues",
|
|
2684
|
+
description: "Bulk-delete issues on a project by id list or query.",
|
|
2685
|
+
method: "DELETE",
|
|
2686
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/issues/",
|
|
2687
|
+
pathParams: ORG_PROJECT$4,
|
|
2688
|
+
input: orgProjectScopeInputSchema.extend({
|
|
2689
|
+
id: z.array(sentryIdSchema).optional(),
|
|
2690
|
+
query: z.string().optional()
|
|
2691
|
+
}),
|
|
2692
|
+
queryFields: ["id", "query"],
|
|
2693
|
+
output: z.unknown(),
|
|
2694
|
+
needsApproval: true,
|
|
2695
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventAdmin]
|
|
2696
|
+
};
|
|
2697
|
+
const retrieveIssueEventsByIdDefinition = {
|
|
2698
|
+
id: "sentry.retrieve-issue-events-by-id",
|
|
2699
|
+
name: "Retrieve Issue Events",
|
|
2700
|
+
description: "List events that have rolled up into an issue.",
|
|
2701
|
+
method: "GET",
|
|
2702
|
+
path: "/api/0/organizations/{organization_slug}/issues/{issue_id}/events/",
|
|
2703
|
+
pathParams: ORG_ISSUE$1,
|
|
2704
|
+
input: sentryListInputSchema.merge(orgIssueScopeInputSchema).extend({
|
|
2705
|
+
statsPeriod: z.string().optional(),
|
|
2706
|
+
environment: z.array(z.string()).optional(),
|
|
2707
|
+
full: z.boolean().optional()
|
|
2708
|
+
}),
|
|
2709
|
+
queryFields: [
|
|
2710
|
+
"cursor",
|
|
2711
|
+
"per_page",
|
|
2712
|
+
"query",
|
|
2713
|
+
"statsPeriod",
|
|
2714
|
+
"environment",
|
|
2715
|
+
"full"
|
|
2716
|
+
],
|
|
2717
|
+
output: sentryJsonArraySchema,
|
|
2718
|
+
pagination: "cursor",
|
|
2719
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventRead]
|
|
2720
|
+
};
|
|
2721
|
+
const retrieveIssueHashesForOrganizationDefinition = {
|
|
2722
|
+
id: "sentry.retrieve-issue-hashes-for-organization",
|
|
2723
|
+
name: "Retrieve Issue Hashes",
|
|
2724
|
+
description: "List the grouping-hash keys associated with an issue.",
|
|
2725
|
+
method: "GET",
|
|
2726
|
+
path: "/api/0/organizations/{organization_slug}/issues/{issue_id}/hashes/",
|
|
2727
|
+
pathParams: ORG_ISSUE$1,
|
|
2728
|
+
input: orgIssueScopeInputSchema,
|
|
2729
|
+
output: sentryJsonArraySchema,
|
|
2730
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventRead]
|
|
2731
|
+
};
|
|
2732
|
+
const retrieveIssueTagDetailsDefinition = {
|
|
2733
|
+
id: "sentry.retrieve-issue-tag-details",
|
|
2734
|
+
name: "Retrieve Issue Tag Details",
|
|
2735
|
+
description: "Return tag key metadata for one issue.",
|
|
2736
|
+
method: "GET",
|
|
2737
|
+
path: "/api/0/organizations/{organization_slug}/issues/{issue_id}/tags/{key}/",
|
|
2738
|
+
pathParams: [...ORG_ISSUE$1, {
|
|
2739
|
+
name: "key",
|
|
2740
|
+
placeholder: "{key}"
|
|
2741
|
+
}],
|
|
2742
|
+
input: orgIssueScopeInputSchema.extend({ key: z.string().min(1) }),
|
|
2743
|
+
output: sentryJsonObjectSchema,
|
|
2744
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventRead]
|
|
2745
|
+
};
|
|
2746
|
+
const fetchTagValuesForIssueDefinition = {
|
|
2747
|
+
id: "sentry.fetch-tag-values-for-issue",
|
|
2748
|
+
name: "Fetch Tag Values For Issue",
|
|
2749
|
+
description: "List the distinct values for a tag key within one issue.",
|
|
2750
|
+
method: "GET",
|
|
2751
|
+
path: "/api/0/organizations/{organization_slug}/issues/{issue_id}/tags/{key}/values/",
|
|
2752
|
+
pathParams: [...ORG_ISSUE$1, {
|
|
2753
|
+
name: "key",
|
|
2754
|
+
placeholder: "{key}"
|
|
2755
|
+
}],
|
|
2756
|
+
input: sentryListInputSchema.merge(orgIssueScopeInputSchema).extend({
|
|
2757
|
+
key: z.string().min(1),
|
|
2758
|
+
query: z.string().optional()
|
|
2759
|
+
}),
|
|
2760
|
+
queryFields: [
|
|
2761
|
+
"cursor",
|
|
2762
|
+
"per_page",
|
|
2763
|
+
"query"
|
|
2764
|
+
],
|
|
2765
|
+
output: sentryJsonArraySchema,
|
|
2766
|
+
pagination: "cursor",
|
|
2767
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventRead]
|
|
2768
|
+
};
|
|
2769
|
+
const createSentryExternalIssueLinkDefinition = {
|
|
2770
|
+
id: "sentry.create-sentry-external-issue-link",
|
|
2771
|
+
name: "Create External Issue Link",
|
|
2772
|
+
description: "Link a Sentry issue to an external tracking record (Linear, Jira, etc.) by uuid.",
|
|
2773
|
+
method: "POST",
|
|
2774
|
+
path: "/api/0/sentry-app-installations/{install_uuid}/external-issues/",
|
|
2775
|
+
pathParams: [{
|
|
2776
|
+
name: "install_uuid",
|
|
2777
|
+
placeholder: "{install_uuid}"
|
|
2778
|
+
}],
|
|
2779
|
+
input: z.object({
|
|
2780
|
+
install_uuid: sentryIdSchema,
|
|
2781
|
+
issueId: sentryIdSchema,
|
|
2782
|
+
webUrl: z.string().url(),
|
|
2783
|
+
project: z.string().optional(),
|
|
2784
|
+
identifier: z.string().optional()
|
|
2785
|
+
}),
|
|
2786
|
+
bodyFields: [
|
|
2787
|
+
"issueId",
|
|
2788
|
+
"webUrl",
|
|
2789
|
+
"project",
|
|
2790
|
+
"identifier"
|
|
2791
|
+
],
|
|
2792
|
+
output: sentryJsonObjectSchema,
|
|
2793
|
+
needsApproval: true,
|
|
2794
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventAdmin]
|
|
2795
|
+
};
|
|
2796
|
+
const deleteExternalIssueByUuidDefinition = {
|
|
2797
|
+
id: "sentry.delete-external-issue-by-uuid",
|
|
2798
|
+
name: "Delete External Issue",
|
|
2799
|
+
description: "Unlink an external issue record from a Sentry issue by uuid.",
|
|
2800
|
+
method: "DELETE",
|
|
2801
|
+
path: "/api/0/sentry-app-installations/{install_uuid}/external-issues/{external_issue_id}/",
|
|
2802
|
+
pathParams: [{
|
|
2803
|
+
name: "install_uuid",
|
|
2804
|
+
placeholder: "{install_uuid}"
|
|
2805
|
+
}, {
|
|
2806
|
+
name: "external_issue_id",
|
|
2807
|
+
placeholder: "{external_issue_id}"
|
|
2808
|
+
}],
|
|
2809
|
+
input: z.object({
|
|
2810
|
+
install_uuid: sentryIdSchema,
|
|
2811
|
+
external_issue_id: sentryIdSchema
|
|
2812
|
+
}),
|
|
2813
|
+
output: z.unknown(),
|
|
2814
|
+
needsApproval: true,
|
|
2815
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventAdmin]
|
|
2816
|
+
};
|
|
2817
|
+
const retrieveShortIdForOrganizationDefinition = {
|
|
2818
|
+
id: "sentry.retrieve-short-id-for-organization",
|
|
2819
|
+
name: "Resolve Short ID",
|
|
2820
|
+
description: "Resolve a Sentry short id (e.g. `PROJ-123`) to its issue details.",
|
|
2821
|
+
method: "GET",
|
|
2822
|
+
path: "/api/0/organizations/{organization_slug}/shortids/{short_id}/",
|
|
2823
|
+
pathParams: [...ORG$4, {
|
|
2824
|
+
name: "short_id",
|
|
2825
|
+
placeholder: "{short_id}"
|
|
2826
|
+
}],
|
|
2827
|
+
input: orgScopeInputSchema.extend({ short_id: z.string().min(1) }),
|
|
2828
|
+
output: sentryJsonObjectSchema,
|
|
2829
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventRead]
|
|
2830
|
+
};
|
|
2831
|
+
|
|
2832
|
+
//#endregion
|
|
2833
|
+
//#region src/operations/create-sentry-external-issue-link.operation.ts
|
|
2834
|
+
const createSentryExternalIssueLinkOperation = defineSentryEndpoint(createSentryExternalIssueLinkDefinition, sentryCredentialSet);
|
|
2835
|
+
|
|
2836
|
+
//#endregion
|
|
2837
|
+
//#region src/operations/create-team-project-for-organization.operation.ts
|
|
2838
|
+
const createTeamProjectForOrganizationOperation = defineSentryEndpoint(createTeamProjectForOrganizationDefinition, sentryCredentialSet);
|
|
2839
|
+
|
|
2840
|
+
//#endregion
|
|
2841
|
+
//#region src/operations/create-user-for-saml-integration.operation.ts
|
|
2842
|
+
const createUserForSamlIntegrationOperation = defineSentryEndpoint(createUserForSamlIntegrationDefinition, sentryCredentialSet);
|
|
2843
|
+
|
|
2844
|
+
//#endregion
|
|
2845
|
+
//#region src/utils/debug-files-endpoints.ts
|
|
2846
|
+
/**
|
|
2847
|
+
* Sentry debug-information file (DIF / dSYM) operations.
|
|
2848
|
+
* Maps to PLAN.md §6.19 (3 actions).
|
|
2849
|
+
*/
|
|
2850
|
+
const ORG_PROJECT$3 = [{
|
|
2851
|
+
name: "organization_slug",
|
|
2852
|
+
placeholder: "{organization_slug}"
|
|
2853
|
+
}, {
|
|
2854
|
+
name: "project_slug",
|
|
2855
|
+
placeholder: "{project_slug}"
|
|
2856
|
+
}];
|
|
2857
|
+
const retrieveDsymFilesForProjectDefinition = {
|
|
2858
|
+
id: "sentry.retrieve-dsym-files-for-project",
|
|
2859
|
+
name: "List Debug Files",
|
|
2860
|
+
description: "List the uploaded debug-information files (dSYMs, etc.) for a project.",
|
|
2861
|
+
method: "GET",
|
|
2862
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/files/dsyms/",
|
|
2863
|
+
pathParams: ORG_PROJECT$3,
|
|
2864
|
+
input: sentryListInputSchema.merge(orgProjectScopeInputSchema).extend({
|
|
2865
|
+
debug_id: z.string().optional(),
|
|
2866
|
+
file_formats: z.array(z.string()).optional()
|
|
2867
|
+
}),
|
|
2868
|
+
queryFields: [
|
|
2869
|
+
"cursor",
|
|
2870
|
+
"per_page",
|
|
2871
|
+
"query",
|
|
2872
|
+
"debug_id",
|
|
2873
|
+
"file_formats"
|
|
2874
|
+
],
|
|
2875
|
+
output: z.array(sentryDebugFileSchema),
|
|
2876
|
+
pagination: "cursor",
|
|
2877
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectRead]
|
|
2878
|
+
};
|
|
2879
|
+
const uploadDsymsFileToProjectDefinition = {
|
|
2880
|
+
id: "sentry.upload-dsyms-file-to-project",
|
|
2881
|
+
name: "Upload Debug File",
|
|
2882
|
+
description: "Record a debug-information file upload for a project. Actual multipart upload uses the `client.request` escape hatch with `rawBody`.",
|
|
2883
|
+
method: "POST",
|
|
2884
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/files/dsyms/",
|
|
2885
|
+
pathParams: ORG_PROJECT$3,
|
|
2886
|
+
input: orgProjectScopeInputSchema.extend({ checksums: z.array(z.string()).optional() }),
|
|
2887
|
+
bodyFields: ["checksums"],
|
|
2888
|
+
output: sentryDebugFileSchema,
|
|
2889
|
+
needsApproval: true,
|
|
2890
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectWrite]
|
|
2891
|
+
};
|
|
2892
|
+
const deleteDsymsForProjectDefinition = {
|
|
2893
|
+
id: "sentry.delete-dsyms-for-project",
|
|
2894
|
+
name: "Delete Debug File",
|
|
2895
|
+
description: "Delete a debug-information file by id.",
|
|
2896
|
+
method: "DELETE",
|
|
2897
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/files/dsyms/",
|
|
2898
|
+
pathParams: ORG_PROJECT$3,
|
|
2899
|
+
input: orgProjectScopeInputSchema.extend({ id: sentryIdSchema }),
|
|
2900
|
+
queryFields: ["id"],
|
|
2901
|
+
output: z.unknown(),
|
|
2902
|
+
needsApproval: true,
|
|
2903
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectWrite]
|
|
2904
|
+
};
|
|
2905
|
+
|
|
2906
|
+
//#endregion
|
|
2907
|
+
//#region src/operations/delete-dsyms-for-project.operation.ts
|
|
2908
|
+
const deleteDsymsForProjectOperation = defineSentryEndpoint(deleteDsymsForProjectDefinition, sentryCredentialSet);
|
|
2909
|
+
|
|
2910
|
+
//#endregion
|
|
2911
|
+
//#region src/operations/delete-external-issue-by-uuid.operation.ts
|
|
2912
|
+
const deleteExternalIssueByUuidOperation = defineSentryEndpoint(deleteExternalIssueByUuidDefinition, sentryCredentialSet);
|
|
2913
|
+
|
|
2914
|
+
//#endregion
|
|
2915
|
+
//#region src/operations/delete-external-team-by-id.operation.ts
|
|
2916
|
+
const deleteExternalTeamByIdOperation = defineSentryEndpoint(deleteExternalTeamByIdDefinition, sentryCredentialSet);
|
|
2917
|
+
|
|
2918
|
+
//#endregion
|
|
2919
|
+
//#region src/operations/delete-external-user-from-organization.operation.ts
|
|
2920
|
+
const deleteExternalUserFromOrganizationOperation = defineSentryEndpoint(deleteExternalUserFromOrganizationDefinition, sentryCredentialSet);
|
|
2921
|
+
|
|
2922
|
+
//#endregion
|
|
2923
|
+
//#region src/operations/delete-member-from-team.operation.ts
|
|
2924
|
+
const deleteMemberFromTeamOperation = defineSentryEndpoint(deleteMemberFromTeamDefinition, sentryCredentialSet);
|
|
2925
|
+
|
|
2926
|
+
//#endregion
|
|
2927
|
+
//#region src/utils/notifications-endpoints.ts
|
|
2928
|
+
/**
|
|
2929
|
+
* Sentry notification-action operations. Maps to PLAN.md §6.12 (5 actions).
|
|
2930
|
+
*/
|
|
2931
|
+
const ORG$3 = [{
|
|
2932
|
+
name: "organization_slug",
|
|
2933
|
+
placeholder: "{organization_slug}"
|
|
2934
|
+
}];
|
|
2935
|
+
const ORG_ACTION = [...ORG$3, {
|
|
2936
|
+
name: "action_id",
|
|
2937
|
+
placeholder: "{action_id}"
|
|
2938
|
+
}];
|
|
2939
|
+
const viewOrganizationNotificationActionsDefinition = {
|
|
2940
|
+
id: "sentry.view-organization-notification-actions",
|
|
2941
|
+
name: "List Notification Actions",
|
|
2942
|
+
description: "List organization notification actions.",
|
|
2943
|
+
method: "GET",
|
|
2944
|
+
path: "/api/0/organizations/{organization_slug}/notifications/actions/",
|
|
2945
|
+
pathParams: ORG$3,
|
|
2946
|
+
input: sentryListInputSchema.merge(orgScopeInputSchema).extend({
|
|
2947
|
+
project: z.array(z.number().int()).optional(),
|
|
2948
|
+
triggerType: z.string().optional(),
|
|
2949
|
+
serviceType: z.string().optional()
|
|
2950
|
+
}),
|
|
2951
|
+
queryFields: [
|
|
2952
|
+
"cursor",
|
|
2953
|
+
"per_page",
|
|
2954
|
+
"query",
|
|
2955
|
+
"project",
|
|
2956
|
+
"triggerType",
|
|
2957
|
+
"serviceType"
|
|
2958
|
+
],
|
|
2959
|
+
output: z.array(sentryNotificationActionSchema),
|
|
2960
|
+
pagination: "cursor",
|
|
2961
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.alertsRead]
|
|
2962
|
+
};
|
|
2963
|
+
const retrieveNotificationActionByOrgIdDefinition = {
|
|
2964
|
+
id: "sentry.retrieve-notification-action-by-org-id",
|
|
2965
|
+
name: "Retrieve Notification Action",
|
|
2966
|
+
description: "Fetch a single notification action by id.",
|
|
2967
|
+
method: "GET",
|
|
2968
|
+
path: "/api/0/organizations/{organization_slug}/notifications/actions/{action_id}/",
|
|
2969
|
+
pathParams: ORG_ACTION,
|
|
2970
|
+
input: orgScopeInputSchema.extend({ action_id: sentryIdSchema }),
|
|
2971
|
+
output: sentryNotificationActionSchema,
|
|
2972
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.alertsRead]
|
|
2973
|
+
};
|
|
2974
|
+
const submitNotificationActionApiDataDefinition = {
|
|
2975
|
+
id: "sentry.submit-notification-action-api-data",
|
|
2976
|
+
name: "Create Notification Action",
|
|
2977
|
+
description: "Create a new organization notification action.",
|
|
2978
|
+
method: "POST",
|
|
2979
|
+
path: "/api/0/organizations/{organization_slug}/notifications/actions/",
|
|
2980
|
+
pathParams: ORG$3,
|
|
2981
|
+
input: orgScopeInputSchema.extend({
|
|
2982
|
+
serviceType: z.string().min(1),
|
|
2983
|
+
targetType: z.string().min(1),
|
|
2984
|
+
targetDisplay: z.string().optional(),
|
|
2985
|
+
targetIdentifier: z.string().optional(),
|
|
2986
|
+
triggerType: z.string().min(1),
|
|
2987
|
+
projects: z.array(z.string()).optional(),
|
|
2988
|
+
integrationId: z.string().optional()
|
|
2989
|
+
}),
|
|
2990
|
+
bodyFields: [
|
|
2991
|
+
"serviceType",
|
|
2992
|
+
"targetType",
|
|
2993
|
+
"targetDisplay",
|
|
2994
|
+
"targetIdentifier",
|
|
2995
|
+
"triggerType",
|
|
2996
|
+
"projects",
|
|
2997
|
+
"integrationId"
|
|
2998
|
+
],
|
|
2999
|
+
output: sentryNotificationActionSchema,
|
|
3000
|
+
needsApproval: true,
|
|
3001
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.alertsWrite]
|
|
3002
|
+
};
|
|
3003
|
+
const modifyOrganizationNotificationActionDefinition = {
|
|
3004
|
+
id: "sentry.modify-organization-notification-action",
|
|
3005
|
+
name: "Update Notification Action",
|
|
3006
|
+
description: "Update a notification action in place.",
|
|
3007
|
+
method: "PUT",
|
|
3008
|
+
path: "/api/0/organizations/{organization_slug}/notifications/actions/{action_id}/",
|
|
3009
|
+
pathParams: ORG_ACTION,
|
|
3010
|
+
input: orgScopeInputSchema.extend({
|
|
3011
|
+
action_id: sentryIdSchema,
|
|
3012
|
+
serviceType: z.string().optional(),
|
|
3013
|
+
targetType: z.string().optional(),
|
|
3014
|
+
targetDisplay: z.string().optional(),
|
|
3015
|
+
targetIdentifier: z.string().optional(),
|
|
3016
|
+
triggerType: z.string().optional(),
|
|
3017
|
+
projects: z.array(z.string()).optional(),
|
|
3018
|
+
integrationId: z.string().optional()
|
|
3019
|
+
}),
|
|
3020
|
+
bodyFields: [
|
|
3021
|
+
"serviceType",
|
|
3022
|
+
"targetType",
|
|
3023
|
+
"targetDisplay",
|
|
3024
|
+
"targetIdentifier",
|
|
3025
|
+
"triggerType",
|
|
3026
|
+
"projects",
|
|
3027
|
+
"integrationId"
|
|
3028
|
+
],
|
|
3029
|
+
output: sentryNotificationActionSchema,
|
|
3030
|
+
needsApproval: true,
|
|
3031
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.alertsWrite]
|
|
3032
|
+
};
|
|
3033
|
+
const deleteOrgNotificationActionDefinition = {
|
|
3034
|
+
id: "sentry.delete-org-notification-action",
|
|
3035
|
+
name: "Delete Notification Action",
|
|
3036
|
+
description: "Delete a notification action by id.",
|
|
3037
|
+
method: "DELETE",
|
|
3038
|
+
path: "/api/0/organizations/{organization_slug}/notifications/actions/{action_id}/",
|
|
3039
|
+
pathParams: ORG_ACTION,
|
|
3040
|
+
input: orgScopeInputSchema.extend({ action_id: sentryIdSchema }),
|
|
3041
|
+
output: z.unknown(),
|
|
3042
|
+
needsApproval: true,
|
|
3043
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.alertsWrite]
|
|
3044
|
+
};
|
|
3045
|
+
|
|
3046
|
+
//#endregion
|
|
3047
|
+
//#region src/operations/delete-org-notification-action.operation.ts
|
|
3048
|
+
const deleteOrgNotificationActionOperation = defineSentryEndpoint(deleteOrgNotificationActionDefinition, sentryCredentialSet);
|
|
3049
|
+
|
|
3050
|
+
//#endregion
|
|
3051
|
+
//#region src/operations/delete-organization-alert-rule.operation.ts
|
|
3052
|
+
const deleteOrganizationAlertRuleOperation = defineSentryEndpoint(deleteOrganizationAlertRuleDefinition, sentryCredentialSet);
|
|
3053
|
+
|
|
3054
|
+
//#endregion
|
|
3055
|
+
//#region src/operations/delete-organization-dashboard.operation.ts
|
|
3056
|
+
const deleteOrganizationDashboardOperation = defineSentryEndpoint(deleteOrganizationDashboardDefinition, sentryCredentialSet);
|
|
3057
|
+
|
|
3058
|
+
//#endregion
|
|
3059
|
+
//#region src/utils/discover-endpoints.ts
|
|
3060
|
+
/**
|
|
3061
|
+
* Sentry Discover saved-query operations. Maps to PLAN.md §6.15 (5 actions).
|
|
3062
|
+
*/
|
|
3063
|
+
const ORG$2 = [{
|
|
3064
|
+
name: "organization_slug",
|
|
3065
|
+
placeholder: "{organization_slug}"
|
|
3066
|
+
}];
|
|
3067
|
+
const ORG_QUERY = [...ORG$2, {
|
|
3068
|
+
name: "query_id",
|
|
3069
|
+
placeholder: "{query_id}"
|
|
3070
|
+
}];
|
|
3071
|
+
const saveOrganizationDiscoverQueryDefinition = {
|
|
3072
|
+
id: "sentry.save-organization-discover-query",
|
|
3073
|
+
name: "Save Discover Query",
|
|
3074
|
+
description: "Create a new saved Discover query.",
|
|
3075
|
+
method: "POST",
|
|
3076
|
+
path: "/api/0/organizations/{organization_slug}/discover/saved/",
|
|
3077
|
+
pathParams: ORG$2,
|
|
3078
|
+
input: orgScopeInputSchema.extend({
|
|
3079
|
+
name: z.string().min(1),
|
|
3080
|
+
query: z.string().optional(),
|
|
3081
|
+
fields: z.array(z.string()).optional(),
|
|
3082
|
+
orderby: z.string().optional(),
|
|
3083
|
+
projects: z.array(z.number().int()).optional(),
|
|
3084
|
+
environment: z.array(z.string()).optional(),
|
|
3085
|
+
range: z.string().optional(),
|
|
3086
|
+
start: z.string().optional(),
|
|
3087
|
+
end: z.string().optional(),
|
|
3088
|
+
queryDataset: z.string().optional()
|
|
3089
|
+
}),
|
|
3090
|
+
bodyFields: [
|
|
3091
|
+
"name",
|
|
3092
|
+
"query",
|
|
3093
|
+
"fields",
|
|
3094
|
+
"orderby",
|
|
3095
|
+
"projects",
|
|
3096
|
+
"environment",
|
|
3097
|
+
"range",
|
|
3098
|
+
"start",
|
|
3099
|
+
"end",
|
|
3100
|
+
"queryDataset"
|
|
3101
|
+
],
|
|
3102
|
+
output: sentryDiscoverSavedQuerySchema,
|
|
3103
|
+
needsApproval: true,
|
|
3104
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.orgWrite]
|
|
3105
|
+
};
|
|
3106
|
+
const retrieveSavedDiscoverQueriesDefinition = {
|
|
3107
|
+
id: "sentry.retrieve-saved-discover-queries",
|
|
3108
|
+
name: "List Saved Discover Queries",
|
|
3109
|
+
description: "List saved Discover queries.",
|
|
3110
|
+
method: "GET",
|
|
3111
|
+
path: "/api/0/organizations/{organization_slug}/discover/saved/",
|
|
3112
|
+
pathParams: ORG$2,
|
|
3113
|
+
input: sentryListInputSchema.merge(orgScopeInputSchema),
|
|
3114
|
+
queryFields: [
|
|
3115
|
+
"cursor",
|
|
3116
|
+
"per_page",
|
|
3117
|
+
"query"
|
|
3118
|
+
],
|
|
3119
|
+
output: z.array(sentryDiscoverSavedQuerySchema),
|
|
3120
|
+
pagination: "cursor",
|
|
3121
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.orgRead]
|
|
3122
|
+
};
|
|
3123
|
+
const retrieveSavedDiscoverQueryForOrganizationDefinition = {
|
|
3124
|
+
id: "sentry.retrieve-saved-discover-query-for-organization",
|
|
3125
|
+
name: "Retrieve Saved Discover Query",
|
|
3126
|
+
description: "Fetch one saved Discover query by id.",
|
|
3127
|
+
method: "GET",
|
|
3128
|
+
path: "/api/0/organizations/{organization_slug}/discover/saved/{query_id}/",
|
|
3129
|
+
pathParams: ORG_QUERY,
|
|
3130
|
+
input: orgScopeInputSchema.extend({ query_id: sentryIdSchema }),
|
|
3131
|
+
output: sentryDiscoverSavedQuerySchema,
|
|
3132
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.orgRead]
|
|
3133
|
+
};
|
|
3134
|
+
const updateSavedQueryForOrganizationDefinition = {
|
|
3135
|
+
id: "sentry.update-saved-query-for-organization",
|
|
3136
|
+
name: "Update Saved Discover Query",
|
|
3137
|
+
description: "Update a saved Discover query.",
|
|
3138
|
+
method: "PUT",
|
|
3139
|
+
path: "/api/0/organizations/{organization_slug}/discover/saved/{query_id}/",
|
|
3140
|
+
pathParams: ORG_QUERY,
|
|
3141
|
+
input: orgScopeInputSchema.extend({
|
|
3142
|
+
query_id: sentryIdSchema,
|
|
3143
|
+
name: z.string().optional(),
|
|
3144
|
+
query: z.string().optional(),
|
|
3145
|
+
fields: z.array(z.string()).optional(),
|
|
3146
|
+
orderby: z.string().optional(),
|
|
3147
|
+
projects: z.array(z.number().int()).optional(),
|
|
3148
|
+
environment: z.array(z.string()).optional(),
|
|
3149
|
+
range: z.string().optional(),
|
|
3150
|
+
start: z.string().optional(),
|
|
3151
|
+
end: z.string().optional(),
|
|
3152
|
+
queryDataset: z.string().optional()
|
|
3153
|
+
}),
|
|
3154
|
+
bodyFields: [
|
|
3155
|
+
"name",
|
|
3156
|
+
"query",
|
|
3157
|
+
"fields",
|
|
3158
|
+
"orderby",
|
|
3159
|
+
"projects",
|
|
3160
|
+
"environment",
|
|
3161
|
+
"range",
|
|
3162
|
+
"start",
|
|
3163
|
+
"end",
|
|
3164
|
+
"queryDataset"
|
|
3165
|
+
],
|
|
3166
|
+
output: sentryDiscoverSavedQuerySchema,
|
|
3167
|
+
needsApproval: true,
|
|
3168
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.orgWrite]
|
|
3169
|
+
};
|
|
3170
|
+
const deleteOrganizationDiscoverQueryDefinition = {
|
|
3171
|
+
id: "sentry.delete-organization-discover-query",
|
|
3172
|
+
name: "Delete Saved Discover Query",
|
|
3173
|
+
description: "Delete a saved Discover query by id.",
|
|
3174
|
+
method: "DELETE",
|
|
3175
|
+
path: "/api/0/organizations/{organization_slug}/discover/saved/{query_id}/",
|
|
3176
|
+
pathParams: ORG_QUERY,
|
|
3177
|
+
input: orgScopeInputSchema.extend({ query_id: sentryIdSchema }),
|
|
3178
|
+
output: z.unknown(),
|
|
3179
|
+
needsApproval: true,
|
|
3180
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.orgWrite]
|
|
3181
|
+
};
|
|
3182
|
+
|
|
3183
|
+
//#endregion
|
|
3184
|
+
//#region src/operations/delete-organization-discover-query.operation.ts
|
|
3185
|
+
const deleteOrganizationDiscoverQueryOperation = defineSentryEndpoint(deleteOrganizationDiscoverQueryDefinition, sentryCredentialSet);
|
|
3186
|
+
|
|
3187
|
+
//#endregion
|
|
3188
|
+
//#region src/utils/organizations-endpoints.ts
|
|
3189
|
+
/**
|
|
3190
|
+
* Operations for Sentry organization-level endpoints.
|
|
3191
|
+
* Maps to PLAN.md §6.1 (15 actions).
|
|
3192
|
+
*/
|
|
3193
|
+
const ORG_PATH_PARAMS = [{
|
|
3194
|
+
name: "organization_slug",
|
|
3195
|
+
placeholder: "{organization_slug}"
|
|
3196
|
+
}];
|
|
3197
|
+
const getOrganizationByIdOrSlugDefinition = {
|
|
3198
|
+
id: "sentry.get-organization-by-id-or-slug",
|
|
3199
|
+
name: "Get Organization By ID or Slug",
|
|
3200
|
+
description: "Return metadata for a single organization identified by its slug or numeric ID.",
|
|
3201
|
+
method: "GET",
|
|
3202
|
+
path: "/api/0/organizations/{organization_slug}/",
|
|
3203
|
+
pathParams: ORG_PATH_PARAMS,
|
|
3204
|
+
input: orgScopeInputSchema,
|
|
3205
|
+
output: sentryOrganizationDetailsSchema,
|
|
3206
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.orgRead]
|
|
3207
|
+
};
|
|
3208
|
+
const getOrganizationDetailsDefinition = {
|
|
3209
|
+
id: "sentry.get-organization-details",
|
|
3210
|
+
name: "Get Organization Details",
|
|
3211
|
+
description: "Alias of `get_organization_by_id_or_slug` preserved for Composio parity.",
|
|
3212
|
+
method: "GET",
|
|
3213
|
+
path: "/api/0/organizations/{organization_slug}/",
|
|
3214
|
+
pathParams: ORG_PATH_PARAMS,
|
|
3215
|
+
input: orgScopeInputSchema,
|
|
3216
|
+
output: sentryOrganizationDetailsSchema,
|
|
3217
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.orgRead]
|
|
3218
|
+
};
|
|
3219
|
+
const modifyOrganizationSettingsDefinition = {
|
|
3220
|
+
id: "sentry.modify-organization-settings",
|
|
3221
|
+
name: "Modify Organization Settings",
|
|
3222
|
+
description: "Update organization settings such as display name, slug, or feature flags.",
|
|
3223
|
+
method: "PUT",
|
|
3224
|
+
path: "/api/0/organizations/{organization_slug}/",
|
|
3225
|
+
pathParams: ORG_PATH_PARAMS,
|
|
3226
|
+
input: orgScopeInputSchema.extend({
|
|
3227
|
+
name: z.string().min(1).optional(),
|
|
3228
|
+
slug: sentrySlugSchema.optional(),
|
|
3229
|
+
defaultRole: z.string().optional(),
|
|
3230
|
+
openMembership: z.boolean().optional(),
|
|
3231
|
+
allowSharedIssues: z.boolean().optional(),
|
|
3232
|
+
enhancedPrivacy: z.boolean().optional(),
|
|
3233
|
+
dataScrubber: z.boolean().optional(),
|
|
3234
|
+
dataScrubberDefaults: z.boolean().optional(),
|
|
3235
|
+
scrubIPAddresses: z.boolean().optional(),
|
|
3236
|
+
storeCrashReports: z.number().int().optional(),
|
|
3237
|
+
attachmentsRole: z.string().optional(),
|
|
3238
|
+
debugFilesRole: z.string().optional(),
|
|
3239
|
+
eventsMemberAdmin: z.boolean().optional(),
|
|
3240
|
+
alertsMemberWrite: z.boolean().optional(),
|
|
3241
|
+
codecovAccess: z.boolean().optional(),
|
|
3242
|
+
githubOpenPRBot: z.boolean().optional(),
|
|
3243
|
+
githubNudgeInvite: z.boolean().optional()
|
|
3244
|
+
}),
|
|
3245
|
+
bodyFields: [
|
|
3246
|
+
"name",
|
|
3247
|
+
"slug",
|
|
3248
|
+
"defaultRole",
|
|
3249
|
+
"openMembership",
|
|
3250
|
+
"allowSharedIssues",
|
|
3251
|
+
"enhancedPrivacy",
|
|
3252
|
+
"dataScrubber",
|
|
3253
|
+
"dataScrubberDefaults",
|
|
3254
|
+
"scrubIPAddresses",
|
|
3255
|
+
"storeCrashReports",
|
|
3256
|
+
"attachmentsRole",
|
|
3257
|
+
"debugFilesRole",
|
|
3258
|
+
"eventsMemberAdmin",
|
|
3259
|
+
"alertsMemberWrite",
|
|
3260
|
+
"codecovAccess",
|
|
3261
|
+
"githubOpenPRBot",
|
|
3262
|
+
"githubNudgeInvite"
|
|
3263
|
+
],
|
|
3264
|
+
output: sentryOrganizationDetailsSchema,
|
|
3265
|
+
needsApproval: true,
|
|
3266
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.orgWrite]
|
|
3267
|
+
};
|
|
3268
|
+
const getOrganizationEnvironmentsDefinition = {
|
|
3269
|
+
id: "sentry.get-organization-environments",
|
|
3270
|
+
name: "Get Organization Environments",
|
|
3271
|
+
description: "List the environments visible to the organization across all projects.",
|
|
3272
|
+
method: "GET",
|
|
3273
|
+
path: "/api/0/organizations/{organization_slug}/environments/",
|
|
3274
|
+
pathParams: ORG_PATH_PARAMS,
|
|
3275
|
+
input: orgScopeInputSchema.extend({ visibility: z.enum([
|
|
3276
|
+
"visible",
|
|
3277
|
+
"hidden",
|
|
3278
|
+
"all"
|
|
3279
|
+
]).optional() }),
|
|
3280
|
+
queryFields: ["visibility"],
|
|
3281
|
+
output: z.array(sentryEnvironmentSchema),
|
|
3282
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectRead]
|
|
3283
|
+
};
|
|
3284
|
+
const getOrganizationSessionsDefinition = {
|
|
3285
|
+
id: "sentry.get-organization-sessions",
|
|
3286
|
+
name: "Get Organization Sessions",
|
|
3287
|
+
description: "Fetch session-health aggregates for the organization. Supports Release Health queries.",
|
|
3288
|
+
method: "GET",
|
|
3289
|
+
path: "/api/0/organizations/{organization_slug}/sessions/",
|
|
3290
|
+
pathParams: ORG_PATH_PARAMS,
|
|
3291
|
+
input: orgScopeInputSchema.extend({
|
|
3292
|
+
project: z.array(z.number().int()).optional(),
|
|
3293
|
+
environment: z.array(z.string()).optional(),
|
|
3294
|
+
field: z.array(z.string()).min(1),
|
|
3295
|
+
statsPeriod: z.string().optional(),
|
|
3296
|
+
interval: z.string().optional(),
|
|
3297
|
+
groupBy: z.array(z.string()).optional(),
|
|
3298
|
+
query: z.string().optional(),
|
|
3299
|
+
orderBy: z.string().optional(),
|
|
3300
|
+
per_page: z.number().int().optional(),
|
|
3301
|
+
includeTotals: z.number().int().optional(),
|
|
3302
|
+
includeSeries: z.number().int().optional()
|
|
3303
|
+
}),
|
|
3304
|
+
queryFields: [
|
|
3305
|
+
"project",
|
|
3306
|
+
"environment",
|
|
3307
|
+
"field",
|
|
3308
|
+
"statsPeriod",
|
|
3309
|
+
"interval",
|
|
3310
|
+
"groupBy",
|
|
3311
|
+
"query",
|
|
3312
|
+
"orderBy",
|
|
3313
|
+
"per_page",
|
|
3314
|
+
"includeTotals",
|
|
3315
|
+
"includeSeries"
|
|
3316
|
+
],
|
|
3317
|
+
output: sentryJsonObjectSchema,
|
|
3318
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectRead]
|
|
3319
|
+
};
|
|
3320
|
+
const getOrganizationStatsSummaryDefinition = {
|
|
3321
|
+
id: "sentry.get-organization-stats-summary",
|
|
3322
|
+
name: "Get Organization Stats Summary",
|
|
3323
|
+
description: "Return a high-level stats summary for the organization.",
|
|
3324
|
+
method: "GET",
|
|
3325
|
+
path: "/api/0/organizations/{organization_slug}/stats-summary/",
|
|
3326
|
+
pathParams: ORG_PATH_PARAMS,
|
|
3327
|
+
input: orgScopeInputSchema.extend({
|
|
3328
|
+
project: z.array(z.number().int()).optional(),
|
|
3329
|
+
statsPeriod: z.string().optional(),
|
|
3330
|
+
start: z.string().optional(),
|
|
3331
|
+
end: z.string().optional(),
|
|
3332
|
+
field: z.array(z.string()).optional(),
|
|
3333
|
+
category: z.array(z.string()).optional(),
|
|
3334
|
+
outcome: z.array(z.string()).optional(),
|
|
3335
|
+
reason: z.array(z.string()).optional()
|
|
3336
|
+
}),
|
|
3337
|
+
queryFields: [
|
|
3338
|
+
"project",
|
|
3339
|
+
"statsPeriod",
|
|
3340
|
+
"start",
|
|
3341
|
+
"end",
|
|
3342
|
+
"field",
|
|
3343
|
+
"category",
|
|
3344
|
+
"outcome",
|
|
3345
|
+
"reason"
|
|
3346
|
+
],
|
|
3347
|
+
output: sentryJsonObjectSchema,
|
|
3348
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.orgRead]
|
|
3349
|
+
};
|
|
3350
|
+
const retrieveOrganizationStatsV2Definition = {
|
|
3351
|
+
id: "sentry.retrieve-organization-stats-v2",
|
|
3352
|
+
name: "Retrieve Organization Stats (v2)",
|
|
3353
|
+
description: "Return the v2 stats endpoint for outcomes/categories.",
|
|
3354
|
+
method: "GET",
|
|
3355
|
+
path: "/api/0/organizations/{organization_slug}/stats_v2/",
|
|
3356
|
+
pathParams: ORG_PATH_PARAMS,
|
|
3357
|
+
input: orgScopeInputSchema.extend({
|
|
3358
|
+
field: z.array(z.string()).min(1),
|
|
3359
|
+
statsPeriod: z.string().optional(),
|
|
3360
|
+
interval: z.string().optional(),
|
|
3361
|
+
groupBy: z.array(z.string()).optional(),
|
|
3362
|
+
project: z.array(z.number().int()).optional(),
|
|
3363
|
+
category: z.array(z.string()).optional(),
|
|
3364
|
+
outcome: z.array(z.string()).optional(),
|
|
3365
|
+
reason: z.array(z.string()).optional(),
|
|
3366
|
+
start: z.string().optional(),
|
|
3367
|
+
end: z.string().optional()
|
|
3368
|
+
}),
|
|
3369
|
+
queryFields: [
|
|
3370
|
+
"field",
|
|
3371
|
+
"statsPeriod",
|
|
3372
|
+
"interval",
|
|
3373
|
+
"groupBy",
|
|
3374
|
+
"project",
|
|
3375
|
+
"category",
|
|
3376
|
+
"outcome",
|
|
3377
|
+
"reason",
|
|
3378
|
+
"start",
|
|
3379
|
+
"end"
|
|
3380
|
+
],
|
|
3381
|
+
output: sentryJsonObjectSchema,
|
|
3382
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.orgRead]
|
|
3383
|
+
};
|
|
3384
|
+
const retrieveOrganizationRelayUsageDefinition = {
|
|
3385
|
+
id: "sentry.retrieve-organization-relay-usage",
|
|
3386
|
+
name: "Retrieve Organization Relay Usage",
|
|
3387
|
+
description: "Return Relay (Sentry ingest proxy) usage metrics for the organization.",
|
|
3388
|
+
method: "GET",
|
|
3389
|
+
path: "/api/0/organizations/{organization_slug}/relay_usage/",
|
|
3390
|
+
pathParams: ORG_PATH_PARAMS,
|
|
3391
|
+
input: orgScopeInputSchema,
|
|
3392
|
+
output: sentryJsonObjectSchema,
|
|
3393
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.orgRead]
|
|
3394
|
+
};
|
|
3395
|
+
const retrieveOrganizationProjectsDefinition = {
|
|
3396
|
+
id: "sentry.retrieve-organization-projects",
|
|
3397
|
+
name: "Retrieve Organization Projects",
|
|
3398
|
+
description: "List projects in an organization with pagination.",
|
|
3399
|
+
method: "GET",
|
|
3400
|
+
path: "/api/0/organizations/{organization_slug}/projects/",
|
|
3401
|
+
pathParams: ORG_PATH_PARAMS,
|
|
3402
|
+
input: sentryListInputSchema.merge(orgScopeInputSchema),
|
|
3403
|
+
queryFields: [
|
|
3404
|
+
"query",
|
|
3405
|
+
"cursor",
|
|
3406
|
+
"per_page"
|
|
3407
|
+
],
|
|
3408
|
+
output: z.array(sentryProjectSummarySchema),
|
|
3409
|
+
pagination: "cursor",
|
|
3410
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectRead]
|
|
3411
|
+
};
|
|
3412
|
+
const postSpikeProtectionForOrganizationDefinition = {
|
|
3413
|
+
id: "sentry.post-spike-protection-for-organization",
|
|
3414
|
+
name: "Enable / Disable Spike Protection",
|
|
3415
|
+
description: "Toggle spike-protection on or off at the organization level.",
|
|
3416
|
+
method: "POST",
|
|
3417
|
+
path: "/api/0/organizations/{organization_slug}/spike-protections/",
|
|
3418
|
+
pathParams: ORG_PATH_PARAMS,
|
|
3419
|
+
input: orgScopeInputSchema.extend({ projects: z.array(z.union([z.string(), z.number()])).min(1) }),
|
|
3420
|
+
bodyFields: ["projects"],
|
|
3421
|
+
output: sentryJsonObjectSchema,
|
|
3422
|
+
needsApproval: true,
|
|
3423
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectWrite]
|
|
3424
|
+
};
|
|
3425
|
+
const retrieveOrgIntegrationConfigDefinition = {
|
|
3426
|
+
id: "sentry.retrieve-org-integration-config",
|
|
3427
|
+
name: "Retrieve Organization Integration Config",
|
|
3428
|
+
description: "Fetch the configuration schema for the set of integrations the org can install.",
|
|
3429
|
+
method: "GET",
|
|
3430
|
+
path: "/api/0/organizations/{organization_slug}/config/integrations/",
|
|
3431
|
+
pathParams: ORG_PATH_PARAMS,
|
|
3432
|
+
input: orgScopeInputSchema.extend({ providerKey: z.string().optional() }),
|
|
3433
|
+
queryFields: ["providerKey"],
|
|
3434
|
+
output: sentryJsonObjectSchema,
|
|
3435
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.orgRead]
|
|
3436
|
+
};
|
|
3437
|
+
const retrieveOrganizationIntegrationsListDefinition = {
|
|
3438
|
+
id: "sentry.retrieve-organization-integrations-list",
|
|
3439
|
+
name: "List Installed Organization Integrations",
|
|
3440
|
+
description: "Return every provider integration installed on the organization.",
|
|
3441
|
+
method: "GET",
|
|
3442
|
+
path: "/api/0/organizations/{organization_slug}/integrations/",
|
|
3443
|
+
pathParams: ORG_PATH_PARAMS,
|
|
3444
|
+
input: orgScopeInputSchema.extend({
|
|
3445
|
+
providerKey: z.string().optional(),
|
|
3446
|
+
features: z.array(z.string()).optional(),
|
|
3447
|
+
includeConfig: z.boolean().optional()
|
|
3448
|
+
}),
|
|
3449
|
+
queryFields: [
|
|
3450
|
+
"providerKey",
|
|
3451
|
+
"features",
|
|
3452
|
+
"includeConfig"
|
|
3453
|
+
],
|
|
3454
|
+
output: sentryJsonArraySchema,
|
|
3455
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.orgRead]
|
|
3456
|
+
};
|
|
3457
|
+
const getIntegrationDetailsByOrgDefinition = {
|
|
3458
|
+
id: "sentry.get-integration-details-by-org",
|
|
3459
|
+
name: "Get Organization Integration Details",
|
|
3460
|
+
description: "Fetch one installed integration record by its integration id.",
|
|
3461
|
+
method: "GET",
|
|
3462
|
+
path: "/api/0/organizations/{organization_slug}/integrations/{integration_id}/",
|
|
3463
|
+
pathParams: [...ORG_PATH_PARAMS, {
|
|
3464
|
+
name: "integration_id",
|
|
3465
|
+
placeholder: "{integration_id}"
|
|
3466
|
+
}],
|
|
3467
|
+
input: orgScopeInputSchema.extend({ integration_id: z.string().min(1) }),
|
|
3468
|
+
output: sentryJsonObjectSchema,
|
|
3469
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.orgRead]
|
|
3470
|
+
};
|
|
3471
|
+
const deleteOrganizationIntegrationDefinition = {
|
|
3472
|
+
id: "sentry.delete-organization-integration",
|
|
3473
|
+
name: "Delete Organization Integration",
|
|
3474
|
+
description: "Uninstall an integration installation from the organization.",
|
|
3475
|
+
method: "DELETE",
|
|
3476
|
+
path: "/api/0/organizations/{organization_slug}/integrations/{integration_id}/",
|
|
3477
|
+
pathParams: [...ORG_PATH_PARAMS, {
|
|
3478
|
+
name: "integration_id",
|
|
3479
|
+
placeholder: "{integration_id}"
|
|
3480
|
+
}],
|
|
3481
|
+
input: orgScopeInputSchema.extend({ integration_id: z.string().min(1) }),
|
|
3482
|
+
output: z.unknown(),
|
|
3483
|
+
needsApproval: true,
|
|
3484
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.orgAdmin]
|
|
3485
|
+
};
|
|
3486
|
+
const getSentryAppInstallationsForOrganizationDefinition = {
|
|
3487
|
+
id: "sentry.get-sentry-app-installations-for-organization",
|
|
3488
|
+
name: "List Sentry App Installations for Organization",
|
|
3489
|
+
description: "List all Sentry-app (integration platform) installations for the organization.",
|
|
3490
|
+
method: "GET",
|
|
3491
|
+
path: "/api/0/organizations/{organization_slug}/sentry-app-installations/",
|
|
3492
|
+
pathParams: ORG_PATH_PARAMS,
|
|
3493
|
+
input: orgScopeInputSchema,
|
|
3494
|
+
output: sentryJsonArraySchema,
|
|
3495
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.orgRead]
|
|
3496
|
+
};
|
|
3497
|
+
|
|
3498
|
+
//#endregion
|
|
3499
|
+
//#region src/operations/delete-organization-integration.operation.ts
|
|
3500
|
+
const deleteOrganizationIntegrationOperation = defineSentryEndpoint(deleteOrganizationIntegrationDefinition, sentryCredentialSet);
|
|
3501
|
+
|
|
3502
|
+
//#endregion
|
|
3503
|
+
//#region src/operations/delete-organization-issue.operation.ts
|
|
3504
|
+
const deleteOrganizationIssueOperation = defineSentryEndpoint(deleteOrganizationIssueDefinition, sentryCredentialSet);
|
|
3505
|
+
|
|
3506
|
+
//#endregion
|
|
3507
|
+
//#region src/operations/delete-organization-member.operation.ts
|
|
3508
|
+
const deleteOrganizationMemberOperation = defineSentryEndpoint(deleteOrganizationMemberDefinition, sentryCredentialSet);
|
|
3509
|
+
|
|
3510
|
+
//#endregion
|
|
3511
|
+
//#region src/operations/delete-organization-monitor.operation.ts
|
|
3512
|
+
const deleteOrganizationMonitorOperation = defineSentryEndpoint(deleteOrganizationMonitorDefinition, sentryCredentialSet);
|
|
3513
|
+
|
|
3514
|
+
//#endregion
|
|
3515
|
+
//#region src/operations/delete-organization-release.operation.ts
|
|
3516
|
+
const deleteOrganizationReleaseOperation = defineSentryEndpoint(deleteOrganizationReleaseDefinition, sentryCredentialSet);
|
|
3517
|
+
|
|
3518
|
+
//#endregion
|
|
3519
|
+
//#region src/operations/delete-project-by-id.operation.ts
|
|
3520
|
+
const deleteProjectByIdOperation = defineSentryEndpoint(deleteProjectByIdDefinition, sentryCredentialSet);
|
|
3521
|
+
|
|
3522
|
+
//#endregion
|
|
3523
|
+
//#region src/operations/delete-project-hook.operation.ts
|
|
3524
|
+
const deleteProjectHookOperation = defineSentryEndpoint(deleteProjectHookDefinition, sentryCredentialSet);
|
|
3525
|
+
|
|
3526
|
+
//#endregion
|
|
3527
|
+
//#region src/operations/delete-project-issues.operation.ts
|
|
3528
|
+
const deleteProjectIssuesOperation = defineSentryEndpoint(deleteProjectIssuesDefinition, sentryCredentialSet);
|
|
3529
|
+
|
|
3530
|
+
//#endregion
|
|
3531
|
+
//#region src/operations/delete-project-key.operation.ts
|
|
3532
|
+
const deleteProjectKeyOperation = defineSentryEndpoint(deleteProjectKeyDefinition, sentryCredentialSet);
|
|
3533
|
+
|
|
3534
|
+
//#endregion
|
|
3535
|
+
//#region src/operations/delete-project-monitor.operation.ts
|
|
3536
|
+
const deleteProjectMonitorOperation = defineSentryEndpoint(deleteProjectMonitorDefinition, sentryCredentialSet);
|
|
3537
|
+
|
|
3538
|
+
//#endregion
|
|
3539
|
+
//#region src/utils/replays-endpoints.ts
|
|
3540
|
+
/**
|
|
3541
|
+
* Sentry Session Replay operations. Maps to PLAN.md §6.17 (9 actions).
|
|
3542
|
+
*/
|
|
3543
|
+
const ORG$1 = [{
|
|
3544
|
+
name: "organization_slug",
|
|
3545
|
+
placeholder: "{organization_slug}"
|
|
3546
|
+
}];
|
|
3547
|
+
const ORG_REPLAY = [...ORG$1, {
|
|
3548
|
+
name: "replay_id",
|
|
3549
|
+
placeholder: "{replay_id}"
|
|
3550
|
+
}];
|
|
3551
|
+
const ORG_PROJECT_REPLAY = [...[...ORG$1, {
|
|
3552
|
+
name: "project_slug",
|
|
3553
|
+
placeholder: "{project_slug}"
|
|
3554
|
+
}], {
|
|
3555
|
+
name: "replay_id",
|
|
3556
|
+
placeholder: "{replay_id}"
|
|
3557
|
+
}];
|
|
3558
|
+
const ORG_PROJECT_REPLAY_SEGMENT = [...ORG_PROJECT_REPLAY, {
|
|
3559
|
+
name: "segment_id",
|
|
3560
|
+
placeholder: "{segment_id}"
|
|
3561
|
+
}];
|
|
3562
|
+
const fetchOrganizationReplayCountDefinition = {
|
|
3563
|
+
id: "sentry.fetch-organization-replay-count",
|
|
3564
|
+
name: "Fetch Replay Count",
|
|
3565
|
+
description: "Return total replay counts for an organization query.",
|
|
3566
|
+
method: "GET",
|
|
3567
|
+
path: "/api/0/organizations/{organization_slug}/replay-count/",
|
|
3568
|
+
pathParams: ORG$1,
|
|
3569
|
+
input: orgScopeInputSchema.extend({
|
|
3570
|
+
project: z.array(z.number().int()).optional(),
|
|
3571
|
+
environment: z.array(z.string()).optional(),
|
|
3572
|
+
statsPeriod: z.string().optional(),
|
|
3573
|
+
query: z.string().optional()
|
|
3574
|
+
}),
|
|
3575
|
+
queryFields: [
|
|
3576
|
+
"project",
|
|
3577
|
+
"environment",
|
|
3578
|
+
"statsPeriod",
|
|
3579
|
+
"query"
|
|
3580
|
+
],
|
|
3581
|
+
output: sentryJsonObjectSchema,
|
|
3582
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventRead]
|
|
3583
|
+
};
|
|
3584
|
+
const fetchOrganizationReplayDetailsDefinition = {
|
|
3585
|
+
id: "sentry.fetch-organization-replay-details",
|
|
3586
|
+
name: "Fetch Replay Details",
|
|
3587
|
+
description: "Fetch a single replay’s details by replay id.",
|
|
3588
|
+
method: "GET",
|
|
3589
|
+
path: "/api/0/organizations/{organization_slug}/replays/{replay_id}/",
|
|
3590
|
+
pathParams: ORG_REPLAY,
|
|
3591
|
+
input: orgScopeInputSchema.extend({ replay_id: sentryIdSchema }),
|
|
3592
|
+
output: sentryReplaySchema,
|
|
3593
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventRead]
|
|
3594
|
+
};
|
|
3595
|
+
const fetchOrganizationReplaySelectorsDefinition = {
|
|
3596
|
+
id: "sentry.fetch-organization-replay-selectors",
|
|
3597
|
+
name: "Fetch Replay Selectors",
|
|
3598
|
+
description: "List the dead-click / rage-click selectors observed in replays.",
|
|
3599
|
+
method: "GET",
|
|
3600
|
+
path: "/api/0/organizations/{organization_slug}/replay-selectors/",
|
|
3601
|
+
pathParams: ORG$1,
|
|
3602
|
+
input: sentryListInputSchema.merge(orgScopeInputSchema).extend({
|
|
3603
|
+
project: z.array(z.number().int()).optional(),
|
|
3604
|
+
environment: z.array(z.string()).optional(),
|
|
3605
|
+
statsPeriod: z.string().optional(),
|
|
3606
|
+
query: z.string().optional()
|
|
3607
|
+
}),
|
|
3608
|
+
queryFields: [
|
|
3609
|
+
"cursor",
|
|
3610
|
+
"per_page",
|
|
3611
|
+
"project",
|
|
3612
|
+
"environment",
|
|
3613
|
+
"statsPeriod",
|
|
3614
|
+
"query"
|
|
3615
|
+
],
|
|
3616
|
+
output: sentryJsonArraySchema,
|
|
3617
|
+
pagination: "cursor",
|
|
3618
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventRead]
|
|
3619
|
+
};
|
|
3620
|
+
const retrieveOrganizationReplaysDefinition = {
|
|
3621
|
+
id: "sentry.retrieve-organization-replays",
|
|
3622
|
+
name: "List Organization Replays",
|
|
3623
|
+
description: "List replays for an organization.",
|
|
3624
|
+
method: "GET",
|
|
3625
|
+
path: "/api/0/organizations/{organization_slug}/replays/",
|
|
3626
|
+
pathParams: ORG$1,
|
|
3627
|
+
input: sentryListInputSchema.merge(orgScopeInputSchema).extend({
|
|
3628
|
+
project: z.array(z.number().int()).optional(),
|
|
3629
|
+
environment: z.array(z.string()).optional(),
|
|
3630
|
+
statsPeriod: z.string().optional(),
|
|
3631
|
+
query: z.string().optional()
|
|
3632
|
+
}),
|
|
3633
|
+
queryFields: [
|
|
3634
|
+
"cursor",
|
|
3635
|
+
"per_page",
|
|
3636
|
+
"project",
|
|
3637
|
+
"environment",
|
|
3638
|
+
"statsPeriod",
|
|
3639
|
+
"query"
|
|
3640
|
+
],
|
|
3641
|
+
output: z.array(sentryReplaySchema),
|
|
3642
|
+
pagination: "cursor",
|
|
3643
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventRead]
|
|
3644
|
+
};
|
|
3645
|
+
const fetchProjectReplayClicksDefinition = {
|
|
3646
|
+
id: "sentry.fetch-project-replay-clicks",
|
|
3647
|
+
name: "Fetch Replay Clicks",
|
|
3648
|
+
description: "Fetch the clickstream for a replay.",
|
|
3649
|
+
method: "GET",
|
|
3650
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/replays/{replay_id}/clicks/",
|
|
3651
|
+
pathParams: ORG_PROJECT_REPLAY,
|
|
3652
|
+
input: sentryListInputSchema.merge(orgProjectScopeInputSchema).extend({ replay_id: sentryIdSchema }),
|
|
3653
|
+
queryFields: [
|
|
3654
|
+
"cursor",
|
|
3655
|
+
"per_page",
|
|
3656
|
+
"query"
|
|
3657
|
+
],
|
|
3658
|
+
output: sentryJsonArraySchema,
|
|
3659
|
+
pagination: "cursor",
|
|
3660
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventRead]
|
|
3661
|
+
};
|
|
3662
|
+
const fetchReplayRecordingSegmentDefinition = {
|
|
3663
|
+
id: "sentry.fetch-replay-recording-segment",
|
|
3664
|
+
name: "Fetch Replay Segment",
|
|
3665
|
+
description: "Fetch a specific rrweb segment for a replay.",
|
|
3666
|
+
method: "GET",
|
|
3667
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/replays/{replay_id}/recording-segments/{segment_id}/",
|
|
3668
|
+
pathParams: ORG_PROJECT_REPLAY_SEGMENT,
|
|
3669
|
+
input: orgProjectScopeInputSchema.extend({
|
|
3670
|
+
replay_id: sentryIdSchema,
|
|
3671
|
+
segment_id: sentryIdSchema
|
|
3672
|
+
}),
|
|
3673
|
+
output: sentryJsonObjectSchema,
|
|
3674
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventRead]
|
|
3675
|
+
};
|
|
3676
|
+
const retrieveReplayRecordingSegmentsDefinition = {
|
|
3677
|
+
id: "sentry.retrieve-replay-recording-segments",
|
|
3678
|
+
name: "List Replay Segments",
|
|
3679
|
+
description: "List the rrweb segments for a replay.",
|
|
3680
|
+
method: "GET",
|
|
3681
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/replays/{replay_id}/recording-segments/",
|
|
3682
|
+
pathParams: ORG_PROJECT_REPLAY,
|
|
3683
|
+
input: sentryListInputSchema.merge(orgProjectScopeInputSchema).extend({ replay_id: sentryIdSchema }),
|
|
3684
|
+
queryFields: ["cursor", "per_page"],
|
|
3685
|
+
output: sentryJsonArraySchema,
|
|
3686
|
+
pagination: "cursor",
|
|
3687
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventRead]
|
|
3688
|
+
};
|
|
3689
|
+
const getWhoViewedReplayByProjectDefinition = {
|
|
3690
|
+
id: "sentry.get-who-viewed-replay-by-project",
|
|
3691
|
+
name: "Get Replay Viewers",
|
|
3692
|
+
description: "List users who viewed a replay.",
|
|
3693
|
+
method: "GET",
|
|
3694
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/replays/{replay_id}/viewed-by/",
|
|
3695
|
+
pathParams: ORG_PROJECT_REPLAY,
|
|
3696
|
+
input: orgProjectScopeInputSchema.extend({ replay_id: sentryIdSchema }),
|
|
3697
|
+
output: sentryJsonArraySchema,
|
|
3698
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventRead]
|
|
3699
|
+
};
|
|
3700
|
+
const deleteProjectReplayDefinition = {
|
|
3701
|
+
id: "sentry.delete-project-replay",
|
|
3702
|
+
name: "Delete Project Replay",
|
|
3703
|
+
description: "Delete a replay by id.",
|
|
3704
|
+
method: "DELETE",
|
|
3705
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/replays/{replay_id}/",
|
|
3706
|
+
pathParams: ORG_PROJECT_REPLAY,
|
|
3707
|
+
input: orgProjectScopeInputSchema.extend({ replay_id: sentryIdSchema }),
|
|
3708
|
+
output: z.unknown(),
|
|
3709
|
+
needsApproval: true,
|
|
3710
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventAdmin]
|
|
3711
|
+
};
|
|
3712
|
+
|
|
3713
|
+
//#endregion
|
|
3714
|
+
//#region src/operations/delete-project-replay.operation.ts
|
|
3715
|
+
const deleteProjectReplayOperation = defineSentryEndpoint(deleteProjectReplayDefinition, sentryCredentialSet);
|
|
3716
|
+
|
|
3717
|
+
//#endregion
|
|
3718
|
+
//#region src/operations/delete-project-rule.operation.ts
|
|
3719
|
+
const deleteProjectRuleOperation = defineSentryEndpoint(deleteProjectRuleDefinition, sentryCredentialSet);
|
|
3720
|
+
|
|
3721
|
+
//#endregion
|
|
3722
|
+
//#region src/operations/delete-project-symbol-sources.operation.ts
|
|
3723
|
+
const deleteProjectSymbolSourcesOperation = defineSentryEndpoint(deleteProjectSymbolSourcesDefinition, sentryCredentialSet);
|
|
3724
|
+
|
|
3725
|
+
//#endregion
|
|
3726
|
+
//#region src/operations/delete-project-team-association.operation.ts
|
|
3727
|
+
const deleteProjectTeamAssociationOperation = defineSentryEndpoint(deleteProjectTeamAssociationDefinition, sentryCredentialSet);
|
|
3728
|
+
|
|
3729
|
+
//#endregion
|
|
3730
|
+
//#region src/operations/delete-release-file.operation.ts
|
|
3731
|
+
const deleteReleaseFileOperation = defineSentryEndpoint(deleteReleaseFileDefinition, sentryCredentialSet);
|
|
3732
|
+
|
|
3733
|
+
//#endregion
|
|
3734
|
+
//#region src/operations/delete-release-file-by-id.operation.ts
|
|
3735
|
+
const deleteReleaseFileByIdOperation = defineSentryEndpoint(deleteReleaseFileByIdDefinition, sentryCredentialSet);
|
|
3736
|
+
|
|
3737
|
+
//#endregion
|
|
3738
|
+
//#region src/operations/delete-team-by-organization-or-team-slug.operation.ts
|
|
3739
|
+
const deleteTeamByOrganizationOrTeamSlugOperation = defineSentryEndpoint(deleteTeamByOrganizationOrTeamSlugDefinition, sentryCredentialSet);
|
|
3740
|
+
|
|
3741
|
+
//#endregion
|
|
3742
|
+
//#region src/operations/delete-team-from-org-scim-v2.operation.ts
|
|
3743
|
+
const deleteTeamFromOrgScimV2Operation = defineSentryEndpoint(deleteTeamFromOrgScimV2Definition, sentryCredentialSet);
|
|
3744
|
+
|
|
3745
|
+
//#endregion
|
|
3746
|
+
//#region src/operations/delete-user-emails-by-id.operation.ts
|
|
3747
|
+
const deleteUserEmailsByIdOperation = defineSentryEndpoint(deleteUserEmailsByIdDefinition, sentryCredentialSet);
|
|
3748
|
+
|
|
3749
|
+
//#endregion
|
|
3750
|
+
//#region src/operations/delete-user-from-org.operation.ts
|
|
3751
|
+
const deleteUserFromOrgOperation = defineSentryEndpoint(deleteUserFromOrgDefinition, sentryCredentialSet);
|
|
3752
|
+
|
|
3753
|
+
//#endregion
|
|
3754
|
+
//#region src/utils/events-api-endpoints.ts
|
|
3755
|
+
/**
|
|
3756
|
+
* Sentry events + event-query operations. Maps to PLAN.md §6.7 (7 actions).
|
|
3757
|
+
*/
|
|
3758
|
+
const ORG = [{
|
|
3759
|
+
name: "organization_slug",
|
|
3760
|
+
placeholder: "{organization_slug}"
|
|
3761
|
+
}];
|
|
3762
|
+
const ORG_PROJECT$2 = [...ORG, {
|
|
3763
|
+
name: "project_slug",
|
|
3764
|
+
placeholder: "{project_slug}"
|
|
3765
|
+
}];
|
|
3766
|
+
const ORG_ISSUE = [...ORG, {
|
|
3767
|
+
name: "issue_id",
|
|
3768
|
+
placeholder: "{issue_id}"
|
|
3769
|
+
}];
|
|
3770
|
+
const fetchIssueEventByIdDefinition = {
|
|
3771
|
+
id: "sentry.fetch-issue-event-by-id",
|
|
3772
|
+
name: "Fetch Issue Event",
|
|
3773
|
+
description: "Fetch a single event that belongs to an issue by event id.",
|
|
3774
|
+
method: "GET",
|
|
3775
|
+
path: "/api/0/organizations/{organization_slug}/issues/{issue_id}/events/{event_id}/",
|
|
3776
|
+
pathParams: [...ORG_ISSUE, {
|
|
3777
|
+
name: "event_id",
|
|
3778
|
+
placeholder: "{event_id}"
|
|
3779
|
+
}],
|
|
3780
|
+
input: orgIssueScopeInputSchema.extend({ event_id: sentryIdSchema }),
|
|
3781
|
+
output: sentryEventSchema,
|
|
3782
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventRead]
|
|
3783
|
+
};
|
|
3784
|
+
const retrieveProjectEventByIdDefinition = {
|
|
3785
|
+
id: "sentry.retrieve-project-event-by-id",
|
|
3786
|
+
name: "Retrieve Project Event",
|
|
3787
|
+
description: "Fetch a single event scoped to a project by event id.",
|
|
3788
|
+
method: "GET",
|
|
3789
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/events/{event_id}/",
|
|
3790
|
+
pathParams: [...ORG_PROJECT$2, {
|
|
3791
|
+
name: "event_id",
|
|
3792
|
+
placeholder: "{event_id}"
|
|
3793
|
+
}],
|
|
3794
|
+
input: orgProjectScopeInputSchema.extend({ event_id: sentryIdSchema }),
|
|
3795
|
+
output: sentryEventSchema,
|
|
3796
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventRead]
|
|
3797
|
+
};
|
|
3798
|
+
const getProjectEventsDefinition = {
|
|
3799
|
+
id: "sentry.get-project-events",
|
|
3800
|
+
name: "List Project Events",
|
|
3801
|
+
description: "List recent events in a project.",
|
|
3802
|
+
method: "GET",
|
|
3803
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/events/",
|
|
3804
|
+
pathParams: ORG_PROJECT$2,
|
|
3805
|
+
input: sentryListInputSchema.merge(orgProjectScopeInputSchema).extend({
|
|
3806
|
+
full: z.boolean().optional(),
|
|
3807
|
+
sample: z.boolean().optional()
|
|
3808
|
+
}),
|
|
3809
|
+
queryFields: [
|
|
3810
|
+
"cursor",
|
|
3811
|
+
"per_page",
|
|
3812
|
+
"query",
|
|
3813
|
+
"full",
|
|
3814
|
+
"sample"
|
|
3815
|
+
],
|
|
3816
|
+
output: z.array(sentryEventSchema),
|
|
3817
|
+
pagination: "cursor",
|
|
3818
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventRead]
|
|
3819
|
+
};
|
|
3820
|
+
const getProjectEventStatsDefinition = {
|
|
3821
|
+
id: "sentry.get-project-event-stats",
|
|
3822
|
+
name: "Get Project Event Stats",
|
|
3823
|
+
description: "Return time-series event counts for a project.",
|
|
3824
|
+
method: "GET",
|
|
3825
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/stats/",
|
|
3826
|
+
pathParams: ORG_PROJECT$2,
|
|
3827
|
+
input: orgProjectScopeInputSchema.extend({
|
|
3828
|
+
stat: z.enum([
|
|
3829
|
+
"received",
|
|
3830
|
+
"rejected",
|
|
3831
|
+
"blacklisted",
|
|
3832
|
+
"generated"
|
|
3833
|
+
]).optional(),
|
|
3834
|
+
since: z.string().optional(),
|
|
3835
|
+
until: z.string().optional(),
|
|
3836
|
+
resolution: z.string().optional()
|
|
3837
|
+
}),
|
|
3838
|
+
queryFields: [
|
|
3839
|
+
"stat",
|
|
3840
|
+
"since",
|
|
3841
|
+
"until",
|
|
3842
|
+
"resolution"
|
|
3843
|
+
],
|
|
3844
|
+
output: sentryJsonArraySchema,
|
|
3845
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventRead]
|
|
3846
|
+
};
|
|
3847
|
+
const retrieveOrganizationEventsDefinition = {
|
|
3848
|
+
id: "sentry.retrieve-organization-events",
|
|
3849
|
+
name: "Retrieve Organization Events (Discover)",
|
|
3850
|
+
description: "Query the Discover event dataset across an organization with field, query, and aggregation support.",
|
|
3851
|
+
method: "GET",
|
|
3852
|
+
path: "/api/0/organizations/{organization_slug}/events/",
|
|
3853
|
+
pathParams: ORG,
|
|
3854
|
+
input: sentryListInputSchema.merge(orgScopeInputSchema).extend({
|
|
3855
|
+
field: z.array(z.string()).min(1),
|
|
3856
|
+
query: z.string().optional(),
|
|
3857
|
+
project: z.array(z.number().int()).optional(),
|
|
3858
|
+
environment: z.array(z.string()).optional(),
|
|
3859
|
+
statsPeriod: z.string().optional(),
|
|
3860
|
+
start: z.string().optional(),
|
|
3861
|
+
end: z.string().optional(),
|
|
3862
|
+
sort: z.string().optional(),
|
|
3863
|
+
dataset: z.enum([
|
|
3864
|
+
"discover",
|
|
3865
|
+
"errors",
|
|
3866
|
+
"transactions",
|
|
3867
|
+
"issuePlatform"
|
|
3868
|
+
]).optional(),
|
|
3869
|
+
orderby: z.string().optional()
|
|
3870
|
+
}),
|
|
3871
|
+
queryFields: [
|
|
3872
|
+
"cursor",
|
|
3873
|
+
"per_page",
|
|
3874
|
+
"field",
|
|
3875
|
+
"query",
|
|
3876
|
+
"project",
|
|
3877
|
+
"environment",
|
|
3878
|
+
"statsPeriod",
|
|
3879
|
+
"start",
|
|
3880
|
+
"end",
|
|
3881
|
+
"sort",
|
|
3882
|
+
"dataset",
|
|
3883
|
+
"orderby"
|
|
3884
|
+
],
|
|
3885
|
+
output: sentryJsonObjectSchema,
|
|
3886
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventRead]
|
|
3887
|
+
};
|
|
3888
|
+
const retrieveEventIdForOrganizationDefinition = {
|
|
3889
|
+
id: "sentry.retrieve-event-id-for-organization",
|
|
3890
|
+
name: "Retrieve Event By ID (Org)",
|
|
3891
|
+
description: "Look up a single event across an organization by its event id.",
|
|
3892
|
+
method: "GET",
|
|
3893
|
+
path: "/api/0/organizations/{organization_slug}/eventids/{event_id}/",
|
|
3894
|
+
pathParams: [...ORG, {
|
|
3895
|
+
name: "event_id",
|
|
3896
|
+
placeholder: "{event_id}"
|
|
3897
|
+
}],
|
|
3898
|
+
input: orgScopeInputSchema.extend({ event_id: sentryIdSchema }),
|
|
3899
|
+
output: sentryEventSchema,
|
|
3900
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventRead]
|
|
3901
|
+
};
|
|
3902
|
+
const retrieveSourceMapDebugEventDefinition = {
|
|
3903
|
+
id: "sentry.retrieve-source-map-debug-event",
|
|
3904
|
+
name: "Retrieve Source Map Debug Event",
|
|
3905
|
+
description: "Return source-map debug diagnostics for a single event.",
|
|
3906
|
+
method: "GET",
|
|
3907
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/events/{event_id}/source-map-debug/",
|
|
3908
|
+
pathParams: [...ORG_PROJECT$2, {
|
|
3909
|
+
name: "event_id",
|
|
3910
|
+
placeholder: "{event_id}"
|
|
3911
|
+
}],
|
|
3912
|
+
input: orgProjectScopeInputSchema.extend({
|
|
3913
|
+
event_id: sentryIdSchema,
|
|
3914
|
+
frame_idx: z.number().int().optional(),
|
|
3915
|
+
exception_idx: z.number().int().optional()
|
|
3916
|
+
}),
|
|
3917
|
+
queryFields: ["frame_idx", "exception_idx"],
|
|
3918
|
+
output: sentryJsonObjectSchema,
|
|
3919
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.eventRead]
|
|
3920
|
+
};
|
|
3921
|
+
|
|
3922
|
+
//#endregion
|
|
3923
|
+
//#region src/operations/fetch-issue-event-by-id.operation.ts
|
|
3924
|
+
const fetchIssueEventByIdOperation = defineSentryEndpoint(fetchIssueEventByIdDefinition, sentryCredentialSet);
|
|
3925
|
+
|
|
3926
|
+
//#endregion
|
|
3927
|
+
//#region src/operations/fetch-organization-alert-rules.operation.ts
|
|
3928
|
+
const fetchOrganizationAlertRulesOperation = defineSentryEndpoint(fetchOrganizationAlertRulesDefinition, sentryCredentialSet);
|
|
3929
|
+
|
|
3930
|
+
//#endregion
|
|
3931
|
+
//#region src/operations/fetch-organization-release-threshold-statuses.operation.ts
|
|
3932
|
+
const fetchOrganizationReleaseThresholdStatusesOperation = defineSentryEndpoint(fetchOrganizationReleaseThresholdStatusesDefinition, sentryCredentialSet);
|
|
3933
|
+
|
|
3934
|
+
//#endregion
|
|
3935
|
+
//#region src/operations/fetch-organization-replay-count.operation.ts
|
|
3936
|
+
const fetchOrganizationReplayCountOperation = defineSentryEndpoint(fetchOrganizationReplayCountDefinition, sentryCredentialSet);
|
|
3937
|
+
|
|
3938
|
+
//#endregion
|
|
3939
|
+
//#region src/operations/fetch-organization-replay-details.operation.ts
|
|
3940
|
+
const fetchOrganizationReplayDetailsOperation = defineSentryEndpoint(fetchOrganizationReplayDetailsDefinition, sentryCredentialSet);
|
|
3941
|
+
|
|
3942
|
+
//#endregion
|
|
3943
|
+
//#region src/operations/fetch-organization-replay-selectors.operation.ts
|
|
3944
|
+
const fetchOrganizationReplaySelectorsOperation = defineSentryEndpoint(fetchOrganizationReplaySelectorsDefinition, sentryCredentialSet);
|
|
3945
|
+
|
|
3946
|
+
//#endregion
|
|
3947
|
+
//#region src/utils/environments-endpoints.ts
|
|
3948
|
+
/**
|
|
3949
|
+
* Sentry environment operations. Maps to PLAN.md §6.10 (3 actions).
|
|
3950
|
+
*/
|
|
3951
|
+
const ORG_PROJECT$1 = [{
|
|
3952
|
+
name: "organization_slug",
|
|
3953
|
+
placeholder: "{organization_slug}"
|
|
3954
|
+
}, {
|
|
3955
|
+
name: "project_slug",
|
|
3956
|
+
placeholder: "{project_slug}"
|
|
3957
|
+
}];
|
|
3958
|
+
const ORG_PROJECT_ENV = [...ORG_PROJECT$1, {
|
|
3959
|
+
name: "environment",
|
|
3960
|
+
placeholder: "{environment}"
|
|
3961
|
+
}];
|
|
3962
|
+
const retrieveProjectEnvironmentsDefinition = {
|
|
3963
|
+
id: "sentry.retrieve-project-environments",
|
|
3964
|
+
name: "Retrieve Project Environments",
|
|
3965
|
+
description: "List the environments associated with a project.",
|
|
3966
|
+
method: "GET",
|
|
3967
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/environments/",
|
|
3968
|
+
pathParams: ORG_PROJECT$1,
|
|
3969
|
+
input: orgProjectScopeInputSchema.extend({ visibility: z.enum([
|
|
3970
|
+
"visible",
|
|
3971
|
+
"hidden",
|
|
3972
|
+
"all"
|
|
3973
|
+
]).optional() }),
|
|
3974
|
+
queryFields: ["visibility"],
|
|
3975
|
+
output: z.array(sentryEnvironmentSchema),
|
|
3976
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectRead]
|
|
3977
|
+
};
|
|
3978
|
+
const fetchProjectEnvironmentDetailsDefinition = {
|
|
3979
|
+
id: "sentry.fetch-project-environment-details",
|
|
3980
|
+
name: "Fetch Project Environment Details",
|
|
3981
|
+
description: "Fetch details for one project environment by name.",
|
|
3982
|
+
method: "GET",
|
|
3983
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/environments/{environment}/",
|
|
3984
|
+
pathParams: ORG_PROJECT_ENV,
|
|
3985
|
+
input: orgProjectScopeInputSchema.extend({ environment: z.string().min(1) }),
|
|
3986
|
+
output: sentryEnvironmentSchema,
|
|
3987
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectRead]
|
|
3988
|
+
};
|
|
3989
|
+
const updateEnvironmentVisibilityDefinition = {
|
|
3990
|
+
id: "sentry.update-environment-visibility",
|
|
3991
|
+
name: "Update Environment Visibility",
|
|
3992
|
+
description: "Toggle the `isHidden` flag for a project environment.",
|
|
3993
|
+
method: "PUT",
|
|
3994
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/environments/{environment}/",
|
|
3995
|
+
pathParams: ORG_PROJECT_ENV,
|
|
3996
|
+
input: orgProjectScopeInputSchema.extend({
|
|
3997
|
+
environment: z.string().min(1),
|
|
3998
|
+
isHidden: z.boolean()
|
|
3999
|
+
}),
|
|
4000
|
+
bodyFields: ["isHidden"],
|
|
4001
|
+
output: sentryEnvironmentSchema,
|
|
4002
|
+
needsApproval: true,
|
|
4003
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectWrite]
|
|
4004
|
+
};
|
|
4005
|
+
|
|
4006
|
+
//#endregion
|
|
4007
|
+
//#region src/operations/fetch-project-environment-details.operation.ts
|
|
4008
|
+
const fetchProjectEnvironmentDetailsOperation = defineSentryEndpoint(fetchProjectEnvironmentDetailsDefinition, sentryCredentialSet);
|
|
4009
|
+
|
|
4010
|
+
//#endregion
|
|
4011
|
+
//#region src/operations/fetch-project-ownership-details.operation.ts
|
|
4012
|
+
const fetchProjectOwnershipDetailsOperation = defineSentryEndpoint(fetchProjectOwnershipDetailsDefinition, sentryCredentialSet);
|
|
4013
|
+
|
|
4014
|
+
//#endregion
|
|
4015
|
+
//#region src/operations/fetch-project-release-files.operation.ts
|
|
4016
|
+
const fetchProjectReleaseFilesOperation = defineSentryEndpoint(fetchProjectReleaseFilesDefinition, sentryCredentialSet);
|
|
4017
|
+
|
|
4018
|
+
//#endregion
|
|
4019
|
+
//#region src/operations/fetch-project-replay-clicks.operation.ts
|
|
4020
|
+
const fetchProjectReplayClicksOperation = defineSentryEndpoint(fetchProjectReplayClicksDefinition, sentryCredentialSet);
|
|
4021
|
+
|
|
4022
|
+
//#endregion
|
|
4023
|
+
//#region src/operations/fetch-replay-recording-segment.operation.ts
|
|
4024
|
+
const fetchReplayRecordingSegmentOperation = defineSentryEndpoint(fetchReplayRecordingSegmentDefinition, sentryCredentialSet);
|
|
4025
|
+
|
|
4026
|
+
//#endregion
|
|
4027
|
+
//#region src/operations/fetch-tag-values-for-issue.operation.ts
|
|
4028
|
+
const fetchTagValuesForIssueOperation = defineSentryEndpoint(fetchTagValuesForIssueDefinition, sentryCredentialSet);
|
|
4029
|
+
|
|
4030
|
+
//#endregion
|
|
4031
|
+
//#region src/operations/get-activation-of-alert-rule-for-organization.operation.ts
|
|
4032
|
+
const getActivationOfAlertRuleForOrganizationOperation = defineSentryEndpoint(getActivationOfAlertRuleForOrganizationDefinition, sentryCredentialSet);
|
|
4033
|
+
|
|
4034
|
+
//#endregion
|
|
4035
|
+
//#region src/operations/get-integration-details-by-org.operation.ts
|
|
4036
|
+
const getIntegrationDetailsByOrgOperation = defineSentryEndpoint(getIntegrationDetailsByOrgDefinition, sentryCredentialSet);
|
|
4037
|
+
|
|
4038
|
+
//#endregion
|
|
4039
|
+
//#region src/operations/get-organization-by-id-or-slug.operation.ts
|
|
4040
|
+
const getOrganizationByIdOrSlugOperation = defineSentryEndpoint(getOrganizationByIdOrSlugDefinition, sentryCredentialSet);
|
|
4041
|
+
|
|
4042
|
+
//#endregion
|
|
4043
|
+
//#region src/operations/get-organization-details.operation.ts
|
|
4044
|
+
const getOrganizationDetailsOperation = defineSentryEndpoint(getOrganizationDetailsDefinition, sentryCredentialSet);
|
|
4045
|
+
|
|
4046
|
+
//#endregion
|
|
4047
|
+
//#region src/operations/get-organization-environments.operation.ts
|
|
4048
|
+
const getOrganizationEnvironmentsOperation = defineSentryEndpoint(getOrganizationEnvironmentsDefinition, sentryCredentialSet);
|
|
4049
|
+
|
|
4050
|
+
//#endregion
|
|
4051
|
+
//#region src/operations/get-organization-issue-details.operation.ts
|
|
4052
|
+
const getOrganizationIssueDetailsOperation = defineSentryEndpoint(getOrganizationIssueDetailsDefinition, sentryCredentialSet);
|
|
4053
|
+
|
|
4054
|
+
//#endregion
|
|
4055
|
+
//#region src/operations/get-organization-monitor-by-id-or-slug.operation.ts
|
|
4056
|
+
const getOrganizationMonitorByIdOrSlugOperation = defineSentryEndpoint(getOrganizationMonitorByIdOrSlugDefinition, sentryCredentialSet);
|
|
4057
|
+
|
|
4058
|
+
//#endregion
|
|
4059
|
+
//#region src/operations/get-organization-release-version.operation.ts
|
|
4060
|
+
const getOrganizationReleaseVersionOperation = defineSentryEndpoint(getOrganizationReleaseVersionDefinition, sentryCredentialSet);
|
|
4061
|
+
|
|
4062
|
+
//#endregion
|
|
4063
|
+
//#region src/operations/get-organization-sessions.operation.ts
|
|
4064
|
+
const getOrganizationSessionsOperation = defineSentryEndpoint(getOrganizationSessionsDefinition, sentryCredentialSet);
|
|
4065
|
+
|
|
4066
|
+
//#endregion
|
|
4067
|
+
//#region src/operations/get-organization-stats-summary.operation.ts
|
|
4068
|
+
const getOrganizationStatsSummaryOperation = defineSentryEndpoint(getOrganizationStatsSummaryDefinition, sentryCredentialSet);
|
|
4069
|
+
|
|
4070
|
+
//#endregion
|
|
4071
|
+
//#region src/operations/get-project-event-stats.operation.ts
|
|
4072
|
+
const getProjectEventStatsOperation = defineSentryEndpoint(getProjectEventStatsDefinition, sentryCredentialSet);
|
|
4073
|
+
|
|
4074
|
+
//#endregion
|
|
4075
|
+
//#region src/operations/get-project-events.operation.ts
|
|
4076
|
+
const getProjectEventsOperation = defineSentryEndpoint(getProjectEventsDefinition, sentryCredentialSet);
|
|
4077
|
+
|
|
4078
|
+
//#endregion
|
|
4079
|
+
//#region src/operations/get-project-hook.operation.ts
|
|
4080
|
+
const getProjectHookOperation = defineSentryEndpoint(getProjectHookDefinition, sentryCredentialSet);
|
|
4081
|
+
|
|
4082
|
+
//#endregion
|
|
4083
|
+
//#region src/operations/get-project-list.operation.ts
|
|
4084
|
+
const getProjectListOperation = defineSentryEndpoint(getProjectListDefinition, sentryCredentialSet);
|
|
4085
|
+
|
|
4086
|
+
//#endregion
|
|
4087
|
+
//#region src/operations/get-project-monitor-by-id.operation.ts
|
|
4088
|
+
const getProjectMonitorByIdOperation = defineSentryEndpoint(getProjectMonitorByIdDefinition, sentryCredentialSet);
|
|
4089
|
+
|
|
4090
|
+
//#endregion
|
|
4091
|
+
//#region src/operations/get-project-rule-details.operation.ts
|
|
4092
|
+
const getProjectRuleDetailsOperation = defineSentryEndpoint(getProjectRuleDetailsDefinition, sentryCredentialSet);
|
|
4093
|
+
|
|
4094
|
+
//#endregion
|
|
4095
|
+
//#region src/operations/get-scim-group-by-team-id.operation.ts
|
|
4096
|
+
const getScimGroupByTeamIdOperation = defineSentryEndpoint(getScimGroupByTeamIdDefinition, sentryCredentialSet);
|
|
4097
|
+
|
|
4098
|
+
//#endregion
|
|
4099
|
+
//#region src/operations/get-sentry-app-installations-for-organization.operation.ts
|
|
4100
|
+
const getSentryAppInstallationsForOrganizationOperation = defineSentryEndpoint(getSentryAppInstallationsForOrganizationDefinition, sentryCredentialSet);
|
|
4101
|
+
|
|
4102
|
+
//#endregion
|
|
4103
|
+
//#region src/operations/get-team-members-by-id-or-slug.operation.ts
|
|
4104
|
+
const getTeamMembersByIdOrSlugOperation = defineSentryEndpoint(getTeamMembersByIdOrSlugDefinition, sentryCredentialSet);
|
|
4105
|
+
|
|
4106
|
+
//#endregion
|
|
4107
|
+
//#region src/operations/get-who-viewed-replay-by-project.operation.ts
|
|
4108
|
+
const getWhoViewedReplayByProjectOperation = defineSentryEndpoint(getWhoViewedReplayByProjectDefinition, sentryCredentialSet);
|
|
4109
|
+
|
|
4110
|
+
//#endregion
|
|
4111
|
+
//#region src/operations/list-organization-dashboards.operation.ts
|
|
4112
|
+
const listOrganizationDashboardsOperation = defineSentryEndpoint(listOrganizationDashboardsDefinition, sentryCredentialSet);
|
|
4113
|
+
|
|
4114
|
+
//#endregion
|
|
4115
|
+
//#region src/operations/list-organization-members.operation.ts
|
|
4116
|
+
const listOrganizationMembersOperation = defineSentryEndpoint(listOrganizationMembersDefinition, sentryCredentialSet);
|
|
4117
|
+
|
|
4118
|
+
//#endregion
|
|
4119
|
+
//#region src/operations/list-organization-releases.operation.ts
|
|
4120
|
+
const listOrganizationReleasesOperation = defineSentryEndpoint(listOrganizationReleasesDefinition, sentryCredentialSet);
|
|
4121
|
+
|
|
4122
|
+
//#endregion
|
|
4123
|
+
//#region src/operations/list-organization-repositories.operation.ts
|
|
4124
|
+
const listOrganizationRepositoriesOperation = defineSentryEndpoint(listOrganizationRepositoriesDefinition, sentryCredentialSet);
|
|
4125
|
+
|
|
4126
|
+
//#endregion
|
|
4127
|
+
//#region src/operations/list-organization-user-teams.operation.ts
|
|
4128
|
+
const listOrganizationUserTeamsOperation = defineSentryEndpoint(listOrganizationUserTeamsDefinition, sentryCredentialSet);
|
|
4129
|
+
|
|
4130
|
+
//#endregion
|
|
4131
|
+
//#region src/operations/list-project-users.operation.ts
|
|
4132
|
+
const listProjectUsersOperation = defineSentryEndpoint(listProjectUsersDefinition, sentryCredentialSet);
|
|
4133
|
+
|
|
4134
|
+
//#endregion
|
|
4135
|
+
//#region src/operations/list-scim-v2-organization-users.operation.ts
|
|
4136
|
+
const listScimV2OrganizationUsersOperation = defineSentryEndpoint(listScimV2OrganizationUsersDefinition, sentryCredentialSet);
|
|
4137
|
+
|
|
4138
|
+
//#endregion
|
|
4139
|
+
//#region src/operations/list-teams-in-organization.operation.ts
|
|
4140
|
+
const listTeamsInOrganizationOperation = defineSentryEndpoint(listTeamsInOrganizationDefinition, sentryCredentialSet);
|
|
4141
|
+
|
|
4142
|
+
//#endregion
|
|
4143
|
+
//#region src/operations/manage-team-external-integrations.operation.ts
|
|
4144
|
+
const manageTeamExternalIntegrationsOperation = defineSentryEndpoint(manageTeamExternalIntegrationsDefinition, sentryCredentialSet);
|
|
4145
|
+
|
|
4146
|
+
//#endregion
|
|
4147
|
+
//#region src/operations/modify-organization-monitor-data.operation.ts
|
|
4148
|
+
const modifyOrganizationMonitorDataOperation = defineSentryEndpoint(modifyOrganizationMonitorDataDefinition, sentryCredentialSet);
|
|
4149
|
+
|
|
4150
|
+
//#endregion
|
|
4151
|
+
//#region src/operations/modify-organization-notification-action.operation.ts
|
|
4152
|
+
const modifyOrganizationNotificationActionOperation = defineSentryEndpoint(modifyOrganizationNotificationActionDefinition, sentryCredentialSet);
|
|
4153
|
+
|
|
4154
|
+
//#endregion
|
|
4155
|
+
//#region src/operations/modify-organization-settings.operation.ts
|
|
4156
|
+
const modifyOrganizationSettingsOperation = defineSentryEndpoint(modifyOrganizationSettingsDefinition, sentryCredentialSet);
|
|
4157
|
+
|
|
4158
|
+
//#endregion
|
|
4159
|
+
//#region src/operations/modify-release-file-attributes.operation.ts
|
|
4160
|
+
const modifyReleaseFileAttributesOperation = defineSentryEndpoint(modifyReleaseFileAttributesDefinition, sentryCredentialSet);
|
|
4161
|
+
|
|
4162
|
+
//#endregion
|
|
4163
|
+
//#region src/operations/patch-scim-group-operations.operation.ts
|
|
4164
|
+
const patchScimGroupOperationsOperation = defineSentryEndpoint(patchScimGroupOperationsDefinition, sentryCredentialSet);
|
|
4165
|
+
|
|
4166
|
+
//#endregion
|
|
4167
|
+
//#region src/operations/patch-user-active-status-in-organization.operation.ts
|
|
4168
|
+
const patchUserActiveStatusInOrganizationOperation = defineSentryEndpoint(patchUserActiveStatusInOrganizationDefinition, sentryCredentialSet);
|
|
4169
|
+
|
|
4170
|
+
//#endregion
|
|
4171
|
+
//#region src/operations/post-project-symbol-sources.operation.ts
|
|
4172
|
+
const postProjectSymbolSourcesOperation = defineSentryEndpoint(postProjectSymbolSourcesDefinition, sentryCredentialSet);
|
|
4173
|
+
|
|
4174
|
+
//#endregion
|
|
4175
|
+
//#region src/operations/post-spike-protection-for-organization.operation.ts
|
|
4176
|
+
const postSpikeProtectionForOrganizationOperation = defineSentryEndpoint(postSpikeProtectionForOrganizationDefinition, sentryCredentialSet);
|
|
4177
|
+
|
|
4178
|
+
//#endregion
|
|
4179
|
+
//#region src/operations/retrieve-alert-rule-details.operation.ts
|
|
4180
|
+
const retrieveAlertRuleDetailsOperation = defineSentryEndpoint(retrieveAlertRuleDetailsDefinition, sentryCredentialSet);
|
|
4181
|
+
|
|
4182
|
+
//#endregion
|
|
4183
|
+
//#region src/operations/retrieve-commit-files-for-release.operation.ts
|
|
4184
|
+
const retrieveCommitFilesForReleaseOperation = defineSentryEndpoint(retrieveCommitFilesForReleaseDefinition, sentryCredentialSet);
|
|
4185
|
+
|
|
4186
|
+
//#endregion
|
|
4187
|
+
//#region src/operations/retrieve-commits-for-organization-repo.operation.ts
|
|
4188
|
+
const retrieveCommitsForOrganizationRepoOperation = defineSentryEndpoint(retrieveCommitsForOrganizationRepoDefinition, sentryCredentialSet);
|
|
4189
|
+
|
|
4190
|
+
//#endregion
|
|
4191
|
+
//#region src/operations/retrieve-dsym-files-for-project.operation.ts
|
|
4192
|
+
const retrieveDsymFilesForProjectOperation = defineSentryEndpoint(retrieveDsymFilesForProjectDefinition, sentryCredentialSet);
|
|
4193
|
+
|
|
4194
|
+
//#endregion
|
|
4195
|
+
//#region src/operations/retrieve-event-id-for-organization.operation.ts
|
|
4196
|
+
const retrieveEventIdForOrganizationOperation = defineSentryEndpoint(retrieveEventIdForOrganizationDefinition, sentryCredentialSet);
|
|
4197
|
+
|
|
4198
|
+
//#endregion
|
|
4199
|
+
//#region src/operations/retrieve-files-for-release.operation.ts
|
|
4200
|
+
const retrieveFilesForReleaseOperation = defineSentryEndpoint(retrieveFilesForReleaseDefinition, sentryCredentialSet);
|
|
4201
|
+
|
|
4202
|
+
//#endregion
|
|
4203
|
+
//#region src/operations/retrieve-issue-events-by-id.operation.ts
|
|
4204
|
+
const retrieveIssueEventsByIdOperation = defineSentryEndpoint(retrieveIssueEventsByIdDefinition, sentryCredentialSet);
|
|
4205
|
+
|
|
4206
|
+
//#endregion
|
|
4207
|
+
//#region src/operations/retrieve-issue-hashes-for-organization.operation.ts
|
|
4208
|
+
const retrieveIssueHashesForOrganizationOperation = defineSentryEndpoint(retrieveIssueHashesForOrganizationDefinition, sentryCredentialSet);
|
|
4209
|
+
|
|
4210
|
+
//#endregion
|
|
4211
|
+
//#region src/operations/retrieve-issue-tag-details.operation.ts
|
|
4212
|
+
const retrieveIssueTagDetailsOperation = defineSentryEndpoint(retrieveIssueTagDetailsDefinition, sentryCredentialSet);
|
|
4213
|
+
|
|
4214
|
+
//#endregion
|
|
4215
|
+
//#region src/operations/retrieve-monitor-checkins.operation.ts
|
|
4216
|
+
const retrieveMonitorCheckinsOperation = defineSentryEndpoint(retrieveMonitorCheckinsDefinition, sentryCredentialSet);
|
|
4217
|
+
|
|
4218
|
+
//#endregion
|
|
4219
|
+
//#region src/operations/retrieve-monitor-checkins-by-org.operation.ts
|
|
4220
|
+
const retrieveMonitorCheckinsByOrgOperation = defineSentryEndpoint(retrieveMonitorCheckinsByOrgDefinition, sentryCredentialSet);
|
|
4221
|
+
|
|
4222
|
+
//#endregion
|
|
4223
|
+
//#region src/operations/retrieve-notification-action-by-org-id.operation.ts
|
|
4224
|
+
const retrieveNotificationActionByOrgIdOperation = defineSentryEndpoint(retrieveNotificationActionByOrgIdDefinition, sentryCredentialSet);
|
|
4225
|
+
|
|
4226
|
+
//#endregion
|
|
4227
|
+
//#region src/operations/retrieve-org-integration-config.operation.ts
|
|
4228
|
+
const retrieveOrgIntegrationConfigOperation = defineSentryEndpoint(retrieveOrgIntegrationConfigDefinition, sentryCredentialSet);
|
|
4229
|
+
|
|
4230
|
+
//#endregion
|
|
4231
|
+
//#region src/operations/retrieve-organization-dashboard.operation.ts
|
|
4232
|
+
const retrieveOrganizationDashboardOperation = defineSentryEndpoint(retrieveOrganizationDashboardDefinition, sentryCredentialSet);
|
|
4233
|
+
|
|
4234
|
+
//#endregion
|
|
4235
|
+
//#region src/operations/retrieve-organization-events.operation.ts
|
|
4236
|
+
const retrieveOrganizationEventsOperation = defineSentryEndpoint(retrieveOrganizationEventsDefinition, sentryCredentialSet);
|
|
4237
|
+
|
|
4238
|
+
//#endregion
|
|
4239
|
+
//#region src/operations/retrieve-organization-integrations-list.operation.ts
|
|
4240
|
+
const retrieveOrganizationIntegrationsListOperation = defineSentryEndpoint(retrieveOrganizationIntegrationsListDefinition, sentryCredentialSet);
|
|
4241
|
+
|
|
4242
|
+
//#endregion
|
|
4243
|
+
//#region src/operations/retrieve-organization-member.operation.ts
|
|
4244
|
+
const retrieveOrganizationMemberOperation = defineSentryEndpoint(retrieveOrganizationMemberDefinition, sentryCredentialSet);
|
|
4245
|
+
|
|
4246
|
+
//#endregion
|
|
4247
|
+
//#region src/operations/retrieve-organization-monitors.operation.ts
|
|
4248
|
+
const retrieveOrganizationMonitorsOperation = defineSentryEndpoint(retrieveOrganizationMonitorsDefinition, sentryCredentialSet);
|
|
4249
|
+
|
|
4250
|
+
//#endregion
|
|
4251
|
+
//#region src/operations/retrieve-organization-projects.operation.ts
|
|
4252
|
+
const retrieveOrganizationProjectsOperation = defineSentryEndpoint(retrieveOrganizationProjectsDefinition, sentryCredentialSet);
|
|
4253
|
+
|
|
4254
|
+
//#endregion
|
|
4255
|
+
//#region src/operations/retrieve-organization-relay-usage.operation.ts
|
|
4256
|
+
const retrieveOrganizationRelayUsageOperation = defineSentryEndpoint(retrieveOrganizationRelayUsageDefinition, sentryCredentialSet);
|
|
4257
|
+
|
|
4258
|
+
//#endregion
|
|
4259
|
+
//#region src/operations/retrieve-organization-release-commits.operation.ts
|
|
4260
|
+
const retrieveOrganizationReleaseCommitsOperation = defineSentryEndpoint(retrieveOrganizationReleaseCommitsDefinition, sentryCredentialSet);
|
|
4261
|
+
|
|
4262
|
+
//#endregion
|
|
4263
|
+
//#region src/operations/retrieve-organization-replays.operation.ts
|
|
4264
|
+
const retrieveOrganizationReplaysOperation = defineSentryEndpoint(retrieveOrganizationReplaysDefinition, sentryCredentialSet);
|
|
4265
|
+
|
|
4266
|
+
//#endregion
|
|
4267
|
+
//#region src/operations/retrieve-organization-scim-groups.operation.ts
|
|
4268
|
+
const retrieveOrganizationScimGroupsOperation = defineSentryEndpoint(retrieveOrganizationScimGroupsDefinition, sentryCredentialSet);
|
|
4269
|
+
|
|
4270
|
+
//#endregion
|
|
4271
|
+
//#region src/operations/retrieve-organization-stats-v2.operation.ts
|
|
4272
|
+
const retrieveOrganizationStatsV2Operation = defineSentryEndpoint(retrieveOrganizationStatsV2Definition, sentryCredentialSet);
|
|
4273
|
+
|
|
4274
|
+
//#endregion
|
|
4275
|
+
//#region src/operations/retrieve-project-environments.operation.ts
|
|
4276
|
+
const retrieveProjectEnvironmentsOperation = defineSentryEndpoint(retrieveProjectEnvironmentsDefinition, sentryCredentialSet);
|
|
4277
|
+
|
|
4278
|
+
//#endregion
|
|
4279
|
+
//#region src/operations/retrieve-project-event-by-id.operation.ts
|
|
4280
|
+
const retrieveProjectEventByIdOperation = defineSentryEndpoint(retrieveProjectEventByIdDefinition, sentryCredentialSet);
|
|
4281
|
+
|
|
4282
|
+
//#endregion
|
|
4283
|
+
//#region src/operations/retrieve-project-filter-data.operation.ts
|
|
4284
|
+
const retrieveProjectFilterDataOperation = defineSentryEndpoint(retrieveProjectFilterDataDefinition, sentryCredentialSet);
|
|
4285
|
+
|
|
4286
|
+
//#endregion
|
|
4287
|
+
//#region src/operations/retrieve-project-hooks.operation.ts
|
|
4288
|
+
const retrieveProjectHooksOperation = defineSentryEndpoint(retrieveProjectHooksDefinition, sentryCredentialSet);
|
|
4289
|
+
|
|
4290
|
+
//#endregion
|
|
4291
|
+
//#region src/operations/retrieve-project-issues-list.operation.ts
|
|
4292
|
+
const retrieveProjectIssuesListOperation = defineSentryEndpoint(retrieveProjectIssuesListDefinition, sentryCredentialSet);
|
|
4293
|
+
|
|
4294
|
+
//#endregion
|
|
4295
|
+
//#region src/operations/retrieve-project-key-details.operation.ts
|
|
4296
|
+
const retrieveProjectKeyDetailsOperation = defineSentryEndpoint(retrieveProjectKeyDetailsDefinition, sentryCredentialSet);
|
|
4297
|
+
|
|
4298
|
+
//#endregion
|
|
4299
|
+
//#region src/operations/retrieve-project-keys-by-org-and-project.operation.ts
|
|
4300
|
+
const retrieveProjectKeysByOrgAndProjectOperation = defineSentryEndpoint(retrieveProjectKeysByOrgAndProjectDefinition, sentryCredentialSet);
|
|
4301
|
+
|
|
4302
|
+
//#endregion
|
|
4303
|
+
//#region src/operations/retrieve-project-members-list.operation.ts
|
|
4304
|
+
const retrieveProjectMembersListOperation = defineSentryEndpoint(retrieveProjectMembersListDefinition, sentryCredentialSet);
|
|
4305
|
+
|
|
4306
|
+
//#endregion
|
|
4307
|
+
//#region src/operations/retrieve-project-release-file-details.operation.ts
|
|
4308
|
+
const retrieveProjectReleaseFileDetailsOperation = defineSentryEndpoint(retrieveProjectReleaseFileDetailsDefinition, sentryCredentialSet);
|
|
4309
|
+
|
|
4310
|
+
//#endregion
|
|
4311
|
+
//#region src/operations/retrieve-project-rules-by-org-and-project-id.operation.ts
|
|
4312
|
+
const retrieveProjectRulesByOrgAndProjectIdOperation = defineSentryEndpoint(retrieveProjectRulesByOrgAndProjectIdDefinition, sentryCredentialSet);
|
|
4313
|
+
|
|
4314
|
+
//#endregion
|
|
4315
|
+
//#region src/operations/retrieve-project-symbol-sources.operation.ts
|
|
4316
|
+
const retrieveProjectSymbolSourcesOperation = defineSentryEndpoint(retrieveProjectSymbolSourcesDefinition, sentryCredentialSet);
|
|
4317
|
+
|
|
4318
|
+
//#endregion
|
|
4319
|
+
//#region src/operations/retrieve-project-tag-values.operation.ts
|
|
4320
|
+
const retrieveProjectTagValuesOperation = defineSentryEndpoint(retrieveProjectTagValuesDefinition, sentryCredentialSet);
|
|
4321
|
+
|
|
4322
|
+
//#endregion
|
|
4323
|
+
//#region src/operations/retrieve-project-teams.operation.ts
|
|
4324
|
+
const retrieveProjectTeamsOperation = defineSentryEndpoint(retrieveProjectTeamsDefinition, sentryCredentialSet);
|
|
4325
|
+
|
|
4326
|
+
//#endregion
|
|
4327
|
+
//#region src/operations/retrieve-release-commits.operation.ts
|
|
4328
|
+
const retrieveReleaseCommitsOperation = defineSentryEndpoint(retrieveReleaseCommitsDefinition, sentryCredentialSet);
|
|
4329
|
+
|
|
4330
|
+
//#endregion
|
|
4331
|
+
//#region src/operations/retrieve-release-deployments.operation.ts
|
|
4332
|
+
const retrieveReleaseDeploymentsOperation = defineSentryEndpoint(retrieveReleaseDeploymentsDefinition, sentryCredentialSet);
|
|
4333
|
+
|
|
4334
|
+
//#endregion
|
|
4335
|
+
//#region src/operations/retrieve-release-file-by-id.operation.ts
|
|
4336
|
+
const retrieveReleaseFileByIdOperation = defineSentryEndpoint(retrieveReleaseFileByIdDefinition, sentryCredentialSet);
|
|
4337
|
+
|
|
4338
|
+
//#endregion
|
|
4339
|
+
//#region src/operations/retrieve-replay-recording-segments.operation.ts
|
|
4340
|
+
const retrieveReplayRecordingSegmentsOperation = defineSentryEndpoint(retrieveReplayRecordingSegmentsDefinition, sentryCredentialSet);
|
|
4341
|
+
|
|
4342
|
+
//#endregion
|
|
4343
|
+
//#region src/operations/retrieve-saved-discover-queries.operation.ts
|
|
4344
|
+
const retrieveSavedDiscoverQueriesOperation = defineSentryEndpoint(retrieveSavedDiscoverQueriesDefinition, sentryCredentialSet);
|
|
4345
|
+
|
|
4346
|
+
//#endregion
|
|
4347
|
+
//#region src/operations/retrieve-saved-discover-query-for-organization.operation.ts
|
|
4348
|
+
const retrieveSavedDiscoverQueryForOrganizationOperation = defineSentryEndpoint(retrieveSavedDiscoverQueryForOrganizationDefinition, sentryCredentialSet);
|
|
4349
|
+
|
|
4350
|
+
//#endregion
|
|
4351
|
+
//#region src/operations/retrieve-short-id-for-organization.operation.ts
|
|
4352
|
+
const retrieveShortIdForOrganizationOperation = defineSentryEndpoint(retrieveShortIdForOrganizationDefinition, sentryCredentialSet);
|
|
4353
|
+
|
|
4354
|
+
//#endregion
|
|
4355
|
+
//#region src/operations/retrieve-source-map-debug-event.operation.ts
|
|
4356
|
+
const retrieveSourceMapDebugEventOperation = defineSentryEndpoint(retrieveSourceMapDebugEventDefinition, sentryCredentialSet);
|
|
4357
|
+
|
|
4358
|
+
//#endregion
|
|
4359
|
+
//#region src/operations/retrieve-team-info-via-organization-id-or-slug.operation.ts
|
|
4360
|
+
const retrieveTeamInfoViaOrganizationIdOrSlugOperation = defineSentryEndpoint(retrieveTeamInfoViaOrganizationIdOrSlugDefinition, sentryCredentialSet);
|
|
4361
|
+
|
|
4362
|
+
//#endregion
|
|
4363
|
+
//#region src/operations/retrieve-team-projects.operation.ts
|
|
4364
|
+
const retrieveTeamProjectsOperation = defineSentryEndpoint(retrieveTeamProjectsDefinition, sentryCredentialSet);
|
|
4365
|
+
|
|
4366
|
+
//#endregion
|
|
4367
|
+
//#region src/operations/retrieve-user-email-information.operation.ts
|
|
4368
|
+
const retrieveUserEmailInformationOperation = defineSentryEndpoint(retrieveUserEmailInformationDefinition, sentryCredentialSet);
|
|
4369
|
+
|
|
4370
|
+
//#endregion
|
|
4371
|
+
//#region src/utils/feedback-endpoints.ts
|
|
4372
|
+
/**
|
|
4373
|
+
* Sentry user-feedback operations. Maps to PLAN.md §6.18 (2 actions).
|
|
4374
|
+
*/
|
|
4375
|
+
const ORG_PROJECT = [{
|
|
4376
|
+
name: "organization_slug",
|
|
4377
|
+
placeholder: "{organization_slug}"
|
|
4378
|
+
}, {
|
|
4379
|
+
name: "project_slug",
|
|
4380
|
+
placeholder: "{project_slug}"
|
|
4381
|
+
}];
|
|
4382
|
+
const retrieveUserFeedbackForProjectDefinition = {
|
|
4383
|
+
id: "sentry.retrieve-user-feedback-for-project",
|
|
4384
|
+
name: "List User Feedback",
|
|
4385
|
+
description: "List user feedback submissions for a project.",
|
|
4386
|
+
method: "GET",
|
|
4387
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/user-feedback/",
|
|
4388
|
+
pathParams: ORG_PROJECT,
|
|
4389
|
+
input: sentryListInputSchema.merge(orgProjectScopeInputSchema),
|
|
4390
|
+
queryFields: [
|
|
4391
|
+
"cursor",
|
|
4392
|
+
"per_page",
|
|
4393
|
+
"query"
|
|
4394
|
+
],
|
|
4395
|
+
output: z.array(sentryFeedbackSchema),
|
|
4396
|
+
pagination: "cursor",
|
|
4397
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectRead]
|
|
4398
|
+
};
|
|
4399
|
+
const submitProjectUserFeedbackDefinition = {
|
|
4400
|
+
id: "sentry.submit-project-user-feedback",
|
|
4401
|
+
name: "Submit User Feedback",
|
|
4402
|
+
description: "Submit a user-feedback record against an event.",
|
|
4403
|
+
method: "POST",
|
|
4404
|
+
path: "/api/0/projects/{organization_slug}/{project_slug}/user-feedback/",
|
|
4405
|
+
pathParams: ORG_PROJECT,
|
|
4406
|
+
input: orgProjectScopeInputSchema.extend({
|
|
4407
|
+
event_id: sentryIdSchema,
|
|
4408
|
+
name: z.string().min(1),
|
|
4409
|
+
email: z.string().email(),
|
|
4410
|
+
comments: z.string().min(1)
|
|
4411
|
+
}),
|
|
4412
|
+
bodyFields: [
|
|
4413
|
+
"event_id",
|
|
4414
|
+
"name",
|
|
4415
|
+
"email",
|
|
4416
|
+
"comments"
|
|
4417
|
+
],
|
|
4418
|
+
output: sentryFeedbackSchema,
|
|
4419
|
+
needsApproval: true,
|
|
4420
|
+
requiredOAuthScopes: [...SENTRY_SCOPE.projectWrite]
|
|
4421
|
+
};
|
|
4422
|
+
|
|
4423
|
+
//#endregion
|
|
4424
|
+
//#region src/operations/retrieve-user-feedback-for-project.operation.ts
|
|
4425
|
+
const retrieveUserFeedbackForProjectOperation = defineSentryEndpoint(retrieveUserFeedbackForProjectDefinition, sentryCredentialSet);
|
|
4426
|
+
|
|
4427
|
+
//#endregion
|
|
4428
|
+
//#region src/operations/retrieve-user-via-scim-api.operation.ts
|
|
4429
|
+
const retrieveUserViaScimApiOperation = defineSentryEndpoint(retrieveUserViaScimApiDefinition, sentryCredentialSet);
|
|
4430
|
+
|
|
4431
|
+
//#endregion
|
|
4432
|
+
//#region src/operations/save-organization-discover-query.operation.ts
|
|
4433
|
+
const saveOrganizationDiscoverQueryOperation = defineSentryEndpoint(saveOrganizationDiscoverQueryDefinition, sentryCredentialSet);
|
|
4434
|
+
|
|
4435
|
+
//#endregion
|
|
4436
|
+
//#region src/operations/submit-notification-action-api-data.operation.ts
|
|
4437
|
+
const submitNotificationActionApiDataOperation = defineSentryEndpoint(submitNotificationActionApiDataDefinition, sentryCredentialSet);
|
|
4438
|
+
|
|
4439
|
+
//#endregion
|
|
4440
|
+
//#region src/operations/submit-project-user-feedback.operation.ts
|
|
4441
|
+
const submitProjectUserFeedbackOperation = defineSentryEndpoint(submitProjectUserFeedbackDefinition, sentryCredentialSet);
|
|
4442
|
+
|
|
4443
|
+
//#endregion
|
|
4444
|
+
//#region src/operations/switch-team-role-for-member.operation.ts
|
|
4445
|
+
const switchTeamRoleForMemberOperation = defineSentryEndpoint(switchTeamRoleForMemberDefinition, sentryCredentialSet);
|
|
4446
|
+
|
|
4447
|
+
//#endregion
|
|
4448
|
+
//#region src/operations/toggle-project-filter-status.operation.ts
|
|
4449
|
+
const toggleProjectFilterStatusOperation = defineSentryEndpoint(toggleProjectFilterStatusDefinition, sentryCredentialSet);
|
|
4450
|
+
|
|
4451
|
+
//#endregion
|
|
4452
|
+
//#region src/operations/update-environment-visibility.operation.ts
|
|
4453
|
+
const updateEnvironmentVisibilityOperation = defineSentryEndpoint(updateEnvironmentVisibilityDefinition, sentryCredentialSet);
|
|
4454
|
+
|
|
4455
|
+
//#endregion
|
|
4456
|
+
//#region src/operations/update-external-team-integration.operation.ts
|
|
4457
|
+
const updateExternalTeamIntegrationOperation = defineSentryEndpoint(updateExternalTeamIntegrationDefinition, sentryCredentialSet);
|
|
4458
|
+
|
|
4459
|
+
//#endregion
|
|
4460
|
+
//#region src/operations/update-external-user-for-organization.operation.ts
|
|
4461
|
+
const updateExternalUserForOrganizationOperation = defineSentryEndpoint(updateExternalUserForOrganizationDefinition, sentryCredentialSet);
|
|
4462
|
+
|
|
4463
|
+
//#endregion
|
|
4464
|
+
//#region src/operations/update-issue-attributes-in-organization.operation.ts
|
|
4465
|
+
const updateIssueAttributesInOrganizationOperation = defineSentryEndpoint(updateIssueAttributesInOrganizationDefinition, sentryCredentialSet);
|
|
4466
|
+
|
|
4467
|
+
//#endregion
|
|
4468
|
+
//#region src/operations/update-organization-alert-rules.operation.ts
|
|
4469
|
+
const updateOrganizationAlertRulesOperation = defineSentryEndpoint(updateOrganizationAlertRulesDefinition, sentryCredentialSet);
|
|
4470
|
+
|
|
4471
|
+
//#endregion
|
|
4472
|
+
//#region src/operations/update-organization-dashboard.operation.ts
|
|
4473
|
+
const updateOrganizationDashboardOperation = defineSentryEndpoint(updateOrganizationDashboardDefinition, sentryCredentialSet);
|
|
4474
|
+
|
|
4475
|
+
//#endregion
|
|
4476
|
+
//#region src/operations/update-organization-member-role.operation.ts
|
|
4477
|
+
const updateOrganizationMemberRoleOperation = defineSentryEndpoint(updateOrganizationMemberRoleDefinition, sentryCredentialSet);
|
|
4478
|
+
|
|
4479
|
+
//#endregion
|
|
4480
|
+
//#region src/operations/update-project-details.operation.ts
|
|
4481
|
+
const updateProjectDetailsOperation = defineSentryEndpoint(updateProjectDetailsDefinition, sentryCredentialSet);
|
|
4482
|
+
|
|
4483
|
+
//#endregion
|
|
4484
|
+
//#region src/operations/update-project-issue-status-and-details.operation.ts
|
|
4485
|
+
const updateProjectIssueStatusAndDetailsOperation = defineSentryEndpoint(updateProjectIssueStatusAndDetailsDefinition, sentryCredentialSet);
|
|
4486
|
+
|
|
4487
|
+
//#endregion
|
|
4488
|
+
//#region src/operations/update-project-key-configuration.operation.ts
|
|
4489
|
+
const updateProjectKeyConfigurationOperation = defineSentryEndpoint(updateProjectKeyConfigurationDefinition, sentryCredentialSet);
|
|
4490
|
+
|
|
4491
|
+
//#endregion
|
|
4492
|
+
//#region src/operations/update-project-monitor.operation.ts
|
|
4493
|
+
const updateProjectMonitorOperation = defineSentryEndpoint(updateProjectMonitorDefinition, sentryCredentialSet);
|
|
4494
|
+
|
|
4495
|
+
//#endregion
|
|
4496
|
+
//#region src/operations/update-project-ownership-settings.operation.ts
|
|
4497
|
+
const updateProjectOwnershipSettingsOperation = defineSentryEndpoint(updateProjectOwnershipSettingsDefinition, sentryCredentialSet);
|
|
4498
|
+
|
|
4499
|
+
//#endregion
|
|
4500
|
+
//#region src/operations/update-project-release-file-details.operation.ts
|
|
4501
|
+
const updateProjectReleaseFileDetailsOperation = defineSentryEndpoint(updateProjectReleaseFileDetailsDefinition, sentryCredentialSet);
|
|
4502
|
+
|
|
4503
|
+
//#endregion
|
|
4504
|
+
//#region src/operations/update-project-rule-by-id.operation.ts
|
|
4505
|
+
const updateProjectRuleByIdOperation = defineSentryEndpoint(updateProjectRuleByIdDefinition, sentryCredentialSet);
|
|
4506
|
+
|
|
4507
|
+
//#endregion
|
|
4508
|
+
//#region src/operations/update-release-details-for-organization.operation.ts
|
|
4509
|
+
const updateReleaseDetailsForOrganizationOperation = defineSentryEndpoint(updateReleaseDetailsForOrganizationDefinition, sentryCredentialSet);
|
|
4510
|
+
|
|
4511
|
+
//#endregion
|
|
4512
|
+
//#region src/operations/update-saved-query-for-organization.operation.ts
|
|
4513
|
+
const updateSavedQueryForOrganizationOperation = defineSentryEndpoint(updateSavedQueryForOrganizationDefinition, sentryCredentialSet);
|
|
4514
|
+
|
|
4515
|
+
//#endregion
|
|
4516
|
+
//#region src/operations/update-symbol-source-settings.operation.ts
|
|
4517
|
+
const updateSymbolSourceSettingsOperation = defineSentryEndpoint(updateSymbolSourceSettingsDefinition, sentryCredentialSet);
|
|
4518
|
+
|
|
4519
|
+
//#endregion
|
|
4520
|
+
//#region src/operations/update-team-information-by-organization-id.operation.ts
|
|
4521
|
+
const updateTeamInformationByOrganizationIdOperation = defineSentryEndpoint(updateTeamInformationByOrganizationIdDefinition, sentryCredentialSet);
|
|
4522
|
+
|
|
4523
|
+
//#endregion
|
|
4524
|
+
//#region src/operations/update-user-email.operation.ts
|
|
4525
|
+
const updateUserEmailOperation = defineSentryEndpoint(updateUserEmailDefinition, sentryCredentialSet);
|
|
4526
|
+
|
|
4527
|
+
//#endregion
|
|
4528
|
+
//#region src/operations/update-webhook-configuration-xp.operation.ts
|
|
4529
|
+
const updateWebhookConfigurationXpOperation = defineSentryEndpoint(updateWebhookConfigurationDefinition, sentryCredentialSet);
|
|
4530
|
+
|
|
4531
|
+
//#endregion
|
|
4532
|
+
//#region src/operations/upload-dsyms-file-to-project.operation.ts
|
|
4533
|
+
const uploadDsymsFileToProjectOperation = defineSentryEndpoint(uploadDsymsFileToProjectDefinition, sentryCredentialSet);
|
|
4534
|
+
|
|
4535
|
+
//#endregion
|
|
4536
|
+
//#region src/operations/upload-file-to-project-release.operation.ts
|
|
4537
|
+
const uploadFileToProjectReleaseOperation = defineSentryEndpoint(uploadFileToProjectReleaseDefinition, sentryCredentialSet);
|
|
4538
|
+
|
|
4539
|
+
//#endregion
|
|
4540
|
+
//#region src/operations/upload-release-file-to-organization.operation.ts
|
|
4541
|
+
const uploadReleaseFileToOrganizationOperation = defineSentryEndpoint(uploadReleaseFileToOrganizationDefinition, sentryCredentialSet);
|
|
4542
|
+
|
|
4543
|
+
//#endregion
|
|
4544
|
+
//#region src/operations/view-organization-notification-actions.operation.ts
|
|
4545
|
+
const viewOrganizationNotificationActionsOperation = defineSentryEndpoint(viewOrganizationNotificationActionsDefinition, sentryCredentialSet);
|
|
4546
|
+
|
|
4547
|
+
//#endregion
|
|
4548
|
+
export { retrieveProjectFilterDataOperation as $, createScimGroupForOrganizationOperation as $n, getOrganizationStatsSummaryOperation as $t, retrieveUserViaScimApiOperation as A, deleteProjectReplayOperation as An, modifyReleaseFileAttributesOperation as At, retrieveReleaseFileByIdOperation as B, deleteOrganizationIntegrationOperation as Bn, listOrganizationReleasesOperation as Bt, updateExternalTeamIntegrationOperation as C, deleteTeamFromOrgScimV2Operation as Cn, retrieveCommitsForOrganizationRepoOperation as Ct, submitProjectUserFeedbackOperation as D, deleteProjectTeamAssociationOperation as Dn, postProjectSymbolSourcesOperation as Dt, switchTeamRoleForMemberOperation as E, deleteReleaseFileOperation as En, postSpikeProtectionForOrganizationOperation as Et, retrieveSourceMapDebugEventOperation as F, deleteProjectByIdOperation as Fn, listTeamsInOrganizationOperation as Ft, retrieveProjectSymbolSourcesOperation as G, deleteMemberFromTeamOperation as Gn, getSentryAppInstallationsForOrganizationOperation as Gt, retrieveReleaseCommitsOperation as H, deleteOrganizationDashboardOperation as Hn, listOrganizationDashboardsOperation as Ht, retrieveShortIdForOrganizationOperation as I, deleteOrganizationReleaseOperation as In, listScimV2OrganizationUsersOperation as It, retrieveProjectMembersListOperation as J, deleteExternalIssueByUuidOperation as Jn, getProjectMonitorByIdOperation as Jt, retrieveProjectRulesByOrgAndProjectIdOperation as K, deleteExternalUserFromOrganizationOperation as Kn, getScimGroupByTeamIdOperation as Kt, retrieveSavedDiscoverQueryForOrganizationOperation as L, deleteOrganizationMonitorOperation as Ln, listProjectUsersOperation as Lt, retrieveUserEmailInformationOperation as M, deleteProjectKeyOperation as Mn, modifyOrganizationNotificationActionOperation as Mt, retrieveTeamProjectsOperation as N, deleteProjectIssuesOperation as Nn, modifyOrganizationMonitorDataOperation as Nt, submitNotificationActionApiDataOperation as O, deleteProjectSymbolSourcesOperation as On, patchUserActiveStatusInOrganizationOperation as Ot, retrieveTeamInfoViaOrganizationIdOrSlugOperation as P, deleteProjectHookOperation as Pn, manageTeamExternalIntegrationsOperation as Pt, retrieveProjectHooksOperation as Q, createSentryExternalIssueLinkOperation as Qn, getProjectEventStatsOperation as Qt, retrieveSavedDiscoverQueriesOperation as R, deleteOrganizationMemberOperation as Rn, listOrganizationUserTeamsOperation as Rt, updateExternalUserForOrganizationOperation as S, deleteUserEmailsByIdOperation as Sn, retrieveDsymFilesForProjectOperation as St, toggleProjectFilterStatusOperation as T, deleteReleaseFileByIdOperation as Tn, retrieveAlertRuleDetailsOperation as Tt, retrieveProjectTeamsOperation as U, deleteOrganizationAlertRuleOperation as Un, getWhoViewedReplayByProjectOperation as Ut, retrieveReleaseDeploymentsOperation as V, deleteOrganizationDiscoverQueryOperation as Vn, listOrganizationMembersOperation as Vt, retrieveProjectTagValuesOperation as W, deleteOrgNotificationActionOperation as Wn, getTeamMembersByIdOrSlugOperation as Wt, retrieveProjectKeyDetailsOperation as X, createUserForSamlIntegrationOperation as Xn, getProjectHookOperation as Xt, retrieveProjectKeysByOrgAndProjectOperation as Y, deleteDsymsForProjectOperation as Yn, getProjectListOperation as Yt, retrieveProjectIssuesListOperation as Z, createTeamProjectForOrganizationOperation as Zn, getProjectEventsOperation as Zt, updateProjectDetailsOperation as _, fetchOrganizationReplayCountOperation as _n, retrieveIssueTagDetailsOperation as _t, updateWebhookConfigurationXpOperation as a, getOrganizationDetailsOperation as an, createOrganizationTeamOperation as ar, retrieveOrganizationReleaseCommitsOperation as at, updateOrganizationAlertRulesOperation as b, fetchIssueEventByIdOperation as bn, retrieveFilesForReleaseOperation as bt, updateSymbolSourceSettingsOperation as c, getActivationOfAlertRuleForOrganizationOperation as cn, createExternalUserForOrganizationOperation as cr, retrieveOrganizationMonitorsOperation as ct, updateProjectRuleByIdOperation as d, fetchProjectReplayClicksOperation as dn, addTeamMemberInOrganizationOperation as dr, retrieveOrganizationEventsOperation as dt, getOrganizationSessionsOperation as en, createReleaseForOrganizationOperation as er, retrieveProjectEventByIdOperation as et, updateProjectReleaseFileDetailsOperation as f, fetchProjectReleaseFilesOperation as fn, addRemoveUserEmailByIdOperation as fr, retrieveOrganizationDashboardOperation as ft, updateProjectIssueStatusAndDetailsOperation as g, fetchOrganizationReplayDetailsOperation as gn, retrieveMonitorCheckinsOperation as gt, updateProjectKeyConfigurationOperation as h, fetchOrganizationReplaySelectorsOperation as hn, retrieveMonitorCheckinsByOrgOperation as ht, uploadDsymsFileToProjectOperation as i, getOrganizationEnvironmentsOperation as in, createProjectKeyWithOptionalRateLimitingOperation as ir, retrieveOrganizationReplaysOperation as it, retrieveUserFeedbackForProjectOperation as j, deleteProjectMonitorOperation as jn, modifyOrganizationSettingsOperation as jt, saveOrganizationDiscoverQueryOperation as k, deleteProjectRuleOperation as kn, patchScimGroupOperationsOperation as kt, updateSavedQueryForOrganizationOperation as l, fetchTagValuesForIssueOperation as ln, createDashboardWithWidgetsOperation as lr, retrieveOrganizationMemberOperation as lt, updateProjectMonitorOperation as m, fetchProjectEnvironmentDetailsOperation as mn, accessProjectInformationOperation as mr, retrieveNotificationActionByOrgIdOperation as mt, uploadReleaseFileToOrganizationOperation as n, getOrganizationMonitorByIdOrSlugOperation as nn, createProjectWebhookSubscriptionOperation as nr, retrieveOrganizationStatsV2Operation as nt, updateUserEmailOperation as o, getOrganizationByIdOrSlugOperation as on, createOrganizationMonitorOperation as or, retrieveOrganizationRelayUsageOperation as ot, updateProjectOwnershipSettingsOperation as p, fetchProjectOwnershipDetailsOperation as pn, addOrganizationMemberViaEmailOperation as pr, retrieveOrgIntegrationConfigOperation as pt, retrieveProjectReleaseFileDetailsOperation as q, deleteExternalTeamByIdOperation as qn, getProjectRuleDetailsOperation as qt, uploadFileToProjectReleaseOperation as r, getOrganizationIssueDetailsOperation as rn, createProjectRuleForAlertsOperation as rr, retrieveOrganizationScimGroupsOperation as rt, updateTeamInformationByOrganizationIdOperation as s, getIntegrationDetailsByOrgOperation as sn, createOrganizationAlertRuleOperation as sr, retrieveOrganizationProjectsOperation as st, viewOrganizationNotificationActionsOperation as t, getOrganizationReleaseVersionOperation as tn, createReleaseDeployForOrgOperation as tr, retrieveProjectEnvironmentsOperation as tt, updateReleaseDetailsForOrganizationOperation as u, fetchReplayRecordingSegmentOperation as un, addTeamToProjectOperation as ur, retrieveOrganizationIntegrationsListOperation as ut, updateOrganizationMemberRoleOperation as v, fetchOrganizationReleaseThresholdStatusesOperation as vn, retrieveIssueHashesForOrganizationOperation as vt, updateEnvironmentVisibilityOperation as w, deleteTeamByOrganizationOrTeamSlugOperation as wn, retrieveCommitFilesForReleaseOperation as wt, updateIssueAttributesInOrganizationOperation as x, deleteUserFromOrgOperation as xn, retrieveEventIdForOrganizationOperation as xt, updateOrganizationDashboardOperation as y, fetchOrganizationAlertRulesOperation as yn, retrieveIssueEventsByIdOperation as yt, retrieveReplayRecordingSegmentsOperation as z, deleteOrganizationIssueOperation as zn, listOrganizationRepositoriesOperation as zt };
|