diff --git a/docs/cloudflare/architecture.md b/docs/cloudflare/architecture.md index b5efaa81f..3bd0e4a21 100644 --- a/docs/cloudflare/architecture.md +++ b/docs/cloudflare/architecture.md @@ -96,6 +96,31 @@ const mcpClient = await experimental_createMCPClient({ - Prompt metadata endpoint - Error handling with fallbacks +### Hosted MCP Code Mode + +The authenticated hosted MCP also registers `search_sentry_api` and +`execute_sentry_code` on the fresh server built for each request. The external +client's model writes the code; a Cloudflare Dynamic Worker executes it. This +path does not use the chat interface's model or introduce another OAuth flow. + +The Worker Loader binding (`LOADER`) creates an isolated execution with all +network egress disabled. The trusted sandbox wrapper receives an `ApiBroker` +capability through its `run()` RPC method and uses it for `sentry.request()`; +raw `fetch()` is blocked. The broker retains the access token and an +`ApiAuthorization` object in the parent request context. It checks published +operations and the explicit API read/write MCP grant, enforces +organization constraints, resolves validated regional routing and forwards +client attribution. Generated code cannot access the private token or +authorization context. Upstream 401s use the existing unauthorized callback. + +This integration has no beta or opt-in flag. Code Mode is unavailable for +project-constrained sessions because arbitrary API operations can affect shared +resources even through project-bearing routes. Existing grants do not acquire +API permissions automatically. The shared upstream OAuth token remains separate +from connection permissions; Sentry enforces its scopes and resource access. See [HTTP Code Mode integration](../testing/code-mode.md#authentication-and-scope) +for the permission policy, fixture limitations and validation status. Source and +configuration changes alone do not establish that a deployment is active. + ### 4. AI Assistant GPT-4 integration with Sentry-specific system prompt: diff --git a/docs/cloudflare/code-mode-architecture.png b/docs/cloudflare/code-mode-architecture.png new file mode 100644 index 000000000..b526d28f0 Binary files /dev/null and b/docs/cloudflare/code-mode-architecture.png differ diff --git a/docs/cloudflare/oauth-architecture.md b/docs/cloudflare/oauth-architecture.md index a52da228f..8e86f4eac 100644 --- a/docs/cloudflare/oauth-architecture.md +++ b/docs/cloudflare/oauth-architecture.md @@ -308,6 +308,10 @@ const { redirectTo } = await c.env.OAUTH_PROVIDER.completeAuthorization({ The system only refreshes MCP tokens. It does not rotate upstream Sentry OAuth tokens anymore. +Refresh preserves `upstreamScopes` from the original Sentry token response. +Older grants and responses that omit `scope` leave this metadata unknown; +refresh does not infer it from MCP skills or the requested scope set. + 1. **MCP Token Refresh**: MCP clients exchange an MCP refresh token for a new MCP access token 2. **Sentry Token Reuse**: The worker keeps reusing the cached Sentry access token while it is still valid 3. **Stale grant rejection**: Grants missing required stored props like `refreshToken` are treated as stale and revoked @@ -420,7 +424,19 @@ remains valid RFC 8414 metadata. When a constrained OAuth request includes `resource=/mcp/{org}` or `resource=/mcp/{org}/{project}`, the approval page surfaces that scope to the -user as a "Session scope" banner before permissions are granted. +user before permissions are granted. Organization-only and unconstrained +connections show an "Organization scope" banner; project-constrained +connections retain the "Session scope" banner. The unconstrained banner +explicitly covers all organizations authorized by the upstream token. + +New consent forms leave API Write unchecked, while signed remembered selections +remain preselected for the same client. API Write's warning explains that it is +an independent, additive permission: it allows API writes even when Triage Issues +or Manage Projects & Teams is unchecked, subject to Sentry permissions and the +connection's organization scope. Project-constrained sessions do not offer +Code Mode skills. +Project consent preserves previously remembered API Read/Write choices for the +next organization consent without adding them to the project's grant. Note: These describe the MCP OAuth server, not Sentry's OAuth endpoints. @@ -447,6 +463,12 @@ Direct mode intentionally does not: The caller owns token lifetime and refresh. `Authorization: Bearer ...` remains reserved for MCP OAuth access tokens. +Direct requests default to all active skills, including API Read and API Write: +the client already holds the upstream token. Sentry enforces that token's scopes +and resource permissions, and MCP connection constraints still apply. The +`skills` and `disable-skills` parameters can narrow access; the OAuth consent +screen's unchecked API Write default does not apply to direct tokens. + ## Integration Between MCP OAuth and MCP Server The MCP Server (stateless handler) receives context via closure capture: diff --git a/docs/integrations/claude-code-plugin.md b/docs/integrations/claude-code-plugin.md index d198e416c..4e50b5a0d 100644 --- a/docs/integrations/claude-code-plugin.md +++ b/docs/integrations/claude-code-plugin.md @@ -63,18 +63,20 @@ The body below the frontmatter is the agent's system prompt. ## Keeping `allowedTools` in Sync -The `allowedTools` list in the agent frontmatter must match the generated default-grant direct MCP surface. The `generate-definitions` script handles this automatically: +The `allowedTools` list in the agent frontmatter must match the generated default-grant direct MCP surface, including the hosted `search_sentry_api` and `execute_sentry_code` tools. Their availability and write permissions still depend on the connection's existing grant and constraints. The `generate-definitions` script handles this automatically: ```bash pnpm run --filter @sentry/mcp-core generate-definitions ``` +The public `/.mcp/tools.json` metadata includes the same hosted definitions. Code Mode has no fixed tool-level API scopes (`requiredScopes: []`): each HTTP operation is authorized against the connection's permissions and organization constraint before the request is sent. + This script: 1. Imports all tools from `packages/mcp-core/src/tools/index.ts` 2. Imports all skills from `packages/mcp-core/src/skills.ts` 3. Writes `toolDefinitions.json` and `skillDefinitions.json` to `packages/mcp-core/src/` -4. Updates `allowedTools` in both `plugins/sentry-mcp/agents/sentry-mcp.md` and `plugins/sentry-mcp-experimental/agents/sentry-mcp.md`, using the default-grant direct surface for each plugin mode. Optional-skill tools remain reachable through `search_sentry_tools` and `execute_sentry_tool` when available. +4. Updates `allowedTools` in both `plugins/sentry-mcp/agents/sentry-mcp.md` and `plugins/sentry-mcp-experimental/agents/sentry-mcp.md`, using the default-grant direct surface for each plugin mode plus hosted Code Mode names from `packages/mcp-core/src/code-mode.ts`. These hosted tools are not added to core/stdio JSON definitions. Optional-skill tools remain reachable through `search_sentry_tools` and `execute_sentry_tool` when available. The script runs automatically as a `prebuild` and `pretest` hook in `packages/mcp-core/package.json`. Run it explicitly after: @@ -82,7 +84,7 @@ The script runs automatically as a `prebuild` and `pretest` hook in `packages/mc - Changing tool skills assignments - Modifying agent prompts (to verify frontmatter stays valid) -The script skips regeneration if all outputs are newer than all inputs (tool source files, `skills.ts`, and the script itself). +The script skips regeneration if all outputs are newer than all inputs (tool source files, hosted Code Mode definitions, `skills.ts`, and the script itself). ## Modifying the Agent Prompt diff --git a/docs/mcp/README.md b/docs/mcp/README.md index a57b1b313..87d07ce04 100644 --- a/docs/mcp/README.md +++ b/docs/mcp/README.md @@ -17,6 +17,8 @@ them. The [Toolkit index](../README.md) also links the CLI and shared guides. [error handling](../contributing/error-handling.md) — MCP client conventions. - [Testing](../testing/overview.md), [stdio](../testing/stdio.md), and [remote](../testing/remote.md) — tests and transport QA. +- [HTTP Code Mode](../testing/code-mode.md) — runtime integration, permissions, + and safety validation. ## Run and Release diff --git a/docs/operations/monitoring.md b/docs/operations/monitoring.md index 31bd2c1fc..c3c1c25b6 100644 --- a/docs/operations/monitoring.md +++ b/docs/operations/monitoring.md @@ -180,6 +180,7 @@ These are Sentry MCP application attributes that are not part of the MCP semanti - `app.consent.skill..granted` - Per-skill boolean attributes for skills granted to the MCP request. Skill ids are normalized with `-` replaced by `_` - `app.upstream.host` - Upstream Sentry host configured for the server - `app.url.full` - MCP URL configured for stdio +- `app.code_mode.*` - Hosted Code Mode outcome, API calls, writes, operations by path template and schema commit; see [HTTP Code Mode telemetry](../testing/code-mode.md#telemetry) ### User Agent Tracking diff --git a/docs/operations/security.md b/docs/operations/security.md index 670ce6120..881feecd7 100644 --- a/docs/operations/security.md +++ b/docs/operations/security.md @@ -104,10 +104,12 @@ Today, runtime authorization for remote HTTP sessions is driven primarily by: `grantedScopes` still exists on tokens for backward compatibility with older clients, but it is transitional. Skills are the primary authorization model. -Note that `grantedScopes` is derived from the selected skills, not from what -Sentry granted. The scopes Sentry actually granted on the upstream token (from -the `scope` field of Sentry's token response) are stored separately as -`upstreamScopes`. Grants created before `upstreamScopes` existed do not have it. +`grantedScopes` is derived from selected skills, not from what Sentry granted. +The token response's actual `scope` is stored separately as `upstreamScopes`. +Older grants and responses without `scope` leave `upstreamScopes` undefined, +which means unknown rather than no permissions. MCP refresh preserves that +metadata without requesting or inferring additional scopes. It does not grant +the MCP session permission to use every capability of the upstream token. Direct `Sentry-Bearer` sessions default to all active skills and can be narrowed with `skills` or `disable-skills` query parameters. They do not get OAuth diff --git a/docs/testing/code-mode.md b/docs/testing/code-mode.md new file mode 100644 index 000000000..45911619c --- /dev/null +++ b/docs/testing/code-mode.md @@ -0,0 +1,297 @@ +# HTTP Code Mode + +HTTP Code Mode lets an external MCP agent discover published API operations, +write JavaScript, and execute authenticated HTTP requests without a dedicated +tool for each operation. This version is HTTP-only; an SDK interface is deferred. + +## Execution and ownership + +The hosted MCP exposes two ordinary MCP tools: + +- `search_sentry_api({code})` runs an async arrow function against the configured + OpenAPI document, available as `spec`. Network access is disabled. +- `execute_sentry_code({code})` runs an async arrow function with + `sentry.request({method?, path, query?, body?})`, defaulting to GET. Requests + return `{status, headers, body}`; non-2xx responses throw with HTTP details. + +The client's model discovers the API, generates code, corrects failures and +writes the answer. The server executes that code in a fresh Cloudflare Dynamic +Worker and does not call a model. Programs can paginate, combine responses and +return selected fields without sending every intermediate response to the model. +Query arrays become repeated parameters; `headers.link` supports pagination. + +| Responsibility | Owner and cost | +| ---------------------------------------------- | ----------------------------------------------- | +| Planning, code generation and final answer | Client's agent/provider account | +| Schema search, execution and credential broker | MCP operator's Cloudflare infrastructure | +| API requests | Sentry infrastructure and applicable API limits | + +This follows Cloudflare's [server-side search/execute pattern](https://blog.cloudflare.com/code-mode-mcp/). +Worker Loader creates a fresh isolate with `globalOutbound: null`. Raw `fetch()` +and other network access are blocked. A trusted wrapper calls an `ApiBroker` +RPC capability passed to `run()`; the broker owns credentials in the parent +request context. Generated code is a separate module and cannot access them. +The broker validates the origin and API prefix, supplies authentication and +rejects redirects. The request-scoped capability also retains the existing +unauthorized callback, which cannot be serialized into loopback binding props. + +![The sandbox calls the parent Worker's broker over RPC; only the broker holds the Sentry token and contacts the API.](../cloudflare/code-mode-architecture.png) + +Code Mode is an architecture, not a separate MCP protocol capability. Tools use +normal `tools/list` and `tools/call`, typed schemas, JSON text and +`structuredContent`; failures use `isError`. The MCP SDK's package version is +separate from the dated [wire protocol](https://modelcontextprotocol.io/specification/2026-07-28/server/tools). + +## Authentication and scope + +`packages/mcp-cloudflare/src/server/lib/mcp-handler.ts` creates a fresh server +for each authenticated request and registers Code Mode with that request's +`ServerContext`. The existing OAuth flow and requested upstream scopes remain +unchanged. Production and canary configurations provide a `LOADER` binding. +Code Mode is hosted-only, with no separate OAuth flow or rollout flag. + +Two permissions control access through this MCP connection: + +- **API Read** permits reads and is selected for new approvals. +- **API Write** permits reads and create/update/delete operations. It starts + unchecked. Explicitly remembered selections can preselect it, but approval + is still required. + +Existing grants and remembered skill selections do not acquire new permissions +implicitly. Permissions are additive: API Write can modify issues with **Triage +Issues** unchecked, or projects/teams with **Manage Projects & Teams** unchecked. +Those checkboxes control their catalog tools, not deny rules for API Write. The +consent screen explains this before selection and always displays the scope: +`/mcp` permits organizations authorized by the token; `/mcp/{org}` limits the +connection to that organization. Sentry's own permissions still apply. + +The token authenticates API calls and sets the maximum access through its OAuth +scopes and the user's permissions. The consent screen limits what this MCP +connection may do without changing the token or its scopes. The implementation +keeps three values distinct: + +- `grantedSkills` records MCP authorization; `api-write` includes reads. +- Legacy `grantedScopes` comes from tool declarations. It is not evidence of + token permissions, and Code Mode does not use it. +- `upstreamScopes` records Sentry's actual token response. Missing metadata on + older grants means unknown. It neither grants MCP access nor replaces backend + token, role and resource checks. + +Before every `sentry.request()`, the broker's `ApiAuthorization` checks: + +1. The exact path and method exist in the pinned OpenAPI. HEAD may use a GET + contract when no HEAD operation exists. Unknown or ambiguous paths fail. +2. Without `api-write`, only GET, HEAD and OPTIONS can reach Sentry, regardless + of the token's broader access. +3. An organization constraint matches a recognized organization path parameter + exactly. Other organizations, unresolved numeric aliases and global object-ID + routes fail. Query parameters cannot substitute for a scoped path. + +The policy uses the existing organization helper for regional routing, validates +the regional host before attaching credentials, and forwards MCP client +attribution. A 401 invokes the existing unauthorized callback once per policy +instance. Sentry performs its own token, role and resource authorization. + +For example, dashboard creation accepts `org:read`, `org:write` or `org:admin` +upstream. API Write lets that POST reach Sentry without inventing a `:write` +suffix requirement. API Read blocks it before contacting Sentry. Neither MCP +permission guarantees that Sentry will accept the request. + +Project-constrained connections retain their existing tools without Code Mode. +A project URL alone cannot prove isolation: release files can be shared across +projects, and release deploys can affect every project when `projects` is omitted. +The published schema has no general isolation contract for these resources. +The policy therefore does not infer isolation from path prefixes or add filters +to arbitrary operations. The backend references are +`src/sentry/releases/endpoints/project_release_file_details.py` and +`src/sentry/releases/endpoints/release_deploys.py`. + +## Discovery and HTTP contracts + +The schema ships with the deploy, as Cloudflare's Code Mode server does: nothing +fetches or syncs it at runtime. `src/code-mode/generated/openapi.json.txt` is +the published `openapi-derefed.json` of the `@sentry/api` release in the pnpm +catalog, minified and ASCII-escaped; `source.json` records the release. The CLI +builds `sentry api` and `sentry schema` from the same release through +`@sentry/api/operations`, which omits the request and response schemas that +`search_sentry_api` needs, so Code Mode ships the full document. It is a +Workers Text module: the main Worker parses it once per isolate, on first use, +for authorization, and each search sandbox receives the same text as its own +module and parses it there. Release 0.428.0 contains 173 paths / 273 +operations, not every Sentry feature or internal endpoint. + +To move to a new release, bump `@sentry/api` in the catalog, install, and +regenerate in the same pull request: + +```bash +pnpm --filter @sentry/mcp-cloudflare generate:openapi +``` + +`src/code-mode/openapi.test.ts` fails when the shipped operations differ from +the installed `@sentry/api`. Never edit the generated files by hand. + +Tool descriptions guide searches across paths, operation IDs, summaries, +descriptions and tags. Empty or unrelated results should lead to broader metadata +or category searches before guessing routes. Discovery does not add a second +operation catalog, synonym list or semantic search service. + +After finding an operation, inspect its request/response schemas and both +path-level and operation-level parameters. The latter override path parameters +with the same name and location. Return selected JSON values rather than sliced +JSON strings that may hide required fields. + +Write guidance distinguishes raw API bodies from enriched catalog-tool results. +Even a GET response is not a write template: resending an aggregate field can +change child resources. Agents should consult the contract and defaults, read +the current resource, send required fields and requested changes, and preserve +IDs and relationships in nested collections. Omission is not assumed to preserve +every field, and PUT is not assumed to replace every resource. Agents should +verify the result and report ambiguity or side effects rather than inventing +semantics or attempting speculative repair writes. + +These instructions cannot enforce endpoint-specific preservation. JSON/HTTP +support does not establish multipart, streaming, internal or undocumented API +coverage. Result projection is available but not automatic semantic truncation. + +## Limits and failures + +Each execution has a 20-call fetch budget, 30-second deadline, 50,000-byte +result limit and 2,000,000-byte upstream response limit. The hosted MCP's shared +limits in `@sentry/toolkit-core/mcp-limits` also apply: tool arguments over +10,000 array elements or object keys are rejected before validation, and request +bodies over 1 MiB are rejected before dispatch on every transport lane. + +Dynamic Worker CPU and subrequest limits are configured through the +[Cloudflare API](https://developers.cloudflare.com/dynamic-workers/usage/limits/). +Local workerd did not enforce those platform limits in the recorded probes. +**Hosted CPU termination and deployment enforcement remain unvalidated.** + +The runtime has no automatic retries or multi-call transaction. A failed program +may already have created resources; the agent must inspect state before retrying +writes. HTTP errors preserve status, message and allowed headers such as +`WWW-Authenticate` and `Retry-After`. A generic 403 is not diagnosed as a missing +scope or a need to reconnect. Uncaught program errors retain execution statistics +when available; startup failures do not have sandbox statistics. + +Upstream 5xx responses use the existing `logIssue` helper even when generated +code catches them. The broker exposes the event ID as `x-sentry-event-id` and +reports only method, status and the operation's path template, not request or +response payloads. Expected 4xx responses do not create issues. + +Failures outside the program, such as the Worker Loader failing or the sandbox +dying, also use `logIssue`; the tool error ends with the event ID. Program +errors and the execution deadline do not create issues. Every failure keeps the +tools' declared `{error, stats}` structured shape. + +## Telemetry + +Each `tools/call` span records what the execution did, so one bad run can be +read back from its trace: + +- `gen_ai.tool.call.arguments.code` - the generated program, like every other + tool's arguments +- `app.code_mode.outcome` - `ok`, `error` (the program failed or returned an + error), `timeout` or `internal_error` +- `app.code_mode.spec_version` - the `@sentry/api` release whose schema the deploy shipped +- `app.code_mode.api_calls`, `app.code_mode.writes` - calls seen by the broker + and writes it sent to Sentry (execute only) +- `app.code_mode.operations` - JSON list of `METHOD template status`, with + `denied` when this connection's policy refused the call (execute only) + +Spans are sampled. Two metrics are not, so they count every execution: + +- `app.code_mode.execution` with `tool` and `outcome` +- `app.code_mode.request` with `method`, `operation` (the path template, or + `unknown` when the path is not in the schema), `status` and `denied` + +The broker records operations outside the sandbox; generated code cannot change +them. Concrete URLs, query strings and bodies are never recorded. + +`LOADER.load()` creates a fresh Worker for each execution without ID caching, +following the [Worker Loader API](https://developers.cloudflare.com/dynamic-workers/api-reference/#load). +This preserves per-execution isolation but affects +[Dynamic Workers costs](https://developers.cloudflare.com/dynamic-workers/pricing/). +Any later reuse must preserve request credentials and authorization; changing +the ID alone is insufficient. + +### Lifecycle investigation + +The parent owns one `ExecutionGate` per tool call, closed in `finally` on success, +error or timeout. Its 30-second deadline covers Worker startup, execution and +reading the result. The sandbox receives the same deadline. + +Like Cloudflare's [ExecutionGate](https://github.com/cloudflare/agents/blob/a2d371ec333198855f4ac2aa4dadbe2696e73c75/packages/codemode/src/executor.ts), +closing releases pending sandbox-to-host RPC. The Sentry gate also aborts +upstream HTTP and rejects new work before authorization, then checks again after +authorization before sending an API request. A slow authorization lookup cannot +start a write after execution has closed. + +Programs must await every `sentry.request()`, including parallel calls. Returning +with calls still pending is an execution error, not success. Throwing preserves +the original error while cleanup aborts pending requests. The sandbox disables +its API access when the program ends; the parent broker enforces the boundary +independently of generated code. Closed RPC calls settle with an error response +instead of an unhandled rejection. + +Before returning success, the sandbox gives workerd a turn to report unhandled +promise rejections. A failed request cannot disappear just because it settled +before the program returned. Handled errors, including late catches and +`Promise.allSettled`, remain valid. API access closes before that final turn. + +Cancellation is best effort for HTTP already sent: a write accepted upstream +cannot be rolled back. The tool retains the warning to inspect state before +retrying writes. Gate closure revokes API access; it does not forcibly terminate +JavaScript still running inside an isolate. CPU and platform concurrency +enforcement still require hosted verification. Local handles do not expose +`Symbol.dispose`, so cleanup does not depend on optional disposal. + +## Runtime and integration validation + +Use Node 24 for this checkout; its `better-sqlite3` dependency does not compile +with Node 26. After `pnpm install --frozen-lockfile`: + +```bash +pnpm --filter '@sentry/mcp-core...' --if-present run build +pnpm --filter @sentry/mcp-cloudflare test +pnpm --filter @sentry/mcp-cloudflare tsc:ci +``` + +There is one composition: `registerCodeModeTools()` on the authenticated MCP +handler, with its `ApiAuthorization` always applied. The tests drive that +handler with real Dynamic Workers and the RPC broker, the shipped schema, and +simulated Sentry HTTP. They cover grant and scope visibility, regional routing, +attribution, concurrent token isolation, organization escapes, 401 revocation, +caught 5xx reporting, modern/legacy input limits, the published search examples, +network denial, path escapes, redirects, pending and ignored requests, limits +and telemetry. Dashboard copying verifies persisted state with API Write and an +upstream `org:read` token. + +Three regressions reproduce the original closure bugs: return/throw with pending +HTTP and delayed authorization. The contexts stay alive after the result to +prove cleanup does not depend on request teardown. Two fake-timer tests check +that the deadline aborts a request stalled before its headers or during its +body. + +For a manual run against a real account, start the hosted server with +`pnpm run dev` and connect with `Authorization: Sentry-Bearer ` and +`?skills=api-read` or `?skills=api-write`; this is the same code path. + +These checks use external HTTP fixtures, not a real Sentry account or deployment. +No new model evals were run; the agent harness remains in its separate PR. +Unrelated CLI fixture/platform failures prevented a green full workspace suite. +Before production, validate hosted OAuth-to-API authorization and Cloudflare +CPU/termination limits. No deployment +is established by these checks. + +## References + +- Implementation: `packages/mcp-cloudflare/src/code-mode/tools.ts` + (registration and execution), `authorization.ts`, `access.ts`, `broker.ts`, + `sandbox.ts` and `openapi.ts`; tool definitions in + `packages/mcp-core/src/code-mode.ts`. +- Integration tests: + `packages/mcp-cloudflare/src/server/lib/code-mode.integration.test.ts`. +- [Cloudflare architecture](../cloudflare/architecture.md) and + [OAuth architecture](../cloudflare/oauth-architecture.md). +- [Stainless SDK Code Mode](https://www.stainless.com/blog/sdk-code-mode/) + describes the deferred SDK interface; it does not change who owns model usage. diff --git a/packages/mcp-cloudflare/package.json b/packages/mcp-cloudflare/package.json index 18e5c8455..15d08ee2c 100644 --- a/packages/mcp-cloudflare/package.json +++ b/packages/mcp-cloudflare/package.json @@ -3,7 +3,8 @@ "sentryCi": { "roles": [ "cloudflare" - ] + ], + "typecheck": "tsc:ci" }, "version": "0.42.0", "private": true, @@ -24,15 +25,18 @@ "cf:versions:upload": "npx wrangler versions upload", "preview": "vite preview", "cf-typegen": "wrangler types", + "generate:openapi": "node scripts/generate-openapi-spec.mjs", "test": "vitest run", "test:ci": "vitest run --reporter=default --reporter=junit --outputFile=tests.junit.xml", "test:watch": "vitest", - "tsc": "tsc --noEmit" + "tsc": "tsc --noEmit", + "tsc:ci": "tsc -b" }, "devDependencies": { "@cloudflare/vite-plugin": "^1.13.15", "@cloudflare/vitest-plugin": "catalog:", "@cloudflare/workers-types": "catalog:", + "@sentry/api": "catalog:", "@sentry/mcp-core": "workspace:*", "@sentry/mcp-server-mocks": "workspace:*", "@sentry/mcp-server-tsconfig": "workspace:*", diff --git a/packages/mcp-cloudflare/scripts/generate-openapi-spec.mjs b/packages/mcp-cloudflare/scripts/generate-openapi-spec.mjs new file mode 100644 index 000000000..1f4dd61be --- /dev/null +++ b/packages/mcp-cloudflare/scripts/generate-openapi-spec.mjs @@ -0,0 +1,79 @@ +#!/usr/bin/env node + +// Writes the Sentry OpenAPI schema that Code Mode ships with the deploy. +// Nothing fetches or syncs the schema at runtime. The pin is the `@sentry/api` +// version in the pnpm catalog, the same API release the CLI's `sentry api` and +// `sentry schema` are built from: bump the catalog, install, then run +// +// pnpm --filter @sentry/mcp-cloudflare generate:openapi +// +// and review the regenerated artifact in the pull request. + +import { readFileSync, writeFileSync } from "node:fs"; +import { dirname, join } from "node:path"; +import { fileURLToPath } from "node:url"; + +const OUT = join( + dirname(fileURLToPath(import.meta.url)), + "../src/code-mode/generated", +); + +// The package exports no package.json; its entry point sits in dist/. +const entry = fileURLToPath(import.meta.resolve("@sentry/api")); +const manifest = JSON.parse( + readFileSync(join(dirname(entry), "../package.json"), "utf8"), +); +const repository = manifest.repository.url.match( + /github\.com\/([^/]+\/[^/.]+)/, +)[1]; +const source = { + package: manifest.name, + version: manifest.version, + repository, + path: "openapi-derefed.json", +}; + +// sentry-api-schema tags each @sentry/api release with its version. +const url = `https://raw.githubusercontent.com/${source.repository}/${source.version}/${source.path}`; +console.log(`Downloading ${url}`); +const response = await fetch(url); +if (!response.ok) { + throw new Error(`Failed to download the schema: HTTP ${response.status}`); +} +const spec = await response.json(); +if (!spec || typeof spec !== "object" || typeof spec.paths !== "object") { + throw new Error("The schema has no paths object."); +} + +writeFileSync(join(OUT, "openapi.json.txt"), asciiJson(JSON.stringify(spec))); +writeFileSync(join(OUT, "source.json"), `${JSON.stringify(source, null, 2)}\n`); + +const operations = Object.values(spec.paths).flatMap((item) => + Object.keys(item).filter((key) => + [ + "get", + "put", + "post", + "delete", + "options", + "head", + "patch", + "trace", + ].includes(key), + ), +); +console.log( + `${Object.keys(spec.paths).length} paths, ${operations.length} operations from ${source.package}@${source.version}`, +); + +/** + * The same JSON with every character above U+007F escaped, so V8 keeps the + * string at one byte per character in every isolate that holds it. + */ +function asciiJson(json) { + return json.replace( + /[\u0080-￿]/g, + (character) => + `\\u${character.charCodeAt(0).toString(16).padStart(4, "0")}`, + ); +} diff --git a/packages/mcp-cloudflare/src/client/components/fragments/stdio-setup.tsx b/packages/mcp-cloudflare/src/client/components/fragments/stdio-setup.tsx index 6a4f0e20d..3b4354b62 100644 --- a/packages/mcp-cloudflare/src/client/components/fragments/stdio-setup.tsx +++ b/packages/mcp-cloudflare/src/client/components/fragments/stdio-setup.tsx @@ -7,7 +7,7 @@ import InstallTabs, { Tab } from "./install-tabs"; const mcpServerName = import.meta.env.DEV ? "sentry-dev" : "sentry"; const orderedSkills = [...skillDefinitions] - .filter((skill) => !skill.deprecated) + .filter((skill) => !skill.deprecated && !skill.hostedOnly) .sort((a, b) => a.order - b.order); export default function StdioSetup() { diff --git a/packages/mcp-cloudflare/src/code-mode/access.test.ts b/packages/mcp-cloudflare/src/code-mode/access.test.ts new file mode 100644 index 000000000..41e61fb01 --- /dev/null +++ b/packages/mcp-cloudflare/src/code-mode/access.test.ts @@ -0,0 +1,183 @@ +import { describe, expect, it } from "vitest"; +import { authorizeApiRequest } from "./access"; + +const dashboardPath = + "/api/0/organizations/{organization_id_or_slug}/dashboards/"; +const monitorPath = + "/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/monitors/{monitor_id_or_slug}/"; +const releasePath = "/api/0/organizations/{organization_id_or_slug}/releases/"; +const issuePath = + "/api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/"; + +// Scope excerpts from the pinned Sentry OpenAPI. In particular, dashboard +// writes accept org:read upstream, while monitor and release writes do not. +const spec = { + paths: { + [dashboardPath]: { + get: { + security: [{ auth_token: ["org:admin", "org:read", "org:write"] }], + }, + post: { + security: [{ auth_token: ["org:admin", "org:read", "org:write"] }], + }, + }, + [monitorPath]: { + put: { + security: [ + { auth_token: ["alerts:write", "project:admin", "project:write"] }, + ], + }, + }, + [releasePath]: { + post: { + security: [ + { + auth_token: [ + "org:ci", + "project:admin", + "project:releases", + "project:write", + ], + }, + ], + }, + }, + [issuePath]: { + put: { security: [{ auth_token: ["event:admin", "event:write"] }] }, + }, + "/api/0/issues/{issue_id}/": { + get: { + security: [ + { auth_token: ["event:admin", "event:read", "event:write"] }, + ], + }, + }, + }, +}; + +function request(path: string, method: string, organizationSlug?: string) { + return authorizeApiRequest(new URL(path, "https://sentry.io"), method, spec, { + organizationSlug, + }); +} + +describe("authorizeApiRequest", () => { + it("accepts a published read and HEAD fallback", () => { + expect( + request("/api/0/organizations/example/dashboards/?cursor=next", "GET"), + ).toEqual({ + pathTemplate: dashboardPath, + organizationSlug: "example", + }); + expect( + request("/api/0/organizations/example/dashboards/", "HEAD").pathTemplate, + ).toBe(dashboardPath); + }); + + it("leaves upstream scopes to Sentry for published writes", () => { + expect( + request("/api/0/organizations/example/dashboards/", "POST").pathTemplate, + ).toBe(dashboardPath); + expect( + request("/api/0/projects/example/frontend/monitors/import/", "PUT") + .pathTemplate, + ).toBe(monitorPath); + expect( + request("/api/0/organizations/example/releases/", "POST").pathTemplate, + ).toBe(releasePath); + expect( + request("/api/0/organizations/example/issues/123/", "PUT").pathTemplate, + ).toBe(issuePath); + }); + + it("enforces the organization slug and rejects unscoped object IDs", () => { + expect( + request("/api/0/organizations/ex%61mple/dashboards/", "GET", "example") + .organizationSlug, + ).toBe("example"); + for (const path of [ + "/api/0/organizations/another/dashboards/", + "/api/0/organizations/123/dashboards/", + "/api/0/issues/123/?organization=example", + ]) { + expect(() => request(path, "GET", "example")).toThrow( + "organization constraint", + ); + } + expect(request("/api/0/issues/123/", "GET")).toEqual({ + pathTemplate: "/api/0/issues/{issue_id}/", + }); + }); + + it("requires the exact published path and HTTP method", () => { + expect(() => + request("/api/0/organizations/example/private/", "GET"), + ).toThrow("published API schema"); + expect(() => + request("/api/0/organizations/example/dashboards/", "DELETE"), + ).toThrow("HTTP method"); + expect(() => + request("/api/0/organizations/example/dashboards", "GET"), + ).toThrow("published API schema"); + }); + + it("rejects encoded separators before treating a path segment as an identifier", () => { + for (const organization of [ + "example%2fanother", + "example%5canother", + "example%252fanother", + "example%zz", + ]) { + expect(() => + request(`/api/0/organizations/${organization}/dashboards/`, "GET"), + ).toThrow(/API path/); + } + // URL normalization happens before authorization: traversing to another + // organization must be checked against the final path, not the input prefix. + expect(() => + request( + "/api/0/organizations/example/%2e%2e/another/dashboards/", + "GET", + "example", + ), + ).toThrow("organization constraint"); + }); + + it("does not fall back to a generic route when a literal route denies access", () => { + const overlappingSpec = { + paths: { + "/api/0/organizations/{organization_id_or_slug}/": { + get: { security: [{ auth_token: ["org:read"] }] }, + }, + "/api/0/organizations/settings/": { + post: { security: [{ auth_token: ["org:write"] }] }, + }, + }, + }; + expect(() => + authorizeApiRequest( + new URL("https://sentry.io/api/0/organizations/settings/"), + "GET", + overlappingSpec, + {}, + ), + ).toThrow("HTTP method"); + }); + + it("requires a catalog but does not use security metadata as an MCP grant", () => { + const url = new URL( + "https://sentry.io/api/0/organizations/example/dashboards/", + ); + expect(() => authorizeApiRequest(url, "GET", {}, {})).toThrow( + "operation catalog", + ); + expect( + authorizeApiRequest( + url, + "GET", + { paths: { [dashboardPath]: { get: {} } } }, + {}, + ).pathTemplate, + ).toBe(dashboardPath); + }); +}); diff --git a/packages/mcp-cloudflare/src/code-mode/access.ts b/packages/mcp-cloudflare/src/code-mode/access.ts new file mode 100644 index 000000000..045e21c98 --- /dev/null +++ b/packages/mcp-cloudflare/src/code-mode/access.ts @@ -0,0 +1,111 @@ +export interface CodeModeAccess { + organizationSlug?: string | null; +} + +interface MatchedOperation { + pathTemplate: string; + pathItem: Record; + parameters: Record; + literalSegments: number; +} + +function isRecord(value: unknown): value is Record { + return typeof value === "object" && value !== null && !Array.isArray(value); +} + +function decodePathSegment(segment: string): string { + let decoded: string; + try { + decoded = decodeURIComponent(segment); + } catch { + throw new Error("The API path contains invalid percent encoding."); + } + if (decoded === "." || decoded === ".." || /[/\\]|%2f|%5c/i.test(decoded)) { + throw new Error( + "The API path cannot contain encoded path separators or traversal segments.", + ); + } + return decoded; +} + +function findOperation( + url: URL, + spec: Record, +): MatchedOperation { + if (!isRecord(spec.paths)) { + throw new Error("The API schema does not contain an operation catalog."); + } + const segments = url.pathname.split("/").map(decodePathSegment); + const matches: MatchedOperation[] = []; + for (const [pathTemplate, pathItem] of Object.entries(spec.paths)) { + if (!pathTemplate.startsWith("/") || !isRecord(pathItem)) continue; + const templateSegments = pathTemplate.split("/"); + if (templateSegments.length !== segments.length) continue; + const parameters: Record = {}; + let literalSegments = 0; + const matchesPath = templateSegments.every((segment, index) => { + const parameter = /^\{([^{}]+)\}$/.exec(segment); + if (parameter) { + if (!segments[index] || Object.hasOwn(parameters, parameter[1])) { + return false; + } + parameters[parameter[1]] = segments[index]; + return true; + } + literalSegments++; + return segment === segments[index]; + }); + if (matchesPath) { + matches.push({ pathTemplate, pathItem, parameters, literalSegments }); + } + } + matches.sort((a, b) => b.literalSegments - a.literalSegments); + const match = matches[0]; + if (!match) { + throw new Error( + "This API path is not available in the published API schema.", + ); + } + if (matches[1]?.literalSegments === match.literalSegments) { + throw new Error( + "This API path matches multiple operations in the API schema.", + ); + } + return match; +} + +/** Enforce the published API surface and connection constraint before calling Sentry. */ +export function authorizeApiRequest( + url: URL, + method: string, + spec: object, + access: CodeModeAccess, +): { pathTemplate: string; organizationSlug?: string } { + if (!isRecord(spec)) { + throw new Error("The API schema does not contain an operation catalog."); + } + const { pathTemplate, pathItem, parameters } = findOperation(url, spec); + const normalizedMethod = method.toLowerCase(); + const operationMethod = + normalizedMethod === "head" && !Object.hasOwn(pathItem, "head") + ? "get" + : normalizedMethod; + const operation = Object.hasOwn(pathItem, operationMethod) + ? pathItem[operationMethod] + : undefined; + if (!isRecord(operation)) { + throw new Error( + "This HTTP method is not available for the published API path.", + ); + } + + const organizationSlug = + parameters.organization_id_or_slug ?? parameters.organization_slug; + if (access.organizationSlug && organizationSlug !== access.organizationSlug) { + throw new Error( + "This API operation is outside the active organization constraint. Use an organization-scoped API path with the authorized organization slug.", + ); + } + + return { pathTemplate, ...(organizationSlug ? { organizationSlug } : {}) }; +} diff --git a/packages/mcp-cloudflare/src/code-mode/authorization.ts b/packages/mcp-cloudflare/src/code-mode/authorization.ts new file mode 100644 index 000000000..3c1bf1a55 --- /dev/null +++ b/packages/mcp-cloudflare/src/code-mode/authorization.ts @@ -0,0 +1,72 @@ +import { resolveRegionUrlForOrganization } from "@sentry/mcp-core/internal/tool-helpers/resolve-region-url"; +import { validateRegionUrl } from "@sentry/mcp-core/internal/tool-helpers/validate-region-url"; +import type { ServerContext } from "@sentry/mcp-core/types"; +import { USER_AGENT } from "@sentry/mcp-core/version"; +import { authorizeApiRequest } from "./access"; +import { getSpec } from "./openapi"; + +export type AuthorizationResult = + | { url: string; headers: Record; pathTemplate: string } + | { error: string }; + +/** Trusted per-request policy, available to the outbound broker, never to user code. */ +export class ApiAuthorization { + #context: ServerContext; + #unauthorized = false; + + constructor(context: ServerContext) { + this.#context = context; + } + + async authorize(url: string, method: string): Promise { + const target = new URL(url); + let organizationSlug: string | undefined; + let pathTemplate: string; + try { + ({ organizationSlug, pathTemplate } = authorizeApiRequest( + target, + method, + getSpec(), + { organizationSlug: this.#context.constraints.organizationSlug }, + )); + } catch (error) { + return { + error: error instanceof Error ? error.message : "API access denied.", + }; + } + if (organizationSlug) { + const regionUrl = await resolveRegionUrlForOrganization({ + context: this.#context, + organizationSlug, + }); + if (regionUrl) { + target.host = validateRegionUrl( + regionUrl, + this.#context.sentryHost ?? "sentry.io", + ); + target.protocol = "https:"; + } + } + const headers: Record = { "User-Agent": USER_AGENT }; + for (const [field, header] of [ + ["clientId", "X-Sentry-MCP-Client-Id"], + ["clientName", "X-Sentry-MCP-Client-Name"], + ["clientFamily", "X-Sentry-MCP-Client-Family"], + ["utmSource", "X-Sentry-MCP-Utm-Source"], + ] as const) { + const value = this.#context[field]; + if (value) headers[header] = value; + } + return { url: target.toString(), headers, pathTemplate }; + } + + async onUnauthorized(): Promise { + if (this.#unauthorized) return; + this.#unauthorized = true; + try { + await this.#context.onUpstreamUnauthorized?.(); + } catch { + // Match the normal tool boundary: revocation failures do not hide the 401. + } + } +} diff --git a/packages/mcp-cloudflare/src/code-mode/broker.ts b/packages/mcp-cloudflare/src/code-mode/broker.ts new file mode 100644 index 000000000..cccc760e9 --- /dev/null +++ b/packages/mcp-cloudflare/src/code-mode/broker.ts @@ -0,0 +1,193 @@ +import { RpcTarget } from "cloudflare:workers"; +import { ApiServerError } from "@sentry/mcp-core/api-client"; +import { logIssue } from "@sentry/mcp-core/telem/logging"; +import type { ApiAuthorization } from "./authorization"; +import type { ExecutionGate } from "./execution"; +import { configuredUrl, readBoundedBody } from "./http"; + +export interface BrokerOptions { + accessToken: string; + execution: ExecutionGate; + /** Fixed origin and API prefix, e.g. https://sentry.io/api/0. */ + apiBaseUrl: string; + allowWrites: boolean; + authorization: ApiAuthorization; +} + +/** + * One `sentry.request()` as the trusted side saw it. `operation` is the + * published path template, never the concrete URL; `denied` marks a refusal + * by this MCP connection's policy rather than by Sentry. + */ +export interface ApiCall { + method: string; + operation: string; + /** HTTP status returned to the sandbox; 408 when execution closed first. */ + status: number; + /** Whether the request was sent to Sentry. */ + sent: boolean; + denied?: string; +} + +const READ_METHODS = ["GET", "HEAD", "OPTIONS"]; + +/** The only HTTP capability passed to the sandbox; credentials remain private. */ +export class ApiBroker extends RpcTarget { + #options: BrokerOptions; + /** Every call this execution made, recorded outside the sandbox for telemetry. */ + readonly calls: ApiCall[] = []; + + constructor(options: BrokerOptions) { + super(); + this.#options = options; + } + + async fetch(request: Request): Promise { + const call: ApiCall = { + method: request.method, + operation: "unknown", + status: 0, + sent: false, + }; + this.calls.push(call); + try { + const response = await this.#options.execution.run(() => + this.#fetch(request, call), + ); + call.status = response.status; + return response; + } catch (error) { + if (!this.#options.execution.signal.aborted) throw error; + call.status = 408; + // Settle RPC with a value, even when the sandbox no longer awaits it. + return Response.json( + { + detail: + error instanceof Error + ? error.message + : "Code execution has finished.", + }, + { status: 408 }, + ); + } + } + + async #fetch(request: Request, call: ApiCall): Promise { + const deny = (detail: string, status = 403) => { + call.denied = detail; + return Response.json({ detail }, { status }); + }; + const base = configuredUrl(this.#options.apiBaseUrl); + const requested = new URL(request.url); + const prefix = base.pathname.replace(/\/$/, ""); + if ( + requested.origin !== base.origin || + requested.username || + requested.password || + (requested.pathname !== prefix && + !requested.pathname.startsWith(`${prefix}/`)) || + /%2f|%5c/i.test(requested.pathname) + ) { + return deny( + "Only the configured Sentry API origin and path prefix are allowed.", + ); + } + if (!this.#options.allowWrites && isWriteMethod(request.method)) { + return deny("Writes are disabled for this MCP connection."); + } + const authorized = await this.#options.authorization.authorize( + request.url, + request.method, + ); + this.#options.execution.assertOpen(); + if ("error" in authorized) return deny(authorized.error); + call.operation = authorized.pathTemplate; + // Only API-relevant input headers cross the boundary. Auth is always replaced. + const headers = new Headers(); + for (const name of [ + "accept", + "content-type", + "if-match", + "if-none-match", + ]) { + const value = request.headers.get(name); + if (value) headers.set(name, value); + } + for (const [name, value] of Object.entries(authorized.headers)) + headers.set(name, value); + headers.set("Authorization", `Bearer ${this.#options.accessToken}`); + call.sent = true; + const response = await fetch( + new Request(new Request(authorized.url, request), { + headers, + redirect: "manual", + signal: this.#options.execution.signal, + }), + ); + if (response.status === 401) { + await this.#options.authorization.onUnauthorized(); + } + // Report before returning to user code, which may handle the HTTP error. + const eventId = + response.status >= 500 + ? logIssue( + new ApiServerError( + "Sentry API request failed during Code Mode execution.", + response.status, + ), + { + loggerScope: ["code-mode", "api"], + extra: { + method: request.method, + status: response.status, + operation: call.operation, + }, + }, + ) + : undefined; + // Do not allow a redirect to carry our bearer token to another location. + if (response.status >= 300 && response.status < 400) { + await response.body?.cancel(); + return Response.json( + { + detail: + "API redirects are not followed. Use the canonical endpoint path.", + }, + { status: 502 }, + ); + } + const responseHeaders = new Headers(); + if (eventId) responseHeaders.set("x-sentry-event-id", eventId); + for (const name of [ + "content-type", + "link", + "retry-after", + "www-authenticate", + "x-sentry-rate-limits", + "etag", + ]) { + const value = response.headers.get(name); + if (value) responseHeaders.set(name, value); + } + const body = await readBoundedBody(response.body, 2_000_000); + return new Response( + [204, 205, 304].includes(response.status) || request.method === "HEAD" + ? null + : body, + { + status: response.status, + headers: responseHeaders, + }, + ); + } +} + +/** Whether an HTTP method can change state in Sentry. */ +export function isWriteMethod(method: string): boolean { + return !READ_METHODS.includes(method); +} + +/** Whether a recorded call was sent to Sentry as a write. */ +export function isSentWrite(call: ApiCall): boolean { + return call.sent && isWriteMethod(call.method); +} diff --git a/packages/mcp-cloudflare/src/code-mode/execution.ts b/packages/mcp-cloudflare/src/code-mode/execution.ts new file mode 100644 index 000000000..48228b019 --- /dev/null +++ b/packages/mcp-cloudflare/src/code-mode/execution.ts @@ -0,0 +1,41 @@ +/** Close pending RPC like Cloudflare's ExecutionGate, and abort upstream HTTP. */ +export class ExecutionGate { + readonly deadline = Date.now() + 30_000; + readonly #controller = new AbortController(); + readonly signal = this.#controller.signal; + #resolveClosed!: (reason: Error) => void; + readonly #whenClosed = new Promise((resolve) => { + this.#resolveClosed = resolve; + }); + readonly #timer = setTimeout( + () => this.close(new Error("Execution deadline exceeded.")), + 30_000, + ); + + assertOpen(): void { + if (Date.now() >= this.deadline) { + this.close(new Error("Execution deadline exceeded.")); + } + this.signal.throwIfAborted(); + } + + /** Callbacks may outlive this wait; recheck the gate after awaits before HTTP. */ + async run(work: () => Promise): Promise { + this.assertOpen(); + const result = await Promise.race([ + work(), + this.#whenClosed.then((reason) => { + throw reason; + }), + ]); + this.assertOpen(); + return result; + } + + close(reason = new Error("Code execution has finished.")): void { + if (this.signal.aborted) return; + clearTimeout(this.#timer); + this.#controller.abort(reason); + this.#resolveClosed(reason); + } +} diff --git a/packages/mcp-cloudflare/src/code-mode/generated/openapi.json.txt b/packages/mcp-cloudflare/src/code-mode/generated/openapi.json.txt new file mode 100644 index 000000000..078cceea5 --- /dev/null +++ b/packages/mcp-cloudflare/src/code-mode/generated/openapi.json.txt @@ -0,0 +1 @@ +{"openapi":"3.0.3","info":{"title":"API Reference","version":"v0","description":"Sentry Public API","termsOfService":"http://sentry.io/terms/","contact":{"email":"partners@sentry.io"},"license":{"name":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0.html"}},"paths":{"/api/0/organizations/":{"get":{"operationId":"listOrganizations","description":"Return a list of organizations available to the authenticated session in a region.\nThis is particularly useful for requests with a user bound context. For API key-based requests this will only return the organization that belongs to the key.","summary":"List Your Organizations","parameters":[{"in":"query","name":"owner","schema":{"type":"boolean"},"description":"Specify `true` to restrict results to organizations in which you are an owner."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"},{"in":"query","name":"query","schema":{"type":"string"},"description":"Filters results by using [query syntax](/product/sentry-basics/search/).\n\nValid query fields include:\n- `id`: The organization ID\n- `slug`: The organization slug\n- `status`: The organization's current status (one of `active`, `pending_deletion`, or `deletion_in_progress`)\n- `email` or `member_id`: Filter your organizations by the emails or [organization member IDs](/api/organizations/list-an-organizations-members/) of specific members included\n- `query`: Filter your organizations by name, slug, and members that contain this substring\n\nExample: `query=(slug:foo AND status:active) OR (email:[thing-one@example.com,thing-two@example.com] AND query:bar)`\n"},{"in":"query","name":"sortBy","schema":{"type":"string"},"description":"The field to sort results by, in descending order. If not specified the results are sorted by the date they were created.\n\nValid fields include:\n- `members`: By number of members\n- `events`: By number of events in the past 24 hours\n"},{"in":"query","name":"per_page","schema":{"type":"integer"},"description":"Limit the number of rows to return in the result. Default and maximum allowed is 100."}],"tags":["Users"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"features":{"type":"array","items":{"type":"string"}},"extraOptions":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{}}},"access":{"type":"array","items":{"type":"string"}},"onboardingTasks":{"type":"array","items":{"type":"object","properties":{"task":{"type":"string","nullable":true},"status":{"type":"string"},"completionSeen":{"type":"string","format":"date-time","nullable":true},"dateCompleted":{"type":"string","format":"date-time"},"data":{}},"required":["completionSeen","data","dateCompleted","status","task"]}},"id":{"type":"string"},"slug":{"type":"string"},"status":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"isEarlyAdopter":{"type":"boolean"},"require2FA":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"links":{"type":"object","properties":{"organizationUrl":{"type":"string"},"regionUrl":{"type":"string"}},"required":["organizationUrl","regionUrl"]},"hasAuthProvider":{"type":"boolean"},"allowMemberInvite":{"type":"boolean"},"allowMemberProjectCreation":{"type":"boolean"},"allowSuperuserAccess":{"type":"boolean"}},"required":["allowMemberInvite","allowMemberProjectCreation","allowSuperuserAccess","avatar","dateCreated","hasAuthProvider","id","isEarlyAdopter","links","name","require2FA","slug","status"]}},"examples":{"ListYourOrganizations":{"value":[{"avatar":{"avatarType":"letter_avatar","avatarUuid":null},"dateCreated":"2018-11-06T21:19:55.101Z","features":["session-replay-video","onboarding","advanced-search","monitor-seat-billing","issue-platform"],"hasAuthProvider":false,"id":"2","isEarlyAdopter":false,"allowMemberInvite":true,"allowMemberProjectCreation":true,"allowSuperuserAccess":false,"links":{"organizationUrl":"https://the-interstellar-jurisdiction.sentry.io","regionUrl":"https://us.sentry.io"},"name":"The Interstellar Jurisdiction","require2FA":false,"slug":"the-interstellar-jurisdiction","status":{"id":"active","name":"active"}}],"summary":"List your organizations"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"both"}}},"/api/0/organizations/{organization_id_or_slug}/":{"get":{"operationId":"getOrganization","description":"Return details on an individual organization, including various details\nsuch as membership access and teams.","summary":"Retrieve an Organization","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"detailed","schema":{"type":"string"},"description":"\nSpecify `\"0\"` to return organization details that do not include projects or teams.\n"}],"tags":["Organizations"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"features":{"type":"array","items":{"type":"string"}},"extraOptions":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{}}},"access":{"type":"array","items":{"type":"string"}},"onboardingTasks":{"type":"array","items":{"type":"object","properties":{"task":{"type":"string","nullable":true},"status":{"type":"string"},"completionSeen":{"type":"string","format":"date-time","nullable":true},"dateCompleted":{"type":"string","format":"date-time"},"data":{}},"required":["completionSeen","data","dateCompleted","status","task"]}},"id":{"type":"string"},"slug":{"type":"string"},"status":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"isEarlyAdopter":{"type":"boolean"},"require2FA":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"links":{"type":"object","properties":{"organizationUrl":{"type":"string"},"regionUrl":{"type":"string"}},"required":["organizationUrl","regionUrl"]},"hasAuthProvider":{"type":"boolean"},"allowMemberInvite":{"type":"boolean"},"allowMemberProjectCreation":{"type":"boolean"},"allowSuperuserAccess":{"type":"boolean"}},"required":["allowMemberInvite","allowMemberProjectCreation","allowSuperuserAccess","avatar","dateCreated","hasAuthProvider","id","isEarlyAdopter","links","name","require2FA","slug","status"]},"examples":{"RetrieveAnOrganization":{"value":{"avatar":{"avatarType":"letter_avatar","avatarUuid":null},"dateCreated":"2018-11-06T21:19:55.101Z","hasAuthProvider":false,"id":"2","isEarlyAdopter":false,"allowMemberInvite":true,"allowMemberProjectCreation":true,"allowSuperuserAccess":false,"links":{"organizationUrl":"https://the-interstellar-jurisdiction.sentry.io","regionUrl":"https://us.sentry.io"},"name":"The Interstellar Jurisdiction","require2FA":false,"slug":"the-interstellar-jurisdiction","status":{"id":"active","name":"active"}},"summary":"Retrieve an organization"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"updateOrganization","description":"Update various attributes and configurable settings for the given organization.","summary":"Update an Organization","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["Organizations"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","description":"The new slug for the organization, which needs to be unique.","maxLength":50},"name":{"type":"string","description":"The new name for the organization.","maxLength":64},"isEarlyAdopter":{"type":"boolean","description":"Specify `true` to opt-in to new features before they're released to the public."},"hideAiFeatures":{"type":"boolean","description":"Specify `true` to hide AI features from the organization."},"defaultRole":{"enum":["member","admin","manager","owner"],"type":"string","description":"The default role new members will receive.\n\n* `member` - Member\n* `admin` - Admin\n* `manager` - Manager\n* `owner` - Owner"},"openMembership":{"type":"boolean","description":"Specify `true` to allow organization members to freely join any team."},"eventsMemberAdmin":{"type":"boolean","description":"Specify `true` to allow members to delete events (including the delete & discard action) by granting them the `event:admin` scope."},"alertsMemberWrite":{"type":"boolean","description":"Specify `true` to allow members to create, edit, and delete alert rules by granting them the `alerts:write` scope."},"attachmentsRole":{"enum":["member","admin","manager","owner"],"type":"string","description":"The role required to download event attachments, such as native crash reports or log files.\n\n* `member` - Member\n* `admin` - Admin\n* `manager` - Manager\n* `owner` - Owner"},"debugFilesRole":{"enum":["member","admin","manager","owner"],"type":"string","description":"The role required to download debug information files, ProGuard mappings and source maps.\n\n* `member` - Member\n* `admin` - Admin\n* `manager` - Manager\n* `owner` - Owner"},"hasGranularReplayPermissions":{"type":"boolean","description":"Specify `true` to enable granular replay permissions, allowing per-member access control for replay data."},"replayAccessMembers":{"type":"array","items":{"type":"integer"},"nullable":true,"description":"A list of user IDs who have permission to access replay data. Requires the hasGranularReplayPermissions flag to be true to be enforced."},"avatarType":{"enum":["letter_avatar","upload"],"type":"string","description":"The type of display picture for the organization.\n\n* `letter_avatar` - Use initials\n* `upload` - Upload an image"},"avatar":{"type":"string","description":"The image to upload as the organization avatar, in base64. Required if `avatarType` is `upload`."},"require2FA":{"type":"boolean","description":"Specify `true` to require and enforce two-factor authentication for all members."},"allowSharedIssues":{"type":"boolean","description":"Specify `true` to allow sharing of limited details on issues to anonymous users."},"enhancedPrivacy":{"type":"boolean","description":"Specify `true` to enable enhanced privacy controls to limit personally identifiable information (PII) as well as source code in things like notifications."},"scrapeJavaScript":{"type":"boolean","description":"Specify `true` to allow Sentry to scrape missing JavaScript source context when possible."},"storeCrashReports":{"enum":[0,1,5,10,20,50,100,-1],"type":"integer","description":"How many native crash reports (such as Minidumps for improved processing and download in issue details) to store per issue.\n\n* `0` - Disabled\n* `1` - 1 per issue\n* `5` - 5 per issue\n* `10` - 10 per issue\n* `20` - 20 per issue\n* `50` - 50 per issue\n* `100` - 100 per issue\n* `-1` - Unlimited"},"allowJoinRequests":{"type":"boolean","description":"Specify `true` to allow users to request to join your organization."},"dataScrubber":{"type":"boolean","description":"Specify `true` to require server-side data scrubbing for all projects."},"dataScrubberDefaults":{"type":"boolean","description":"Specify `true` to apply the default scrubbers to prevent things like passwords and credit cards from being stored for all projects."},"sensitiveFields":{"type":"array","items":{"type":"string"},"description":"A list of additional global field names to match against when scrubbing data for all projects."},"safeFields":{"type":"array","items":{"type":"string"},"description":"A list of global field names which data scrubbers should ignore."},"scrubIPAddresses":{"type":"boolean","description":"Specify `true` to prevent IP addresses from being stored for new events on all projects."},"relayPiiConfig":{"type":"string","description":"Advanced data scrubbing rules that can be configured for each project as a JSON string. The new rules will only apply to new incoming events. For more details on advanced data scrubbing, see our [full documentation](/security-legal-pii/scrubbing/advanced-datascrubbing/).\n\n> Warning: Calling this endpoint with this field fully overwrites the advanced data scrubbing rules.\n\nBelow is an example of a payload for a set of advanced data scrubbing rules for masking credit card numbers from the log message (equivalent to `[Mask] [Credit card numbers] from [$message]` in the Sentry app) and removing a specific key called `foo` (equivalent to `[Remove] [Anything] from [extra.foo]` in the Sentry app):\n```json\n{\n relayPiiConfig: \"{\\\"rules\":{\\\"0\\\":{\\\"type\\\":\\\"creditcard\\\",\\\"redaction\\\":{\\\"method\\\":\\\"mask\\\"}},\\\"1\\\":{\\\"type\\\":\\\"anything\\\",\\\"redaction\\\":{\\\"method\\\":\\\"remove\\\"}}},\\\"applications\\\":{\\\"$message\\\":[\\\"0\\\"],\\\"extra.foo\\\":[\\\"1\\\"]}}\"\n}\n```\n "},"trustedRelays":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"A list of local Relays (the name, public key, and description as a JSON) registered for the organization. This feature is only available for organizations on the Business and Enterprise plans. Read more about Relay [here](/product/relay/).\n\n Below is an example of a list containing a single local Relay registered for the organization:\n ```json\n {\n trustedRelays: [\n {\n name: \"my-relay\",\n publicKey: \"eiwr9fdruw4erfh892qy4493reyf89ur34wefd90h\",\n description: \"Configuration for my-relay.\"\n }\n ]\n }\n ```\n "},"relayDsnEndpoint":{"type":"string","nullable":true,"description":"A Relay base URL to use when displaying Client Key DSNs for this organization."},"issueAlertsThreadFlag":{"type":"boolean","description":"Specify `true` to allow the Sentry Slack integration to post replies in threads for an Issue Alert notification. Requires a Slack integration."},"metricAlertsThreadFlag":{"type":"boolean","description":"Specify `true` to allow the Sentry Slack integration to post replies in threads for a Metric Alert notification. Requires a Slack integration."},"cancelDeletion":{"type":"boolean","description":"Specify `true` to restore an organization that is pending deletion."},"apdexThreshold":{"type":"integer","description":"Deprecated. Response-time threshold in milliseconds previously used to compute Apdex."}}}}}},"security":[{"auth_token":["org:admin","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"features":{"type":"array","items":{"type":"string"}},"extraOptions":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{}}},"access":{"type":"array","items":{"type":"string"}},"onboardingTasks":{"type":"array","items":{"type":"object","properties":{"task":{"type":"string","nullable":true},"status":{"type":"string"},"completionSeen":{"type":"string","format":"date-time","nullable":true},"dateCompleted":{"type":"string","format":"date-time"},"data":{}},"required":["completionSeen","data","dateCompleted","status","task"]}},"id":{"type":"string"},"slug":{"type":"string"},"status":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"isEarlyAdopter":{"type":"boolean"},"require2FA":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"links":{"type":"object","properties":{"organizationUrl":{"type":"string"},"regionUrl":{"type":"string"}},"required":["organizationUrl","regionUrl"]},"hasAuthProvider":{"type":"boolean"},"allowMemberInvite":{"type":"boolean"},"allowMemberProjectCreation":{"type":"boolean"},"allowSuperuserAccess":{"type":"boolean"},"role":{},"orgRole":{"type":"string"},"targetSampleRate":{"type":"number","format":"double"},"samplingMode":{"type":"string"},"planSampleRate":{"type":"number","format":"double"},"desiredSampleRate":{"type":"number","format":"double"},"experiments":{"type":"object","additionalProperties":{"type":"string"}},"isDefault":{"type":"boolean"},"defaultRole":{"type":"string"},"orgRoleList":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"desc":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"allowed":{"type":"boolean"},"isAllowed":{"type":"boolean"},"isRetired":{"type":"boolean"},"isTeamRolesAllowed":{"type":"boolean"},"is_global":{"type":"boolean"},"isGlobal":{"type":"boolean"},"minimumTeamRole":{"type":"string"}},"required":["allowed","desc","id","isAllowed","isGlobal","isRetired","isTeamRolesAllowed","is_global","minimumTeamRole","name","scopes"]}},"teamRoleList":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"desc":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"allowed":{"type":"boolean"},"isAllowed":{"type":"boolean"},"isRetired":{"type":"boolean"},"isTeamRolesAllowed":{"type":"boolean"},"isMinimumRoleFor":{"type":"string","nullable":true}},"required":["allowed","desc","id","isAllowed","isMinimumRoleFor","isRetired","isTeamRolesAllowed","name","scopes"]}},"openMembership":{"type":"boolean"},"allowSharedIssues":{"type":"boolean"},"enhancedPrivacy":{"type":"boolean"},"dataScrubber":{"type":"boolean"},"dataScrubberDefaults":{"type":"boolean"},"sensitiveFields":{"type":"array","items":{"type":"string"}},"safeFields":{"type":"array","items":{"type":"string"}},"storeCrashReports":{"type":"integer"},"attachmentsRole":{"type":"string"},"debugFilesRole":{"type":"string"},"eventsMemberAdmin":{"type":"boolean"},"alertsMemberWrite":{"type":"boolean"},"scrubIPAddresses":{"type":"boolean"},"scrapeJavaScript":{"type":"boolean"},"allowJoinRequests":{"type":"boolean"},"relayPiiConfig":{"type":"string","nullable":true},"relayDsnEndpoint":{"type":"string","nullable":true},"trustedRelays":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"publicKey":{"type":"string"},"created":{"type":"string","format":"date-time"},"lastModified":{"type":"string","format":"date-time"}}}},"pendingAccessRequests":{"type":"integer"},"hideAiFeatures":{"type":"boolean"},"aggregatedDataConsent":{"type":"boolean"},"isDynamicallySampled":{"type":"boolean"},"issueAlertsThreadFlag":{"type":"boolean"},"metricAlertsThreadFlag":{"type":"boolean"},"requiresSso":{"type":"boolean"},"defaultAutofixAutomationTuning":{"type":"string"},"defaultSeerScannerAutomation":{"type":"boolean"},"enableSeerCoding":{"type":"boolean"},"defaultCodingAgent":{"type":"string"},"defaultCodingAgentIntegrationId":{"type":"string","nullable":true},"defaultAutomatedRunStoppingPoint":{"type":"string"},"autoEnableCodeReview":{"type":"boolean"},"autoOpenPrs":{"type":"boolean"},"defaultCodeReviewTriggers":{"type":"array","items":{"type":"string"}},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time","nullable":true},"isMember":{"type":"boolean"},"teamRole":{"type":"string","nullable":true},"flags":{"type":"object","additionalProperties":{}},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"isPending":{"type":"boolean"},"memberCount":{"type":"integer"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"externalTeams":{"type":"array","items":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]}},"organization":{"type":"object","properties":{"features":{"type":"array","items":{"type":"string"}},"extraOptions":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{}}},"access":{"type":"array","items":{"type":"string"}},"onboardingTasks":{"type":"array","items":{"type":"object","properties":{"task":{"type":"string","nullable":true},"status":{"type":"string"},"completionSeen":{"type":"string","format":"date-time","nullable":true},"dateCompleted":{"type":"string","format":"date-time"},"data":{}},"required":["completionSeen","data","dateCompleted","status","task"]}},"id":{"type":"string"},"slug":{"type":"string"},"status":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"isEarlyAdopter":{"type":"boolean"},"require2FA":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"links":{"type":"object","properties":{"organizationUrl":{"type":"string"},"regionUrl":{"type":"string"}},"required":["organizationUrl","regionUrl"]},"hasAuthProvider":{"type":"boolean"},"allowMemberInvite":{"type":"boolean"},"allowMemberProjectCreation":{"type":"boolean"},"allowSuperuserAccess":{"type":"boolean"}},"required":["allowMemberInvite","allowMemberProjectCreation","allowSuperuserAccess","avatar","dateCreated","hasAuthProvider","id","isEarlyAdopter","links","name","require2FA","slug","status"]},"projects":{"type":"array","items":{"type":"object","properties":{"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"isInternal":{"type":"boolean"},"isPublic":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"color":{"type":"string"},"status":{"type":"string"}},"required":["access","avatar","color","dateCreated","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","id","isBookmarked","isInternal","isMember","isPublic","name","platform","slug","status"]}}},"required":["access","avatar","dateCreated","flags","hasAccess","id","isMember","isPending","memberCount","name","slug","teamRole"]}},"projects":{"type":"array","items":{"type":"object","properties":{"latestDeploys":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"string"}},"nullable":true},"options":{"type":"object","additionalProperties":{}},"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"team":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"],"nullable":true},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]}},"platforms":{"type":"array","items":{"type":"string"}},"hasUserReports":{"type":"boolean"},"environments":{"type":"array","items":{"type":"string"}},"latestRelease":{"type":"object","properties":{"version":{"type":"string"}},"required":["version"],"nullable":true}},"required":["access","dateCreated","environments","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","hasUserReports","id","isBookmarked","isMember","latestRelease","name","platform","platforms","slug","team","teams"]}}},"required":["aggregatedDataConsent","alertsMemberWrite","allowJoinRequests","allowMemberInvite","allowMemberProjectCreation","allowSharedIssues","allowSuperuserAccess","attachmentsRole","autoEnableCodeReview","autoOpenPrs","avatar","dataScrubber","dataScrubberDefaults","dateCreated","debugFilesRole","defaultAutofixAutomationTuning","defaultAutomatedRunStoppingPoint","defaultCodeReviewTriggers","defaultCodingAgent","defaultCodingAgentIntegrationId","defaultRole","defaultSeerScannerAutomation","enableSeerCoding","enhancedPrivacy","eventsMemberAdmin","experiments","hasAuthProvider","hideAiFeatures","id","isDefault","isDynamicallySampled","isEarlyAdopter","issueAlertsThreadFlag","links","metricAlertsThreadFlag","name","openMembership","orgRoleList","pendingAccessRequests","projects","relayDsnEndpoint","relayPiiConfig","require2FA","requiresSso","safeFields","scrapeJavaScript","scrubIPAddresses","sensitiveFields","slug","status","storeCrashReports","teamRoleList","teams","trustedRelays"]},"examples":{"UpdateAnOrganization":{"value":{"id":"2","slug":"the-interstellar-jurisdiction","status":{"id":"active","name":"active"},"name":"The Interstellar Jurisdiction","dateCreated":"2018-11-06T21:19:55.101Z","isEarlyAdopter":false,"allowMemberInvite":true,"allowMemberProjectCreation":true,"allowSuperuserAccess":false,"require2FA":false,"requiresSso":false,"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":null},"links":{"organizationUrl":"https://the-interstellar-jurisdiction.sentry.io","regionUrl":"https://us.sentry.io"},"hasAuthProvider":false,"access":["org:integrations","member:admin","alerts:write","team:write","team:admin","project:write","org:read","member:write","project:read","member:read","event:admin","event:write","org:write","org:admin","project:releases","org:billing","project:admin","team:read","event:read","alerts:read"],"onboardingTasks":[{"task":"create_project","status":"complete","completionSeen":null,"dateCompleted":"2019-06-17T18:56:25.856360Z","data":{}}],"experiments":{},"isDefault":false,"defaultRole":"member","orgRoleList":[{"id":"billing","name":"Billing","desc":"Can manage subscription and billing details.","scopes":["org:billing"],"allowed":true,"isAllowed":true,"isRetired":false,"is_global":false,"isGlobal":false,"isTeamRolesAllowed":false,"minimumTeamRole":"contributor"},{"id":"member","name":"Member","desc":"Members can view and act on events, as well as view most other data within the organization.","scopes":["team:read","project:releases","org:read","event:read","alerts:write","member:read","alerts:read","event:admin","project:read","event:write"],"allowed":true,"isAllowed":true,"isRetired":false,"is_global":false,"isGlobal":false,"isTeamRolesAllowed":true,"minimumTeamRole":"contributor"},{"id":"admin","name":"Admin","desc":"Admin privileges on any teams of which they're a member. They can create new teams and projects, as well as remove teams and projects on which they already hold membership (or all teams, if open membership is enabled). Additionally, they can manage memberships of teams that they are members of. They cannot invite members to the organization.","scopes":["team:admin","org:integrations","project:admin","team:read","project:releases","org:read","team:write","event:read","alerts:write","member:read","alerts:read","event:admin","project:read","event:write","project:write"],"allowed":true,"isAllowed":true,"isRetired":true,"is_global":false,"isGlobal":false,"isTeamRolesAllowed":true,"minimumTeamRole":"admin"},{"id":"manager","name":"Manager","desc":"Gains admin access on all teams as well as the ability to add and remove members.","scopes":["team:admin","org:integrations","project:releases","team:write","member:read","org:write","project:write","project:admin","team:read","org:read","event:read","member:write","alerts:write","alerts:read","event:admin","project:read","event:write","member:admin"],"allowed":true,"isAllowed":true,"isRetired":false,"is_global":true,"isGlobal":true,"isTeamRolesAllowed":true,"minimumTeamRole":"admin"},{"id":"owner","name":"Owner","desc":"Unrestricted access to the organization, its data, and its settings. Can add, modify, and delete projects and members, as well as make billing and plan changes.","scopes":["team:admin","org:integrations","project:releases","org:admin","team:write","member:read","org:write","project:write","project:admin","team:read","org:read","event:read","member:write","alerts:write","org:billing","alerts:read","event:admin","project:read","event:write","member:admin"],"allowed":true,"isAllowed":true,"isRetired":false,"is_global":true,"isGlobal":true,"isTeamRolesAllowed":true,"minimumTeamRole":"admin"}],"teamRoleList":[{"id":"contributor","name":"Contributor","desc":"Contributors can view and act on events, as well as view most other data within the team's projects.","scopes":["project:read","project:releases","member:read","team:read","event:read","alerts:read","event:write","org:read"],"allowed":false,"isAllowed":false,"isRetired":false,"isTeamRolesAllowed":true,"isMinimumRoleFor":null},{"id":"admin","name":"Team Admin","desc":"Admin privileges on the team. They can create and remove projects, and can manage the team's memberships.","scopes":["project:read","project:releases","member:read","event:admin","team:write","project:admin","team:read","org:integrations","alerts:write","team:admin","project:write","event:read","alerts:read","event:write","org:read"],"allowed":false,"isAllowed":false,"isRetired":false,"isTeamRolesAllowed":true,"isMinimumRoleFor":"admin"}],"openMembership":true,"allowSharedIssues":true,"enhancedPrivacy":false,"dataScrubber":false,"dataScrubberDefaults":false,"sensitiveFields":[],"safeFields":[],"storeCrashReports":0,"attachmentsRole":"member","debugFilesRole":"admin","eventsMemberAdmin":true,"alertsMemberWrite":true,"scrubIPAddresses":false,"scrapeJavaScript":true,"allowJoinRequests":true,"relayPiiConfig":null,"relayDsnEndpoint":null,"hideAiFeatures":false,"aggregatedDataConsent":false,"defaultAutofixAutomationTuning":"off","autoEnableCodeReview":true,"defaultCodeReviewTriggers":["on_ready_for_review","on_new_commit"],"defaultSeerScannerAutomation":true,"enableSeerCoding":true,"autoOpenPrs":false,"defaultCodingAgent":"seer","defaultCodingAgentIntegrationId":null,"defaultAutomatedRunStoppingPoint":"code_changes","issueAlertsThreadFlag":true,"metricAlertsThreadFlag":true,"trustedRelays":[],"role":"owner","orgRole":"owner","pendingAccessRequests":0,"isDynamicallySampled":false,"teams":[{"id":"1","slug":"my-team","name":"my-team","dateCreated":"2019-06-17T18:56:19.729172Z","isMember":true,"teamRole":"admin","flags":{"idp:provisioned":false},"access":["project:read","project:releases","member:read","event:admin","team:write","project:admin","team:read","org:integrations","alerts:write","team:admin","project:write","event:read","alerts:read","event:write","org:read"],"hasAccess":true,"isPending":false,"memberCount":1,"avatar":{"avatarType":"letter_avatar","avatarUuid":null}}],"projects":[{"team":{"id":"1","slug":"my-team","name":"my-team"},"teams":[{"id":"1","slug":"my-team","name":"my-team"}],"id":"1","name":"node","slug":"node","isBookmarked":false,"isMember":true,"access":["project:read","project:releases","member:read","event:admin","team:write","project:admin","team:read","org:integrations","alerts:write","team:admin","project:write","event:read","alerts:read","event:write","org:read"],"hasAccess":true,"dateCreated":"2019-06-17T18:56:25.777769Z","environments":[],"features":["releases"],"firstEvent":null,"firstTransactionEvent":false,"hasSessions":false,"hasProfiles":false,"hasReplays":false,"hasFlags":false,"hasFeedbacks":false,"hasNewFeedbacks":false,"hasMonitors":false,"hasMinifiedStackTrace":false,"hasInsightsHttp":true,"hasInsightsDb":false,"hasInsightsAssets":true,"hasInsightsAppStart":false,"hasInsightsScreenLoad":false,"hasInsightsVitals":false,"hasInsightsCaches":false,"hasInsightsQueues":false,"hasInsightsAgentMonitoring":false,"hasInsightsMCP":false,"hasLogs":false,"hasTraceMetrics":false,"platform":"node","platforms":[],"latestRelease":null,"hasUserReports":false,"latestDeploys":null}]},"summary":"Update an organization"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"409":{"description":"Conflict"},"413":{"description":"Image too large."}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/agents/conversations/":{"get":{"operationId":"listOrganizationAIConversations","description":"**Experimental:** This API is under active development and may change.\n\nReturn AI conversations ordered by latest span time.\n\n`query` uses Sentry search syntax.\n\n**Span filters**\n\n- Description: `\"payment failed\"`; status: `span.status:[error,internal_error]`.\n- Operation: `gen_ai.operation.type:tool`; tool: `gen_ai.tool.name:get_weather`.\n- Duration: `span.duration:>2s`; ID: `gen_ai.conversation.id:\"session:123\"`\n or `conversation.conversationId:\"session:123\"`.\n\n**Conversation filters**\n\n- Calls: `conversation.llmCalls` or `conversation.messages`, and\n `conversation.toolCalls`; failures: `conversation.errors` and\n `conversation.toolErrors`.\n- Usage: `conversation.inputTokens`, `conversation.outputTokens`,\n `conversation.totalTokens`, and `conversation.totalCost`.\n- Timespan: `conversation.timeSpan` measures elapsed time between first and last AI spans;\n `conversation.generationDuration` sums LLM call durations. Both use milliseconds.\n\nUse numeric comparisons such as `conversation.toolCalls:>2`. Queries return\nconversations, not spans. Each `AND` condition may match a different span.\nReturned totals include all AI spans in selected project, environment, and time\nfilters, not only matching spans.\n\nNegation means no span matches, including when an attribute is absent. Payloads\nare searchable only when recorded and not scrubbed. Payload failure text does\nnot mark a span as failed; set `span.status:error` for reliable failure search.","summary":"List an Organization's AI Conversations","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects.\nFor example, the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=android&project=javascript-react`\n- `/?project=-1`\n"},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."},{"in":"query","name":"statsPeriod","schema":{"type":"string"},"description":"The period of time for the query, will override the start & end parameters, a number followed by one of:\n- `d` for days\n- `h` for hours\n- `m` for minutes\n- `s` for seconds\n- `w` for weeks\n\nFor example, `24h`, to mean query data starting from 24 hours ago to now."},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"query","schema":{"type":"string"},"description":"Sentry search syntax matched against spans. A conversation is returned when any span in it matches. Summary fields include all spans in selected projects and time range, not only matching spans."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"},{"in":"query","name":"per_page","schema":{"type":"integer"},"description":"Number of conversations to return per page. Defaults to 10; maximum is 100."}],"tags":["Explore"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"endTimestamp":{"type":"integer"},"errors":{"type":"integer"},"generationDuration":{"type":"number","format":"double"},"inputTokens":{"type":"integer"},"llmCalls":{"type":"integer"},"outputTokens":{"type":"integer"},"startTimestamp":{"type":"integer"},"toolCalls":{"type":"integer"},"toolErrors":{"type":"integer"},"toolNames":{"type":"array","items":{"type":"string"}},"totalCost":{"type":"number","format":"double"},"totalTokens":{"type":"integer"},"conversationId":{"type":"string"},"timeSpan":{"type":"number","format":"double"},"title":{"type":"string","nullable":true},"projectId":{"type":"integer","nullable":true},"flow":{"type":"array","items":{"type":"string"}},"traceCount":{"type":"integer"},"traceIds":{"type":"array","items":{"type":"string"}},"firstInput":{"type":"string","nullable":true},"lastOutput":{"type":"string","nullable":true},"user":{"type":"object","properties":{"id":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"username":{"type":"string","nullable":true},"ip_address":{"type":"string","nullable":true}},"required":["email","id","ip_address","username"],"nullable":true},"projects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]}},"webUrl":{"type":"string"}},"required":["conversationId","endTimestamp","errors","firstInput","flow","generationDuration","inputTokens","lastOutput","llmCalls","outputTokens","projectId","projects","startTimestamp","timeSpan","title","toolCalls","toolErrors","toolNames","totalCost","totalTokens","traceCount","traceIds","user","webUrl"]}},"examples":{"ReturnAListOfAIConversations":{"value":[{"conversationId":"01JQZ4W8X7J2Q9B4R5M6N7P8T9","title":"Check San Francisco weather","projectId":1,"projects":[{"id":1,"name":"Weather Assistant","slug":"weather-assistant"}],"webUrl":"https://sentry.io/organizations/org-slug/explore/agents/conversations/01JQZ4W8X7J2Q9B4R5M6N7P8T9/?project=1","flow":["Weather Assistant"],"errors":0,"llmCalls":2,"toolCalls":1,"totalTokens":485,"inputTokens":320,"outputTokens":165,"totalCost":0.0042,"timeSpan":2500,"generationDuration":1250.5,"startTimestamp":1743465600000,"endTimestamp":1743465602500,"traceCount":1,"traceIds":["4c79f60c11214eb38604f4ae0781bfb2"],"firstInput":"What is the weather in San Francisco?","lastOutput":"It is currently 18\u00b0C and sunny in San Francisco.","user":{"id":"123","email":"user@example.com","username":"example-user","ip_address":"192.0.2.1"},"toolNames":["get_weather"],"toolErrors":0}],"summary":"Return a list of AI conversations"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"},"x-sentry-experimental":true}},"/api/0/organizations/{organization_id_or_slug}/agents/conversations/{conversation_id}/":{"get":{"operationId":"retrieveOrganizationAIConversation","description":"**Experimental:** This API is under active development and may change.\n\nReturn spans recorded for one AI conversation in start-time order.\n\nMessage, tool, and response attributes contain their recorded string values.\n`stats.errors` counts spans whose status is not `ok`, `cancelled`, or `unknown`.\n`stats.errorToolNames` lists tools used by those spans.\n`stats.inputTokens` includes cache-read and cache-write tokens. In `stats.usageByModel`,\n`inputCost` includes cache-read and cache-write costs, and `outputCost` includes\nreasoning cost. These cost breakdowns are not added to `totalCost`.\nStats are returned on the first page only. Without an explicit range, Sentry widens\nthe search across available retention. A missing conversation returns an empty `spans` list.","summary":"Retrieve an Organization's AI Conversation","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"conversation_id","schema":{"type":"string"},"description":"Conversation ID recorded in `gen_ai.conversation.id`.","required":true},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects.\nFor example, the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=android&project=javascript-react`\n- `/?project=-1`\n"},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."},{"in":"query","name":"statsPeriod","schema":{"type":"string"},"description":"The period of time for the query, will override the start & end parameters, a number followed by one of:\n- `d` for days\n- `h` for hours\n- `m` for minutes\n- `s` for seconds\n- `w` for weeks\n\nFor example, `24h`, to mean query data starting from 24 hours ago to now."},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"},{"in":"query","name":"per_page","schema":{"type":"integer"},"description":"Number of spans to return per page. Defaults to 100; maximum is 1,000."},{"in":"query","name":"view","schema":{"type":"string","enum":["timeline","transcript"]},"description":"Defaults to timeline (paginated raw spans). Transcript returns paginated normalized messages; requires feature access. Transcript timestamps and durations are seconds."}],"tags":["Explore"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","description":"Span page plus conversation-level metadata.","properties":{"conversationId":{"type":"string"},"title":{"type":"string","nullable":true},"projects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]}},"webUrl":{"type":"string"},"spans":{"type":"array","items":{"type":"object","additionalProperties":{}}},"stats":{"type":"object","properties":{"endTimestamp":{"type":"integer"},"errors":{"type":"integer"},"generationDuration":{"type":"number","format":"double"},"inputTokens":{"type":"integer"},"llmCalls":{"type":"integer"},"outputTokens":{"type":"integer"},"startTimestamp":{"type":"integer"},"toolCalls":{"type":"integer"},"toolErrors":{"type":"integer"},"toolNames":{"type":"array","items":{"type":"string"}},"totalCost":{"type":"number","format":"double"},"totalTokens":{"type":"integer"},"cacheReadTokens":{"type":"integer"},"cacheWriteTokens":{"type":"integer"},"errorToolNames":{"type":"array","items":{"type":"string"}},"reasoningTokens":{"type":"integer"},"cacheReadCost":{"type":"number","format":"double"},"cacheWriteCost":{"type":"number","format":"double"},"reasoningCost":{"type":"number","format":"double"},"usageByModel":{"type":"array","items":{"type":"object","properties":{"model":{"type":"string","nullable":true},"llmCalls":{"type":"integer"},"inputTokens":{"type":"integer"},"outputTokens":{"type":"integer"},"totalTokens":{"type":"integer"},"cacheReadTokens":{"type":"integer"},"cacheWriteTokens":{"type":"integer"},"reasoningTokens":{"type":"integer"},"inputCost":{"type":"number","format":"double"},"outputCost":{"type":"number","format":"double"},"cacheReadCost":{"type":"number","format":"double"},"cacheWriteCost":{"type":"number","format":"double"},"reasoningCost":{"type":"number","format":"double"},"totalCost":{"type":"number","format":"double"}},"required":["cacheReadCost","cacheReadTokens","cacheWriteCost","cacheWriteTokens","inputCost","inputTokens","llmCalls","model","outputCost","outputTokens","reasoningCost","reasoningTokens","totalCost","totalTokens"]}}},"required":["cacheReadCost","cacheReadTokens","cacheWriteCost","cacheWriteTokens","endTimestamp","errorToolNames","errors","generationDuration","inputTokens","llmCalls","outputTokens","reasoningCost","reasoningTokens","startTimestamp","toolCalls","toolErrors","toolNames","totalCost","totalTokens","usageByModel"],"nullable":true}},"required":["conversationId","projects","spans","stats","title","webUrl"]},{"type":"object","properties":{"conversationId":{"type":"string"},"title":{"type":"string","nullable":true},"projects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]}},"webUrl":{"type":"string"},"stats":{"type":"object","properties":{"endTimestamp":{"type":"integer"},"errors":{"type":"integer"},"generationDuration":{"type":"number","format":"double"},"inputTokens":{"type":"integer"},"llmCalls":{"type":"integer"},"outputTokens":{"type":"integer"},"startTimestamp":{"type":"integer"},"toolCalls":{"type":"integer"},"toolErrors":{"type":"integer"},"toolNames":{"type":"array","items":{"type":"string"}},"totalCost":{"type":"number","format":"double"},"totalTokens":{"type":"integer"},"cacheReadTokens":{"type":"integer"},"cacheWriteTokens":{"type":"integer"},"errorToolNames":{"type":"array","items":{"type":"string"}},"reasoningTokens":{"type":"integer"},"cacheReadCost":{"type":"number","format":"double"},"cacheWriteCost":{"type":"number","format":"double"},"reasoningCost":{"type":"number","format":"double"},"usageByModel":{"type":"array","items":{"type":"object","properties":{"model":{"type":"string","nullable":true},"llmCalls":{"type":"integer"},"inputTokens":{"type":"integer"},"outputTokens":{"type":"integer"},"totalTokens":{"type":"integer"},"cacheReadTokens":{"type":"integer"},"cacheWriteTokens":{"type":"integer"},"reasoningTokens":{"type":"integer"},"inputCost":{"type":"number","format":"double"},"outputCost":{"type":"number","format":"double"},"cacheReadCost":{"type":"number","format":"double"},"cacheWriteCost":{"type":"number","format":"double"},"reasoningCost":{"type":"number","format":"double"},"totalCost":{"type":"number","format":"double"}},"required":["cacheReadCost","cacheReadTokens","cacheWriteCost","cacheWriteTokens","inputCost","inputTokens","llmCalls","model","outputCost","outputTokens","reasoningCost","reasoningTokens","totalCost","totalTokens"]}}},"required":["cacheReadCost","cacheReadTokens","cacheWriteCost","cacheWriteTokens","endTimestamp","errorToolNames","errors","generationDuration","inputTokens","llmCalls","outputTokens","reasoningCost","reasoningTokens","startTimestamp","toolCalls","toolErrors","toolNames","totalCost","totalTokens","usageByModel"],"nullable":true},"transcript":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"role":{"enum":["user","assistant","embedding","evaluation","memory"],"type":"string"},"content":{"type":"string"},"timestamp":{"type":"number","format":"double"},"nodeId":{"type":"string"},"traceId":{"type":"string"},"projectId":{"type":"string"},"userEmail":{"type":"string"},"reasoning":{"type":"string"},"agentName":{"type":"string"},"modelName":{"type":"string"},"duration":{"type":"number","format":"double"},"toolCalls":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"nodeId":{"type":"string"},"hasError":{"type":"boolean"},"duration":{"type":"number","format":"double"}},"required":["hasError","name","nodeId"]}},"embeddingInput":{"type":"string"},"embeddingTokens":{"type":"number","format":"double"},"embeddingHasError":{"type":"boolean"},"evaluation":{"type":"object","additionalProperties":{}},"memory":{"type":"object","additionalProperties":{}}},"required":["content","id","nodeId","role","timestamp"]}},"complete":{"type":"boolean"},"sourceSpanCount":{"type":"integer"}},"required":["complete","conversationId","projects","sourceSpanCount","stats","title","transcript","webUrl"]}]},"examples":{"ReturnAnAIConversation":{"value":{"conversationId":"01JQZ4W8X7J2Q9B4R5M6N7P8T9","title":"Check San Francisco weather","projects":[{"id":1,"name":"Weather Assistant","slug":"weather-assistant"}],"webUrl":"https://sentry.io/organizations/org-slug/explore/agents/conversations/01JQZ4W8X7J2Q9B4R5M6N7P8T9/?project=1","stats":{"cacheReadTokens":0,"cacheWriteTokens":0,"cacheReadCost":0,"cacheWriteCost":0,"reasoningCost":0,"endTimestamp":1743465601250,"errors":0,"errorToolNames":[],"generationDuration":1250,"inputTokens":0,"llmCalls":1,"outputTokens":0,"reasoningTokens":0,"startTimestamp":1743465600000,"toolCalls":0,"toolErrors":0,"toolNames":[],"totalCost":0.0042,"totalTokens":485,"usageByModel":[{"model":"gpt-4o-mini-2024-07-18","llmCalls":1,"inputTokens":0,"outputTokens":0,"totalTokens":485,"cacheReadTokens":0,"cacheWriteTokens":0,"reasoningTokens":0,"inputCost":0,"outputCost":0,"cacheReadCost":0,"cacheWriteCost":0,"reasoningCost":0,"totalCost":0.0042}]},"spans":[{"span_id":"a1b2c3d4e5f67890","trace":"4c79f60c11214eb38604f4ae0781bfb2","parent_span":null,"precise.start_ts":1743465600,"precise.finish_ts":1743465601.25,"project":"weather-assistant","project.id":1,"span.op":"gen_ai.chat","span.status":"ok","span.description":"chat gpt-4o-mini","span.duration":1250,"transaction":"weather-agent","is_transaction":false,"gen_ai.conversation.id":"01JQZ4W8X7J2Q9B4R5M6N7P8T9","gen_ai.operation.type":"ai_client","gen_ai.request.model":"gpt-4o-mini","gen_ai.response.model":"gpt-4o-mini-2024-07-18","gen_ai.input.messages":"[{\"role\":\"user\",\"content\":\"What is the weather in San Francisco?\"}]","gen_ai.output.messages":"[{\"role\":\"assistant\",\"content\":\"It is currently 18\u00b0C and sunny in San Francisco.\"}]","gen_ai.usage.total_tokens":485,"gen_ai.cost.total_tokens":0.0042,"user.id":"123","user.email":"user@example.com","errors":[],"occurrences":[]}]},"summary":"Return an AI conversation"},"ReturnANormalizedAIConversationTranscript":{"value":{"conversationId":"conversation-1","title":"Greeting","projects":[{"id":1,"name":"Example Agent","slug":"example-agent"}],"webUrl":"https://sentry.io/organizations/org-slug/explore/agents/conversations/conversation-1/?project=1","stats":null,"complete":true,"sourceSpanCount":1,"transcript":[{"id":"user-a1b2c3d4e5f67890","role":"user","content":"Hello","timestamp":1743465600,"nodeId":"a1b2c3d4e5f67890","userEmail":""},{"id":"assistant-a1b2c3d4e5f67890","role":"assistant","content":"Hi","timestamp":1743465601.25,"nodeId":"a1b2c3d4e5f67890","duration":1.25}]},"summary":"Return a normalized AI conversation transcript","description":"Request view=transcript with feature access. Raw spans remain available through view=timeline."}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"},"x-sentry-experimental":true}},"/api/0/organizations/{organization_id_or_slug}/artifactbundle/assemble/":{"post":{"operationId":"assembleOrganizationArtifactBundle","description":"**Experimental:** This API is under active development and may change.\n\nAssemble previously uploaded chunks into an artifact bundle, such as source maps, and\nstore its debug IDs.\n\nThe response reports the bundle's `state`. If chunks are missing, upload them and send\nthe request again. Repeat the request to poll until the state is `ok` or `error`.\nResending an identical request is safe: a bundle that is already assembling or\nassembled reports its state instead of starting a new job.","summary":"Assemble an Artifact Bundle","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["Releases"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"projects":{"type":"array","items":{"type":"string"},"description":"The IDs or slugs of the projects the bundle belongs to."},"checksum":{"type":"string","pattern":"^[0-9a-f]{40}$","description":"The SHA-1 checksum of the whole bundle."},"chunks":{"type":"array","items":{"type":"string","pattern":"^[0-9a-f]{40}$"},"description":"The SHA-1 checksums of the bundle's chunks, in order. Upload missing chunks with the chunk upload endpoint. Send an empty list to poll the bundle's state."},"version":{"type":"string","pattern":"^[^/]+$","description":"The release to associate the bundle with."},"dist":{"type":"string","description":"The distribution to associate the bundle with. Requires `version`."}},"required":["checksum","chunks","projects"],"additionalProperties":false}}}},"security":[{"auth_token":["org:ci","project:admin","project:releases","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"state":{"type":"string"},"missingChunks":{"type":"array","items":{"type":"string"}},"detail":{"type":"string","nullable":true}},"required":["missingChunks","state"]}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"},"x-sentry-idempotent":true,"x-sentry-experimental":true}},"/api/0/organizations/{organization_id_or_slug}/chunk-upload/":{"get":{"operationId":"getOrganizationChunkUploadOptions","description":"**Experimental:** This API is under active development and may change.\n\nReturn the URL and limits to use when uploading file chunks, such as the chunk size,\nthe number of chunks per request, and the supported compression.","summary":"Retrieve Chunk Upload Options","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["Organizations"],"security":[{"auth_token":["org:ci","project:admin","project:read","project:releases","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"chunkSize":{"type":"integer"},"chunksPerRequest":{"type":"integer"},"maxFileSize":{"type":"integer"},"maxRequestSize":{"type":"integer"},"concurrency":{"type":"integer"},"hashAlgorithm":{"type":"string"},"compression":{"type":"array","items":{"type":"string"}},"accept":{"type":"array","items":{"type":"string"}}},"required":["accept","chunkSize","chunksPerRequest","compression","concurrency","hashAlgorithm","maxFileSize","maxRequestSize","url"]}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"},"x-sentry-experimental":true},"post":{"operationId":"uploadOrganizationChunks","description":"**Experimental:** This API is under active development and may change.\n\nUpload file chunks so they can be assembled into debug information files or artifact\nbundles. Send requests to the URL from the chunk upload options, which uses the\nregion-specific domain (for example `us.sentry.io` or `de.sentry.io`).\n\nChunks may be compressed with one of the codecs listed in the options. Select it with\nthe `Content-Encoding` request header. Resending a chunk is safe: chunks are stored\nby checksum, so an identical upload changes nothing.","summary":"Upload File Chunks","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["Organizations"],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"array","items":{"type":"string","format":"uri"},"description":"The chunks to upload. Name each part after the SHA-1 checksum of its uncompressed content. Repeat the field for each chunk, up to `chunksPerRequest` per request."}},"required":["file"]}}},"required":true},"security":[{"auth_token":["org:ci","project:admin","project:releases","project:write"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"},"x-sentry-idempotent":true,"x-sentry-experimental":true}},"/api/0/organizations/{organization_id_or_slug}/code-mappings/":{"get":{"operationId":"listOrganizationCodeMappings","description":"Return repository path mappings for projects the user can access.","summary":"List an Organization's Code Mappings","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"integrationId","schema":{"type":"string"},"description":"Filter mappings to a specific installed integration."},{"in":"query","name":"project","schema":{"type":"array","items":{"type":"string"}},"description":"Filter by project ID or slug. Pass `-1` to include all projects the user can access. When omitted, mappings include all projects the user can access."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"},{"in":"query","name":"per_page","schema":{"type":"integer"},"description":"The maximum number of mappings to return per page."}],"tags":["Integrations"],"security":[{"auth_token":["org:admin","org:ci","org:integrations","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"projectSlug":{"type":"string"},"repoId":{"type":"string"},"repoName":{"type":"string"},"integrationId":{"type":"string","nullable":true},"provider":{"type":"object","properties":{"key":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"canAdd":{"type":"boolean"},"canDisable":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"aspects":{"type":"object","additionalProperties":{}}},"required":["aspects","canAdd","canDisable","features","key","name","slug"],"nullable":true},"stackRoot":{"type":"string"},"sourceRoot":{"type":"string"},"defaultBranch":{"type":"string","nullable":true},"automaticallyGenerated":{"type":"boolean"},"hasCodeOwner":{"type":"boolean"}},"required":["automaticallyGenerated","defaultBranch","hasCodeOwner","id","integrationId","projectId","projectSlug","provider","repoId","repoName","sourceRoot","stackRoot"]}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"post":{"operationId":"createOrganizationCodeMapping","description":"Create a repository path mapping for a project and installed integration.","summary":"Create an Organization Code Mapping","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["Integrations"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"repository_id":{"type":"integer","description":"The ID of a repository belonging to the installed integration."},"project_id":{"type":"integer","description":"The ID of the project to associate with the code mapping."},"stack_root":{"type":"string","description":"The path prefix to replace in stack trace filenames.","pattern":"^[^\\s'\\\"]+$"},"source_root":{"type":"string","description":"The repository path prefix to substitute for the stack trace prefix.","pattern":"^[^\\s'\\\"]+$"},"integration_id":{"type":"integer","description":"The ID of the installed integration that provides the repository."},"default_branch":{"type":"string","description":"The default branch to use when resolving source files. May be empty for Perforce.","pattern":"^(^(?![\\/]))([\\w\\.\\/-]+)(?= 0), w (1-6), h (>= 1), and x + w <= 6.","properties":{"x":{"type":"integer","maximum":5,"minimum":0,"description":"Column position (0-indexed)."},"y":{"type":"integer","minimum":0,"description":"Row position (0-indexed)."},"w":{"type":"integer","maximum":6,"minimum":1,"description":"Width in grid columns (1-6)."},"h":{"type":"integer","minimum":1,"description":"Height in grid rows."}},"required":["h","w","x","y"]}],"nullable":true},"axis_range":{"enum":["auto","dataMin",null],"type":"string","description":"* `auto`\n* `dataMin`","nullable":true},"legend_type":{"enum":["default","breakdown",null],"type":"string","description":"* `default`\n* `breakdown`","nullable":true}}},"description":"A json list of widgets saved in this dashboard."},"projects":{"type":"array","items":{"type":"integer"},"description":"The saved projects filter for this dashboard."},"environment":{"type":"array","items":{"type":"string"},"nullable":true,"description":"The saved environment filter for this dashboard."},"period":{"type":"string","nullable":true,"description":"The saved time range period for this dashboard."},"start":{"type":"string","format":"date-time","nullable":true,"description":"The saved start time for this dashboard."},"end":{"type":"string","format":"date-time","nullable":true,"description":"The saved end time for this dashboard."},"filters":{"type":"object","additionalProperties":{},"description":"The saved filters for this dashboard."},"utc":{"type":"boolean","description":"Setting that lets you display saved time range for this dashboard in UTC."},"permissions":{"allOf":[{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"is_editable_by_everyone":{"type":"boolean","description":"Whether the dashboard is editable by everyone."},"teams_with_edit_access":{"type":"array","items":{"type":"integer"},"description":"List of team IDs that have edit access to a dashboard."}},"required":["is_editable_by_everyone"]}],"nullable":true,"description":"Permissions that restrict users from editing dashboards"},"is_favorited":{"type":"boolean","default":false,"description":"Favorite the dashboard automatically for the request user"}},"required":["title"]}}},"required":true},"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"environment":{"type":"array","items":{"type":"string"}},"period":{"type":"string"},"utc":{"type":"string"},"expired":{"type":"boolean"},"start":{"type":"string","format":"date-time"},"end":{"type":"string","format":"date-time"},"id":{"type":"string"},"title":{"type":"string"},"dateCreated":{"type":"string"},"createdBy":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"],"nullable":true},"widgets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string","nullable":true},"displayType":{"type":"string"},"thresholds":{"type":"object","properties":{"preferredPolarity":{"type":"string"},"timeWindow":{"type":"string"},"max_values":{"type":"object","additionalProperties":{"type":"integer"}},"unit":{"type":"string"}},"required":["max_values","unit"],"nullable":true},"interval":{"type":"string"},"dateCreated":{"type":"string"},"dashboardId":{"type":"string"},"queries":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"fields":{"type":"array","items":{"type":"string"}},"aggregates":{"type":"array","items":{"type":"string"}},"transformations":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"columns":{"type":"array","items":{"type":"string"}},"fieldAliases":{"type":"array","items":{"type":"string"}},"conditions":{"type":"string"},"orderby":{"type":"string"},"widgetId":{"type":"string"},"onDemand":{"type":"array","items":{"type":"object","properties":{"enabled":{"type":"boolean"},"extractionState":{"type":"string"},"dashboardWidgetQueryId":{"type":"integer"}},"required":["dashboardWidgetQueryId","enabled","extractionState"]}},"isHidden":{"type":"boolean"},"selectedAggregate":{"type":"integer","nullable":true},"linkedDashboards":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"dashboardId":{"type":"integer"}},"required":["dashboardId","field"]}}},"required":["aggregates","columns","conditions","fieldAliases","fields","id","isHidden","linkedDashboards","name","onDemand","orderby","selectedAggregate","transformations","widgetId"]}},"limit":{"type":"integer","nullable":true},"widgetType":{"type":"string","nullable":true},"layout":{"type":"object","additionalProperties":{"type":"integer"},"nullable":true},"axisRange":{"type":"string","nullable":true},"legendType":{"enum":["default","breakdown",null],"type":"string","nullable":true},"datasetSource":{"type":"string","nullable":true},"exploreUrls":{"type":"array","items":{"type":"string"},"nullable":true},"changedReason":{"type":"array","items":{"type":"object","properties":{"orderby":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string"}},"nullable":true},"equations":{"type":"array","items":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},"nullable":true},"selected_columns":{"type":"array","items":{"type":"string"}}},"required":["equations","orderby","selected_columns"]},"nullable":true}},"required":["axisRange","changedReason","dashboardId","datasetSource","dateCreated","description","displayType","exploreUrls","id","interval","layout","legendType","limit","queries","thresholds","title","widgetType"]}},"projects":{"type":"array","items":{"type":"integer"}},"filters":{"type":"object","properties":{"release":{"type":"array","items":{"type":"string"}},"releaseId":{"type":"array","items":{"type":"string"}},"globalFilter":{"type":"array","items":{"type":"object","additionalProperties":{}}}}},"permissions":{"type":"object","properties":{"isEditableByEveryone":{"type":"boolean"},"teamsWithEditAccess":{"type":"array","items":{"type":"integer"}}},"required":["isEditableByEveryone","teamsWithEditAccess"],"nullable":true},"isFavorited":{"type":"boolean"},"prebuiltId":{"type":"integer","nullable":true}},"required":["createdBy","dateCreated","filters","id","isFavorited","permissions","prebuiltId","projects","title","widgets"]},"examples":{"CreateDashboard":{"value":{"id":"1","title":"Dashboard","dateCreated":"2024-06-20T14:38:03.498574Z","createdBy":{"id":"1","name":"Admin","username":"admin","email":"admin@sentry.io","avatarUrl":"www.example.com","isActive":true,"isSuspended":false,"hasPasswordAuth":true,"isManaged":false,"dateJoined":"2021-10-25T17:07:33.190596Z","lastLogin":"2024-07-16T15:28:39.261659Z","has2fa":true,"lastActive":"2024-07-16T20:45:49.364197Z","isSuperuser":false,"isStaff":false,"experiments":{},"emails":[{"id":"1","email":"admin@sentry.io","is_verified":true}],"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":"www.example.com"}},"widgets":[{"id":"658714","title":"Custom Widget","description":null,"displayType":"table","thresholds":null,"interval":"5m","dateCreated":"2024-07-16T15:36:46.048343Z","dashboardId":"1","datasetSource":"user","queries":[{"id":"1","name":"","fields":["avg(transaction.duration)","transaction"],"aggregates":["avg(transaction.duration)"],"transformations":{},"columns":["transaction"],"fieldAliases":["",""],"conditions":"","orderby":"-avg(transaction.duration)","widgetId":"1","onDemand":[{"enabled":false,"extractionState":"disabled:not-applicable","dashboardWidgetQueryId":1}],"isHidden":false,"selectedAggregate":null,"linkedDashboards":[]}],"limit":null,"widgetType":"transaction-like","layout":{"w":2,"y":0,"h":2,"minH":2,"x":0},"exploreUrls":null,"changedReason":null,"axisRange":null,"legendType":"default"}],"projects":[1],"filters":{},"environment":["alpha"],"period":"7d","permissions":{"isEditableByEveryone":true,"teamsWithEditAccess":[]},"isFavorited":false,"prebuiltId":null},"summary":"Create Dashboard"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"409":{"description":"Conflict"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/dashboards/{dashboard_id}/":{"get":{"operationId":"getOrganizationDashboard","description":"Return details about an organization's custom dashboard.","summary":"Retrieve an Organization's Custom Dashboard","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"dashboard_id","schema":{"type":"integer"},"description":"The ID of the dashboard you'd like to retrieve.","required":true}],"tags":["Dashboards"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"environment":{"type":"array","items":{"type":"string"}},"period":{"type":"string"},"utc":{"type":"string"},"expired":{"type":"boolean"},"start":{"type":"string","format":"date-time"},"end":{"type":"string","format":"date-time"},"id":{"type":"string"},"title":{"type":"string"},"dateCreated":{"type":"string"},"createdBy":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"],"nullable":true},"widgets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string","nullable":true},"displayType":{"type":"string"},"thresholds":{"type":"object","properties":{"preferredPolarity":{"type":"string"},"timeWindow":{"type":"string"},"max_values":{"type":"object","additionalProperties":{"type":"integer"}},"unit":{"type":"string"}},"required":["max_values","unit"],"nullable":true},"interval":{"type":"string"},"dateCreated":{"type":"string"},"dashboardId":{"type":"string"},"queries":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"fields":{"type":"array","items":{"type":"string"}},"aggregates":{"type":"array","items":{"type":"string"}},"transformations":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"columns":{"type":"array","items":{"type":"string"}},"fieldAliases":{"type":"array","items":{"type":"string"}},"conditions":{"type":"string"},"orderby":{"type":"string"},"widgetId":{"type":"string"},"onDemand":{"type":"array","items":{"type":"object","properties":{"enabled":{"type":"boolean"},"extractionState":{"type":"string"},"dashboardWidgetQueryId":{"type":"integer"}},"required":["dashboardWidgetQueryId","enabled","extractionState"]}},"isHidden":{"type":"boolean"},"selectedAggregate":{"type":"integer","nullable":true},"linkedDashboards":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"dashboardId":{"type":"integer"}},"required":["dashboardId","field"]}}},"required":["aggregates","columns","conditions","fieldAliases","fields","id","isHidden","linkedDashboards","name","onDemand","orderby","selectedAggregate","transformations","widgetId"]}},"limit":{"type":"integer","nullable":true},"widgetType":{"type":"string","nullable":true},"layout":{"type":"object","additionalProperties":{"type":"integer"},"nullable":true},"axisRange":{"type":"string","nullable":true},"legendType":{"enum":["default","breakdown",null],"type":"string","nullable":true},"datasetSource":{"type":"string","nullable":true},"exploreUrls":{"type":"array","items":{"type":"string"},"nullable":true},"changedReason":{"type":"array","items":{"type":"object","properties":{"orderby":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string"}},"nullable":true},"equations":{"type":"array","items":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},"nullable":true},"selected_columns":{"type":"array","items":{"type":"string"}}},"required":["equations","orderby","selected_columns"]},"nullable":true}},"required":["axisRange","changedReason","dashboardId","datasetSource","dateCreated","description","displayType","exploreUrls","id","interval","layout","legendType","limit","queries","thresholds","title","widgetType"]}},"projects":{"type":"array","items":{"type":"integer"}},"filters":{"type":"object","properties":{"release":{"type":"array","items":{"type":"string"}},"releaseId":{"type":"array","items":{"type":"string"}},"globalFilter":{"type":"array","items":{"type":"object","additionalProperties":{}}}}},"permissions":{"type":"object","properties":{"isEditableByEveryone":{"type":"boolean"},"teamsWithEditAccess":{"type":"array","items":{"type":"integer"}}},"required":["isEditableByEveryone","teamsWithEditAccess"],"nullable":true},"isFavorited":{"type":"boolean"},"prebuiltId":{"type":"integer","nullable":true}},"required":["createdBy","dateCreated","filters","id","isFavorited","permissions","prebuiltId","projects","title","widgets"]},"examples":{"DashboardGETResponse":{"value":{"id":"1","title":"Dashboard","dateCreated":"2024-06-20T14:38:03.498574Z","createdBy":{"id":"1","name":"Admin","username":"admin","email":"admin@sentry.io","avatarUrl":"www.example.com","isActive":true,"isSuspended":false,"hasPasswordAuth":true,"isManaged":false,"dateJoined":"2021-10-25T17:07:33.190596Z","lastLogin":"2024-07-16T15:28:39.261659Z","has2fa":true,"lastActive":"2024-07-16T20:45:49.364197Z","isSuperuser":false,"isStaff":false,"experiments":{},"emails":[{"id":"1","email":"admin@sentry.io","is_verified":true}],"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":"www.example.com"}},"widgets":[{"id":"658714","title":"Custom Widget","description":null,"displayType":"table","thresholds":null,"interval":"5m","dateCreated":"2024-07-16T15:36:46.048343Z","dashboardId":"1","datasetSource":"user","queries":[{"id":"1","name":"","fields":["avg(transaction.duration)","transaction"],"aggregates":["avg(transaction.duration)"],"transformations":{},"columns":["transaction"],"fieldAliases":["",""],"conditions":"","orderby":"-avg(transaction.duration)","widgetId":"1","onDemand":[{"enabled":false,"extractionState":"disabled:not-applicable","dashboardWidgetQueryId":1}],"isHidden":false,"selectedAggregate":null,"linkedDashboards":[]}],"limit":null,"widgetType":"transaction-like","layout":{"w":2,"y":0,"h":2,"minH":2,"x":0},"exploreUrls":null,"changedReason":null,"axisRange":null,"legendType":"default"}],"projects":[1],"filters":{},"environment":["alpha"],"period":"7d","permissions":{"isEditableByEveryone":true,"teamsWithEditAccess":[]},"isFavorited":false,"prebuiltId":null},"summary":"Dashboard GET response"}}}},"description":""},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"updateOrganizationDashboard","description":"Edit an organization's custom dashboard as well as any bulk\nedits on widgets that may have been made. (For example, widgets\nthat have been rearranged, updated queries and fields, specific\ndisplay types, and so on.)","summary":"Edit an Organization's Custom Dashboard","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"dashboard_id","schema":{"type":"integer"},"description":"The ID of the dashboard you'd like to retrieve.","required":true}],"tags":["Dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"id":{"type":"string","description":"A dashboard's unique id."},"title":{"type":"string","description":"The user-defined dashboard title.","maxLength":255},"widgets":{"type":"array","items":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"id":{"type":"string"},"title":{"type":"string","maxLength":255},"description":{"type":"string","nullable":true},"thresholds":{"type":"object","additionalProperties":{},"nullable":true},"display_type":{"enum":["line","area","bar","table","big_number","details","categorical_bar","wheel","rage_and_dead_clicks","server_tree","text","agents_traces_table","heatmap"],"type":"string","description":"* `line`\n* `area`\n* `bar`\n* `table`\n* `big_number`\n* `details`\n* `categorical_bar`\n* `wheel`\n* `rage_and_dead_clicks`\n* `server_tree`\n* `text`\n* `agents_traces_table`\n* `heatmap`"},"interval":{"type":"string","maxLength":10},"queries":{"type":"array","items":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"id":{"type":"string"},"fields":{"type":"array","items":{"type":"string"}},"aggregates":{"type":"array","items":{"type":"string"},"nullable":true},"transformations":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"columns":{"type":"array","items":{"type":"string"},"nullable":true},"field_aliases":{"type":"array","items":{"type":"string"},"nullable":true},"name":{"type":"string"},"conditions":{"type":"string"},"orderby":{"type":"string"},"is_hidden":{"type":"boolean"},"on_demand_extraction":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"extraction_state":{"type":"string"},"enabled":{"type":"boolean"}}},"on_demand_extraction_disabled":{"type":"boolean"},"selected_aggregate":{"type":"integer","nullable":true},"linked_dashboards":{"type":"array","items":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"field":{"type":"string"},"dashboard_id":{"type":"string"}},"required":["dashboard_id","field"]},"nullable":true}}}},"widget_type":{"enum":["discover","issue","metrics","error-events","transaction-like","spans","logs","tracemetrics","preprod-app-size",null],"type":"string","description":"* `discover`\n* `issue`\n* `metrics`\n* `error-events`\n* `transaction-like`\n* `spans`\n* `logs`\n* `tracemetrics`\n* `preprod-app-size`","nullable":true},"limit":{"type":"integer","minimum":1,"nullable":true},"layout":{"allOf":[{"type":"object","description":"Widget grid layout position and dimensions.\n\nThe dashboard uses a 6-column grid. Required keys: x, y, w, h, minH.\nConstraints: x (0-5), y (>= 0), w (1-6), h (>= 1), minH (>= 1), and x + w <= 6.","properties":{"x":{"type":"integer","maximum":5,"minimum":0,"description":"Column position (0-indexed)."},"y":{"type":"integer","minimum":0,"description":"Row position (0-indexed)."},"w":{"type":"integer","maximum":6,"minimum":1,"description":"Width in grid columns (1-6)."},"h":{"type":"integer","minimum":1,"description":"Height in grid rows."},"min_h":{"type":"integer","minimum":1,"description":"Minimum height in grid rows."}},"required":["h","min_h","w","x","y"]}],"nullable":true},"axis_range":{"enum":["auto","dataMin",null],"type":"string","description":"* `auto`\n* `dataMin`","nullable":true},"legend_type":{"enum":["default","breakdown",null],"type":"string","description":"* `default`\n* `breakdown`","nullable":true}}},"description":"A json list of widgets saved in this dashboard."},"projects":{"type":"array","items":{"type":"integer"},"description":"The saved projects filter for this dashboard."},"environment":{"type":"array","items":{"type":"string"},"nullable":true,"description":"The saved environment filter for this dashboard."},"period":{"type":"string","nullable":true,"description":"The saved time range period for this dashboard."},"start":{"type":"string","format":"date-time","nullable":true,"description":"The saved start time for this dashboard."},"end":{"type":"string","format":"date-time","nullable":true,"description":"The saved end time for this dashboard."},"filters":{"type":"object","additionalProperties":{},"description":"The saved filters for this dashboard."},"utc":{"type":"boolean","description":"Setting that lets you display saved time range for this dashboard in UTC."},"permissions":{"allOf":[{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"is_editable_by_everyone":{"type":"boolean","description":"Whether the dashboard is editable by everyone."},"teams_with_edit_access":{"type":"array","items":{"type":"integer"},"description":"List of team IDs that have edit access to a dashboard."}},"required":["is_editable_by_everyone"]}],"nullable":true,"description":"Permissions that restrict users from editing dashboards"}}}}}},"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"environment":{"type":"array","items":{"type":"string"}},"period":{"type":"string"},"utc":{"type":"string"},"expired":{"type":"boolean"},"start":{"type":"string","format":"date-time"},"end":{"type":"string","format":"date-time"},"id":{"type":"string"},"title":{"type":"string"},"dateCreated":{"type":"string"},"createdBy":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"],"nullable":true},"widgets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string","nullable":true},"displayType":{"type":"string"},"thresholds":{"type":"object","properties":{"preferredPolarity":{"type":"string"},"timeWindow":{"type":"string"},"max_values":{"type":"object","additionalProperties":{"type":"integer"}},"unit":{"type":"string"}},"required":["max_values","unit"],"nullable":true},"interval":{"type":"string"},"dateCreated":{"type":"string"},"dashboardId":{"type":"string"},"queries":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"fields":{"type":"array","items":{"type":"string"}},"aggregates":{"type":"array","items":{"type":"string"}},"transformations":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"columns":{"type":"array","items":{"type":"string"}},"fieldAliases":{"type":"array","items":{"type":"string"}},"conditions":{"type":"string"},"orderby":{"type":"string"},"widgetId":{"type":"string"},"onDemand":{"type":"array","items":{"type":"object","properties":{"enabled":{"type":"boolean"},"extractionState":{"type":"string"},"dashboardWidgetQueryId":{"type":"integer"}},"required":["dashboardWidgetQueryId","enabled","extractionState"]}},"isHidden":{"type":"boolean"},"selectedAggregate":{"type":"integer","nullable":true},"linkedDashboards":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"dashboardId":{"type":"integer"}},"required":["dashboardId","field"]}}},"required":["aggregates","columns","conditions","fieldAliases","fields","id","isHidden","linkedDashboards","name","onDemand","orderby","selectedAggregate","transformations","widgetId"]}},"limit":{"type":"integer","nullable":true},"widgetType":{"type":"string","nullable":true},"layout":{"type":"object","additionalProperties":{"type":"integer"},"nullable":true},"axisRange":{"type":"string","nullable":true},"legendType":{"enum":["default","breakdown",null],"type":"string","nullable":true},"datasetSource":{"type":"string","nullable":true},"exploreUrls":{"type":"array","items":{"type":"string"},"nullable":true},"changedReason":{"type":"array","items":{"type":"object","properties":{"orderby":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string"}},"nullable":true},"equations":{"type":"array","items":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},"nullable":true},"selected_columns":{"type":"array","items":{"type":"string"}}},"required":["equations","orderby","selected_columns"]},"nullable":true}},"required":["axisRange","changedReason","dashboardId","datasetSource","dateCreated","description","displayType","exploreUrls","id","interval","layout","legendType","limit","queries","thresholds","title","widgetType"]}},"projects":{"type":"array","items":{"type":"integer"}},"filters":{"type":"object","properties":{"release":{"type":"array","items":{"type":"string"}},"releaseId":{"type":"array","items":{"type":"string"}},"globalFilter":{"type":"array","items":{"type":"object","additionalProperties":{}}}}},"permissions":{"type":"object","properties":{"isEditableByEveryone":{"type":"boolean"},"teamsWithEditAccess":{"type":"array","items":{"type":"integer"}}},"required":["isEditableByEveryone","teamsWithEditAccess"],"nullable":true},"isFavorited":{"type":"boolean"},"prebuiltId":{"type":"integer","nullable":true}},"required":["createdBy","dateCreated","filters","id","isFavorited","permissions","prebuiltId","projects","title","widgets"]},"examples":{"DashboardPUTResponse":{"value":{"id":"1","title":"Dashboard","dateCreated":"2024-06-20T14:38:03.498574Z","createdBy":{"id":"1","name":"Admin","username":"admin","email":"admin@sentry.io","avatarUrl":"www.example.com","isActive":true,"isSuspended":false,"hasPasswordAuth":true,"isManaged":false,"dateJoined":"2021-10-25T17:07:33.190596Z","lastLogin":"2024-07-16T15:28:39.261659Z","has2fa":true,"lastActive":"2024-07-16T20:45:49.364197Z","isSuperuser":false,"isStaff":false,"experiments":{},"emails":[{"id":"1","email":"admin@sentry.io","is_verified":true}],"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":"www.example.com"}},"widgets":[{"id":"658714","title":"Custom Widget","description":null,"displayType":"table","thresholds":null,"interval":"5m","dateCreated":"2024-07-16T15:36:46.048343Z","dashboardId":"1","datasetSource":"user","queries":[{"id":"1","name":"","fields":["avg(transaction.duration)","transaction"],"aggregates":["avg(transaction.duration)"],"transformations":{},"columns":["transaction"],"fieldAliases":["",""],"conditions":"","orderby":"-avg(transaction.duration)","widgetId":"1","onDemand":[{"enabled":false,"extractionState":"disabled:not-applicable","dashboardWidgetQueryId":1}],"isHidden":false,"selectedAggregate":null,"linkedDashboards":[]}],"limit":null,"widgetType":"transaction-like","layout":{"w":2,"y":0,"h":2,"minH":2,"x":0},"exploreUrls":null,"changedReason":null,"axisRange":null,"legendType":"default"}],"projects":[1],"filters":{},"environment":["alpha"],"period":"7d","permissions":{"isEditableByEveryone":true,"teamsWithEditAccess":[]},"isFavorited":false,"prebuiltId":null},"summary":"Dashboard PUT response"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteOrganizationDashboard","description":"Delete an organization's custom dashboard.","summary":"Delete an Organization's Custom Dashboard","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"dashboard_id","schema":{"type":"integer"},"description":"The ID of the dashboard you'd like to retrieve.","required":true}],"tags":["Dashboards"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"204":{"description":"No Content"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/detectors/":{"get":{"operationId":"listOrganizationDetectors","description":"List an Organization's Monitors","summary":"Fetch an Organization's Monitors","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects.\nFor example, the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=android&project=javascript-react`\n- `/?project=-1`\n"},{"in":"query","name":"query","schema":{"type":"string"},"description":"An optional search query for filtering monitors.\n\nAvailable fields are:\n- `name`\n- `type`: e.g. `error`, `metric_issue`, `issue_stream`\n- `assignee`: email, username, #team, me, none\n "},{"in":"query","name":"sortBy","schema":{"type":"string"},"description":"The property to sort results by. If not specified, the results are sorted by id.\n\nAvailable fields are:\n- `name`\n- `id`\n- `type`\n- `connectedWorkflows`\n- `latestGroup`\n- `openIssues`\n\nPrefix with `-` to sort in descending order.\n "},{"in":"query","name":"id","schema":{"type":"array","items":{"type":"integer"}},"description":"The ID of the monitor you'd like to query."},{"in":"query","name":"type","schema":{"type":"array","items":{"type":"string"}},"description":"Filter by monitor type(s). Can be specified multiple times."},{"in":"query","name":"enabled","schema":{"type":"boolean"},"description":"Filter by whether monitors are enabled."},{"in":"query","name":"per_page","schema":{"type":"integer"},"description":"Limit the number of rows to return in the result. Default and maximum allowed is 100."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Monitors"],"security":[{"auth_token":["alerts:read","org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"owner":{"type":"object","properties":{"type":{"enum":["user","team"],"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["id","name","type"],"nullable":true},"createdBy":{"type":"string","nullable":true},"latestGroup":{"type":"object","additionalProperties":{},"nullable":true},"description":{"type":"string","nullable":true},"id":{"type":"string"},"projectId":{"type":"string","nullable":true},"name":{"type":"string"},"type":{"type":"string"},"workflowIds":{"type":"array","items":{"type":"string"},"nullable":true},"dateCreated":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"dataSources":{"type":"array","items":{"type":"object","additionalProperties":{}},"nullable":true},"conditionGroup":{"type":"object","additionalProperties":{},"nullable":true},"config":{"type":"object","additionalProperties":{}},"enabled":{"type":"boolean"}},"required":["conditionGroup","config","dataSources","dateCreated","dateUpdated","enabled","id","name","projectId","type","workflowIds"]}},"examples":{"ListAllMonitorsInAnOrganization":{"value":[{"id":"123","projectId":"1","name":"Error Monitor","description":null,"type":"error","workflowIds":["12345"],"owner":null,"createdBy":null,"dateCreated":"2025-03-12T11:15:50.764865Z","dateUpdated":"2025-06-17T14:04:02.485354Z","dataSources":null,"conditionGroup":null,"config":{},"enabled":true,"latestGroup":{"id":"123456789","title":"This is an example Python exception","culprit":"/api/0/test/example/","shortId":"SENTRY-ABC12","level":"info","status":"unresolved","substatus":"escalating","platform":"python","project":{"id":"1","name":"Example","slug":"sentry","platform":"python"},"type":"default","issueType":"error","issueCategory":"error","metadata":{"title":"This is an example Python exception","sdk":{"name":"sentry.python.django","name_normalized":"sentry.python"},"severity":0,"severity_reason":"log_level_info","initial_priority":25},"numComments":0,"firstSeen":"2026-01-08T21:00:59.737468Z","lastSeen":"2026-01-08T21:23:45.723716Z"}},{"id":"234567891","projectId":"1","name":"[us] Example","description":null,"type":"uptime_domain_failure","workflowIds":[],"owner":{"type":"team","id":"1234","name":"abc"},"createdBy":null,"dateCreated":"2025-04-21T21:56:32.445528Z","dateUpdated":"2025-10-23T00:07:24.809466Z","dataSources":[{"id":"271218","organizationId":"1","type":"uptime_subscription","sourceId":"267409","queryObj":{"url":"https://example.com","method":"POST","body":"{\n \"level\": \"info\",\n \"message\": \"Test-Event\",\n \"platform\": \"javascript\"\n}","headers":[["content-type","application/json"],["user-agent","Sentry Test"]],"intervalSeconds":60,"timeoutMs":5000,"traceSampling":false}}],"conditionGroup":{"id":"56789","organizationId":"1","logicType":"any","conditions":[{"id":"123456","type":"eq","comparison":"failure","conditionResult":75},{"id":"234567","type":"eq","comparison":"success","conditionResult":0}],"actions":[]},"config":{"mode":1,"environment":"us","downtimeThreshold":3,"recoveryThreshold":1},"enabled":true,"latestGroup":null},{"id":"1234567","projectId":"123","name":"Test Alert","description":null,"type":"metric_issue","workflowIds":["1234567"],"owner":{"type":"user","id":"12345","name":"jane@example.com","email":"jane@example.com"},"createdBy":"12345","dateCreated":"2025-04-28T22:46:12.469771Z","dateUpdated":"2025-07-29T20:57:06.680844Z","dataSources":[{"id":"56789","organizationId":"1","type":"snuba_query_subscription","sourceId":"45678","queryObj":{"id":"34567","status":0,"subscription":"12/3456789","snubaQuery":{"id":"56789","dataset":"events_analytics_platform","query":"","aggregate":"avg(span.duration)","timeWindow":14400,"environment":null,"eventTypes":["trace_item_span"],"extrapolationMode":"unknown"}}}],"conditionGroup":{"id":"12345","organizationId":"1","logicType":"any","conditions":[{"id":"456789","type":"gt","comparison":1600,"conditionResult":75},{"id":"345678","type":"lte","comparison":1600,"conditionResult":0}],"actions":[]},"config":{"detectionType":"static","comparisonDelta":null},"enabled":true,"latestGroup":null}],"summary":"List all monitors in an organization"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"updateOrganizationDetectors","description":"Bulk enable or disable an Organization's Monitors","summary":"Mutate an Organization's Monitors","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects.\nFor example, the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=android&project=javascript-react`\n- `/?project=-1`\n"},{"in":"query","name":"query","schema":{"type":"string"},"description":"An optional search query for filtering monitors.\n\nAvailable fields are:\n- `name`\n- `type`: e.g. `error`, `metric_issue`, `issue_stream`\n- `assignee`: email, username, #team, me, none\n "},{"in":"query","name":"id","schema":{"type":"array","items":{"type":"integer"}},"description":"The ID of the monitor you'd like to query."}],"tags":["Monitors"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable or disable the monitors"}},"required":["enabled"]}}},"required":true},"security":[{"auth_token":["alerts:write","org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"owner":{"type":"object","properties":{"type":{"enum":["user","team"],"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["id","name","type"],"nullable":true},"createdBy":{"type":"string","nullable":true},"latestGroup":{"type":"object","additionalProperties":{},"nullable":true},"description":{"type":"string","nullable":true},"id":{"type":"string"},"projectId":{"type":"string","nullable":true},"name":{"type":"string"},"type":{"type":"string"},"workflowIds":{"type":"array","items":{"type":"string"},"nullable":true},"dateCreated":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"dataSources":{"type":"array","items":{"type":"object","additionalProperties":{}},"nullable":true},"conditionGroup":{"type":"object","additionalProperties":{},"nullable":true},"config":{"type":"object","additionalProperties":{}},"enabled":{"type":"boolean"}},"required":["conditionGroup","config","dataSources","dateCreated","dateUpdated","enabled","id","name","projectId","type","workflowIds"]}},"examples":{"ListAllMonitorsInAnOrganization":{"value":[{"id":"123","projectId":"1","name":"Error Monitor","description":null,"type":"error","workflowIds":["12345"],"owner":null,"createdBy":null,"dateCreated":"2025-03-12T11:15:50.764865Z","dateUpdated":"2025-06-17T14:04:02.485354Z","dataSources":null,"conditionGroup":null,"config":{},"enabled":true,"latestGroup":{"id":"123456789","title":"This is an example Python exception","culprit":"/api/0/test/example/","shortId":"SENTRY-ABC12","level":"info","status":"unresolved","substatus":"escalating","platform":"python","project":{"id":"1","name":"Example","slug":"sentry","platform":"python"},"type":"default","issueType":"error","issueCategory":"error","metadata":{"title":"This is an example Python exception","sdk":{"name":"sentry.python.django","name_normalized":"sentry.python"},"severity":0,"severity_reason":"log_level_info","initial_priority":25},"numComments":0,"firstSeen":"2026-01-08T21:00:59.737468Z","lastSeen":"2026-01-08T21:23:45.723716Z"}},{"id":"234567891","projectId":"1","name":"[us] Example","description":null,"type":"uptime_domain_failure","workflowIds":[],"owner":{"type":"team","id":"1234","name":"abc"},"createdBy":null,"dateCreated":"2025-04-21T21:56:32.445528Z","dateUpdated":"2025-10-23T00:07:24.809466Z","dataSources":[{"id":"271218","organizationId":"1","type":"uptime_subscription","sourceId":"267409","queryObj":{"url":"https://example.com","method":"POST","body":"{\n \"level\": \"info\",\n \"message\": \"Test-Event\",\n \"platform\": \"javascript\"\n}","headers":[["content-type","application/json"],["user-agent","Sentry Test"]],"intervalSeconds":60,"timeoutMs":5000,"traceSampling":false}}],"conditionGroup":{"id":"56789","organizationId":"1","logicType":"any","conditions":[{"id":"123456","type":"eq","comparison":"failure","conditionResult":75},{"id":"234567","type":"eq","comparison":"success","conditionResult":0}],"actions":[]},"config":{"mode":1,"environment":"us","downtimeThreshold":3,"recoveryThreshold":1},"enabled":true,"latestGroup":null},{"id":"1234567","projectId":"123","name":"Test Alert","description":null,"type":"metric_issue","workflowIds":["1234567"],"owner":{"type":"user","id":"12345","name":"jane@example.com","email":"jane@example.com"},"createdBy":"12345","dateCreated":"2025-04-28T22:46:12.469771Z","dateUpdated":"2025-07-29T20:57:06.680844Z","dataSources":[{"id":"56789","organizationId":"1","type":"snuba_query_subscription","sourceId":"45678","queryObj":{"id":"34567","status":0,"subscription":"12/3456789","snubaQuery":{"id":"56789","dataset":"events_analytics_platform","query":"","aggregate":"avg(span.duration)","timeWindow":14400,"environment":null,"eventTypes":["trace_item_span"],"extrapolationMode":"unknown"}}}],"conditionGroup":{"id":"12345","organizationId":"1","logicType":"any","conditions":[{"id":"456789","type":"gt","comparison":1600,"conditionResult":75},{"id":"345678","type":"lte","comparison":1600,"conditionResult":0}],"actions":[]},"config":{"detectionType":"static","comparisonDelta":null},"enabled":true,"latestGroup":null}],"summary":"List all monitors in an organization"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteOrganizationDetectors","description":"Bulk delete Monitors for a given organization","summary":"Bulk Delete Monitors","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects.\nFor example, the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=android&project=javascript-react`\n- `/?project=-1`\n"},{"in":"query","name":"query","schema":{"type":"string"},"description":"An optional search query for filtering monitors.\n\nAvailable fields are:\n- `name`\n- `type`: e.g. `error`, `metric_issue`, `issue_stream`\n- `assignee`: email, username, #team, me, none\n "},{"in":"query","name":"sortBy","schema":{"type":"string"},"description":"The property to sort results by. If not specified, the results are sorted by id.\n\nAvailable fields are:\n- `name`\n- `id`\n- `type`\n- `connectedWorkflows`\n- `latestGroup`\n- `openIssues`\n\nPrefix with `-` to sort in descending order.\n "},{"in":"query","name":"id","schema":{"type":"array","items":{"type":"integer"}},"description":"The ID of the monitor you'd like to query."}],"tags":["Monitors"],"security":[{"auth_token":["alerts:write","org:admin","org:read","org:write"]}],"responses":{"200":{"description":"Success"},"204":{"description":"No Content"},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/detectors/{detector_id}/":{"get":{"operationId":"getOrganizationDetector","description":"Return details on an individual monitor","summary":"Fetch a Monitor","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"detector_id","schema":{"type":"integer"},"description":"The ID of the monitor you'd like to query.","required":true}],"tags":["Monitors"],"security":[{"auth_token":["alerts:read","org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"owner":{"type":"object","properties":{"type":{"enum":["user","team"],"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["id","name","type"],"nullable":true},"createdBy":{"type":"string","nullable":true},"latestGroup":{"type":"object","additionalProperties":{},"nullable":true},"description":{"type":"string","nullable":true},"id":{"type":"string"},"projectId":{"type":"string","nullable":true},"name":{"type":"string"},"type":{"type":"string"},"workflowIds":{"type":"array","items":{"type":"string"},"nullable":true},"dateCreated":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"dataSources":{"type":"array","items":{"type":"object","additionalProperties":{}},"nullable":true},"conditionGroup":{"type":"object","additionalProperties":{},"nullable":true},"config":{"type":"object","additionalProperties":{}},"enabled":{"type":"boolean"}},"required":["conditionGroup","config","dataSources","dateCreated","dateUpdated","enabled","id","name","projectId","type","workflowIds"]},"examples":{"FetchAMonitor":{"value":{"id":"123456","projectId":"1","name":"High Number of Errors","description":null,"type":"metric_issue","workflowIds":["45678"],"owner":{"type":"team","id":"1234567","name":"example-team"},"createdBy":"789123","dateCreated":"2025-03-25T17:50:45.587657Z","dateUpdated":"2025-07-22T17:10:45.069457Z","dataSources":[{"id":"34567","organizationId":"1","type":"snuba_query_subscription","sourceId":"56789","queryObj":{"id":"23456","status":0,"subscription":"12/345acb678def912ghi","snubaQuery":{"id":"12345","dataset":"events","query":"","aggregate":"count()","timeWindow":900,"environment":null,"eventTypes":["error"],"extrapolationMode":"unknown"}}}],"conditionGroup":{"id":"345678","organizationId":"1","logicType":"any","conditions":[{"id":"234567","type":"anomaly_detection","comparison":{"seasonality":"auto","sensitivity":"low","thresholdType":0},"conditionResult":75}],"actions":[]},"config":{"detectionType":"dynamic","comparisonDelta":null},"enabled":true,"latestGroup":{"id":"123456789","title":"High Number of Errors","culprit":"","shortId":"EXAMPLE-1A2B","level":"error","status":"resolved","substatus":null,"platform":"python","project":{"id":"1","name":"Backend","slug":"sentry","platform":"python"},"type":"generic","issueType":"metric_issue","issueCategory":"metric","metadata":{"title":"High Number of Errors","value":"Detected an error","initial_priority":75},"numComments":0,"firstSeen":"2025-07-21T14:46:07.845207Z","lastSeen":"2026-01-12T16:16:26.355334Z"}},"summary":"Fetch a Monitor"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"updateOrganizationDetector","description":"Update an existing monitor","summary":"Update a Monitor by ID","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"detector_id","schema":{"type":"integer"},"description":"The ID of the monitor you'd like to query.","required":true}],"tags":["Monitors"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"name":{"type":"string","description":"Name of the monitor.","maxLength":200},"type":{"type":"string","description":"The type of monitor - `metric_issue`."},"workflow_ids":{"type":"array","items":{"type":"integer"},"description":"The IDs of the alerts to connect this monitor to. Use the 'Fetch Alerts' endpoint to find the IDs."},"data_sources":{"type":"array","items":{},"description":"\n The data sources for the metric monitor to use based on what you want to measure.\n\n `timeWindow` is measured in seconds. Cron Monitors use schedules instead of this field.\n Legacy metric alert rules expressed this value in minutes, so multiply a legacy value\n by 60 when migrating it to a monitor. For example, a legacy 5-minute window becomes\n `\"timeWindow\": 300`.\n\n **Number of Errors Metric Monitor**\n - `eventTypes`: Any of `error` or `default`.\n ```json\n [\n {\n \"aggregate\": \"count()\",\n \"dataset\" : \"events\",\n \"environment\": \"prod\",\n \"eventTypes\": [\"default\", \"error\"],\n \"query\": \"is:unresolved\",\n \"queryType\": 0,\n \"timeWindow\": 3600\n }\n ]\n ```\n\n **Users Experiencing Errors Metric Monitor**\n - `eventTypes`: Any of `error` or `default`.\n ```json\n [\n {\n \"aggregate\": \"count_unique(tags[sentry:user])\",\n \"dataset\" : \"events\",\n \"environment\": \"prod\",\n \"eventTypes\": [\"default\", \"error\"],\n \"query\": \"is:unresolved\",\n \"queryType\": 0,\n \"timeWindow\": 3600\n }\n ]\n ```\n\n\n **Throughput Metric Monitor**\n ```json\n [\n {\n \"aggregate\":\"count(span.duration)\",\n \"dataset\":\"events_analytics_platform\",\n \"environment\":\"prod\",\n \"eventTypes\":[\"trace_item_span\"],\n \"query\":\"\",\n \"queryType\":1,\n \"timeWindow\":3600,\n \"extrapolationMode\":\"unknown\"\n }\n ]\n ```\n\n **Duration Metric Monitor**\n ```json\n [\n {\n \"aggregate\":\"p95(span.duration)\",\n \"dataset\":\"events_analytics_platform\",\n \"environment\":\"prod\",\n \"eventTypes\":[\"trace_item_span\"],\n \"query\":\"\",\n \"queryType\":1,\n \"timeWindow\":3600,\n \"extrapolationMode\":\"unknown\"\n }\n ]\n ```\n\n **Failure Rate Metric Monitor**\n ```json\n [\n {\n \"aggregate\":\"failure_rate()\",\n \"dataset\":\"events_analytics_platform\",\n \"environment\":\"prod\",\n \"eventTypes\":[\"trace_item_span\"],\n \"query\":\"\",\n \"queryType\":1,\n \"timeWindow\":3600,\n \"extrapolationMode\":\"unknown\"\n }\n ]\n ```\n\n **Largest Contentful Paint Metric Monitor**\n - `dataset`: Use `events_analytics_platform`. To query transaction spans, add `is_transaction:true` to `query`.\n - `aggregate`: Valid values are `avg(measurements.lcp)`, `p50(measurements.lcp)`, `p75(measurements.lcp)`, `p95(measurements.lcp)`, `p99(measurements.lcp)`, `p100(measurements.lcp)`, and `percentile(measurements.lcp,x)`, where `x` is your custom percentile.\n\n ```json\n [\n {\n \"aggregate\":\"p95(measurements.lcp)\",\n \"dataset\":\"events_analytics_platform\",\n \"environment\":\"prod\",\n \"eventTypes\":[\"trace_item_span\"],\n \"query\":\"is_transaction:true\",\n \"queryType\":1,\n \"timeWindow\":3600,\n \"extrapolationMode\":\"unknown\"\n }\n ]\n ```\n\n **Custom Metric Monitor**\n - `dataset`: Use `events_analytics_platform`. To query transaction spans, add `is_transaction:true` to `query`.\n - `aggregate`: Valid values are:\n `avg(x)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.\n `p50(x)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.\n `p75(x)`, where x is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.\n `p95(x)`, where x is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.\n `p99(x)`, where x is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.\n `p100(x)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.\n `percentile(x,y)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`, and `y` is the custom percentile.\n `failure_rate()`\n `apdex(x)`, where `x` is the value of the Apdex score.\n `count()`\n\n ```json\n [\n {\n \"aggregate\": \"p75(measurements.ttfb)\",\n \"dataset\": \"events_analytics_platform\",\n \"environment\": \"prod\",\n \"queryType\": 1,\n \"eventTypes\": [\"trace_item_span\"],\n \"query\": \"is_transaction:true\",\n \"timeWindow\": 3600,\n \"extrapolationMode\": \"unknown\"\n }\n ]\n ```\n"},"config":{"type":"object","additionalProperties":{},"description":"\n The issue detection type configuration.\n\n\n - `detectionType`\n - `static`: Threshold based monitor\n - `percent`: Change based monitor\n - `dynamic`: Dynamic monitor\n - `comparisonDelta`: If selecting a **change** detection type, the comparison delta is the time period, in seconds, at which to compare against historical data.\n For example, a value of 3600 compares the metric tracked against data 1 hour ago.\n - `300`: 5 minutes\n - `900`: 15 minutes\n - `3600`: 1 hour\n - `86400`: 1 day\n - `604800`: 1 week\n - `2592000`: 1 month\n\n **Threshold**\n ```json\n {\n \"detectionType\": \"static\"\n }\n ```\n **Change**\n ```json\n {\n \"detectionType\": \"percent\",\n \"comparisonDelta\": 3600\n }\n ```\n **Dynamic**\n ```json\n {\n \"detectionType\": \"dynamic\"\n }\n ```\n "},"condition_group":{"allOf":[{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"id":{"type":"integer"},"logic_type":{"enum":["any","any-short","all","none"],"type":"string","description":"* `any`\n* `any-short`\n* `all`\n* `none`"},"conditions":{"type":"array","items":{}}},"required":["logic_type"]}],"description":"\n Issue detection configuration for when to create an issue and at what priority level.\n\n\n - `logicType`: `any`\n - `type`: Any of `gt` (greater than), `lte` (less than or equal), or `anomaly_detection` (dynamic)\n - `comparison`: Any positive integer. This is threshold that must be crossed for the monitor to create an issue, e.g. \"Create a metric issue when there are more than 5 unresolved error events\".\n - If creating a **dynamic** monitor, see the options below.\n - `seasonality`: `auto`\n - `sensitivity`: Level of responsiveness. Options are one of `low`, `medium`, or `high`\n - `thresholdType`: If you want to be alerted to anomalies that are moving above, below, or in both directions in relation to your threshold.\n - `0`: Above\n - `1`: Below\n - `2`: Above and below\n\n - `conditionResult`: The issue state change when the threshold is crossed.\n - `75`: High priority\n - `50`: Low priority\n - `0`: Resolved\n\n\n **Threshold and Change Monitor**\n ```json\n \"logicType\": \"any\",\n \"conditions\": [\n {\n \"type\": \"gt\",\n \"comparison\": 10,\n \"conditionResult\": 75\n },\n {\n \"type\": \"lte\",\n \"comparison\": 10,\n \"conditionResult\": 0\n }\n ],\n \"actions\": []\n ```\n\n **Threshold Monitor with Medium Priority**\n ```json\n \"logicType\": \"any\",\n \"conditions\": [\n {\n type: \"gt\",\n comparison: 5,\n conditionResult: 75\n },\n {\n type: \"gt\",\n comparison: 2,\n conditionResult: 50\n },\n {\n type: \"lte\",\n comparison: 2,\n conditionResult: 0\n }\n ],\n \"actions\": []\n ```\n\n **Dynamic Monitor**\n ```json\n \"logicType\": \"any\",\n \"conditions\": [\n {\n \"type\": \"anomaly_detection\",\n \"comparison\": {\n \"seasonality\": \"auto\",\n \"sensitivity\": \"medium\",\n \"thresholdType\": 2\n },\n \"conditionResult\": 75\n }\n ],\n \"actions\": []\n ```\n "},"owner":{"type":"string","nullable":true,"description":"\n The ID user or team who owns the monitor or alert prefaced by the string 'user' or 'team'.\n\n **User**\n ```json\n \"user:123456\"\n ```\n\n **Team**\n ```json\n \"team:456789\"\n ```\n "},"description":{"type":"string","nullable":true,"description":"A description of the monitor. Will be used in the resulting issue."},"enabled":{"type":"boolean","description":"Set to False if you want to disable the monitor."}},"required":["name","type"]}}},"required":true},"security":[{"auth_token":["alerts:write","org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"owner":{"type":"object","properties":{"type":{"enum":["user","team"],"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["id","name","type"],"nullable":true},"createdBy":{"type":"string","nullable":true},"latestGroup":{"type":"object","additionalProperties":{},"nullable":true},"description":{"type":"string","nullable":true},"id":{"type":"string"},"projectId":{"type":"string","nullable":true},"name":{"type":"string"},"type":{"type":"string"},"workflowIds":{"type":"array","items":{"type":"string"},"nullable":true},"dateCreated":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"dataSources":{"type":"array","items":{"type":"object","additionalProperties":{}},"nullable":true},"conditionGroup":{"type":"object","additionalProperties":{},"nullable":true},"config":{"type":"object","additionalProperties":{}},"enabled":{"type":"boolean"}},"required":["conditionGroup","config","dataSources","dateCreated","dateUpdated","enabled","id","name","projectId","type","workflowIds"]},"examples":{"UpdateAMonitor":{"value":{"id":"12345","projectId":"1","name":"Updated monitor","description":null,"type":"metric_issue","workflowIds":[],"owner":{"type":"user","id":"4567","name":"Jane Doe","email":"jane@example.io"},"createdBy":"45678","dateCreated":"2026-01-09T18:47:41.596427Z","dateUpdated":"2026-01-12T21:30:07.354861Z","dataSources":[{"id":"2345","organizationId":"1","type":"snuba_query_subscription","sourceId":"1234","queryObj":{"id":"3456","status":0,"subscription":"55/abc123def456ghi789","snubaQuery":{"id":"56789","dataset":"events_analytics_platform","query":"","aggregate":"p95(measurements.lcp)","timeWindow":3600,"environment":null,"eventTypes":["trace_item_span"],"extrapolationMode":"unknown"}}}],"conditionGroup":{"id":"12345678","organizationId":"1","logicType":"any","conditions":[{"id":"234567","type":"gt","comparison":5,"conditionResult":75},{"id":"234568","type":"lte","comparison":5,"conditionResult":0}],"actions":[]},"config":{"detectionType":"static"},"enabled":true,"latestGroup":{"id":"123456789","title":"Test monitor","culprit":"","shortId":"SENTRY-1A2B","level":"error","status":"resolved","substatus":null,"platform":"python","project":{"id":"1","name":"Backend","slug":"sentry","platform":"python"},"type":"generic","issueType":"metric_issue","issueCategory":"metric","metadata":{"title":"Test monitor","value":"Critical: Number of events in the last hour above 5","initial_priority":75},"numComments":0,"firstSeen":"2026-01-09T18:48:15.250134Z","lastSeen":"2026-01-09T18:48:15.250134Z"}},"summary":"Update a Monitor"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteOrganizationDetector","description":"Delete a monitor","summary":"Delete a Monitor","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"detector_id","schema":{"type":"integer"},"description":"The ID of the monitor you'd like to query.","required":true}],"tags":["Monitors"],"security":[{"auth_token":["alerts:write","org:admin","org:read","org:write"]}],"responses":{"204":{"description":"No Content"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/discover/saved/":{"get":{"operationId":"listOrganizationDiscoverSavedQueries","description":"Retrieve a list of saved queries that are associated with the given organization.","summary":"List an Organization's Discover Saved Queries","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"per_page","schema":{"type":"integer"},"description":"Limit the number of rows to return in the result. Default and maximum allowed is 100."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"},{"in":"query","name":"query","schema":{"type":"string"},"description":"The name of the Discover query you'd like to filter by."},{"in":"query","name":"sortBy","schema":{"type":"string"},"description":"The property to sort results by. If not specified, the results are sorted by query name.\n\nAvailable fields are:\n- `name`\n- `dateCreated`\n- `dateUpdated`\n- `mostPopular`\n- `recentlyViewed`\n- `myqueries`\n "}],"tags":["Discover"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"environment":{"type":"array","items":{"type":"string"}},"query":{"type":"string"},"fields":{"type":"array","items":{"type":"string"}},"widths":{"type":"array","items":{"type":"string"}},"conditions":{"type":"array","items":{"type":"string"}},"aggregations":{"type":"array","items":{"type":"string"}},"range":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"},"orderby":{"type":"string"},"limit":{"type":"string"},"yAxis":{"type":"array","items":{"type":"string"}},"display":{"type":"string"},"topEvents":{"type":"integer"},"interval":{"type":"string"},"exploreQuery":{"type":"object","additionalProperties":{}},"lastVisited":{"type":"string"},"starred":{"type":"boolean"},"position":{"type":"integer","nullable":true},"id":{"type":"string"},"name":{"type":"string"},"projects":{"type":"array","items":{"type":"integer"}},"version":{"type":"integer"},"queryDataset":{"type":"string"},"datasetSource":{"type":"string"},"expired":{"type":"boolean"},"dateCreated":{"type":"string"},"dateUpdated":{"type":"string"},"createdBy":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]}},"required":["createdBy","datasetSource","dateCreated","dateUpdated","expired","id","name","projects","queryDataset","version"]}},"examples":{"GetDiscoverSavedQueries":{"value":[{"id":"1","name":"Transactions by Volume","projects":[],"version":2,"queryDataset":"transaction-like","datasetSource":"unknown","expired":false,"dateCreated":"2024-07-25T19:35:38.422859Z","dateUpdated":"2024-07-25T19:35:38.422874Z","lastVisited":"2024-07-25T19:35:38.422874Z","environment":[],"query":"","fields":["id","transaction","timestamp"],"widths":[],"range":"24h","orderby":"-timestamp","yAxis":["count()"],"createdBy":{"id":"1","name":"Admin","username":"admin","email":"admin@sentry.io","avatarUrl":"www.example.com","isActive":true,"isSuspended":false,"hasPasswordAuth":true,"isManaged":false,"dateJoined":"2021-10-25T17:07:33.190596Z","lastLogin":"2024-07-16T15:28:39.261659Z","has2fa":true,"lastActive":"2024-07-16T20:45:49.364197Z","isSuperuser":false,"isStaff":false,"experiments":{},"emails":[{"id":"1","email":"admin@sentry.io","is_verified":true}],"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":"www.example.com"}}},{"id":"2","name":"All Events","projects":[],"version":2,"queryDataset":"transaction-like","datasetSource":"unknown","expired":false,"dateCreated":"2024-07-25T19:35:38.422859Z","dateUpdated":"2024-07-25T19:35:38.422874Z","lastVisited":"2024-07-25T19:35:38.422874Z","environment":[],"query":"transaction:/api/foo","fields":["transaction","project","count()","avg(transaction.duration)","p75()","p95()"],"widths":[],"range":"24h","orderby":"-count","yAxis":["count()"],"createdBy":{"id":"1","name":"Admin","username":"admin","email":"admin@sentry.io","avatarUrl":"www.example.com","isActive":true,"isSuspended":false,"hasPasswordAuth":true,"isManaged":false,"dateJoined":"2021-10-25T17:07:33.190596Z","lastLogin":"2024-07-16T15:28:39.261659Z","has2fa":true,"lastActive":"2024-07-16T20:45:49.364197Z","isSuperuser":false,"isStaff":false,"experiments":{},"emails":[{"id":"1","email":"admin@sentry.io","is_verified":true}],"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":"www.example.com"}}}],"summary":"Get Discover Saved Queries"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"post":{"operationId":"createOrganizationDiscoverSavedQuery","description":"Create a new saved query for the given organization.","summary":"Create a New Saved Query","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["Discover"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The user-defined saved query name.","maxLength":255},"projects":{"type":"array","items":{"type":"integer"},"description":"The saved projects filter for this query."},"queryDataset":{"enum":["discover","error-events","transaction-like"],"type":"string","default":"error-events","description":"The dataset you would like to query. Note: `discover` is a **deprecated** value. The allowed values are: `error-events`, `transaction-like`\n\n* `discover`\n* `error-events`\n* `transaction-like`"},"start":{"type":"string","format":"date-time","nullable":true,"description":"The saved start time for this saved query."},"end":{"type":"string","format":"date-time","nullable":true,"description":"The saved end time for this saved query."},"range":{"type":"string","nullable":true,"description":"The saved time range period for this saved query."},"fields":{"type":"array","items":{"type":"string"},"nullable":true,"description":"The fields, functions, or equations that can be requested for the query. At most 20 fields can be selected per request. Each field can be one of the following types:\n- A built-in key field. See possible fields in the [properties table](/product/sentry-basics/search/searchable-properties/#properties-table), under any field that is an event property.\n - example: `field=transaction`\n- A tag. Tags should use the `tag[]` formatting to avoid ambiguity with any fields\n - example: `field=tag[isEnterprise]`\n- A function which will be in the format of `function_name(parameters,...)`. See possible functions in the [query builder documentation](/product/discover-queries/query-builder/#stacking-functions).\n - when a function is included, Discover will group by any tags or fields\n - example: `field=count_if(transaction.duration,greater,300)`\n- An equation when prefixed with `equation|`. Read more about [equations here](/product/discover-queries/query-builder/query-equations/).\n - example: `field=equation|count_if(transaction.duration,greater,300) / count() * 100`\n"},"orderby":{"type":"string","nullable":true,"description":"How to order the query results. Must be something in the `field` list, excluding equations."},"rollup":{"type":"integer","nullable":true,"description":"Time-bucket granularity in seconds for the saved query."},"aggregations":{"type":"array","items":{"type":"array","items":{}},"nullable":true,"description":"Aggregate functions to apply, each as a `[function, column, alias]` triple."},"groupby":{"type":"array","items":{"type":"string"},"nullable":true,"description":"Columns to group results by."},"conditions":{"type":"array","items":{"type":"array","items":{}},"nullable":true,"description":"Filter conditions, each as a `[column, operator, value]` triple."},"limit":{"type":"integer","maximum":1000,"minimum":0,"nullable":true,"description":"Maximum number of rows to return, from `0` to `1000`."},"version":{"type":"integer","maximum":2,"minimum":1,"nullable":true,"description":"Saved query schema version. `1` for the legacy shape, `2` for the current one."},"environment":{"type":"array","items":{"type":"string"},"nullable":true,"description":"The name of environments to filter by."},"query":{"type":"string","nullable":true,"description":"Filters results by using [query syntax](/product/sentry-basics/search/)."},"widths":{"type":"array","items":{"type":"string"},"nullable":true,"description":"Rendered column widths, in the same order as the query's fields."},"yAxis":{"type":"array","items":{"type":"string"},"nullable":true,"description":"Aggregate functions to be plotted on the chart."},"display":{"type":"string","nullable":true,"description":"Visualization type for saved query chart. Allowed values are:\n- default\n- previous\n- top5\n- daily\n- dailytop5\n- bar\n"},"topEvents":{"type":"integer","maximum":10,"minimum":1,"nullable":true,"description":"Number of top events' timeseries to be visualized."},"interval":{"type":"string","nullable":true,"description":"Resolution of the time series."}},"required":["name"]}}},"required":true},"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"environment":{"type":"array","items":{"type":"string"}},"query":{"type":"string"},"fields":{"type":"array","items":{"type":"string"}},"widths":{"type":"array","items":{"type":"string"}},"conditions":{"type":"array","items":{"type":"string"}},"aggregations":{"type":"array","items":{"type":"string"}},"range":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"},"orderby":{"type":"string"},"limit":{"type":"string"},"yAxis":{"type":"array","items":{"type":"string"}},"display":{"type":"string"},"topEvents":{"type":"integer"},"interval":{"type":"string"},"exploreQuery":{"type":"object","additionalProperties":{}},"lastVisited":{"type":"string"},"starred":{"type":"boolean"},"position":{"type":"integer","nullable":true},"id":{"type":"string"},"name":{"type":"string"},"projects":{"type":"array","items":{"type":"integer"}},"version":{"type":"integer"},"queryDataset":{"type":"string"},"datasetSource":{"type":"string"},"expired":{"type":"boolean"},"dateCreated":{"type":"string"},"dateUpdated":{"type":"string"},"createdBy":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]}},"required":["createdBy","datasetSource","dateCreated","dateUpdated","expired","id","name","projects","queryDataset","version"]},"examples":{"CreateDiscoverSavedQuery":{"value":{"id":"1","name":"Transactions by Volume","projects":[],"version":2,"queryDataset":"transaction-like","datasetSource":"unknown","expired":false,"dateCreated":"2024-07-25T19:35:38.422859Z","dateUpdated":"2024-07-25T19:35:38.422874Z","lastVisited":"2024-07-25T19:35:38.422874Z","environment":[],"query":"transaction:/api/foo","fields":["transaction","project","count()","avg(transaction.duration)","p75()","p95()"],"widths":[],"range":"24h","orderby":"-count","yAxis":["count()"],"createdBy":{"id":"1","name":"Admin","username":"admin","email":"admin@sentry.io","avatarUrl":"www.example.com","isActive":true,"isSuspended":false,"hasPasswordAuth":true,"isManaged":false,"dateJoined":"2021-10-25T17:07:33.190596Z","lastLogin":"2024-07-16T15:28:39.261659Z","has2fa":true,"lastActive":"2024-07-16T20:45:49.364197Z","isSuperuser":false,"isStaff":false,"experiments":{},"emails":[{"id":"1","email":"admin@sentry.io","is_verified":true}],"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":"www.example.com"}}},"summary":"Create Discover Saved Query"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/discover/saved/{query_id}/":{"get":{"operationId":"getOrganizationDiscoverSavedQuery","description":"Retrieve a saved query.","summary":"Retrieve an Organization's Discover Saved Query","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"query_id","schema":{"type":"integer"},"description":"The ID of the Discover query you'd like to retrieve.","required":true}],"tags":["Discover"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"environment":{"type":"array","items":{"type":"string"}},"query":{"type":"string"},"fields":{"type":"array","items":{"type":"string"}},"widths":{"type":"array","items":{"type":"string"}},"conditions":{"type":"array","items":{"type":"string"}},"aggregations":{"type":"array","items":{"type":"string"}},"range":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"},"orderby":{"type":"string"},"limit":{"type":"string"},"yAxis":{"type":"array","items":{"type":"string"}},"display":{"type":"string"},"topEvents":{"type":"integer"},"interval":{"type":"string"},"exploreQuery":{"type":"object","additionalProperties":{}},"lastVisited":{"type":"string"},"starred":{"type":"boolean"},"position":{"type":"integer","nullable":true},"id":{"type":"string"},"name":{"type":"string"},"projects":{"type":"array","items":{"type":"integer"}},"version":{"type":"integer"},"queryDataset":{"type":"string"},"datasetSource":{"type":"string"},"expired":{"type":"boolean"},"dateCreated":{"type":"string"},"dateUpdated":{"type":"string"},"createdBy":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]}},"required":["createdBy","datasetSource","dateCreated","dateUpdated","expired","id","name","projects","queryDataset","version"]},"examples":{"DiscoverSavedQueryGETResponse":{"value":{"id":"1","name":"Transactions by Volume","projects":[],"version":2,"queryDataset":"transaction-like","datasetSource":"unknown","expired":false,"dateCreated":"2024-07-25T19:35:38.422859Z","dateUpdated":"2024-07-25T19:35:38.422874Z","lastVisited":"2024-07-25T19:35:38.422874Z","environment":[],"query":"transaction:/api/foo","fields":["transaction","project","count()","avg(transaction.duration)","p75()","p95()"],"widths":[],"range":"24h","orderby":"-count","yAxis":["count()"],"createdBy":{"id":"1","name":"Admin","username":"admin","email":"admin@sentry.io","avatarUrl":"www.example.com","isActive":true,"isSuspended":false,"hasPasswordAuth":true,"isManaged":false,"dateJoined":"2021-10-25T17:07:33.190596Z","lastLogin":"2024-07-16T15:28:39.261659Z","has2fa":true,"lastActive":"2024-07-16T20:45:49.364197Z","isSuperuser":false,"isStaff":false,"experiments":{},"emails":[{"id":"1","email":"admin@sentry.io","is_verified":true}],"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":"www.example.com"}}},"summary":"Discover Saved Query GET response"}}}},"description":""},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"updateOrganizationDiscoverSavedQuery","description":"Modify a saved query.","summary":"Edit an Organization's Discover Saved Query","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"query_id","schema":{"type":"integer"},"description":"The ID of the Discover query you'd like to retrieve.","required":true}],"tags":["Discover"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The user-defined saved query name.","maxLength":255},"projects":{"type":"array","items":{"type":"integer"},"description":"The saved projects filter for this query."},"queryDataset":{"enum":["discover","error-events","transaction-like"],"type":"string","default":"error-events","description":"The dataset you would like to query. Note: `discover` is a **deprecated** value. The allowed values are: `error-events`, `transaction-like`\n\n* `discover`\n* `error-events`\n* `transaction-like`"},"start":{"type":"string","format":"date-time","nullable":true,"description":"The saved start time for this saved query."},"end":{"type":"string","format":"date-time","nullable":true,"description":"The saved end time for this saved query."},"range":{"type":"string","nullable":true,"description":"The saved time range period for this saved query."},"fields":{"type":"array","items":{"type":"string"},"nullable":true,"description":"The fields, functions, or equations that can be requested for the query. At most 20 fields can be selected per request. Each field can be one of the following types:\n- A built-in key field. See possible fields in the [properties table](/product/sentry-basics/search/searchable-properties/#properties-table), under any field that is an event property.\n - example: `field=transaction`\n- A tag. Tags should use the `tag[]` formatting to avoid ambiguity with any fields\n - example: `field=tag[isEnterprise]`\n- A function which will be in the format of `function_name(parameters,...)`. See possible functions in the [query builder documentation](/product/discover-queries/query-builder/#stacking-functions).\n - when a function is included, Discover will group by any tags or fields\n - example: `field=count_if(transaction.duration,greater,300)`\n- An equation when prefixed with `equation|`. Read more about [equations here](/product/discover-queries/query-builder/query-equations/).\n - example: `field=equation|count_if(transaction.duration,greater,300) / count() * 100`\n"},"orderby":{"type":"string","nullable":true,"description":"How to order the query results. Must be something in the `field` list, excluding equations."},"rollup":{"type":"integer","nullable":true,"description":"Time-bucket granularity in seconds for the saved query."},"aggregations":{"type":"array","items":{"type":"array","items":{}},"nullable":true,"description":"Aggregate functions to apply, each as a `[function, column, alias]` triple."},"groupby":{"type":"array","items":{"type":"string"},"nullable":true,"description":"Columns to group results by."},"conditions":{"type":"array","items":{"type":"array","items":{}},"nullable":true,"description":"Filter conditions, each as a `[column, operator, value]` triple."},"limit":{"type":"integer","maximum":1000,"minimum":0,"nullable":true,"description":"Maximum number of rows to return, from `0` to `1000`."},"version":{"type":"integer","maximum":2,"minimum":1,"nullable":true,"description":"Saved query schema version. `1` for the legacy shape, `2` for the current one."},"environment":{"type":"array","items":{"type":"string"},"nullable":true,"description":"The name of environments to filter by."},"query":{"type":"string","nullable":true,"description":"Filters results by using [query syntax](/product/sentry-basics/search/)."},"widths":{"type":"array","items":{"type":"string"},"nullable":true,"description":"Rendered column widths, in the same order as the query's fields."},"yAxis":{"type":"array","items":{"type":"string"},"nullable":true,"description":"Aggregate functions to be plotted on the chart."},"display":{"type":"string","nullable":true,"description":"Visualization type for saved query chart. Allowed values are:\n- default\n- previous\n- top5\n- daily\n- dailytop5\n- bar\n"},"topEvents":{"type":"integer","maximum":10,"minimum":1,"nullable":true,"description":"Number of top events' timeseries to be visualized."},"interval":{"type":"string","nullable":true,"description":"Resolution of the time series."}},"required":["name"]}}},"required":true},"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"environment":{"type":"array","items":{"type":"string"}},"query":{"type":"string"},"fields":{"type":"array","items":{"type":"string"}},"widths":{"type":"array","items":{"type":"string"}},"conditions":{"type":"array","items":{"type":"string"}},"aggregations":{"type":"array","items":{"type":"string"}},"range":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"},"orderby":{"type":"string"},"limit":{"type":"string"},"yAxis":{"type":"array","items":{"type":"string"}},"display":{"type":"string"},"topEvents":{"type":"integer"},"interval":{"type":"string"},"exploreQuery":{"type":"object","additionalProperties":{}},"lastVisited":{"type":"string"},"starred":{"type":"boolean"},"position":{"type":"integer","nullable":true},"id":{"type":"string"},"name":{"type":"string"},"projects":{"type":"array","items":{"type":"integer"}},"version":{"type":"integer"},"queryDataset":{"type":"string"},"datasetSource":{"type":"string"},"expired":{"type":"boolean"},"dateCreated":{"type":"string"},"dateUpdated":{"type":"string"},"createdBy":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]}},"required":["createdBy","datasetSource","dateCreated","dateUpdated","expired","id","name","projects","queryDataset","version"]},"examples":{"DiscoverSavedQueryGETResponse":{"value":{"id":"1","name":"Transactions by Volume","projects":[],"version":2,"queryDataset":"transaction-like","datasetSource":"unknown","expired":false,"dateCreated":"2024-07-25T19:35:38.422859Z","dateUpdated":"2024-07-25T19:35:38.422874Z","lastVisited":"2024-07-25T19:35:38.422874Z","environment":[],"query":"transaction:/api/foo","fields":["transaction","project","count()","avg(transaction.duration)","p75()","p95()"],"widths":[],"range":"24h","orderby":"-count","yAxis":["count()"],"createdBy":{"id":"1","name":"Admin","username":"admin","email":"admin@sentry.io","avatarUrl":"www.example.com","isActive":true,"isSuspended":false,"hasPasswordAuth":true,"isManaged":false,"dateJoined":"2021-10-25T17:07:33.190596Z","lastLogin":"2024-07-16T15:28:39.261659Z","has2fa":true,"lastActive":"2024-07-16T20:45:49.364197Z","isSuperuser":false,"isStaff":false,"experiments":{},"emails":[{"id":"1","email":"admin@sentry.io","is_verified":true}],"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":"www.example.com"}}},"summary":"Discover Saved Query GET response"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteOrganizationDiscoverSavedQuery","description":"Delete a saved query.","summary":"Delete an Organization's Discover Saved Query","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"query_id","schema":{"type":"integer"},"description":"The ID of the Discover query you'd like to retrieve.","required":true}],"tags":["Discover"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"204":{"description":"No Content"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/environments/":{"get":{"operationId":"listOrganizationEnvironments","description":"Lists an organization's environments.","summary":"List an Organization's Environments","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"visibility","schema":{"type":"string","enum":["all","hidden","visible"]},"description":"The visibility of the environments to filter by. Defaults to `visible`."}],"tags":["Environments"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}},"examples":{"ListAnOrganization'sEnvironments":{"value":[{"id":"1","name":"Production"},{"id":"2","name":"Staging"}],"summary":"List an Organization's Environments"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/eventids/{event_id}/":{"get":{"operationId":"resolveOrganizationEventId","description":"This resolves an event ID to the project slug and internal issue ID and internal event ID.","summary":"Resolve an Event ID","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"event_id","schema":{"type":"string"},"description":"The event ID to look up.","required":true}],"tags":["Organizations"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"organizationSlug":{"type":"string"},"projectSlug":{"type":"string"},"groupId":{"type":"string"},"eventId":{"type":"string"},"event":{"type":"object","properties":{"id":{"type":"string"},"groupID":{"type":"string","nullable":true},"eventID":{"type":"string"},"projectID":{"type":"string"},"message":{"type":"string","nullable":true},"title":{"type":"string"},"location":{"type":"string","nullable":true},"user":{"type":"object","properties":{"id":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"username":{"type":"string","nullable":true},"ip_address":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"geo":{"type":"object","additionalProperties":{"type":"string"},"nullable":true},"data":{"type":"object","additionalProperties":{},"nullable":true}},"nullable":true},"tags":{"type":"array","items":{"type":"object","properties":{"query":{"type":"string"},"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}},"platform":{"type":"string"},"dateReceived":{"type":"string","format":"date-time","nullable":true},"contexts":{"type":"object","additionalProperties":{},"nullable":true},"size":{"type":"integer","nullable":true},"entries":{"type":"array","items":{}},"dist":{"type":"string","nullable":true},"sdk":{"type":"object","properties":{"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true}},"required":["name","version"],"nullable":true},"context":{"type":"object","additionalProperties":{},"nullable":true},"packages":{"type":"object","additionalProperties":{}},"type":{"enum":["default","error","csp","nel","hpkp","expectct","expectstaple","transaction","generic","feedback"],"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"errors":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"data":{"type":"object","additionalProperties":{}}},"required":["data","message","type"]}},"occurrence":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"integer"},"eventId":{"type":"string"},"fingerprint":{"type":"array","items":{"type":"string"}},"issueTitle":{"type":"string"},"subtitle":{"type":"string"},"resourceId":{"type":"string","nullable":true},"evidenceData":{"type":"object","additionalProperties":{}},"evidenceDisplay":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"important":{"type":"boolean"}},"required":["important","name","value"]}},"type":{"type":"integer"},"detectionTime":{"type":"number","format":"double"},"level":{"type":"string","nullable":true},"culprit":{"type":"string","nullable":true},"assignee":{"type":"string","nullable":true},"priority":{"type":"integer","nullable":true}},"required":["assignee","culprit","detectionTime","eventId","evidenceData","evidenceDisplay","fingerprint","id","issueTitle","level","priority","projectId","resourceId","subtitle","type"],"nullable":true},"_meta":{"type":"object","additionalProperties":{}},"crashFile":{"type":"string","nullable":true},"culprit":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"fingerprints":{"type":"array","items":{"type":"string"}},"groupingConfig":{"type":"object","properties":{"id":{"type":"string"},"enhancements":{"type":"string"}},"required":["enhancements","id"]},"startTimestamp":{"type":"number","format":"double"},"endTimestamp":{"type":"number","format":"double"},"measurements":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"type":"number","format":"double"},"unit":{"type":"string","nullable":true}},"required":["unit","value"]},"nullable":true},"breakdowns":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"type":"number","format":"double"},"unit":{"type":"string","nullable":true}},"required":["unit","value"]}},"nullable":true}},"required":["_meta","context","contexts","dateReceived","dist","entries","errors","eventID","groupID","id","location","message","metadata","occurrence","packages","platform","projectID","sdk","size","tags","title","type","user"]}},"required":["event","eventId","groupId","organizationSlug","projectSlug"]},"examples":{"EventExample":{"value":{"event":{"_meta":{"context":null,"contexts":null,"entries":{},"message":null,"packages":null,"sdk":null,"tags":{},"user":null},"context":{"length":10837790,"results":[1,2,3,4,5],"session":{"foo":"bar"},"unauthorized":false,"url":"http://example.org/foo/bar/"},"contexts":{},"dateCreated":"2018-11-06T21:19:55Z","dateReceived":"2018-11-06T21:19:55Z","dist":null,"entries":[{"type":"request","data":{"fragment":null,"cookies":[],"inferredContentType":null,"env":null,"headers":[["User-Agent","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"]],"url":"http://example.com/foo","query":[],"data":null,"method":null}}],"errors":[],"eventID":"9fac2ceed9344f2bbfdd1fdacb0ed9b1","fingerprints":["c4a4d06bc314205bb3b6bdb612dde7f1"],"groupID":"1","id":"1","location":"example.py:42","message":"","title":"This is an example Python exception","metadata":{"title":"This is an example Python exception"},"occurrence":{"id":"1","projectId":1,"eventId":"9fac2ceed9344f2bbfdd1fdacb0ed9b1","fingerprint":["c4a4d06bc314205bb3b6bdb612dde7f1"],"issueTitle":"This is an example Python exception","subtitle":"example.py:42","resourceId":"example.py:42","evidenceData":{},"evidenceDisplay":[],"type":1,"detectionTime":1541539195,"level":"error","culprit":"example.py:42","assignee":null,"priority":50},"packages":{"my.package":"1.0.0"},"platform":"python","projectID":"1","sdk":{"name":"sentry.python","version":"2.0.0"},"size":7055,"tags":[{"key":"browser","value":"Chrome 28.0"},{"key":"device","value":"Other"},{"key":"level","value":"error"},{"key":"os","value":"Windows 8"},{"key":"release","value":"17642328ead24b51867165985996d04b29310337"},{"key":"url","value":"http://example.com/foo"},{"key":"user","value":"id:1"}],"type":"default","user":{"data":{},"email":"sentry@example.com","id":"1","ip_address":"127.0.0.1","name":"Sentry","username":"sentry"}},"eventId":"1","groupId":"1","organizationSlug":"the-interstellar-jurisdiction","projectSlug":"pump-station"},"summary":"Event example"}}}},"description":""},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/events/":{"get":{"operationId":"listOrganizationEvents","description":"Retrieves explore data for a given organization.\n\n**Note**: This endpoint is intended to get a table of results, and is not for doing a full export of data sent to\nSentry.\n\nThe `field` query parameter determines what fields will be selected in the `data` and `meta` keys of the endpoint response.\n- The `data` key contains a list of results row by row that match the `query` made\n- The `meta` key contains information about the response, including the unit or type of the fields requested\n- EAP table results may include `meta.routingHint`. Pass this opaque value unchanged as\n `routing_hint` when fetching item details for a row in this response. It identifies how\n the table query was routed and is omitted when no hint is available.","summary":"Query Explore Events in Table Format","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"field","schema":{"type":"array","items":{"type":"string"}},"description":"The fields, functions, or equations to request for the query. At most 20 fields can be selected per request. Each field can be one of the following types:\n- A built-in key field. See possible fields in the [properties table](/concepts/search/searchable-properties/), under any field that matches the dataset passed to the dataset parameter\n - example: `field=transaction`\n- A tag. Tags should use the `tag[{name}, {type}]` formatting to avoid ambiguity with any fields,\n - example: `field=tag[isEnterprise, string]`\n - example: `field=tag[numberOfBytes, number]`\n- A function which will be in the format of `function_name(parameters,...)`. See possible functions in the [query builder documentation](/product/discover-queries/query-builder/#stacking-functions).\n - when a function is included, Discover will group by any tags or fields\n - example: `field=count_if(transaction.duration,greater,300)`\n- An equation when prefixed with `equation|`. Read more about [equations here](/product/discover-queries/query-builder/query-equations/).\n - example: `field=equation|count_if(transaction.duration,greater,300) / count() * 100`\n","required":true},{"in":"query","name":"dataset","schema":{"type":"string","enum":["errors","logs","profile_functions","spans","tracemetrics","uptime_results"]},"description":"Which dataset to query. The chosen dataset determines which fields are queryable.\n- `errors` - Error events.\n- `logs` - Structured log events.\n- `profile_functions` - Function-level Profiling data.\n- `spans` - Distributed tracing span events.\n- `tracemetrics` - Application Metrics.\n- `uptime_results` - Uptime monitoring check results.\n","required":true},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."},{"in":"query","name":"referrer","schema":{"type":"string"},"description":"Internal referrer identifier used for query tracing. Most clients can omit this."},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects.\nFor example, the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=android&project=javascript-react`\n- `/?project=-1`\n"},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"statsPeriod","schema":{"type":"string"},"description":"The period of time for the query, will override the start & end parameters, a number followed by one of:\n- `d` for days\n- `h` for hours\n- `m` for minutes\n- `s` for seconds\n- `w` for weeks\n\nFor example, `24h`, to mean query data starting from 24 hours ago to now."},{"in":"query","name":"per_page","schema":{"type":"integer"},"description":"Limit the number of rows to return in the result. Default and maximum allowed is 100."},{"in":"query","name":"query","schema":{"type":"string"},"description":"Filters results by using [query syntax](/concepts/search/).\n\nExample: `query=(transaction:foo AND release:abc) OR (transaction:[bar,baz] AND release:def)`\n\nWith the `logs` dataset, a string attribute can also be matched against a regular expression written as `key://pattern//`, and excluded with `!key://pattern//`.\nPatterns use [RE2 syntax](https://github.com/google/re2/wiki/Syntax), match anywhere in the value unless anchored with `^` or `$`, are case sensitive unless they start with `(?i)`, and are limited to 64 characters. A query can contain up to 16 regular expressions.\nTo search for a literal value that starts with `//`, quote it: `key:\"//value\"`.\nSee [regular expressions](/concepts/search/#regular-expressions-logs-only) for more details.\n\nExample: `query=message://^Timeout after \\d+ms//`\n"},{"in":"query","name":"sort","schema":{"type":"string"},"description":"What to order the results of the query by. Must be something in the `field` list, excluding equations."},{"in":"query","name":"allowAggregateConditions","schema":{"type":"boolean"},"description":"If false, aggregate conditions in the query string are disallowed. Defaults to true."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Explore"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","additionalProperties":{}}},"meta":{"type":"object","description":"Meta envelope emitted by `handle_results_with_meta` and the\nempty-projects short-circuit. Every key is optional because the path\nthat emits it depends on flags (`standard_meta`, debug, dataset) \u2014 the\nno-projects path only carries `tips`, the standard path carries\neverything below.","properties":{"fields":{"type":"object","additionalProperties":{"type":"string"}},"units":{"type":"object","additionalProperties":{"type":"string","nullable":true}},"tips":{"type":"object","additionalProperties":{"type":"string"}},"datasetReason":{"type":"string"},"isMetricsData":{"type":"boolean"},"isMetricsExtractedData":{"type":"boolean"},"dataset":{"type":"string"},"discoverSplitDecision":{},"dataScanned":{"type":"string"},"bytesScanned":{"type":"integer"},"routingHint":{"type":"string"},"debug_info":{},"ingestion":{"type":"object","description":"Ingestion status for the data behind a response.","properties":{"status":{"type":"string"},"delaySeconds":{"type":"number","format":"double"},"completeThrough":{"type":"number","format":"double"}},"required":["status"]}}}},"required":["data","meta"]},"examples":{"QueryEvents":{"value":{"data":[{"count_if(transaction.duration,greater,300)":5,"count()":10,"equation|count_if(transaction.duration,greater,300) / count() * 100":50,"transaction":"foo"},{"count_if(transaction.duration,greater,300)":3,"count()":20,"equation|count_if(transaction.duration,greater,300) / count() * 100":15,"transaction":"bar"},{"count_if(transaction.duration,greater,300)":8,"count()":40,"equation|count_if(transaction.duration,greater,300) / count() * 100":20,"transaction":"baz"}],"meta":{"fields":{"count_if(transaction.duration,greater,300)":"integer","count()":"integer","equation|count_if(transaction.duration,greater,300) / count() * 100":"number","transaction":"string"}}},"summary":"Query Events"}}}},"description":""},"400":{"description":"Invalid Query"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/events-dropped/":{"get":{"operationId":"listOrganizationEventsDropped","description":"**Experimental:** This API is under active development and may change.\n\nReturn the events Sentry received but dropped (rate limited, filtered,\ninvalid, abuse, client discarded, cardinality limited) bucketed over the\nrequested interval, alongside the accepted volume per bucket so a caller\ncan compute the dropped share.\n\nSelect the dropped-data type with ``dataset`` and the bucket size with\n``interval``. Optionally scope the dropped side to one classification with\n``outcome`` (top-level) and/or ``reason`` (sub-classification within an\noutcome); the accepted volume is always returned in full.","summary":"Query Dropped and Accepted Events/Stats by Outcome and Reason","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"dataset","schema":{"type":"string","enum":["errors","logs","profile_functions","spans","tracemetrics","uptime_results"]},"description":"Which dataset to query. The chosen dataset determines which fields are queryable.\n- `errors` - Error events.\n- `logs` - Structured log events.\n- `profile_functions` - Function-level Profiling data.\n- `spans` - Distributed tracing span events.\n- `tracemetrics` - Application Metrics.\n- `uptime_results` - Uptime monitoring check results.\n","required":true},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects.\nFor example, the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=android&project=javascript-react`\n- `/?project=-1`\n"},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"statsPeriod","schema":{"type":"string"},"description":"The period of time for the query, will override the start & end parameters, a number followed by one of:\n- `d` for days\n- `h` for hours\n- `m` for minutes\n- `s` for seconds\n- `w` for weeks\n\nFor example, `24h`, to mean query data starting from 24 hours ago to now."},{"in":"query","name":"interval","schema":{"type":"integer"},"description":"The size of the bucket for the timeseries to have, must be a value smaller than the window being\nqueried. If the interval is invalid a default interval will be selected instead"},{"in":"query","name":"outcome","schema":{"enum":["filtered","rate_limited","invalid","abuse","client_discard","cardinality_limited"],"type":"string","minLength":1},"description":"Narrow the dropped events (only) to a single top-level drop classification (e.g. `rate_limited`, `filtered`).\n\n* `filtered`\n* `rate_limited`\n* `invalid`\n* `abuse`\n* `client_discard`\n* `cardinality_limited`"},{"in":"query","name":"reason","schema":{"type":"string","minLength":1},"description":"Narrow the dropped events to a single reason, the sub-classification within an outcome (e.g. `spike_protection` within `rate_limited`). Should be combined with `outcome`."}],"tags":["Explore"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"dataset":{"type":"string"},"start":{"type":"number","format":"double"},"end":{"type":"number","format":"double"},"interval":{"type":"number","format":"double"},"suppressedDrops":{"type":"array","items":{"type":"object","description":"Drop volume withheld from the dropped annotations as a known misreport.","properties":{"cause":{"type":"string"},"category":{"type":"string"},"outcome":{"type":"string"},"reason":{"type":"string"},"count":{"type":"integer"}},"required":["category","cause","count","outcome","reason"]}}},"required":["dataset","end","interval","start","suppressedDrops"]},"droppedEvents":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"category":{"type":"string"},"outcome":{"type":"string"},"reason":{"type":"string"},"start":{"type":"number","format":"double"},"end":{"type":"number","format":"double"},"count":{"type":"number","format":"double"},"tags":{"type":"array","items":{"type":"string"}}},"required":["category","count","end","outcome","reason","start","tags","type"]}},"acceptedEvents":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"category":{"type":"string"},"outcome":{"type":"string"},"reason":{"type":"string"},"start":{"type":"number","format":"double"},"end":{"type":"number","format":"double"},"count":{"type":"number","format":"double"},"tags":{"type":"array","items":{"type":"string"}}},"required":["category","count","end","outcome","reason","start","tags","type"]}}},"required":["acceptedEvents","droppedEvents","meta"]}}},"description":""},"400":{"description":"Invalid Query"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"},"x-sentry-experimental":true}},"/api/0/organizations/{organization_id_or_slug}/events-timeseries/":{"get":{"operationId":"listOrganizationEventsTimeseries","description":"Retrieves explore data for a given organization as a timeseries.\n\nThis endpoint can return timeseries for either 1 or many axis, and results grouped to the top events depending\non the parameters passed\n\n**Note**: For queries extending past `30d`, spanning billions of rows, or running on projects with low\nsample rates, the aggregation `yAxis=count_unique()` and filters on high-cardinality\nfields (such as `query=user.id:bc`) will not return accurate results. Use these queries for rough\nestimation only.","summary":"Query Explore Events in Timeseries Format","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"dataset","schema":{"type":"string","enum":["errors","logs","profile_functions","spans","tracemetrics","uptime_results"]},"description":"Which dataset to query. The chosen dataset determines which fields are queryable.\n- `errors` - Error events.\n- `logs` - Structured log events.\n- `profile_functions` - Function-level Profiling data.\n- `spans` - Distributed tracing span events.\n- `tracemetrics` - Application Metrics.\n- `uptime_results` - Uptime monitoring check results.\n","required":true},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects.\nFor example, the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=android&project=javascript-react`\n- `/?project=-1`\n"},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"statsPeriod","schema":{"type":"string"},"description":"The period of time for the query, will override the start & end parameters, a number followed by one of:\n- `d` for days\n- `h` for hours\n- `m` for minutes\n- `s` for seconds\n- `w` for weeks\n\nFor example, `24h`, to mean query data starting from 24 hours ago to now."},{"in":"query","name":"topEvents","schema":{"type":"integer"},"description":"The number of top event results to return, must be between 1 and 10.\nWhen TopEvents is passed, both sort and groupBy are required parameters"},{"in":"query","name":"comparisonDelta","schema":{"type":"integer"},"description":"The delta in seconds to return additional offset timeseries by"},{"in":"query","name":"interval","schema":{"type":"integer"},"description":"The size of the bucket for the timeseries to have, must be a value smaller than the window being\nqueried. If the interval is invalid a default interval will be selected instead"},{"in":"query","name":"sort","schema":{"type":"string"},"description":"What to order the results of the query by. Must be something in the `field` list, excluding equations."},{"in":"query","name":"groupBy","schema":{"type":"array","items":{"type":"string"}},"description":"List of fields to group by, *Required* for topEvents queries as this and sort determine what the\ntop events are"},{"in":"query","name":"yAxis","schema":{"type":"string"},"description":"The aggregate field to create the timeseries for, defaults to `count()` when\n not included.\n- `count()` - Total count of events over the period.\n- `avg(field)` - Average value of the field over the period.\n- `pXX(field)` - Percentile value of the field over the period. One of: `p50`, `p75`, `p90`, `p95`, `p99`, `p100`.\n- `sum(field)` - Sum of all values for the field over the period.\n- `min(field)` - Lowest value observed for the field over the period.\n- `max(field)` - Highest value observed for the field over the period.\n- `count_unique(field)` - Count of unique values observed for the field over the period. See *Note:* regarding accuracy on sampled data.\n- `epm` - Average number of events received per minute.\n- `eps` - Average number of events received per second.\n- `failure_rate()` - Percentage of events whose `status` indicates failure.\n- `failure_count()` - Total count of events with an error `status` over period.\n- `performance_score(field)` - Web Vitals performance score for the selected measurement.\n- `opportunity_score(field)` - Web Vitals opportunity score for the selected measurement.\n"},{"in":"query","name":"query","schema":{"type":"string"},"description":"Filters results by using [query syntax](/concepts/search/).\n\nExample: `query=(transaction:foo AND release:abc) OR (transaction:[bar,baz] AND release:def)`\n\nWith the `logs` dataset, a string attribute can also be matched against a regular expression written as `key://pattern//`, and excluded with `!key://pattern//`.\nPatterns use [RE2 syntax](https://github.com/google/re2/wiki/Syntax), match anywhere in the value unless anchored with `^` or `$`, are case sensitive unless they start with `(?i)`, and are limited to 64 characters. A query can contain up to 16 regular expressions.\nTo search for a literal value that starts with `//`, quote it: `key:\"//value\"`.\nSee [regular expressions](/concepts/search/#regular-expressions-logs-only) for more details.\n\nExample: `query=message://^Timeout after \\d+ms//`\n"},{"in":"query","name":"disableAggregateExtrapolation","schema":{"type":"string","enum":["0","1"]},"description":"Whether to disable the use of extrapolation and return the sampled values, due to sampling the\nnumber returned may be less than the actual values sent to Sentry"},{"in":"query","name":"preventMetricAggregates","schema":{"type":"string","enum":["0","1"]},"description":"Whether to throw an error when aggregates are passed in the query or groupBy"},{"in":"query","name":"excludeOther","schema":{"type":"string","enum":["0","1"]},"description":"Only applicable with TopEvents, whether to include the 'other' timeseries which represents all the\nevents that aren't in the top groups."}],"tags":["Explore"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"type":"object","properties":{"dataset":{"type":"string"},"start":{"type":"number","format":"double"},"end":{"type":"number","format":"double"},"ingestion":{"type":"object","description":"Ingestion status for the data behind a response.","properties":{"status":{"type":"string"},"delaySeconds":{"type":"number","format":"double"},"completeThrough":{"type":"number","format":"double"}},"required":["status"]}},"required":["dataset","end","start"]},"timeSeries":{"type":"array","items":{"type":"object","properties":{"values":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"number","format":"double"},"value":{"type":"number","format":"double","nullable":true},"incomplete":{"type":"boolean"},"comparisonValue":{"type":"number","format":"double","nullable":true},"filled":{"type":"boolean"},"smoothed":{"type":"boolean"},"comparisonFilled":{"type":"boolean"},"comparisonSmoothed":{"type":"boolean"},"sampleCount":{"type":"number","format":"double"},"sampleRate":{"type":"number","format":"double","nullable":true},"confidence":{"enum":["low","high",null],"type":"string","nullable":true},"incompleteReason":{"type":"string"}},"required":["incomplete","timestamp","value"]}},"yAxis":{"type":"string"},"groupBy":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"number","format":"double"},{"type":"object","nullable":true}]}},"required":["key","value"]}},"meta":{"type":"object","properties":{"order":{"type":"integer"},"isOther":{"type":"boolean"},"valueUnit":{"type":"string","nullable":true},"dataScanned":{"enum":["partial","full"],"type":"string"},"valueType":{"type":"string"},"interval":{"type":"number","format":"double"}},"required":["interval","valueType","valueUnit"]}},"required":["meta","values","yAxis"]}}},"required":["timeSeries"]},"examples":{"QueryTopEventsAsATimeseries":{"value":{"timeSeries":[{"values":[{"timestamp":1741366800000,"value":5,"incomplete":false},{"timestamp":1741370400000,"value":3,"incomplete":true,"incompleteReason":"INGESTION_PENDING"},{"timestamp":1741374000000,"value":4,"incomplete":true,"incompleteReason":"NOT_ELAPSED"}],"yAxis":"count()","groupBy":[{"key":"transaction","value":"foo"},{"key":"project","value":"bar"},{"key":"tag[foo]","value":"baz"}],"meta":{"valueUnit":null,"valueType":"integer","interval":3600}},{"values":[{"timestamp":1741366800000,"value":5,"incomplete":false},{"timestamp":1741370400000,"value":2,"incomplete":true,"incompleteReason":"INGESTION_PENDING"},{"timestamp":1741374000000,"value":1,"incomplete":true,"incompleteReason":"NOT_ELAPSED"}],"yAxis":"count()","groupBy":[{"key":"transaction","value":"foo"},{"key":"project","value":"ball"},{"key":"tag[foo]","value":"baz"}],"meta":{"valueUnit":null,"valueType":"integer","interval":3600}}],"meta":{"dataset":"spans","start":1741366800000,"end":1741374060000,"ingestion":{"status":"healthy","delaySeconds":130.5,"completeThrough":1741373929500}}},"summary":"Query Top Events as a Timeseries"}}}},"description":""},"400":{"description":"Invalid Query"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/external-users/":{"post":{"operationId":"createOrganizationExternalUser","description":"Link a user from an external provider to a Sentry user.","summary":"Create an External User","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["Integrations"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"user_id":{"type":"integer","description":"The user ID in Sentry."},"external_name":{"type":"string","description":"The associated name for the provider."},"provider":{"enum":["github","github_enterprise","jira_server","slack","slack_staging","perforce","gitlab","cursor_origin","msteams","custom_scm"],"type":"string","description":"The provider of the external actor.\n\n* `github`\n* `github_enterprise`\n* `jira_server`\n* `slack`\n* `slack_staging`\n* `perforce`\n* `gitlab`\n* `cursor_origin`\n* `msteams`\n* `custom_scm`"},"integration_id":{"type":"integer","description":"The Integration ID."},"id":{"type":"integer","readOnly":true,"description":"The external actor ID."},"external_id":{"type":"string","nullable":true,"description":"The associated user ID for provider."}},"required":["external_name","id","integration_id","provider","user_id"]}}},"required":true},"security":[{"auth_token":["org:admin","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]},"examples":{"CreateAnExternalUser":{"value":{"externalName":"@Billybob","provider":"github","userId":"1","integrationId":"1","id":"1"},"summary":"Create an external user"}}}},"description":""},"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]},"examples":{"CreateAnExternalUser":{"value":{"externalName":"@Billybob","provider":"github","userId":"1","integrationId":"1","id":"1"},"summary":"Create an external user"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/external-users/{external_user_id}/":{"put":{"operationId":"updateOrganizationExternalUser","description":"Update a user in an external provider that is currently linked to a Sentry user.","summary":"Update an External User","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"external_user_id","schema":{"type":"integer"},"description":"The ID of the external user object. This is returned when creating an external user.","required":true}],"tags":["Integrations"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"user_id":{"type":"integer","description":"The user ID in Sentry."},"external_name":{"type":"string","description":"The associated name for the provider."},"provider":{"enum":["github","github_enterprise","jira_server","slack","slack_staging","perforce","gitlab","cursor_origin","msteams","custom_scm"],"type":"string","description":"The provider of the external actor.\n\n* `github`\n* `github_enterprise`\n* `jira_server`\n* `slack`\n* `slack_staging`\n* `perforce`\n* `gitlab`\n* `cursor_origin`\n* `msteams`\n* `custom_scm`"},"integration_id":{"type":"integer","description":"The Integration ID."},"id":{"type":"integer","readOnly":true,"description":"The external actor ID."},"external_id":{"type":"string","nullable":true,"description":"The associated user ID for provider."}},"required":["external_name","id","integration_id","provider","user_id"]}}},"required":true},"security":[{"auth_token":["org:admin","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]},"examples":{"CreateAnExternalUser":{"value":{"externalName":"@Billybob","provider":"github","userId":"1","integrationId":"1","id":"1"},"summary":"Create an external user"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteOrganizationExternalUser","description":"Delete the link between a user from an external provider and a Sentry user.","summary":"Delete an External User","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"external_user_id","schema":{"type":"integer"},"description":"The ID of the external user object. This is returned when creating an external user.","required":true}],"tags":["Integrations"],"security":[{"auth_token":["org:admin","org:write"]}],"responses":{"204":{"description":"No Content"},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/flags/logs/":{"get":{"operationId":"listOrganizationFlagLogs","description":"Return a paginated list of feature flag changes (creations, updates and deletions)\nrecorded for an organization within the requested time range.","summary":"List an Organization's Flag Logs","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"statsPeriod","schema":{"type":"string"},"description":"The period of time for the query, will override the start & end parameters, a number followed by one of:\n- `d` for days\n- `h` for hours\n- `m` for minutes\n- `s` for seconds\n- `w` for weeks\n\nFor example, `24h`, to mean query data starting from 24 hours ago to now."},{"in":"query","name":"flag","schema":{"type":"array","items":{"type":"string"}},"description":"The name of a feature flag to filter by. Repeat the parameter to match multiple flags."},{"in":"query","name":"provider","schema":{"type":"array","items":{"type":"string","enum":["flagpole","generic","launchdarkly","statsig","unknown","unleash"]}},"description":"The flag provider to filter by. Use `unknown` to match logs without a provider. Repeat the parameter to match multiple providers."},{"in":"query","name":"sort","schema":{"type":"string"},"description":"The field to sort results by.\n\nAvailable fields are:\n- `action`\n- `createdAt`\n- `createdBy`\n- `createdByType`\n- `flag`\n- `provider`\n\nPrefix with `-` to sort in descending order.\n"},{"in":"query","name":"per_page","schema":{"type":"integer"},"description":"Limit the number of rows to return in the result. Default and maximum allowed is 100."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Flags"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"action":{"enum":["created","deleted","updated"],"type":"string"},"createdAt":{"type":"string","format":"date-time"},"createdBy":{"type":"string","nullable":true},"createdByType":{"enum":["email","id","name",null],"type":"string","nullable":true},"flag":{"type":"string"},"provider":{"enum":["generic","flagpole","launchdarkly","unleash","statsig",null],"type":"string","nullable":true},"tags":{"type":"object","additionalProperties":{}}},"required":["action","createdAt","createdBy","createdByType","flag","id","provider","tags"]}}},"required":["data"]},"examples":{"ListAnOrganization'sFlagLogs":{"value":{"data":[{"id":1,"action":"updated","createdAt":"2024-01-01T05:12:33.000000+00:00","createdBy":"jane.doe@example.com","createdByType":"email","flag":"new-checkout-flow","provider":"launchdarkly","tags":{"environment":"production"}}]},"summary":"List an organization's flag logs"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/flags/logs/{flag_log_id}/":{"get":{"operationId":"retrieveOrganizationFlagLog","description":"Return a single feature flag change recorded for an organization.","summary":"Retrieve an Organization's Flag Log","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"flag_log_id","schema":{"type":"integer"},"description":"The ID of the flag log entry you'd like to retrieve.","required":true}],"tags":["Flags"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"action":{"enum":["created","deleted","updated"],"type":"string"},"createdAt":{"type":"string","format":"date-time"},"createdBy":{"type":"string","nullable":true},"createdByType":{"enum":["email","id","name",null],"type":"string","nullable":true},"flag":{"type":"string"},"provider":{"enum":["generic","flagpole","launchdarkly","unleash","statsig",null],"type":"string","nullable":true},"tags":{"type":"object","additionalProperties":{}}},"required":["action","createdAt","createdBy","createdByType","flag","id","provider","tags"]}},"required":["data"]},"examples":{"RetrieveAFlagLog":{"value":{"data":{"id":1,"action":"updated","createdAt":"2024-01-01T05:12:33.000000+00:00","createdBy":"jane.doe@example.com","createdByType":"email","flag":"new-checkout-flow","provider":"launchdarkly","tags":{"environment":"production"}}},"summary":"Retrieve a flag log"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/forwarding/":{"get":{"operationId":"listOrganizationForwarding","description":"Returns a list of data forwarders for an organization.","summary":"Retrieve Data Forwarders for an Organization","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["Integrations"],"security":[{"auth_token":["org:read"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"isEnabled":{"type":"boolean"},"enrollNewProjects":{"type":"boolean"},"enrolledProjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"platform":{"type":"string","nullable":true}},"required":["id","platform","slug"]}},"provider":{"type":"string"},"config":{"type":"object","additionalProperties":{"type":"string"},"nullable":true},"projectConfigs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"isEnabled":{"type":"boolean"},"dataForwarderId":{"type":"string"},"project":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"platform":{"type":"string","nullable":true}},"required":["id","platform","slug"]},"overrides":{"type":"object","additionalProperties":{"type":"string"}},"effectiveConfig":{"type":"object","additionalProperties":{"type":"string"}},"dateAdded":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"}},"required":["dataForwarderId","dateAdded","dateUpdated","effectiveConfig","id","isEnabled","overrides","project"]}},"dateAdded":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"}},"required":["config","dateAdded","dateUpdated","enrollNewProjects","enrolledProjects","id","isEnabled","organizationId","projectConfigs","provider"]}},"examples":{"ListAllDataForwardersForAnOrganization":{"value":[{"id":"1","organizationId":"1","isEnabled":true,"enrollNewProjects":true,"enrolledProjects":[],"provider":"sqs","config":{"region":"us-east-1","queue_url":"https://sqs.us-east-1.amazonaws.com/01234567890/sentry-errors.fifo","s3_bucket":"sentry-errors-bucket","access_key":"AKIAIOSFODNN7EXAMPLE","secret_key":"wJalrXUtnFEMI1K7MDENGSbPxRfiCYEXAMPLEKEY","message_group_id":"sentry-errors"},"projectConfigs":[],"dateAdded":"2025-11-01T00:00:00.000000Z","dateUpdated":"2025-11-01T00:00:00.000000Z"},{"id":"2","organizationId":"1","isEnabled":true,"enrollNewProjects":false,"enrolledProjects":[{"id":"1","slug":"proj-1","platform":"javascript-react"},{"id":"2","slug":"proj-2","platform":"python-flask"}],"provider":"segment","config":{"write_key":"itA5bLOPNxccvZ9ON1NYg9EXAMPLEKEY"},"projectConfigs":[{"id":"1","isEnabled":true,"dataForwarderId":"2","project":{"id":"1","slug":"proj-1","platform":"javascript-react"},"overrides":{},"effectiveConfig":{"write_key":"itA5bLOPNxccvZ9ON1NYg9EXAMPLEKEY"},"dateAdded":"2025-11-01T00:00:00.000000Z","dateUpdated":"2025-11-01T00:00:00.000000Z"},{"id":"2","isEnabled":true,"dataForwarderId":"2","project":{"id":"2","slug":"proj-2","platform":"python-flask"},"overrides":{},"effectiveConfig":{"write_key":"itA5bLOPNxccvZ9ON1NYg9EXAMPLEKEY"},"dateAdded":"2025-11-01T00:00:00.000000Z","dateUpdated":"2025-11-01T00:00:00.000000Z"}],"dateAdded":"2025-11-01T00:00:00.000000Z","dateUpdated":"2025-11-01T00:00:00.000000Z"},{"id":"3","organizationId":"1","isEnabled":true,"enrollNewProjects":true,"enrolledProjects":[{"id":"1","slug":"proj-1","platform":"javascript-react"}],"provider":"splunk","config":{"index":"main","token":"ab13cdef-45aa-1bcd-a123-bcEXAMPLEKEY","source":"sentry","instance_url":"https://prd-a-abcde.splunkcloud.com:8088"},"projectConfigs":[{"id":"3","isEnabled":true,"dataForwarderId":"3","project":{"id":"1","slug":"proj-1","platform":"javascript-react"},"overrides":{"source":"sentry-custom"},"effectiveConfig":{"index":"main","token":"ab13cdef-45aa-1bcd-a123-bcEXAMPLEKEY","source":"sentry-custom","instance_url":"https://prd-a-abcde.splunkcloud.com:8088"},"dateAdded":"2025-11-01T00:00:00.000000Z","dateUpdated":"2025-11-01T00:00:00.000000Z"}],"dateAdded":"2025-11-01T00:00:00.000000Z","dateUpdated":"2025-11-01T00:00:00.000000Z"}],"summary":"List all data forwarders for an organization"}}}},"description":""}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"post":{"operationId":"createOrganizationForwarding","description":"Creates a new data forwarder for an organization.\nOnly one data forwarder can be created per provider for a given organization.\n\nProject-specific overrides can only be created after creating the data forwarder.","summary":"Create a Data Forwarder for an Organization","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["Integrations"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"organization_id":{"type":"integer","description":"The ID of the organization related to the data forwarder."},"provider":{"enum":["segment","sqs","splunk"],"type":"string","description":"The provider of the data forwarder. One of \"segment\", \"sqs\", or \"splunk\".\n\n* `segment` - Segment\n* `sqs` - Amazon SQS\n* `splunk` - Splunk"},"is_enabled":{"type":"boolean","default":true,"description":"Whether the data forwarder is enabled."},"enroll_new_projects":{"type":"boolean","default":false,"description":"Whether to enroll new projects automatically, after they're created."},"config":{"type":"object","additionalProperties":{"type":"string"},"description":"The configuration for the data forwarder, specific to the provider type. \nFor a 'sqs' provider, the required keys are queue_url, region, access_key, secret_key. If using a FIFO queue, you must also provide a message_group_id, though s3_bucket is optional. \nFor a 'segment' provider, the required keys are write_key. \nFor a 'splunk' provider, the required keys are instance_url, index, source, token."},"project_ids":{"type":"array","items":{"type":"integer"},"description":"The IDs of the projects connected to the data forwarder. Missing project IDs will be unenrolled if previously enrolled."}},"required":["organization_id","provider"]}}},"required":true},"security":[{"auth_token":["org:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"isEnabled":{"type":"boolean"},"enrollNewProjects":{"type":"boolean"},"enrolledProjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"platform":{"type":"string","nullable":true}},"required":["id","platform","slug"]}},"provider":{"type":"string"},"config":{"type":"object","additionalProperties":{"type":"string"},"nullable":true},"projectConfigs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"isEnabled":{"type":"boolean"},"dataForwarderId":{"type":"string"},"project":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"platform":{"type":"string","nullable":true}},"required":["id","platform","slug"]},"overrides":{"type":"object","additionalProperties":{"type":"string"}},"effectiveConfig":{"type":"object","additionalProperties":{"type":"string"}},"dateAdded":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"}},"required":["dataForwarderId","dateAdded","dateUpdated","effectiveConfig","id","isEnabled","overrides","project"]}},"dateAdded":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"}},"required":["config","dateAdded","dateUpdated","enrollNewProjects","enrolledProjects","id","isEnabled","organizationId","projectConfigs","provider"]}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/forwarding/{data_forwarder_id}/":{"put":{"operationId":"updateOrganizationForwarding","description":"Updates a data forwarder for an organization or update a project-specific override.\nUpdates to the data forwarder's configuration require `org:write` permissions, and the entire\nconfiguration to be provided, including the `project_ids` field.\n\nTo configure project-specific overrides, specify only the following fields:\n\n - 'project_id': The ID of the project to create/modify the override for.\n - 'overrides': Follows the same format as `config` but all provider fields are optional, since only specified fields are overridden.\n - 'is_enabled': To enable/disable the forwarder for events on the specific project.\n\nOverrides can be performed with `project:write` permissions on the project being modified.","summary":"Update a Data Forwarder for an Organization","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"data_forwarder_id","schema":{"type":"integer"},"description":"The ID of the data forwarder you'd like to query.","required":true}],"tags":["Integrations"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"organization_id":{"type":"integer","description":"The ID of the organization related to the data forwarder."},"provider":{"enum":["segment","sqs","splunk"],"type":"string","description":"The provider of the data forwarder. One of \"segment\", \"sqs\", or \"splunk\".\n\n* `segment` - Segment\n* `sqs` - Amazon SQS\n* `splunk` - Splunk"},"is_enabled":{"type":"boolean","default":true,"description":"Whether the data forwarder is enabled."},"enroll_new_projects":{"type":"boolean","default":false,"description":"Whether to enroll new projects automatically, after they're created."},"config":{"type":"object","additionalProperties":{"type":"string"},"description":"The configuration for the data forwarder, specific to the provider type. \nFor a 'sqs' provider, the required keys are queue_url, region, access_key, secret_key. If using a FIFO queue, you must also provide a message_group_id, though s3_bucket is optional. \nFor a 'segment' provider, the required keys are write_key. \nFor a 'splunk' provider, the required keys are instance_url, index, source, token."},"project_ids":{"type":"array","items":{"type":"integer"},"description":"The IDs of the projects connected to the data forwarder. Missing project IDs will be unenrolled if previously enrolled."}},"required":["organization_id","provider"]}}},"required":true},"security":[{"auth_token":["org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"isEnabled":{"type":"boolean"},"enrollNewProjects":{"type":"boolean"},"enrolledProjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"platform":{"type":"string","nullable":true}},"required":["id","platform","slug"]}},"provider":{"type":"string"},"config":{"type":"object","additionalProperties":{"type":"string"},"nullable":true},"projectConfigs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"isEnabled":{"type":"boolean"},"dataForwarderId":{"type":"string"},"project":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"platform":{"type":"string","nullable":true}},"required":["id","platform","slug"]},"overrides":{"type":"object","additionalProperties":{"type":"string"}},"effectiveConfig":{"type":"object","additionalProperties":{"type":"string"}},"dateAdded":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"}},"required":["dataForwarderId","dateAdded","dateUpdated","effectiveConfig","id","isEnabled","overrides","project"]}},"dateAdded":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"}},"required":["config","dateAdded","dateUpdated","enrollNewProjects","enrolledProjects","id","isEnabled","organizationId","projectConfigs","provider"]},"examples":{"ADataForwarderForAnOrganization":{"value":{"id":"1","organizationId":"1","isEnabled":true,"enrollNewProjects":true,"enrolledProjects":[],"provider":"sqs","config":{"region":"us-east-1","queue_url":"https://sqs.us-east-1.amazonaws.com/01234567890/sentry-errors.fifo","s3_bucket":"sentry-errors-bucket","access_key":"AKIAIOSFODNN7EXAMPLE","secret_key":"wJalrXUtnFEMI1K7MDENGSbPxRfiCYEXAMPLEKEY","message_group_id":"sentry-errors"},"projectConfigs":[],"dateAdded":"2025-11-01T00:00:00.000000Z","dateUpdated":"2025-11-01T00:00:00.000000Z"},"summary":"A data forwarder for an organization"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteOrganizationForwarding","description":"Deletes a data forwarder for an organization. All project-specific overrides will be deleted as well.","summary":"Delete a Data Forwarder for an Organization","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"data_forwarder_id","schema":{"type":"integer"},"description":"The ID of the data forwarder you'd like to query.","required":true}],"tags":["Integrations"],"security":[{"auth_token":["org:write"]}],"responses":{"204":{"description":"No Content"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/group-search-views/":{"get":{"operationId":"listOrganizationIssueViews","description":"List the current organization member's custom views\n`````````````````````````````````````````\n\nRetrieve a list of custom views for the current organization member.","summary":"List Issue Views","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"createdBy","schema":{"enum":["me","others"],"type":"string","minLength":1},"description":"Whether to return issue views created by the current user or other members.\n\n* `me`\n* `others`"},{"in":"query","name":"sort","schema":{"type":"array","items":{"enum":["popularity","-popularity","visited","-visited","name","-name","created","-created"],"type":"string","description":"* `popularity`\n* `-popularity`\n* `visited`\n* `-visited`\n* `name`\n* `-name`\n* `created`\n* `-created`"},"default":["-visited"]},"description":"The fields used to sort issue views, in order of precedence."},{"in":"query","name":"query","schema":{"type":"string","minLength":1},"description":"A case-insensitive search against issue view names and queries."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Events"],"security":[{"auth_token":["member:read","member:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"createdBy":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"],"nullable":true},"name":{"type":"string"},"query":{"type":"string"},"querySort":{"enum":["date","new","trends","freq","user","inbox","recommended"],"type":"string"},"projects":{"type":"array","items":{"type":"integer"}},"environments":{"type":"array","items":{"type":"string"}},"timeFilters":{"type":"object","properties":{"start":{"type":"string","nullable":true},"end":{"type":"string","nullable":true},"period":{"type":"string","nullable":true},"utc":{"type":"boolean","nullable":true}}},"lastVisited":{"type":"string","nullable":true},"dateCreated":{"type":"string"},"dateUpdated":{"type":"string"},"starred":{"type":"boolean"},"stars":{"type":"integer"}},"required":["createdBy","dateCreated","dateUpdated","environments","id","lastVisited","name","projects","query","querySort","starred","stars","timeFilters"]}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"post":{"operationId":"createOrganizationIssueView","description":"Create a new custom view for the current organization member.","summary":"Create an Issue View","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["Events"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the issue view."},"query":{"type":"string","description":"The issue search query. Issue search does not support the `AND`/`OR` boolean operators or parenthesized boolean groups. To match any of several values, use the list form instead: `issue:[PROJ-AB1, PROJ-CD2]`, `issue.priority:[high, medium]`."},"projects":{"type":"array","items":{"type":"integer"},"description":"The project IDs included in the view. Use `-1` to include all projects."},"environments":{"type":"array","items":{"type":"string"},"description":"The environment names included in the view. An empty list includes all environments."},"timeFilters":{"allOf":[{"type":"object","properties":{"start":{"type":"string","nullable":true,"description":"The start of the time range in ISO-8601 format."},"end":{"type":"string","nullable":true,"description":"The end of the time range in ISO-8601 format."},"period":{"type":"string","nullable":true,"description":"The relative time period, such as `14d`."},"utc":{"type":"boolean","nullable":true,"description":"Whether to interpret the time range as UTC."}}}],"description":"The time range for the view."},"querySort":{"enum":["date","new","trends","freq","user","inbox","recommended"],"type":"string","default":"date","description":"How to sort issues in the view.\n\n* `date` - Last Seen\n* `new` - First Seen\n* `trends` - Trends\n* `freq` - Events\n* `user` - Users\n* `inbox` - Date Added\n* `recommended` - Recommended"},"starred":{"type":"boolean","description":"Whether to star the issue view for the current user."}},"required":["environments","name","projects","query","timeFilters"]}}},"required":true},"security":[{"auth_token":["member:read","member:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"createdBy":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"],"nullable":true},"name":{"type":"string"},"query":{"type":"string"},"querySort":{"enum":["date","new","trends","freq","user","inbox","recommended"],"type":"string"},"projects":{"type":"array","items":{"type":"integer"}},"environments":{"type":"array","items":{"type":"string"}},"timeFilters":{"type":"object","properties":{"start":{"type":"string","nullable":true},"end":{"type":"string","nullable":true},"period":{"type":"string","nullable":true},"utc":{"type":"boolean","nullable":true}}},"lastVisited":{"type":"string","nullable":true},"dateCreated":{"type":"string"},"dateUpdated":{"type":"string"},"starred":{"type":"boolean"},"stars":{"type":"integer"}},"required":["createdBy","dateCreated","dateUpdated","environments","id","lastVisited","name","projects","query","querySort","starred","stars","timeFilters"]}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/integrations/":{"get":{"operationId":"listOrganizationIntegrations","description":"Lists all the available Integrations for an Organization.","summary":"List an Organization's Available Integrations","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"providerKey","schema":{"type":"string"},"description":"Specific integration provider to filter by such as `slack`. See our [Integrations Documentation](/product/integrations/) for an updated list of providers."},{"in":"query","name":"features","schema":{"type":"array","items":{"type":"string"}},"description":"Integration features to filter by. See our [Integrations Documentation](/product/integrations/) for an updated list of features. Current available ones are:\n- `alert-rule`\n- `chat-unfurl`\n- `codeowners`\n- `commits`\n- `data-forwarding`\n- `deployment`\n- `enterprise-alert-rule`\n- `enterprise-incident-management`\n- `incident-management`\n- `issue-basic`\n- `issue-sync`\n- `mobile`\n- `serverless`\n- `session-replay`\n- `stacktrace-link`\n- `ticket-rules`\n "},{"in":"query","name":"includeConfig","schema":{"type":"boolean"},"description":"Specify `True` to fetch third-party integration configurations. Note that this can add several seconds to the response time."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Integrations"],"security":[{"auth_token":["org:admin","org:integrations","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string","nullable":true},"domainName":{"type":"string","nullable":true},"accountType":{"type":"string","nullable":true},"scopes":{"type":"array","items":{"type":"string"},"nullable":true},"outOfDate":{"type":"boolean","nullable":true},"missingFeatures":{"type":"array","items":{"type":"object","description":"A feature the installation can no longer support, named by the permission\ntier it falls short of, so the update-permissions modal can list them.","properties":{"key":{"type":"string"},"description":{"type":"string"}},"required":["description","key"]},"nullable":true},"status":{"type":"string"},"provider":{},"configOrganization":{},"configData":{},"externalId":{"type":"string"},"organizationId":{"type":"integer"},"organizationIntegrationStatus":{"type":"string"},"gracePeriodEnd":{"type":"string","nullable":true}},"required":["accountType","configData","configOrganization","domainName","externalId","gracePeriodEnd","icon","id","missingFeatures","name","organizationId","organizationIntegrationStatus","outOfDate","provider","scopes","status"]}},"examples":{"ListAllAvailableIntegrationsForAlphabetSoupFactory":{"value":[{"id":"24817","name":"Alphabet Soup Factory","icon":"https://avatars.slack-edge.com/alphabet-soup","domainName":"alphabet-soup.slack.com","accountType":null,"scopes":["app_mentions:read","channels:read","chat:write","chat:write.customize","chat:write.public","commands","groups:read","im:history","im:read","links:read","links:write","team:read","users:read"],"outOfDate":false,"missingFeatures":[],"status":"active","provider":{"key":"slack","slug":"slack","name":"Slack","canAdd":true,"canDisable":false,"features":["alert-rule","chat-unfurl"],"aspects":{}},"configOrganization":[],"configData":{"installationType":"born_as_bot"},"externalId":"7252394","organizationId":6234528,"organizationIntegrationStatus":"active","gracePeriodEnd":null}],"summary":"List All Available Integrations for Alphabet Soup Factory"}}}},"description":""}},"x-sentry-routing":{"silo":"control","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/integrations/{integration_id}/":{"get":{"operationId":"getOrganizationIntegration","description":"OrganizationIntegrationBaseEndpoints expect both Integration and\nOrganizationIntegration DB entries to exist for a given organization and\nintegration_id.","summary":"Retrieve an Integration for an Organization","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"integration_id","schema":{"type":"string"},"description":"The ID of the integration installed on the organization.","required":true}],"tags":["Integrations"],"security":[{"auth_token":["org:admin","org:integrations","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string","nullable":true},"domainName":{"type":"string","nullable":true},"accountType":{"type":"string","nullable":true},"scopes":{"type":"array","items":{"type":"string"},"nullable":true},"outOfDate":{"type":"boolean","nullable":true},"missingFeatures":{"type":"array","items":{"type":"object","description":"A feature the installation can no longer support, named by the permission\ntier it falls short of, so the update-permissions modal can list them.","properties":{"key":{"type":"string"},"description":{"type":"string"}},"required":["description","key"]},"nullable":true},"status":{"type":"string"},"provider":{},"configOrganization":{},"configData":{},"externalId":{"type":"string"},"organizationId":{"type":"integer"},"organizationIntegrationStatus":{"type":"string"},"gracePeriodEnd":{"type":"string","nullable":true}},"required":["accountType","configData","configOrganization","domainName","externalId","gracePeriodEnd","icon","id","missingFeatures","name","organizationId","organizationIntegrationStatus","outOfDate","provider","scopes","status"]},"examples":{"ListAllAvailableIntegrationsForAlphabetSoupFactory":{"value":{"id":"24817","name":"Alphabet Soup Factory","icon":"https://avatars.slack-edge.com/alphabet-soup","domainName":"alphabet-soup.slack.com","accountType":null,"scopes":["app_mentions:read","channels:read","chat:write","chat:write.customize","chat:write.public","commands","groups:read","im:history","im:read","links:read","links:write","team:read","users:read"],"outOfDate":false,"missingFeatures":[],"status":"active","provider":{"key":"slack","slug":"slack","name":"Slack","canAdd":true,"canDisable":false,"features":["alert-rule","chat-unfurl"],"aspects":{}},"configOrganization":[],"configData":{"installationType":"born_as_bot"},"externalId":"7252394","organizationId":6234528,"organizationIntegrationStatus":"active","gracePeriodEnd":null},"summary":"List All Available Integrations for Alphabet Soup Factory"}}}},"description":""}},"x-sentry-routing":{"silo":"control","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteOrganizationIntegration","description":"OrganizationIntegrationBaseEndpoints expect both Integration and\nOrganizationIntegration DB entries to exist for a given organization and\nintegration_id.","summary":"Delete an Integration for an Organization","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"integration_id","schema":{"type":"string"},"description":"The ID of the integration installed on the organization.","required":true}],"tags":["Integrations"],"security":[{"auth_token":["org:admin","org:integrations"]}],"responses":{"204":{"description":"No Content"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"control","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/integrations/{integration_id}/channel-validate/":{"get":{"operationId":"validateOrganizationIntegrationChannel","description":"**Experimental:** This API is under active development and may change.\n\nValidate whether a channel exists for the given integration.","summary":"Validate a Messaging Channel for an Integration","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"integration_id","schema":{"type":"string"},"description":"The ID of the integration installed on the organization.","required":true},{"in":"query","name":"channel","schema":{"type":"string","minLength":1},"required":true}],"tags":["Integration"],"security":[{"auth_token":["org:admin","org:integrations","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"valid":{"type":"boolean"}},"required":["valid"]}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"control","organizationParameter":"organization_id_or_slug"},"x-sentry-experimental":true}},"/api/0/organizations/{organization_id_or_slug}/integrations/{integration_id}/channels/":{"get":{"operationId":"listOrganizationIntegrationChannels","description":"**Experimental:** This API is under active development and may change.\n\nList all messaging channels for an integration.","summary":"List Messaging Channels for an Integration","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"integration_id","schema":{"type":"string"},"description":"The ID of the integration installed on the organization.","required":true}],"tags":["Integration"],"security":[{"auth_token":["org:admin","org:integrations","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"warning":{"type":"string"},"results":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"display":{"type":"string"},"type":{"type":"string"}},"required":["display","id","name","type"]}}},"required":["results"]}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"control","organizationParameter":"organization_id_or_slug"},"x-sentry-experimental":true}},"/api/0/organizations/{organization_id_or_slug}/integrations/{integration_id}/repos/":{"get":{"operationId":"listOrganizationIntegrationRepositories","description":"**Experimental:** This API is under active development and may change.\n\nGet the list of repositories available in an integration\n````````````````````````````````````````````````````````\n\nGets all repositories that an integration makes available,\nand indicates whether or not you can search repositories\nby name.\n\n:qparam string search: Name fragment to search repositories by.\n:qparam bool installableOnly: If true, return only repositories that can be installed.\n If false or not provided, return all repositories.\n:qparam bool accessibleOnly: If true, only return repositories that the integration\n installation has access to, filtering locally instead of\n using the provider's search API which may return results\n beyond the installation's scope.","summary":"List Repositories Available to an Integration","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"integration_id","schema":{"type":"string"},"description":"The ID of the integration installed on the organization.","required":true},{"in":"query","name":"search","schema":{"type":"string"},"description":"Repository name to search for."},{"in":"query","name":"installableOnly","schema":{"type":"boolean"},"description":"Only return repositories that are not already installed in Sentry."},{"in":"query","name":"accessibleOnly","schema":{"type":"boolean"},"description":"Only search repositories accessible to the integration installation."}],"tags":["Integration"],"security":[{"auth_token":["org:admin","org:integrations","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"repos":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"identifier":{"type":"string"},"isInstalled":{"type":"boolean"},"defaultBranch":{"type":"string","nullable":true},"externalId":{"type":"string"},"url":{"type":"string","nullable":true}},"required":["defaultBranch","externalId","identifier","isInstalled","name","url"]}},"searchable":{"type":"boolean"}},"required":["repos"]}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"},"x-sentry-experimental":true}},"/api/0/organizations/{organization_id_or_slug}/issues/":{"get":{"operationId":"listOrganizationIssues","description":"Return a list of issues for an organization. All parameters are supplied as query string parameters. A default query of `is:unresolved` is applied. To return all results, use an empty query value (i.e. ``?query=`). ","summary":"List an Organization's Issues","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects.\nFor example, the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=android&project=javascript-react`\n- `/?project=-1`\n"},{"in":"query","name":"statsPeriod","schema":{"type":"string"},"description":"The period of time for the query, will override the start & end parameters, a number followed by one of:\n- `d` for days\n- `h` for hours\n- `m` for minutes\n- `s` for seconds\n- `w` for weeks\n\nFor example, `24h`, to mean query data starting from 24 hours ago to now."},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"groupStatsPeriod","schema":{"type":"string","enum":["","14d","24h","auto"]},"description":"The timeline on which stats for the groups should be presented."},{"in":"query","name":"shortIdLookup","schema":{"type":"string","enum":["0","1"]},"description":"If this is set to `1` then the query will be parsed for issue short IDs. These may ignore other filters (e.g. projects), which is why it is an opt-in."},{"in":"query","name":"query","schema":{"type":"string","default":"is:unresolved"},"description":"An optional search query for filtering issues. A default query will apply if no view/query is set. For all results use this parameter with an empty string."},{"in":"query","name":"viewId","schema":{"type":"string"},"description":"The ID of the view to use. If no query is present, the view's query and filters will be applied."},{"in":"query","name":"sort","schema":{"type":"string","enum":["date","freq","inbox","new","recommended","trends","user"],"default":"date"},"description":"The sort order of the view. Options include 'Last Seen' (`date`), 'First Seen' (`new`), 'Trends' (`trends`), 'Events' (`freq`), 'Users' (`user`), 'Date Added' (`inbox`), and 'Recommended' (`recommended`)."},{"in":"query","name":"limit","schema":{"type":"integer","default":100},"description":"The maximum number of issues to affect. The maximum is 100."},{"in":"query","name":"expand","schema":{"type":"array","items":{"type":"string","enum":["inbox","integrationIssues","latestEventHasAttachments","owners","sentryAppIssues","sessions"]}},"description":"Additional data to include in the response."},{"in":"query","name":"collapse","schema":{"type":"array","items":{"type":"string","enum":["base","filtered","lifetime","stats","unhandled"]}},"description":"Fields to remove from the response to improve query performance."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Events"],"security":[{"auth_token":["event:admin","event:read","event:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"shareId":{"type":"string","nullable":true},"shortId":{"type":"string"},"title":{"type":"string"},"culprit":{"type":"string","nullable":true},"permalink":{"type":"string"},"logger":{"type":"string","nullable":true},"level":{"enum":["sample","debug","info","warning","error","fatal","unknown"],"type":"string"},"status":{"enum":["resolved","ignored","pending_deletion","pending_merge","reprocessing","unresolved"],"type":"string"},"statusDetails":{"type":"object","properties":{"ignoreCount":{"type":"integer"},"ignoreUntil":{"type":"string","format":"date-time"},"ignoreUserCount":{"type":"integer"},"ignoreUserWindow":{"type":"integer"},"ignoreWindow":{"type":"integer"},"actor":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},"inNextRelease":{"type":"boolean"},"inRelease":{"type":"string"},"inCommit":{"type":"string"},"pendingEvents":{"type":"integer"},"info":{"type":"object","properties":{"dateCreated":{"type":"string"},"syncCount":{"type":"integer"},"totalEvents":{"type":"integer"}},"required":["dateCreated","syncCount","totalEvents"],"nullable":true}}},"substatus":{"enum":["archived_until_escalating","archived_until_condition_met","archived_forever","escalating","ongoing","regressed","new",null],"type":"string","nullable":true},"isPublic":{"type":"boolean"},"platform":{"type":"string","nullable":true},"priority":{"enum":["low","medium","high",null],"type":"string","nullable":true},"priorityLockedAt":{"type":"string","format":"date-time","nullable":true},"seerFixabilityScore":{"type":"number","format":"double","nullable":true},"seerAutofixLastTriggered":{"type":"string","format":"date-time","nullable":true},"seerExplorerAutofixLastTriggered":{"type":"string","format":"date-time","nullable":true},"project":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"platform":{"type":"string","nullable":true}},"required":["id","name","platform","slug"]},"type":{"enum":["default","error","csp","nel","hpkp","expectct","expectstaple","transaction","generic","feedback"],"type":"string"},"issueType":{"type":"string"},"issueCategory":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"numComments":{"type":"integer"},"assignedTo":{"type":"object","properties":{"type":{"enum":["user","team"],"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["id","name","type"],"nullable":true},"isBookmarked":{"type":"boolean"},"isSubscribed":{"type":"boolean"},"subscriptionDetails":{"type":"object","properties":{"disabled":{"type":"boolean"},"reason":{"type":"string"}},"nullable":true},"hasSeen":{"type":"boolean"},"annotations":{"type":"array","items":{"type":"object","properties":{"displayName":{"type":"string"},"url":{"type":"string"}},"required":["displayName","url"]}},"isUnhandled":{"type":"boolean"},"count":{"type":"string"},"userCount":{"type":"integer"},"firstSeen":{"type":"string","format":"date-time","nullable":true},"lastSeen":{"type":"string","format":"date-time","nullable":true},"derivedData":{"type":"object","properties":{"blocker":{"type":"string"},"progress":{"type":"string"},"status":{"type":"string"},"viewCount":{"type":"integer"},"hasOpenFixPr":{"type":"boolean"},"isAssigned":{"type":"boolean"},"hasRootCause":{"type":"boolean"},"lastCompletedAutofixStep":{"type":"string"},"lastProgressedAt":{"type":"string","format":"date-time","nullable":true}},"required":["blocker","hasOpenFixPr","hasRootCause","isAssigned","lastCompletedAutofixStep","lastProgressedAt","progress","status","viewCount"]},"stats":{"type":"object","additionalProperties":{}},"lifetime":{"type":"object","additionalProperties":{}},"filtered":{"type":"object","properties":{"count":{"type":"string"},"userCount":{"type":"integer"},"firstSeen":{"type":"string","format":"date-time","nullable":true},"lastSeen":{"type":"string","format":"date-time","nullable":true},"stats":{"type":"object","additionalProperties":{}}},"required":["count","firstSeen","lastSeen","stats","userCount"],"nullable":true},"sessionCount":{"type":"integer"},"inbox":{"type":"object","properties":{"reason":{"type":"integer"},"reason_details":{"type":"object","properties":{"until":{"type":"string","nullable":true},"count":{"type":"integer","nullable":true},"window":{"type":"integer","nullable":true},"user_count":{"type":"integer","nullable":true},"user_window":{"type":"integer","nullable":true}},"required":["count","until","user_count","user_window","window"],"nullable":true},"date_added":{"type":"string","format":"date-time"}},"required":["date_added","reason","reason_details"]},"owners":{"type":"object","properties":{"type":{"type":"string"},"owner":{"type":"string"},"date_added":{"type":"string","format":"date-time"}},"required":["date_added","owner","type"]},"integrationIssues":{"type":"array","items":{"type":"object","additionalProperties":{}}},"sentryAppIssues":{"type":"array","items":{"type":"object","additionalProperties":{}}},"latestEventHasAttachments":{"type":"boolean"},"matchingEventId":{"type":"string","nullable":true},"matchingEventEnvironment":{"type":"string","nullable":true}},"required":["annotations","assignedTo","count","culprit","derivedData","filtered","firstSeen","hasSeen","id","inbox","integrationIssues","isBookmarked","isPublic","isSubscribed","isUnhandled","issueCategory","issueType","lastSeen","latestEventHasAttachments","level","lifetime","logger","matchingEventEnvironment","matchingEventId","metadata","numComments","owners","permalink","platform","priority","priorityLockedAt","project","seerAutofixLastTriggered","seerExplorerAutofixLastTriggered","seerFixabilityScore","sentryAppIssues","sessionCount","shareId","shortId","stats","status","statusDetails","subscriptionDetails","substatus","title","type","userCount"]}},"examples":{"ReturnAListOfIssuesForAnOrganization":{"value":[{"annotations":[],"assignedTo":{"type":"user","id":"1","name":"John Doe","email":"john.doe@example.com"},"count":"150","culprit":"raven.scripts.runner in main","firstSeen":"2018-11-06T21:19:55Z","filtered":null,"inbox":{"reason":0,"reason_details":null,"date_added":"2018-11-06T21:19:55Z"},"hasSeen":false,"id":"1","isBookmarked":false,"isPublic":false,"isSubscribed":true,"lastSeen":"2018-12-06T21:19:55Z","level":"error","logger":null,"metadata":{"title":"This is an example Python exception"},"numComments":0,"permalink":"https://sentry.io/the-interstellar-jurisdiction/pump-station/issues/1/","project":{"id":"2","name":"Pump Station","slug":"pump-station","platform":"python"},"shareId":"123def456abc","shortId":"PUMP-STATION-1","stats":{"24h":[[1541455200,473],[1541458800,914],[1541462400,991],[1541466000,925],[1541469600,881],[1541473200,182],[1541476800,490],[1541480400,820],[1541484000,322],[1541487600,836],[1541491200,565],[1541494800,758],[1541498400,880],[1541502000,677],[1541505600,381],[1541509200,814],[1541512800,329],[1541516400,446],[1541520000,731],[1541523600,111],[1541527200,926],[1541530800,772],[1541534400,400],[1541538000,943]]},"priority":"medium","priorityLockedAt":null,"owners":{"type":"user","owner":"1","date_added":"2018-11-06T21:19:55Z"},"platform":"python","lifetime":{"count":"150","userCount":0,"firstSeen":"2018-11-06T21:19:55Z","lastSeen":"2018-12-06T21:19:55Z"},"seerAutofixLastTriggered":null,"seerExplorerAutofixLastTriggered":null,"seerFixabilityScore":null,"status":"ignored","substatus":"archived_until_condition_met","statusDetails":{},"subscriptionDetails":null,"title":"This is an example Python exception","type":"default","userCount":0,"integrationIssues":[],"sentryAppIssues":[],"isUnhandled":false,"issueCategory":"performance","issueType":"performance_n_plus_one_db_queries","sessionCount":0,"latestEventHasAttachments":false,"matchingEventId":null,"matchingEventEnvironment":null,"derivedData":{"blocker":"none","progress":"fix_applied","status":"open","viewCount":42,"hasOpenFixPr":false,"isAssigned":true,"hasRootCause":true,"lastCompletedAutofixStep":"pr_created","lastProgressedAt":"2018-12-06T21:19:55Z"}}],"summary":"Return a list of issues for an organization"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"updateOrganizationIssues","description":"Bulk mutate various attributes on a maxmimum of 1000 issues. \n- For non-status updates, the `id` query parameter is required. \n- For status updates, the `id` query parameter may be omitted to update issues that match the filtering. \nIf any IDs are out of scope, the data won't be mutated but the endpoint will still produce a successful response. For example, if no issues were found matching the criteria, a HTTP 204 is returned.","summary":"Bulk Mutate an Organization's Issues","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects.\nFor example, the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=android&project=javascript-react`\n- `/?project=-1`\n"},{"in":"query","name":"id","schema":{"type":"array","items":{"type":"integer"}},"description":"The list of issue IDs to mutate. It is optional for status updates, in which an implicit `update all` is assumed."},{"in":"query","name":"statsPeriod","schema":{"type":"string"},"description":"The period of time for the query, will override the start & end parameters, a number followed by one of:\n- `d` for days\n- `h` for hours\n- `m` for minutes\n- `s` for seconds\n- `w` for weeks\n\nFor example, `24h`, to mean query data starting from 24 hours ago to now."},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"query","schema":{"type":"string","default":"is:unresolved"},"description":"An optional search query for filtering issues. A default query will apply if no view/query is set. For all results use this parameter with an empty string."},{"in":"query","name":"viewId","schema":{"type":"string"},"description":"The ID of the view to use. If no query is present, the view's query and filters will be applied."},{"in":"query","name":"sort","schema":{"type":"string","enum":["date","freq","inbox","new","recommended","trends","user"],"default":"date"},"description":"The sort order of the view. Options include 'Last Seen' (`date`), 'First Seen' (`new`), 'Trends' (`trends`), 'Events' (`freq`), 'Users' (`user`), 'Date Added' (`inbox`), and 'Recommended' (`recommended`)."},{"in":"query","name":"limit","schema":{"type":"integer","default":100},"description":"The maximum number of issues to affect. The maximum is 100."}],"tags":["Events"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"inbox":{"type":"boolean","description":"If true, marks the issue as reviewed by the requestor."},"status":{"enum":["resolved","unresolved","ignored","resolvedInNextRelease","muted"],"type":"string","description":"Limit mutations to only issues with the given status.\n\n* `resolved`\n* `unresolved`\n* `ignored`\n* `resolvedInNextRelease`\n* `muted`"},"statusDetails":{"allOf":[{"type":"object","properties":{"inNextRelease":{"type":"boolean","description":"If true, marks the issue as resolved in the next release."},"inRelease":{"type":"string","description":"The version of the release that the issue should be resolved in.If set to `latest`, the latest release will be used."},"inCommit":{"allOf":[{"type":"object","properties":{"commit":{"type":"string","description":"The SHA of the resolving commit."},"repository":{"type":"string","description":"The name of the repository (as it appears in Sentry)."}},"required":["commit","repository"]}],"description":"The commit data that the issue should use for resolution."},"ignoreDuration":{"type":"integer","minimum":0,"description":"Ignore the issue until for this many minutes."},"ignoreCount":{"type":"integer","minimum":0,"description":"Ignore the issue until it has occurred this many times in `ignoreWindow` minutes."},"ignoreWindow":{"type":"integer","maximum":10080,"minimum":0,"description":"Ignore the issue until it has occurred `ignoreCount` times in this many minutes. (Max: 1 week)"},"ignoreUserCount":{"type":"integer","minimum":0,"description":"Ignore the issue until it has affected this many users in `ignoreUserWindow` minutes."},"ignoreUserWindow":{"type":"integer","maximum":10080,"minimum":0,"description":"Ignore the issue until it has affected `ignoreUserCount` users in this many minutes. (Max: 1 week)"}},"required":["ignoreCount","ignoreDuration","ignoreUserCount","ignoreUserWindow","ignoreWindow","inNextRelease","inRelease"]}],"description":"Additional details about the resolution. Status detail updates that include release data are only allowed for issues within a single project."},"substatus":{"enum":["archived_until_escalating","archived_until_condition_met","archived_forever","escalating","ongoing","regressed","new",null],"type":"string","nullable":true,"description":"The new substatus of the issue.\n\n* `archived_until_escalating`\n* `archived_until_condition_met`\n* `archived_forever`\n* `escalating`\n* `ongoing`\n* `regressed`\n* `new`"},"hasSeen":{"type":"boolean","description":"If true, marks the issue as seen by the requestor."},"isBookmarked":{"type":"boolean","description":"If true, bookmarks the issue for the requestor."},"isPublic":{"type":"boolean","description":"If true, publishes the issue."},"isSubscribed":{"type":"boolean","description":"If true, subscribes the requestor to the issue."},"merge":{"type":"boolean","description":"If true, merges the issues together."},"discard":{"type":"boolean","description":"If true, discards the issues instead of updating them."},"assignedTo":{"type":"string","description":"The user or team that should be assigned to the issues. Values take the form of ``, `user:`, ``, ``, or `team:`."},"priority":{"enum":["low","medium","high"],"type":"string","description":"The priority that should be set for the issues\n\n* `low`\n* `medium`\n* `high`"},"ignoreDuration":{"type":"integer","minimum":0,"description":"Ignore the issue for this many minutes."},"ignoreCount":{"type":"integer","minimum":0,"description":"Ignore the issue until it is seen this many more times."},"ignoreWindow":{"type":"integer","maximum":10080,"minimum":0,"description":"Window in minutes over which `ignoreCount` is measured. Maximum is 7 days."},"ignoreUserCount":{"type":"integer","minimum":0,"description":"Ignore the issue until it affects this many more users."},"ignoreUserWindow":{"type":"integer","maximum":10080,"minimum":0,"description":"Window in minutes over which `ignoreUserCount` is measured. Maximum is 7 days."},"snoozeDuration":{"type":"integer","minimum":0,"nullable":true,"description":"Snooze the issue for this many minutes."}},"required":["assignedTo","discard","hasSeen","ignoreCount","ignoreDuration","ignoreUserCount","ignoreUserWindow","ignoreWindow","inbox","isBookmarked","isPublic","isSubscribed","merge","priority","snoozeDuration","status","statusDetails","substatus"]}}},"required":true},"security":[{"auth_token":["event:admin","event:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"assignedTo":{"type":"object","properties":{"type":{"enum":["user","team"],"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["id","name","type"]},"discard":{"type":"boolean"},"hasSeen":{"type":"boolean"},"inbox":{"type":"boolean"},"isBookmarked":{"type":"boolean"},"isPublic":{"type":"boolean"},"isSubscribed":{"type":"boolean"},"merge":{"type":"object","properties":{"parent":{"type":"string"},"children":{"type":"array","items":{"type":"string"}}},"required":["children","parent"]},"priority":{"type":"string"},"shareId":{"type":"string"},"status":{"type":"string"},"statusDetails":{"type":"object","properties":{"inNextRelease":{"type":"boolean"},"inRelease":{"type":"string"},"inCommit":{"type":"object","properties":{"commit":{"type":"string"},"repository":{"type":"string"}},"required":["commit","repository"]},"ignoreDuration":{"type":"integer"},"ignoreCount":{"type":"integer"},"ignoreWindow":{"type":"integer"},"ignoreUserCount":{"type":"integer"},"ignoreUserWindow":{"type":"integer"}}},"subscriptionDetails":{"type":"object","properties":{"disabled":{"type":"boolean"},"reason":{"type":"string"}}},"substatus":{"type":"string"}}},"examples":{"ReturnTheUpdateResultsForIssuesInAnOrganization":{"value":{"assignedTo":{"type":"user","id":"1","name":"John Doe","email":"john.doe@example.com"},"discard":false,"hasSeen":true,"inbox":true,"isBookmarked":false,"isPublic":true,"isSubscribed":true,"merge":{"children":["11","12","13"],"parent":"10"},"priority":"medium","shareId":"123def456abc","status":"ignored","statusDetails":{"ignoreDuration":100,"ignoreCount":10,"ignoreWindow":60,"ignoreUserCount":10,"ignoreUserWindow":60,"inNextRelease":false,"inRelease":"1.0.0","inCommit":{"commit":"123def456abc","repository":"getsentry/sentry"}},"subscriptionDetails":{"disabled":false,"reason":"mentioned"},"substatus":"archived_until_condition_met"},"summary":"Return the update results for issues in an organization"}}}},"description":""},"204":{"description":"No Content"},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteOrganizationIssues","description":"Permanently remove the given issues. If IDs are provided, queries and filtering will be ignored. If any IDs are out of scope, the data won't be mutated but the endpoint will still produce a successful response. For example, if no issues were found matching the criteria, a HTTP 204 is returned.","summary":"Bulk Remove an Organization's Issues","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects.\nFor example, the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=android&project=javascript-react`\n- `/?project=-1`\n"},{"in":"query","name":"id","schema":{"type":"array","items":{"type":"integer"}},"description":"The list of issue IDs to be removed. If not provided, it will attempt to remove the first 1000 issues."},{"in":"query","name":"statsPeriod","schema":{"type":"string"},"description":"The period of time for the query, will override the start & end parameters, a number followed by one of:\n- `d` for days\n- `h` for hours\n- `m` for minutes\n- `s` for seconds\n- `w` for weeks\n\nFor example, `24h`, to mean query data starting from 24 hours ago to now."},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"query","schema":{"type":"string","default":"is:unresolved"},"description":"An optional search query for filtering issues. A default query will apply if no view/query is set. For all results use this parameter with an empty string."},{"in":"query","name":"viewId","schema":{"type":"string"},"description":"The ID of the view to use. If no query is present, the view's query and filters will be applied."},{"in":"query","name":"sort","schema":{"type":"string","enum":["date","freq","inbox","new","recommended","trends","user"],"default":"date"},"description":"The sort order of the view. Options include 'Last Seen' (`date`), 'First Seen' (`new`), 'Trends' (`trends`), 'Events' (`freq`), 'Users' (`user`), 'Date Added' (`inbox`), and 'Recommended' (`recommended`)."},{"in":"query","name":"limit","schema":{"type":"integer","default":100},"description":"The maximum number of issues to affect. The maximum is 100."}],"tags":["Events"],"security":[{"auth_token":["event:admin"]}],"responses":{"204":{"description":"No Content"},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/members/":{"get":{"operationId":"listOrganizationMembers","description":"List all organization members.\n\nResponse includes pending invites that are approved by organization owners or managers but waiting to be accepted by the invitee.","summary":"List an Organization's Members","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"query","schema":{"type":"string"},"description":"Limit results to members matching the given query. `id, `user.id`, ... are supported prefixes match on: `id`, `user.id`, `email`, `role`, `scope`, `isInvited`, `ssoLinked`, `has2fa`, `hasExternalUsers`. For example, `query=user.id:1234`. An unrecognized field returns no results."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Organizations"],"security":[{"auth_token":["member:admin","member:read","member:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"externalUsers":{"type":"array","items":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]}},"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"user":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"],"nullable":true},"orgRole":{"type":"string"},"pending":{"type":"boolean"},"expired":{"type":"boolean"},"flags":{"type":"object","properties":{"idp:provisioned":{"type":"boolean"},"idp:role-restricted":{"type":"boolean"},"sso:linked":{"type":"boolean"},"sso:invalid":{"type":"boolean"},"member-limit:restricted":{"type":"boolean"},"partnership:restricted":{"type":"boolean"}},"required":["idp:provisioned","idp:role-restricted","member-limit:restricted","partnership:restricted","sso:invalid","sso:linked"]},"dateCreated":{"type":"string","format":"date-time"},"inviteStatus":{"type":"string"},"inviterName":{"type":"string","nullable":true}},"required":["dateCreated","email","expired","flags","id","inviteStatus","inviterName","name","orgRole","pending","user"]}},"examples":{"ListOrganizationMembers":{"value":[{"id":"57377908164","email":"sirpenguin@antarcticarocks.com","name":"Sir Penguin","user":{"id":"280094367316","name":"Sir Penguin","username":"sirpenguin@antarcticarocks.com","email":"sirpenguin@antarcticarocks.com","avatarUrl":"https://secure.gravatar.com/avatar/16aeb26c5fdba335c7078e9e9ddb5149?s=32&d=mm","isActive":true,"isSuspended":false,"hasPasswordAuth":true,"isManaged":false,"dateJoined":"2021-07-06T21:13:58.375239Z","lastLogin":"2021-08-02T18:25:00.051182Z","has2fa":false,"lastActive":"2021-08-02T21:32:18.836829Z","isSuperuser":false,"isStaff":false,"experiments":{},"emails":[{"id":"2153450836","email":"sirpenguin@antarcticarocks.com","is_verified":true}],"avatar":{"avatarType":"letter_avatar","avatarUuid":null},"canReset2fa":true},"orgRole":"member","pending":false,"expired":false,"flags":{"idp:provisioned":false,"idp:role-restricted":false,"sso:linked":false,"sso:invalid":false,"member-limit:restricted":false,"partnership:restricted":false},"dateCreated":"2021-07-06T21:13:01.120263Z","inviteStatus":"approved","inviterName":"maininviter@antarcticarocks.com"},{"id":"57377908165","email":"rockhopper@antarcticarocks.com","name":"Rockhopper","user":null,"orgRole":"member","pending":true,"expired":false,"flags":{"idp:provisioned":false,"idp:role-restricted":false,"sso:linked":false,"sso:invalid":false,"member-limit:restricted":false,"partnership:restricted":false},"dateCreated":"2021-07-07T21:13:01.120263Z","inviteStatus":"pending","inviterName":"maininviter@antarcticarocks.com"}],"summary":"List organization members"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"post":{"operationId":"addOrganizationMember","description":"Add or invite a member to an organization.","summary":"Add a Member to an Organization","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["Organizations"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"The email address to send the invitation to.","maxLength":75},"role":{"enum":["member","admin","manager","owner"],"type":"string","default":"member","description":"Deprecated, use `orgRole`. The organization-level role to assign.\n\n* `member` - Member\n* `admin` - Admin\n* `manager` - Manager\n* `owner` - Owner","deprecated":true},"orgRole":{"enum":["billing","member","manager","owner","admin"],"type":"string","default":"member","description":"The organization-level role of the new member. Roles include:\n\n* `billing` - Can manage payment and compliance details.\n* `member` - Can view and act on events, as well as view most other data within the organization.\n* `manager` - Has full management access to all teams and projects. Can also manage\n the organization's membership.\n* `owner` - Has unrestricted access to the organization, its data, and its\n settings. Can add, modify, and delete projects and members, as well as\n make billing and plan changes.\n* `admin` - Can edit global integrations, manage projects, and add/remove teams.\n They automatically assume the Team Admin role for teams they join.\n Note: This role can no longer be assigned in Business and Enterprise plans. Use `TeamRoles` instead.\n "},"teams":{"type":"array","items":{},"description":"Deprecated, use `teamRoles`. Slugs of teams to add the member to.","deprecated":true},"teamRoles":{"type":"array","items":{"type":"object","additionalProperties":{}},"nullable":true,"description":"The team and team-roles assigned to the member. Team roles can be either:\n - `contributor` - Can view and act on issues. Depending on organization settings, they can also add team members.\n - `admin` - Has full management access to their team's membership and projects."},"sendInvite":{"type":"boolean","writeOnly":true,"default":true,"description":"Whether or not to send an invite notification through email. Defaults to True."},"reinvite":{"type":"boolean","description":"Whether or not to re-invite a user who has already been invited to the organization. Defaults to True."},"regenerate":{"type":"boolean","description":"Reissue the invite token, invalidating any previously sent invite link."}},"required":["email"]}}},"required":true},"security":[{"auth_token":["member:admin","member:invite","member:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"externalUsers":{"type":"array","items":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]}},"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"user":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"],"nullable":true},"orgRole":{"type":"string"},"pending":{"type":"boolean"},"expired":{"type":"boolean"},"flags":{"type":"object","properties":{"idp:provisioned":{"type":"boolean"},"idp:role-restricted":{"type":"boolean"},"sso:linked":{"type":"boolean"},"sso:invalid":{"type":"boolean"},"member-limit:restricted":{"type":"boolean"},"partnership:restricted":{"type":"boolean"}},"required":["idp:provisioned","idp:role-restricted","member-limit:restricted","partnership:restricted","sso:invalid","sso:linked"]},"dateCreated":{"type":"string","format":"date-time"},"inviteStatus":{"type":"string"},"inviterName":{"type":"string","nullable":true}},"required":["dateCreated","email","expired","flags","id","inviteStatus","inviterName","name","orgRole","pending","user"]},"examples":{"AddAMemberToAnOrganization":{"value":{"id":"57377908164","email":"sirpenguin@antarcticarocks.com","name":"Sir Penguin","user":{"id":"280094367316","name":"Sir Penguin","username":"sirpenguin@antarcticarocks.com","email":"sirpenguin@antarcticarocks.com","avatarUrl":"https://secure.gravatar.com/avatar/16aeb26c5fdba335c7078e9e9ddb5149?s=32&d=mm","isActive":true,"isSuspended":false,"hasPasswordAuth":true,"isManaged":false,"dateJoined":"2021-07-06T21:13:58.375239Z","lastLogin":"2021-08-02T18:25:00.051182Z","has2fa":false,"lastActive":"2021-08-02T21:32:18.836829Z","isSuperuser":false,"isStaff":false,"experiments":{},"emails":[{"id":"2153450836","email":"sirpenguin@antarcticarocks.com","is_verified":true}],"avatar":{"avatarType":"letter_avatar","avatarUuid":null},"canReset2fa":true},"orgRole":"member","pending":false,"expired":false,"flags":{"idp:provisioned":false,"idp:role-restricted":false,"sso:linked":false,"sso:invalid":false,"member-limit:restricted":false,"partnership:restricted":false},"dateCreated":"2021-07-06T21:13:01.120263Z","inviteStatus":"approved","inviterName":"maininviter@antarcticarocks.com"},"summary":"Add a member to an organization"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/members/{member_id}/":{"get":{"operationId":"getOrganizationMember","description":"Retrieve an organization member's details.\n\nResponse will be a pending invite if it has been approved by organization owners or managers but is waiting to be accepted by the invitee.","summary":"Retrieve an Organization Member","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"member_id","schema":{"type":"string"},"description":"The ID of the organization member.","required":true}],"tags":["Organizations"],"security":[{"auth_token":["member:admin","member:read","member:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"externalUsers":{"type":"array","items":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]}},"role":{"type":"string"},"roleName":{"type":"string"},"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"user":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"],"nullable":true},"orgRole":{"type":"string"},"pending":{"type":"boolean"},"expired":{"type":"boolean"},"flags":{"type":"object","properties":{"idp:provisioned":{"type":"boolean"},"idp:role-restricted":{"type":"boolean"},"sso:linked":{"type":"boolean"},"sso:invalid":{"type":"boolean"},"member-limit:restricted":{"type":"boolean"},"partnership:restricted":{"type":"boolean"}},"required":["idp:provisioned","idp:role-restricted","member-limit:restricted","partnership:restricted","sso:invalid","sso:linked"]},"dateCreated":{"type":"string","format":"date-time"},"inviteStatus":{"type":"string"},"inviterName":{"type":"string","nullable":true},"teams":{"type":"array","items":{"type":"string"}},"teamRoles":{"type":"array","items":{"type":"object","properties":{"teamSlug":{"type":"string"},"role":{"type":"string","nullable":true}},"required":["role","teamSlug"]}},"invite_link":{"type":"string","nullable":true},"isOnlyOwner":{"type":"boolean"},"orgRoleList":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"desc":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"allowed":{"type":"boolean"},"isAllowed":{"type":"boolean"},"isRetired":{"type":"boolean"},"isTeamRolesAllowed":{"type":"boolean"},"is_global":{"type":"boolean"},"isGlobal":{"type":"boolean"},"minimumTeamRole":{"type":"string"}},"required":["allowed","desc","id","isAllowed","isGlobal","isRetired","isTeamRolesAllowed","is_global","minimumTeamRole","name","scopes"]}},"teamRoleList":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"desc":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"allowed":{"type":"boolean"},"isAllowed":{"type":"boolean"},"isRetired":{"type":"boolean"},"isTeamRolesAllowed":{"type":"boolean"},"isMinimumRoleFor":{"type":"string","nullable":true}},"required":["allowed","desc","id","isAllowed","isMinimumRoleFor","isRetired","isTeamRolesAllowed","name","scopes"]}}},"required":["dateCreated","email","expired","flags","id","inviteStatus","invite_link","inviterName","isOnlyOwner","name","orgRole","orgRoleList","pending","teamRoleList","teamRoles","teams","user"]},"examples":{"UpdateOrganizationMember":{"value":{"id":"57377908164","email":"sirpenguin@antarcticarocks.com","name":"Sir Penguin","user":{"id":"280094367316","name":"Sir Penguin","username":"sirpenguin@antarcticarocks.com","email":"sirpenguin@antarcticarocks.com","avatarUrl":"https://secure.gravatar.com/avatar/16aeb26c5fdba335c7078e9e9ddb5149?s=32&d=mm","isActive":true,"isSuspended":false,"hasPasswordAuth":true,"isManaged":false,"dateJoined":"2021-07-06T21:13:58.375239Z","lastLogin":"2021-08-02T18:25:00.051182Z","has2fa":false,"lastActive":"2021-08-02T21:32:18.836829Z","isSuperuser":false,"isStaff":false,"experiments":{},"emails":[{"id":"2153450836","email":"sirpenguin@antarcticarocks.com","is_verified":true}],"avatar":{"avatarType":"letter_avatar","avatarUuid":null},"authenticators":[],"canReset2fa":true},"role":"member","orgRole":"member","roleName":"Member","pending":false,"expired":false,"flags":{"idp:provisioned":false,"idp:role-restricted":false,"sso:linked":false,"sso:invalid":false,"member-limit:restricted":false,"partnership:restricted":false},"dateCreated":"2021-07-06T21:13:01.120263Z","inviteStatus":"approved","inviterName":"maininviter@antarcticarocks.com","teams":["cool-team","ancient-gabelers"],"teamRoles":[{"teamSlug":"ancient-gabelers","role":"admin"},{"teamSlug":"powerful-abolitionist","role":"contributor"}],"invite_link":null,"isOnlyOwner":false,"orgRoleList":[{"id":"billing","name":"Billing","desc":"Can manage subscription and billing details.","scopes":["org:billing"],"allowed":true,"isAllowed":true,"isRetired":false,"is_global":false,"isGlobal":false,"isTeamRolesAllowed":false,"minimumTeamRole":"contributor"},{"id":"member","name":"Member","desc":"Members can view and act on events, as well as view most other data within the organization.","scopes":["team:read","project:releases","org:read","event:read","alerts:write","member:read","alerts:read","event:admin","project:read","event:write"],"allowed":true,"isAllowed":true,"isRetired":false,"is_global":false,"isGlobal":false,"isTeamRolesAllowed":true,"minimumTeamRole":"contributor"},{"id":"admin","name":"Admin","desc":"Admin privileges on any teams of which they're a member. They can create new teams and projects, as well as remove teams and projects on which they already hold membership (or all teams, if open membership is enabled). Additionally, they can manage memberships of teams that they are members of. They cannot invite members to the organization.","scopes":["team:admin","org:integrations","project:admin","team:read","project:releases","org:read","team:write","event:read","alerts:write","member:read","alerts:read","event:admin","project:read","event:write","project:write"],"allowed":true,"isAllowed":true,"isRetired":true,"is_global":false,"isGlobal":false,"isTeamRolesAllowed":true,"minimumTeamRole":"admin"},{"id":"manager","name":"Manager","desc":"Gains admin access on all teams as well as the ability to add and remove members.","scopes":["team:admin","org:integrations","project:releases","team:write","member:read","org:write","project:write","project:admin","team:read","org:read","event:read","member:write","alerts:write","alerts:read","event:admin","project:read","event:write","member:admin"],"allowed":true,"isAllowed":true,"isRetired":false,"is_global":true,"isGlobal":true,"isTeamRolesAllowed":true,"minimumTeamRole":"admin"},{"id":"owner","name":"Owner","desc":"Unrestricted access to the organization, its data, and its settings. Can add, modify, and delete projects and members, as well as make billing and plan changes.","scopes":["team:admin","org:integrations","project:releases","org:admin","team:write","member:read","org:write","project:write","project:admin","team:read","org:read","event:read","member:write","alerts:write","org:billing","alerts:read","event:admin","project:read","event:write","member:admin"],"allowed":true,"isAllowed":true,"isRetired":false,"is_global":true,"isGlobal":true,"isTeamRolesAllowed":true,"minimumTeamRole":"admin"}],"teamRoleList":[{"id":"contributor","name":"Contributor","desc":"Contributors can view and act on events, as well as view most other data within the team's projects.","scopes":["project:read","project:releases","member:read","team:read","event:read","alerts:read","event:write","org:read"],"allowed":false,"isAllowed":false,"isRetired":false,"isTeamRolesAllowed":true,"isMinimumRoleFor":null},{"id":"admin","name":"Team Admin","desc":"Admin privileges on the team. They can create and remove projects, and can manage the team's memberships.","scopes":["project:read","project:releases","member:read","event:admin","team:write","project:admin","team:read","org:integrations","alerts:write","team:admin","project:write","event:read","alerts:read","event:write","org:read"],"allowed":false,"isAllowed":false,"isRetired":false,"isTeamRolesAllowed":true,"isMinimumRoleFor":"admin"}]},"summary":"Update organization member"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"updateOrganizationMember","description":"Update a member's [organization-level](https://docs.sentry.io/organization/membership/#organization-level-roles) and [team-level](https://docs.sentry.io/organization/membership/#team-level-roles) roles.\n\nNote that for changing organization-roles, this endpoint is restricted to\n[user auth tokens](https://docs.sentry.io/account/auth-tokens/#user-auth-tokens).\nAdditionally, both the original and desired organization role must have\nthe same or lower permissions than the role of the organization user making the request\n\nFor example, an organization Manager may change someone's role from\nMember to Manager, but not to Owner.","summary":"Update an Organization Member's Roles","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"member_id","schema":{"type":"string"},"description":"The ID of the member to update.","required":true}],"tags":["Organizations"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"orgRole":{"enum":["billing","member","manager","owner","admin"],"type":"string","description":"The organization role of the member. The options are:\n\n* `billing` - Can manage payment and compliance details.\n* `member` - Can view and act on events, as well as view most other data within the organization.\n* `manager` - Has full management access to all teams and projects. Can also manage\n the organization's membership.\n* `owner` - Has unrestricted access to the organization, its data, and its\n settings. Can add, modify, and delete projects and members, as well as\n make billing and plan changes.\n* `admin` - Can edit global integrations, manage projects, and add/remove teams.\n They automatically assume the Team Admin role for teams they join.\n Note: This role can no longer be assigned in Business and Enterprise plans. Use `TeamRoles` instead.\n "},"teamRoles":{"type":"array","items":{"type":"object","additionalProperties":{}},"nullable":true,"description":"\nConfigures the team role of the member. The two roles are:\n- `contributor` - Can view and act on issues. Depending on organization settings, they can also add team members.\n- `admin` - Has full management access to their team's membership and projects.\n```json\n{\n \"teamRoles\": [\n {\n \"teamSlug\": \"ancient-gabelers\",\n \"role\": \"admin\"\n },\n {\n \"teamSlug\": \"powerful-abolitionist\",\n \"role\": \"contributor\"\n }\n ]\n}\n```\n"}}}}}},"security":[{"auth_token":["member:admin","member:invite","member:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"externalUsers":{"type":"array","items":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]}},"role":{"type":"string"},"roleName":{"type":"string"},"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"user":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"],"nullable":true},"orgRole":{"type":"string"},"pending":{"type":"boolean"},"expired":{"type":"boolean"},"flags":{"type":"object","properties":{"idp:provisioned":{"type":"boolean"},"idp:role-restricted":{"type":"boolean"},"sso:linked":{"type":"boolean"},"sso:invalid":{"type":"boolean"},"member-limit:restricted":{"type":"boolean"},"partnership:restricted":{"type":"boolean"}},"required":["idp:provisioned","idp:role-restricted","member-limit:restricted","partnership:restricted","sso:invalid","sso:linked"]},"dateCreated":{"type":"string","format":"date-time"},"inviteStatus":{"type":"string"},"inviterName":{"type":"string","nullable":true},"teams":{"type":"array","items":{"type":"string"}},"teamRoles":{"type":"array","items":{"type":"object","properties":{"teamSlug":{"type":"string"},"role":{"type":"string","nullable":true}},"required":["role","teamSlug"]}},"invite_link":{"type":"string","nullable":true},"isOnlyOwner":{"type":"boolean"},"orgRoleList":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"desc":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"allowed":{"type":"boolean"},"isAllowed":{"type":"boolean"},"isRetired":{"type":"boolean"},"isTeamRolesAllowed":{"type":"boolean"},"is_global":{"type":"boolean"},"isGlobal":{"type":"boolean"},"minimumTeamRole":{"type":"string"}},"required":["allowed","desc","id","isAllowed","isGlobal","isRetired","isTeamRolesAllowed","is_global","minimumTeamRole","name","scopes"]}},"teamRoleList":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"desc":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"allowed":{"type":"boolean"},"isAllowed":{"type":"boolean"},"isRetired":{"type":"boolean"},"isTeamRolesAllowed":{"type":"boolean"},"isMinimumRoleFor":{"type":"string","nullable":true}},"required":["allowed","desc","id","isAllowed","isMinimumRoleFor","isRetired","isTeamRolesAllowed","name","scopes"]}}},"required":["dateCreated","email","expired","flags","id","inviteStatus","invite_link","inviterName","isOnlyOwner","name","orgRole","orgRoleList","pending","teamRoleList","teamRoles","teams","user"]},"examples":{"UpdateOrganizationMember":{"value":{"id":"57377908164","email":"sirpenguin@antarcticarocks.com","name":"Sir Penguin","user":{"id":"280094367316","name":"Sir Penguin","username":"sirpenguin@antarcticarocks.com","email":"sirpenguin@antarcticarocks.com","avatarUrl":"https://secure.gravatar.com/avatar/16aeb26c5fdba335c7078e9e9ddb5149?s=32&d=mm","isActive":true,"isSuspended":false,"hasPasswordAuth":true,"isManaged":false,"dateJoined":"2021-07-06T21:13:58.375239Z","lastLogin":"2021-08-02T18:25:00.051182Z","has2fa":false,"lastActive":"2021-08-02T21:32:18.836829Z","isSuperuser":false,"isStaff":false,"experiments":{},"emails":[{"id":"2153450836","email":"sirpenguin@antarcticarocks.com","is_verified":true}],"avatar":{"avatarType":"letter_avatar","avatarUuid":null},"authenticators":[],"canReset2fa":true},"role":"member","orgRole":"member","roleName":"Member","pending":false,"expired":false,"flags":{"idp:provisioned":false,"idp:role-restricted":false,"sso:linked":false,"sso:invalid":false,"member-limit:restricted":false,"partnership:restricted":false},"dateCreated":"2021-07-06T21:13:01.120263Z","inviteStatus":"approved","inviterName":"maininviter@antarcticarocks.com","teams":["cool-team","ancient-gabelers"],"teamRoles":[{"teamSlug":"ancient-gabelers","role":"admin"},{"teamSlug":"powerful-abolitionist","role":"contributor"}],"invite_link":null,"isOnlyOwner":false,"orgRoleList":[{"id":"billing","name":"Billing","desc":"Can manage subscription and billing details.","scopes":["org:billing"],"allowed":true,"isAllowed":true,"isRetired":false,"is_global":false,"isGlobal":false,"isTeamRolesAllowed":false,"minimumTeamRole":"contributor"},{"id":"member","name":"Member","desc":"Members can view and act on events, as well as view most other data within the organization.","scopes":["team:read","project:releases","org:read","event:read","alerts:write","member:read","alerts:read","event:admin","project:read","event:write"],"allowed":true,"isAllowed":true,"isRetired":false,"is_global":false,"isGlobal":false,"isTeamRolesAllowed":true,"minimumTeamRole":"contributor"},{"id":"admin","name":"Admin","desc":"Admin privileges on any teams of which they're a member. They can create new teams and projects, as well as remove teams and projects on which they already hold membership (or all teams, if open membership is enabled). Additionally, they can manage memberships of teams that they are members of. They cannot invite members to the organization.","scopes":["team:admin","org:integrations","project:admin","team:read","project:releases","org:read","team:write","event:read","alerts:write","member:read","alerts:read","event:admin","project:read","event:write","project:write"],"allowed":true,"isAllowed":true,"isRetired":true,"is_global":false,"isGlobal":false,"isTeamRolesAllowed":true,"minimumTeamRole":"admin"},{"id":"manager","name":"Manager","desc":"Gains admin access on all teams as well as the ability to add and remove members.","scopes":["team:admin","org:integrations","project:releases","team:write","member:read","org:write","project:write","project:admin","team:read","org:read","event:read","member:write","alerts:write","alerts:read","event:admin","project:read","event:write","member:admin"],"allowed":true,"isAllowed":true,"isRetired":false,"is_global":true,"isGlobal":true,"isTeamRolesAllowed":true,"minimumTeamRole":"admin"},{"id":"owner","name":"Owner","desc":"Unrestricted access to the organization, its data, and its settings. Can add, modify, and delete projects and members, as well as make billing and plan changes.","scopes":["team:admin","org:integrations","project:releases","org:admin","team:write","member:read","org:write","project:write","project:admin","team:read","org:read","event:read","member:write","alerts:write","org:billing","alerts:read","event:admin","project:read","event:write","member:admin"],"allowed":true,"isAllowed":true,"isRetired":false,"is_global":true,"isGlobal":true,"isTeamRolesAllowed":true,"minimumTeamRole":"admin"}],"teamRoleList":[{"id":"contributor","name":"Contributor","desc":"Contributors can view and act on events, as well as view most other data within the team's projects.","scopes":["project:read","project:releases","member:read","team:read","event:read","alerts:read","event:write","org:read"],"allowed":false,"isAllowed":false,"isRetired":false,"isTeamRolesAllowed":true,"isMinimumRoleFor":null},{"id":"admin","name":"Team Admin","desc":"Admin privileges on the team. They can create and remove projects, and can manage the team's memberships.","scopes":["project:read","project:releases","member:read","event:admin","team:write","project:admin","team:read","org:integrations","alerts:write","team:admin","project:write","event:read","alerts:read","event:write","org:read"],"allowed":false,"isAllowed":false,"isRetired":false,"isTeamRolesAllowed":true,"isMinimumRoleFor":"admin"}]},"summary":"Update organization member"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteOrganizationMember","description":"Remove an organization member.","summary":"Delete an Organization Member","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"member_id","schema":{"type":"string"},"description":"The ID of the member to delete.","required":true}],"tags":["Organizations"],"security":[{"auth_token":["member:admin","member:read","member:write"]}],"responses":{"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/members/{member_id}/teams/{team_id_or_slug}/":{"post":{"operationId":"addOrganizationMemberTeam","description":"This request can return various success codes depending on the context of the team:\n- **`201`**: The member has been successfully added.\n- **`202`**: The member needs permission to join the team and an access request\nhas been generated.\n- **`204`**: The member is already on the team.\n\nIf the team is provisioned through an identity provider, the member cannot join the\nteam through Sentry.\n\nNote the permission scopes vary depending on the organization setting `\"Open Membership\"`\nand the type of authorization token. The following table outlines the accepted scopes.\n\n\n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n
Open Membership
OnOff
Internal Integration Token\n
    \n
  • • org:read
  • \n
\n
\n
    \n
  • • org:write
  • \n
  • • team:write
  • \n
\n
User Auth Token\n
    \n
  • • org:read
  • \n
\n
\n
    \n
  • • org:read*
  • \n
  • • org:write
  • \n
  • • org:read +
  • \n
  •    team:write**
  • \n
\n
\n\n\n*Organization members are restricted to this scope. When sending a request, it will always\nreturn a 202 and request an invite to the team.\n\n\n\\*\\*Team Admins must have both **`org:read`** and **`team:write`** scopes in their user\nauthorization token to add members to their teams.","summary":"Add an Organization Member to a Team","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"member_id","schema":{"type":"string"},"description":"The ID of the organization member to add to the team","required":true},{"in":"path","name":"team_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the team the resource belongs to.","required":true}],"tags":["Teams"],"security":[{"auth_token":["org:read","org:write","team:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time","nullable":true},"isMember":{"type":"boolean"},"teamRole":{"type":"string","nullable":true},"flags":{"type":"object","additionalProperties":{}},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"isPending":{"type":"boolean"},"memberCount":{"type":"integer"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}}},"required":["access","avatar","dateCreated","flags","hasAccess","id","isMember","isPending","memberCount","name","slug","teamRole"]},"examples":{"Join,RequestAccessToOrAddAMemberToATeam":{"value":{"id":"4502349234123","slug":"ancient-gabelers","name":"Ancient Gabelers","dateCreated":"2023-05-31T19:47:53.621181Z","isMember":true,"teamRole":"contributor","flags":{"idp:provisioned":false},"access":["alerts:read","event:write","project:read","team:read","member:read","project:releases","event:read","org:read"],"hasAccess":true,"isPending":false,"memberCount":3,"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":null}},"summary":"Join, request access to or add a member to a team"}}}},"description":""},"202":{"description":"Accepted"},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"This team is managed through your organization's identity provider"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"updateOrganizationMemberTeam","description":"The relevant organization member must already be a part of the team.\n\nNote that for organization admins, managers, and owners, they are\nautomatically granted a minimum team role of `admin` on all teams they\nare part of. Read more about [team roles](https://docs.sentry.io/product/teams/roles/).","summary":"Update an Organization Member's Team Role","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"member_id","schema":{"type":"string"},"description":"The ID of the organization member to change","required":true},{"in":"path","name":"team_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the team the resource belongs to.","required":true}],"tags":["Teams"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"teamRole":{"enum":["contributor","admin"],"type":"string","default":"contributor","description":"The team-level role to switch to. Valid roles include:\n\n* `contributor` - Contributors can view and act on events, as well as view most other data within the team's projects.\n* `admin` - Admin privileges on the team. They can create and remove projects, and can manage the team's memberships."}}}}}},"security":[{"auth_token":["member:admin","member:read","member:write","org:admin","org:read","org:write","team:admin","team:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"isActive":{"type":"boolean"},"teamRole":{"enum":["contributor","admin"],"type":"string"}},"required":["isActive","teamRole"]},"examples":{"UpdateATeamRole":{"value":{"isActive":true,"teamRole":"admin"},"summary":"Update a Team Role"}}}},"description":""},"400":{"description":"Bad Request"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteOrganizationMemberTeam","description":"Delete an organization member from a team.\n\nNote the permission scopes vary depending on the type of authorization token. The following\ntable outlines the accepted scopes.\n\n \n \n \n \n \n \n \n \n
Org Auth Token\n
    \n
  • • org:write
  • \n
  • • org:admin
  • \n
  • • team:admin
  • \n
\n
User Auth Token\n
    \n
  • • org:read*
  • \n
  • • org:write
  • \n
  • • org:admin
  • \n
  • • team:admin
  • \n
  • • org:read + team:admin**
  • \n
\n
\n\n\n\\***`org:read`** can only be used to remove yourself from the teams you are a member of.\n\n\n\\*\\*Team Admins must have both **`org:read`** and **`team:admin`** scopes in their user\nauthorization token to delete members from their teams.","summary":"Delete an Organization Member from a Team","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"member_id","schema":{"type":"string"},"description":"The ID of the organization member to delete from the team","required":true},{"in":"path","name":"team_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the team the resource belongs to.","required":true}],"tags":["Teams"],"security":[{"auth_token":["org:admin","org:read","org:write","team:admin"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time","nullable":true},"isMember":{"type":"boolean"},"teamRole":{"type":"string","nullable":true},"flags":{"type":"object","additionalProperties":{}},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"isPending":{"type":"boolean"},"memberCount":{"type":"integer"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}}},"required":["access","avatar","dateCreated","flags","hasAccess","id","isMember","isPending","memberCount","name","slug","teamRole"]},"examples":{"RemoveAMemberFromATeam":{"value":{"id":"4502349234123","slug":"ancient-gabelers","name":"Ancient Gabelers","dateCreated":"2023-05-31T19:47:53.621181Z","isMember":false,"teamRole":null,"flags":{"idp:provisioned":false},"access":["alerts:read","event:write","project:read","team:read","member:read","project:releases","event:read","org:read"],"hasAccess":true,"isPending":false,"memberCount":3,"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":null}},"summary":"Remove a member from a team"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"This team is managed through your organization's identity provider"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/monitors/":{"get":{"operationId":"listOrganizationMonitors","description":"Lists monitors, including nested monitor environments. May be filtered to a project or environment.","summary":"Retrieve Monitors for an Organization","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects.\nFor example, the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=android&project=javascript-react`\n- `/?project=-1`\n"},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."},{"in":"query","name":"owner","schema":{"type":"string"},"description":"The owner of the monitor, in the format `user:id` or `team:id`. May be specified multiple times."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Crons"],"security":[{"auth_token":["alerts:read","org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"status":{"type":"string"},"isMuted":{"type":"boolean"},"isUpserting":{"type":"boolean"},"config":{"type":"object","properties":{"schedule_type":{"enum":["crontab","interval"],"type":"string"},"schedule":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"integer"},"minLength":2,"maxLength":2}]},"checkin_margin":{"type":"integer","nullable":true},"max_runtime":{"type":"integer","nullable":true},"timezone":{"type":"string","nullable":true},"failure_issue_threshold":{"type":"integer","nullable":true},"recovery_threshold":{"type":"integer","nullable":true},"alert_rule_id":{"type":"integer","nullable":true}},"required":["alert_rule_id","checkin_margin","failure_issue_threshold","max_runtime","recovery_threshold","schedule","schedule_type","timezone"]},"dateCreated":{"type":"string","format":"date-time"},"project":{"type":"object","properties":{"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"isInternal":{"type":"boolean"},"isPublic":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"color":{"type":"string"},"status":{"type":"string"}},"required":["access","avatar","color","dateCreated","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","id","isBookmarked","isInternal","isMember","isPublic","name","platform","slug","status"]},"environments":{"type":"object","properties":{"name":{"type":"string"},"status":{"type":"string"},"isMuted":{"type":"boolean"},"dateCreated":{"type":"string","format":"date-time"},"lastCheckIn":{"type":"string","format":"date-time"},"nextCheckIn":{"type":"string","format":"date-time"},"nextCheckInLatest":{"type":"string","format":"date-time"},"activeIncident":{"type":"object","properties":{"startingTimestamp":{"type":"string","format":"date-time"},"resolvingTimestamp":{"type":"string","format":"date-time"},"brokenNotice":{"type":"object","properties":{"userNotifiedTimestamp":{"type":"string","format":"date-time"},"environmentMutedTimestamp":{"type":"string","format":"date-time"}},"required":["environmentMutedTimestamp","userNotifiedTimestamp"],"nullable":true}},"required":["brokenNotice","resolvingTimestamp","startingTimestamp"],"nullable":true}},"required":["activeIncident","dateCreated","isMuted","lastCheckIn","name","nextCheckIn","nextCheckInLatest","status"]},"owner":{"type":"object","properties":{"type":{"enum":["user","team"],"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["id","name","type"]}},"required":["config","dateCreated","environments","id","isMuted","isUpserting","name","owner","project","slug","status"]}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"post":{"operationId":"createOrganizationMonitor","description":"Create a new monitor.","summary":"Create a Monitor","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["Crons"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"project":{"type":"string","description":"The project ID or slug to associate the monitor to."},"name":{"type":"string","description":"Name of the monitor. Used for notifications. If not set the slug will be derived from your monitor name.","maxLength":128},"config":{"allOf":[{"type":"object","properties":{"schedule_type":{"enum":["crontab","interval"],"type":"string","description":"Currently supports \"crontab\" or \"interval\"\n\n* `crontab`\n* `interval`"},"schedule":{"description":"Varies depending on the schedule_type. Is either a crontab string, or a 2 element tuple for intervals (e.g. [1, 'day'])"},"checkin_margin":{"type":"integer","maximum":40320,"minimum":1,"nullable":true,"description":"How long (in minutes) after the expected checkin time will we wait until we consider the checkin to have been missed."},"max_runtime":{"type":"integer","maximum":10080,"minimum":1,"nullable":true,"description":"How long (in minutes) is the checkin allowed to run for in CheckInStatus.IN_PROGRESS before it is considered failed. Maximum 10080 (7 days)."},"timezone":{"enum":["Africa/Abidjan","Africa/Accra","Africa/Addis_Ababa","Africa/Algiers","Africa/Asmara","Africa/Asmera","Africa/Bamako","Africa/Bangui","Africa/Banjul","Africa/Bissau","Africa/Blantyre","Africa/Brazzaville","Africa/Bujumbura","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/Conakry","Africa/Dakar","Africa/Dar_es_Salaam","Africa/Djibouti","Africa/Douala","Africa/El_Aaiun","Africa/Freetown","Africa/Gaborone","Africa/Harare","Africa/Johannesburg","Africa/Juba","Africa/Kampala","Africa/Khartoum","Africa/Kigali","Africa/Kinshasa","Africa/Lagos","Africa/Libreville","Africa/Lome","Africa/Luanda","Africa/Lubumbashi","Africa/Lusaka","Africa/Malabo","Africa/Maputo","Africa/Maseru","Africa/Mbabane","Africa/Mogadishu","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Niamey","Africa/Nouakchott","Africa/Ouagadougou","Africa/Porto-Novo","Africa/Sao_Tome","Africa/Timbuktu","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Anguilla","America/Antigua","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/ComodRivadavia","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Aruba","America/Asuncion","America/Atikokan","America/Atka","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Buenos_Aires","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Catamarca","America/Cayenne","America/Cayman","America/Chicago","America/Chihuahua","America/Ciudad_Juarez","America/Coral_Harbour","America/Cordoba","America/Costa_Rica","America/Coyhaique","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Dominica","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Ensenada","America/Fort_Nelson","America/Fort_Wayne","America/Fortaleza","America/Glace_Bay","America/Godthab","America/Goose_Bay","America/Grand_Turk","America/Grenada","America/Guadeloupe","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Indianapolis","America/Inuvik","America/Iqaluit","America/Jamaica","America/Jujuy","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/Knox_IN","America/Kralendijk","America/La_Paz","America/Lima","America/Los_Angeles","America/Louisville","America/Lower_Princes","America/Maceio","America/Managua","America/Manaus","America/Marigot","America/Martinique","America/Matamoros","America/Mazatlan","America/Mendoza","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Montreal","America/Montserrat","America/Nassau","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Nuuk","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Acre","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Rosario","America/Santa_Isabel","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Shiprock","America/Sitka","America/St_Barthelemy","America/St_Johns","America/St_Kitts","America/St_Lucia","America/St_Thomas","America/St_Vincent","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Tortola","America/Vancouver","America/Virgin","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer","Antarctica/Rothera","Antarctica/South_Pole","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen","Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Ashkhabad","Asia/Atyrau","Asia/Baghdad","Asia/Bahrain","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Calcutta","Asia/Chita","Asia/Choibalsan","Asia/Chongqing","Asia/Chungking","Asia/Colombo","Asia/Dacca","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Harbin","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Istanbul","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kashgar","Asia/Kathmandu","Asia/Katmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macao","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Rangoon","Asia/Riyadh","Asia/Saigon","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Tel_Aviv","Asia/Thimbu","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ujung_Pandang","Asia/Ulaanbaatar","Asia/Ulan_Bator","Asia/Urumqi","Asia/Ust-Nera","Asia/Vientiane","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faeroe","Atlantic/Faroe","Atlantic/Jan_Mayen","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena","Atlantic/Stanley","Australia/ACT","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Canberra","Australia/Currie","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/LHI","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/NSW","Australia/North","Australia/Perth","Australia/Queensland","Australia/South","Australia/Sydney","Australia/Tasmania","Australia/Victoria","Australia/West","Australia/Yancowinna","Brazil/Acre","Brazil/DeNoronha","Brazil/East","Brazil/West","CET","CST6CDT","Canada/Atlantic","Canada/Central","Canada/Eastern","Canada/Mountain","Canada/Newfoundland","Canada/Pacific","Canada/Saskatchewan","Canada/Yukon","Chile/Continental","Chile/EasterIsland","Cuba","EET","EST","EST5EDT","Egypt","Eire","Etc/GMT","Etc/GMT+0","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11","Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5","Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/GMT-0","Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12","Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3","Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8","Etc/GMT-9","Etc/GMT0","Etc/Greenwich","Etc/UCT","Etc/UTC","Etc/Universal","Etc/Zulu","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belfast","Europe/Belgrade","Europe/Berlin","Europe/Bratislava","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Busingen","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man","Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Kyiv","Europe/Lisbon","Europe/Ljubljana","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Mariehamn","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Nicosia","Europe/Oslo","Europe/Paris","Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/San_Marino","Europe/Sarajevo","Europe/Saratov","Europe/Simferopol","Europe/Skopje","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Tiraspol","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vaduz","Europe/Vatican","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zagreb","Europe/Zaporozhye","Europe/Zurich","GB","GB-Eire","GMT","GMT+0","GMT-0","GMT0","Greenwich","HST","Hongkong","Iceland","Indian/Antananarivo","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Mayotte","Indian/Reunion","Iran","Israel","Jamaica","Japan","Kwajalein","Libya","MET","MST","MST7MDT","Mexico/BajaNorte","Mexico/BajaSur","Mexico/General","NZ","NZ-CHAT","Navajo","PRC","PST8PDT","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Johnston","Pacific/Kanton","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Midway","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Ponape","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Saipan","Pacific/Samoa","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Truk","Pacific/Wake","Pacific/Wallis","Pacific/Yap","Poland","Portugal","ROC","ROK","Singapore","Turkey","UCT","US/Alaska","US/Aleutian","US/Arizona","US/Central","US/East-Indiana","US/Eastern","US/Hawaii","US/Indiana-Starke","US/Michigan","US/Mountain","US/Pacific","US/Samoa","UTC","Universal","W-SU","WET","Zulu","localtime",""],"type":"string","description":"tz database style timezone string\n\n* `Africa/Abidjan`\n* `Africa/Accra`\n* `Africa/Addis_Ababa`\n* `Africa/Algiers`\n* `Africa/Asmara`\n* `Africa/Asmera`\n* `Africa/Bamako`\n* `Africa/Bangui`\n* `Africa/Banjul`\n* `Africa/Bissau`\n* `Africa/Blantyre`\n* `Africa/Brazzaville`\n* `Africa/Bujumbura`\n* `Africa/Cairo`\n* `Africa/Casablanca`\n* `Africa/Ceuta`\n* `Africa/Conakry`\n* `Africa/Dakar`\n* `Africa/Dar_es_Salaam`\n* `Africa/Djibouti`\n* `Africa/Douala`\n* `Africa/El_Aaiun`\n* `Africa/Freetown`\n* `Africa/Gaborone`\n* `Africa/Harare`\n* `Africa/Johannesburg`\n* `Africa/Juba`\n* `Africa/Kampala`\n* `Africa/Khartoum`\n* `Africa/Kigali`\n* `Africa/Kinshasa`\n* `Africa/Lagos`\n* `Africa/Libreville`\n* `Africa/Lome`\n* `Africa/Luanda`\n* `Africa/Lubumbashi`\n* `Africa/Lusaka`\n* `Africa/Malabo`\n* `Africa/Maputo`\n* `Africa/Maseru`\n* `Africa/Mbabane`\n* `Africa/Mogadishu`\n* `Africa/Monrovia`\n* `Africa/Nairobi`\n* `Africa/Ndjamena`\n* `Africa/Niamey`\n* `Africa/Nouakchott`\n* `Africa/Ouagadougou`\n* `Africa/Porto-Novo`\n* `Africa/Sao_Tome`\n* `Africa/Timbuktu`\n* `Africa/Tripoli`\n* `Africa/Tunis`\n* `Africa/Windhoek`\n* `America/Adak`\n* `America/Anchorage`\n* `America/Anguilla`\n* `America/Antigua`\n* `America/Araguaina`\n* `America/Argentina/Buenos_Aires`\n* `America/Argentina/Catamarca`\n* `America/Argentina/ComodRivadavia`\n* `America/Argentina/Cordoba`\n* `America/Argentina/Jujuy`\n* `America/Argentina/La_Rioja`\n* `America/Argentina/Mendoza`\n* `America/Argentina/Rio_Gallegos`\n* `America/Argentina/Salta`\n* `America/Argentina/San_Juan`\n* `America/Argentina/San_Luis`\n* `America/Argentina/Tucuman`\n* `America/Argentina/Ushuaia`\n* `America/Aruba`\n* `America/Asuncion`\n* `America/Atikokan`\n* `America/Atka`\n* `America/Bahia`\n* `America/Bahia_Banderas`\n* `America/Barbados`\n* `America/Belem`\n* `America/Belize`\n* `America/Blanc-Sablon`\n* `America/Boa_Vista`\n* `America/Bogota`\n* `America/Boise`\n* `America/Buenos_Aires`\n* `America/Cambridge_Bay`\n* `America/Campo_Grande`\n* `America/Cancun`\n* `America/Caracas`\n* `America/Catamarca`\n* `America/Cayenne`\n* `America/Cayman`\n* `America/Chicago`\n* `America/Chihuahua`\n* `America/Ciudad_Juarez`\n* `America/Coral_Harbour`\n* `America/Cordoba`\n* `America/Costa_Rica`\n* `America/Coyhaique`\n* `America/Creston`\n* `America/Cuiaba`\n* `America/Curacao`\n* `America/Danmarkshavn`\n* `America/Dawson`\n* `America/Dawson_Creek`\n* `America/Denver`\n* `America/Detroit`\n* `America/Dominica`\n* `America/Edmonton`\n* `America/Eirunepe`\n* `America/El_Salvador`\n* `America/Ensenada`\n* `America/Fort_Nelson`\n* `America/Fort_Wayne`\n* `America/Fortaleza`\n* `America/Glace_Bay`\n* `America/Godthab`\n* `America/Goose_Bay`\n* `America/Grand_Turk`\n* `America/Grenada`\n* `America/Guadeloupe`\n* `America/Guatemala`\n* `America/Guayaquil`\n* `America/Guyana`\n* `America/Halifax`\n* `America/Havana`\n* `America/Hermosillo`\n* `America/Indiana/Indianapolis`\n* `America/Indiana/Knox`\n* `America/Indiana/Marengo`\n* `America/Indiana/Petersburg`\n* `America/Indiana/Tell_City`\n* `America/Indiana/Vevay`\n* `America/Indiana/Vincennes`\n* `America/Indiana/Winamac`\n* `America/Indianapolis`\n* `America/Inuvik`\n* `America/Iqaluit`\n* `America/Jamaica`\n* `America/Jujuy`\n* `America/Juneau`\n* `America/Kentucky/Louisville`\n* `America/Kentucky/Monticello`\n* `America/Knox_IN`\n* `America/Kralendijk`\n* `America/La_Paz`\n* `America/Lima`\n* `America/Los_Angeles`\n* `America/Louisville`\n* `America/Lower_Princes`\n* `America/Maceio`\n* `America/Managua`\n* `America/Manaus`\n* `America/Marigot`\n* `America/Martinique`\n* `America/Matamoros`\n* `America/Mazatlan`\n* `America/Mendoza`\n* `America/Menominee`\n* `America/Merida`\n* `America/Metlakatla`\n* `America/Mexico_City`\n* `America/Miquelon`\n* `America/Moncton`\n* `America/Monterrey`\n* `America/Montevideo`\n* `America/Montreal`\n* `America/Montserrat`\n* `America/Nassau`\n* `America/New_York`\n* `America/Nipigon`\n* `America/Nome`\n* `America/Noronha`\n* `America/North_Dakota/Beulah`\n* `America/North_Dakota/Center`\n* `America/North_Dakota/New_Salem`\n* `America/Nuuk`\n* `America/Ojinaga`\n* `America/Panama`\n* `America/Pangnirtung`\n* `America/Paramaribo`\n* `America/Phoenix`\n* `America/Port-au-Prince`\n* `America/Port_of_Spain`\n* `America/Porto_Acre`\n* `America/Porto_Velho`\n* `America/Puerto_Rico`\n* `America/Punta_Arenas`\n* `America/Rainy_River`\n* `America/Rankin_Inlet`\n* `America/Recife`\n* `America/Regina`\n* `America/Resolute`\n* `America/Rio_Branco`\n* `America/Rosario`\n* `America/Santa_Isabel`\n* `America/Santarem`\n* `America/Santiago`\n* `America/Santo_Domingo`\n* `America/Sao_Paulo`\n* `America/Scoresbysund`\n* `America/Shiprock`\n* `America/Sitka`\n* `America/St_Barthelemy`\n* `America/St_Johns`\n* `America/St_Kitts`\n* `America/St_Lucia`\n* `America/St_Thomas`\n* `America/St_Vincent`\n* `America/Swift_Current`\n* `America/Tegucigalpa`\n* `America/Thule`\n* `America/Thunder_Bay`\n* `America/Tijuana`\n* `America/Toronto`\n* `America/Tortola`\n* `America/Vancouver`\n* `America/Virgin`\n* `America/Whitehorse`\n* `America/Winnipeg`\n* `America/Yakutat`\n* `America/Yellowknife`\n* `Antarctica/Casey`\n* `Antarctica/Davis`\n* `Antarctica/DumontDUrville`\n* `Antarctica/Macquarie`\n* `Antarctica/Mawson`\n* `Antarctica/McMurdo`\n* `Antarctica/Palmer`\n* `Antarctica/Rothera`\n* `Antarctica/South_Pole`\n* `Antarctica/Syowa`\n* `Antarctica/Troll`\n* `Antarctica/Vostok`\n* `Arctic/Longyearbyen`\n* `Asia/Aden`\n* `Asia/Almaty`\n* `Asia/Amman`\n* `Asia/Anadyr`\n* `Asia/Aqtau`\n* `Asia/Aqtobe`\n* `Asia/Ashgabat`\n* `Asia/Ashkhabad`\n* `Asia/Atyrau`\n* `Asia/Baghdad`\n* `Asia/Bahrain`\n* `Asia/Baku`\n* `Asia/Bangkok`\n* `Asia/Barnaul`\n* `Asia/Beirut`\n* `Asia/Bishkek`\n* `Asia/Brunei`\n* `Asia/Calcutta`\n* `Asia/Chita`\n* `Asia/Choibalsan`\n* `Asia/Chongqing`\n* `Asia/Chungking`\n* `Asia/Colombo`\n* `Asia/Dacca`\n* `Asia/Damascus`\n* `Asia/Dhaka`\n* `Asia/Dili`\n* `Asia/Dubai`\n* `Asia/Dushanbe`\n* `Asia/Famagusta`\n* `Asia/Gaza`\n* `Asia/Harbin`\n* `Asia/Hebron`\n* `Asia/Ho_Chi_Minh`\n* `Asia/Hong_Kong`\n* `Asia/Hovd`\n* `Asia/Irkutsk`\n* `Asia/Istanbul`\n* `Asia/Jakarta`\n* `Asia/Jayapura`\n* `Asia/Jerusalem`\n* `Asia/Kabul`\n* `Asia/Kamchatka`\n* `Asia/Karachi`\n* `Asia/Kashgar`\n* `Asia/Kathmandu`\n* `Asia/Katmandu`\n* `Asia/Khandyga`\n* `Asia/Kolkata`\n* `Asia/Krasnoyarsk`\n* `Asia/Kuala_Lumpur`\n* `Asia/Kuching`\n* `Asia/Kuwait`\n* `Asia/Macao`\n* `Asia/Macau`\n* `Asia/Magadan`\n* `Asia/Makassar`\n* `Asia/Manila`\n* `Asia/Muscat`\n* `Asia/Nicosia`\n* `Asia/Novokuznetsk`\n* `Asia/Novosibirsk`\n* `Asia/Omsk`\n* `Asia/Oral`\n* `Asia/Phnom_Penh`\n* `Asia/Pontianak`\n* `Asia/Pyongyang`\n* `Asia/Qatar`\n* `Asia/Qostanay`\n* `Asia/Qyzylorda`\n* `Asia/Rangoon`\n* `Asia/Riyadh`\n* `Asia/Saigon`\n* `Asia/Sakhalin`\n* `Asia/Samarkand`\n* `Asia/Seoul`\n* `Asia/Shanghai`\n* `Asia/Singapore`\n* `Asia/Srednekolymsk`\n* `Asia/Taipei`\n* `Asia/Tashkent`\n* `Asia/Tbilisi`\n* `Asia/Tehran`\n* `Asia/Tel_Aviv`\n* `Asia/Thimbu`\n* `Asia/Thimphu`\n* `Asia/Tokyo`\n* `Asia/Tomsk`\n* `Asia/Ujung_Pandang`\n* `Asia/Ulaanbaatar`\n* `Asia/Ulan_Bator`\n* `Asia/Urumqi`\n* `Asia/Ust-Nera`\n* `Asia/Vientiane`\n* `Asia/Vladivostok`\n* `Asia/Yakutsk`\n* `Asia/Yangon`\n* `Asia/Yekaterinburg`\n* `Asia/Yerevan`\n* `Atlantic/Azores`\n* `Atlantic/Bermuda`\n* `Atlantic/Canary`\n* `Atlantic/Cape_Verde`\n* `Atlantic/Faeroe`\n* `Atlantic/Faroe`\n* `Atlantic/Jan_Mayen`\n* `Atlantic/Madeira`\n* `Atlantic/Reykjavik`\n* `Atlantic/South_Georgia`\n* `Atlantic/St_Helena`\n* `Atlantic/Stanley`\n* `Australia/ACT`\n* `Australia/Adelaide`\n* `Australia/Brisbane`\n* `Australia/Broken_Hill`\n* `Australia/Canberra`\n* `Australia/Currie`\n* `Australia/Darwin`\n* `Australia/Eucla`\n* `Australia/Hobart`\n* `Australia/LHI`\n* `Australia/Lindeman`\n* `Australia/Lord_Howe`\n* `Australia/Melbourne`\n* `Australia/NSW`\n* `Australia/North`\n* `Australia/Perth`\n* `Australia/Queensland`\n* `Australia/South`\n* `Australia/Sydney`\n* `Australia/Tasmania`\n* `Australia/Victoria`\n* `Australia/West`\n* `Australia/Yancowinna`\n* `Brazil/Acre`\n* `Brazil/DeNoronha`\n* `Brazil/East`\n* `Brazil/West`\n* `CET`\n* `CST6CDT`\n* `Canada/Atlantic`\n* `Canada/Central`\n* `Canada/Eastern`\n* `Canada/Mountain`\n* `Canada/Newfoundland`\n* `Canada/Pacific`\n* `Canada/Saskatchewan`\n* `Canada/Yukon`\n* `Chile/Continental`\n* `Chile/EasterIsland`\n* `Cuba`\n* `EET`\n* `EST`\n* `EST5EDT`\n* `Egypt`\n* `Eire`\n* `Etc/GMT`\n* `Etc/GMT+0`\n* `Etc/GMT+1`\n* `Etc/GMT+10`\n* `Etc/GMT+11`\n* `Etc/GMT+12`\n* `Etc/GMT+2`\n* `Etc/GMT+3`\n* `Etc/GMT+4`\n* `Etc/GMT+5`\n* `Etc/GMT+6`\n* `Etc/GMT+7`\n* `Etc/GMT+8`\n* `Etc/GMT+9`\n* `Etc/GMT-0`\n* `Etc/GMT-1`\n* `Etc/GMT-10`\n* `Etc/GMT-11`\n* `Etc/GMT-12`\n* `Etc/GMT-13`\n* `Etc/GMT-14`\n* `Etc/GMT-2`\n* `Etc/GMT-3`\n* `Etc/GMT-4`\n* `Etc/GMT-5`\n* `Etc/GMT-6`\n* `Etc/GMT-7`\n* `Etc/GMT-8`\n* `Etc/GMT-9`\n* `Etc/GMT0`\n* `Etc/Greenwich`\n* `Etc/UCT`\n* `Etc/UTC`\n* `Etc/Universal`\n* `Etc/Zulu`\n* `Europe/Amsterdam`\n* `Europe/Andorra`\n* `Europe/Astrakhan`\n* `Europe/Athens`\n* `Europe/Belfast`\n* `Europe/Belgrade`\n* `Europe/Berlin`\n* `Europe/Bratislava`\n* `Europe/Brussels`\n* `Europe/Bucharest`\n* `Europe/Budapest`\n* `Europe/Busingen`\n* `Europe/Chisinau`\n* `Europe/Copenhagen`\n* `Europe/Dublin`\n* `Europe/Gibraltar`\n* `Europe/Guernsey`\n* `Europe/Helsinki`\n* `Europe/Isle_of_Man`\n* `Europe/Istanbul`\n* `Europe/Jersey`\n* `Europe/Kaliningrad`\n* `Europe/Kiev`\n* `Europe/Kirov`\n* `Europe/Kyiv`\n* `Europe/Lisbon`\n* `Europe/Ljubljana`\n* `Europe/London`\n* `Europe/Luxembourg`\n* `Europe/Madrid`\n* `Europe/Malta`\n* `Europe/Mariehamn`\n* `Europe/Minsk`\n* `Europe/Monaco`\n* `Europe/Moscow`\n* `Europe/Nicosia`\n* `Europe/Oslo`\n* `Europe/Paris`\n* `Europe/Podgorica`\n* `Europe/Prague`\n* `Europe/Riga`\n* `Europe/Rome`\n* `Europe/Samara`\n* `Europe/San_Marino`\n* `Europe/Sarajevo`\n* `Europe/Saratov`\n* `Europe/Simferopol`\n* `Europe/Skopje`\n* `Europe/Sofia`\n* `Europe/Stockholm`\n* `Europe/Tallinn`\n* `Europe/Tirane`\n* `Europe/Tiraspol`\n* `Europe/Ulyanovsk`\n* `Europe/Uzhgorod`\n* `Europe/Vaduz`\n* `Europe/Vatican`\n* `Europe/Vienna`\n* `Europe/Vilnius`\n* `Europe/Volgograd`\n* `Europe/Warsaw`\n* `Europe/Zagreb`\n* `Europe/Zaporozhye`\n* `Europe/Zurich`\n* `GB`\n* `GB-Eire`\n* `GMT`\n* `GMT+0`\n* `GMT-0`\n* `GMT0`\n* `Greenwich`\n* `HST`\n* `Hongkong`\n* `Iceland`\n* `Indian/Antananarivo`\n* `Indian/Chagos`\n* `Indian/Christmas`\n* `Indian/Cocos`\n* `Indian/Comoro`\n* `Indian/Kerguelen`\n* `Indian/Mahe`\n* `Indian/Maldives`\n* `Indian/Mauritius`\n* `Indian/Mayotte`\n* `Indian/Reunion`\n* `Iran`\n* `Israel`\n* `Jamaica`\n* `Japan`\n* `Kwajalein`\n* `Libya`\n* `MET`\n* `MST`\n* `MST7MDT`\n* `Mexico/BajaNorte`\n* `Mexico/BajaSur`\n* `Mexico/General`\n* `NZ`\n* `NZ-CHAT`\n* `Navajo`\n* `PRC`\n* `PST8PDT`\n* `Pacific/Apia`\n* `Pacific/Auckland`\n* `Pacific/Bougainville`\n* `Pacific/Chatham`\n* `Pacific/Chuuk`\n* `Pacific/Easter`\n* `Pacific/Efate`\n* `Pacific/Enderbury`\n* `Pacific/Fakaofo`\n* `Pacific/Fiji`\n* `Pacific/Funafuti`\n* `Pacific/Galapagos`\n* `Pacific/Gambier`\n* `Pacific/Guadalcanal`\n* `Pacific/Guam`\n* `Pacific/Honolulu`\n* `Pacific/Johnston`\n* `Pacific/Kanton`\n* `Pacific/Kiritimati`\n* `Pacific/Kosrae`\n* `Pacific/Kwajalein`\n* `Pacific/Majuro`\n* `Pacific/Marquesas`\n* `Pacific/Midway`\n* `Pacific/Nauru`\n* `Pacific/Niue`\n* `Pacific/Norfolk`\n* `Pacific/Noumea`\n* `Pacific/Pago_Pago`\n* `Pacific/Palau`\n* `Pacific/Pitcairn`\n* `Pacific/Pohnpei`\n* `Pacific/Ponape`\n* `Pacific/Port_Moresby`\n* `Pacific/Rarotonga`\n* `Pacific/Saipan`\n* `Pacific/Samoa`\n* `Pacific/Tahiti`\n* `Pacific/Tarawa`\n* `Pacific/Tongatapu`\n* `Pacific/Truk`\n* `Pacific/Wake`\n* `Pacific/Wallis`\n* `Pacific/Yap`\n* `Poland`\n* `Portugal`\n* `ROC`\n* `ROK`\n* `Singapore`\n* `Turkey`\n* `UCT`\n* `US/Alaska`\n* `US/Aleutian`\n* `US/Arizona`\n* `US/Central`\n* `US/East-Indiana`\n* `US/Eastern`\n* `US/Hawaii`\n* `US/Indiana-Starke`\n* `US/Michigan`\n* `US/Mountain`\n* `US/Pacific`\n* `US/Samoa`\n* `UTC`\n* `Universal`\n* `W-SU`\n* `WET`\n* `Zulu`\n* `localtime`"},"failure_issue_threshold":{"type":"integer","maximum":720,"minimum":1,"nullable":true,"description":"How many consecutive missed or failed check-ins in a row before creating a new issue."},"recovery_threshold":{"type":"integer","maximum":720,"minimum":1,"nullable":true,"description":"How many successful check-ins in a row before resolving an issue."}},"required":["schedule"]}],"description":"The configuration for the monitor."},"slug":{"type":"string","description":"Uniquely identifies your monitor within your organization. Changing this slug will require updates to any instrumented check-in calls.","maxLength":50,"pattern":"^(?![0-9]+$)[a-z0-9_\\-]+$"},"status":{"enum":["active","disabled"],"type":"string","default":"active","description":"Status of the monitor. Disabled monitors will not accept events and will not count towards the monitor quota.\n\n* `active`\n* `disabled`"},"owner":{"type":"string","nullable":true,"description":"The ID of the team or user that owns the monitor. (eg. user:51 or team:6)"},"is_muted":{"type":"boolean","description":"Disable creation of monitor incidents"}},"required":["config","name","project"]}}},"required":true},"security":[{"auth_token":["alerts:write","org:admin","org:read","org:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"status":{"type":"string"},"isMuted":{"type":"boolean"},"isUpserting":{"type":"boolean"},"config":{"type":"object","properties":{"schedule_type":{"enum":["crontab","interval"],"type":"string"},"schedule":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"integer"},"minLength":2,"maxLength":2}]},"checkin_margin":{"type":"integer","nullable":true},"max_runtime":{"type":"integer","nullable":true},"timezone":{"type":"string","nullable":true},"failure_issue_threshold":{"type":"integer","nullable":true},"recovery_threshold":{"type":"integer","nullable":true},"alert_rule_id":{"type":"integer","nullable":true}},"required":["alert_rule_id","checkin_margin","failure_issue_threshold","max_runtime","recovery_threshold","schedule","schedule_type","timezone"]},"dateCreated":{"type":"string","format":"date-time"},"project":{"type":"object","properties":{"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"isInternal":{"type":"boolean"},"isPublic":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"color":{"type":"string"},"status":{"type":"string"}},"required":["access","avatar","color","dateCreated","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","id","isBookmarked","isInternal","isMember","isPublic","name","platform","slug","status"]},"environments":{"type":"object","properties":{"name":{"type":"string"},"status":{"type":"string"},"isMuted":{"type":"boolean"},"dateCreated":{"type":"string","format":"date-time"},"lastCheckIn":{"type":"string","format":"date-time"},"nextCheckIn":{"type":"string","format":"date-time"},"nextCheckInLatest":{"type":"string","format":"date-time"},"activeIncident":{"type":"object","properties":{"startingTimestamp":{"type":"string","format":"date-time"},"resolvingTimestamp":{"type":"string","format":"date-time"},"brokenNotice":{"type":"object","properties":{"userNotifiedTimestamp":{"type":"string","format":"date-time"},"environmentMutedTimestamp":{"type":"string","format":"date-time"}},"required":["environmentMutedTimestamp","userNotifiedTimestamp"],"nullable":true}},"required":["brokenNotice","resolvingTimestamp","startingTimestamp"],"nullable":true}},"required":["activeIncident","dateCreated","isMuted","lastCheckIn","name","nextCheckIn","nextCheckInLatest","status"]},"owner":{"type":"object","properties":{"type":{"enum":["user","team"],"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["id","name","type"]}},"required":["config","dateCreated","environments","id","isMuted","isUpserting","name","owner","project","slug","status"]}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/monitors/{monitor_id_or_slug}/":{"get":{"operationId":"getOrganizationMonitor","description":"Retrieves details for a monitor.","summary":"Retrieve a Monitor","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"monitor_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the monitor.","required":true},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."}],"tags":["Crons"],"security":[{"auth_token":["alerts:read","alerts:write","project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"status":{"type":"string"},"isMuted":{"type":"boolean"},"isUpserting":{"type":"boolean"},"config":{"type":"object","properties":{"schedule_type":{"enum":["crontab","interval"],"type":"string"},"schedule":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"integer"},"minLength":2,"maxLength":2}]},"checkin_margin":{"type":"integer","nullable":true},"max_runtime":{"type":"integer","nullable":true},"timezone":{"type":"string","nullable":true},"failure_issue_threshold":{"type":"integer","nullable":true},"recovery_threshold":{"type":"integer","nullable":true},"alert_rule_id":{"type":"integer","nullable":true}},"required":["alert_rule_id","checkin_margin","failure_issue_threshold","max_runtime","recovery_threshold","schedule","schedule_type","timezone"]},"dateCreated":{"type":"string","format":"date-time"},"project":{"type":"object","properties":{"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"isInternal":{"type":"boolean"},"isPublic":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"color":{"type":"string"},"status":{"type":"string"}},"required":["access","avatar","color","dateCreated","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","id","isBookmarked","isInternal","isMember","isPublic","name","platform","slug","status"]},"environments":{"type":"object","properties":{"name":{"type":"string"},"status":{"type":"string"},"isMuted":{"type":"boolean"},"dateCreated":{"type":"string","format":"date-time"},"lastCheckIn":{"type":"string","format":"date-time"},"nextCheckIn":{"type":"string","format":"date-time"},"nextCheckInLatest":{"type":"string","format":"date-time"},"activeIncident":{"type":"object","properties":{"startingTimestamp":{"type":"string","format":"date-time"},"resolvingTimestamp":{"type":"string","format":"date-time"},"brokenNotice":{"type":"object","properties":{"userNotifiedTimestamp":{"type":"string","format":"date-time"},"environmentMutedTimestamp":{"type":"string","format":"date-time"}},"required":["environmentMutedTimestamp","userNotifiedTimestamp"],"nullable":true}},"required":["brokenNotice","resolvingTimestamp","startingTimestamp"],"nullable":true}},"required":["activeIncident","dateCreated","isMuted","lastCheckIn","name","nextCheckIn","nextCheckInLatest","status"]},"owner":{"type":"object","properties":{"type":{"enum":["user","team"],"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["id","name","type"]}},"required":["config","dateCreated","environments","id","isMuted","isUpserting","name","owner","project","slug","status"]}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"updateOrganizationMonitor","description":"Update a monitor.","summary":"Update a Monitor","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"monitor_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the monitor.","required":true}],"tags":["Crons"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"project":{"type":"string","description":"The project ID or slug to associate the monitor to."},"name":{"type":"string","description":"Name of the monitor. Used for notifications. If not set the slug will be derived from your monitor name.","maxLength":128},"config":{"allOf":[{"type":"object","properties":{"schedule_type":{"enum":["crontab","interval"],"type":"string","description":"Currently supports \"crontab\" or \"interval\"\n\n* `crontab`\n* `interval`"},"schedule":{"description":"Varies depending on the schedule_type. Is either a crontab string, or a 2 element tuple for intervals (e.g. [1, 'day'])"},"checkin_margin":{"type":"integer","maximum":40320,"minimum":1,"nullable":true,"description":"How long (in minutes) after the expected checkin time will we wait until we consider the checkin to have been missed."},"max_runtime":{"type":"integer","maximum":10080,"minimum":1,"nullable":true,"description":"How long (in minutes) is the checkin allowed to run for in CheckInStatus.IN_PROGRESS before it is considered failed. Maximum 10080 (7 days)."},"timezone":{"enum":["Africa/Abidjan","Africa/Accra","Africa/Addis_Ababa","Africa/Algiers","Africa/Asmara","Africa/Asmera","Africa/Bamako","Africa/Bangui","Africa/Banjul","Africa/Bissau","Africa/Blantyre","Africa/Brazzaville","Africa/Bujumbura","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/Conakry","Africa/Dakar","Africa/Dar_es_Salaam","Africa/Djibouti","Africa/Douala","Africa/El_Aaiun","Africa/Freetown","Africa/Gaborone","Africa/Harare","Africa/Johannesburg","Africa/Juba","Africa/Kampala","Africa/Khartoum","Africa/Kigali","Africa/Kinshasa","Africa/Lagos","Africa/Libreville","Africa/Lome","Africa/Luanda","Africa/Lubumbashi","Africa/Lusaka","Africa/Malabo","Africa/Maputo","Africa/Maseru","Africa/Mbabane","Africa/Mogadishu","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Niamey","Africa/Nouakchott","Africa/Ouagadougou","Africa/Porto-Novo","Africa/Sao_Tome","Africa/Timbuktu","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Anguilla","America/Antigua","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/ComodRivadavia","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Aruba","America/Asuncion","America/Atikokan","America/Atka","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Buenos_Aires","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Catamarca","America/Cayenne","America/Cayman","America/Chicago","America/Chihuahua","America/Ciudad_Juarez","America/Coral_Harbour","America/Cordoba","America/Costa_Rica","America/Coyhaique","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Dominica","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Ensenada","America/Fort_Nelson","America/Fort_Wayne","America/Fortaleza","America/Glace_Bay","America/Godthab","America/Goose_Bay","America/Grand_Turk","America/Grenada","America/Guadeloupe","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Indianapolis","America/Inuvik","America/Iqaluit","America/Jamaica","America/Jujuy","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/Knox_IN","America/Kralendijk","America/La_Paz","America/Lima","America/Los_Angeles","America/Louisville","America/Lower_Princes","America/Maceio","America/Managua","America/Manaus","America/Marigot","America/Martinique","America/Matamoros","America/Mazatlan","America/Mendoza","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Montreal","America/Montserrat","America/Nassau","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Nuuk","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Acre","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Rosario","America/Santa_Isabel","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Shiprock","America/Sitka","America/St_Barthelemy","America/St_Johns","America/St_Kitts","America/St_Lucia","America/St_Thomas","America/St_Vincent","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Tortola","America/Vancouver","America/Virgin","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer","Antarctica/Rothera","Antarctica/South_Pole","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen","Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Ashkhabad","Asia/Atyrau","Asia/Baghdad","Asia/Bahrain","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Calcutta","Asia/Chita","Asia/Choibalsan","Asia/Chongqing","Asia/Chungking","Asia/Colombo","Asia/Dacca","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Harbin","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Istanbul","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kashgar","Asia/Kathmandu","Asia/Katmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macao","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Rangoon","Asia/Riyadh","Asia/Saigon","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Tel_Aviv","Asia/Thimbu","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ujung_Pandang","Asia/Ulaanbaatar","Asia/Ulan_Bator","Asia/Urumqi","Asia/Ust-Nera","Asia/Vientiane","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faeroe","Atlantic/Faroe","Atlantic/Jan_Mayen","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena","Atlantic/Stanley","Australia/ACT","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Canberra","Australia/Currie","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/LHI","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/NSW","Australia/North","Australia/Perth","Australia/Queensland","Australia/South","Australia/Sydney","Australia/Tasmania","Australia/Victoria","Australia/West","Australia/Yancowinna","Brazil/Acre","Brazil/DeNoronha","Brazil/East","Brazil/West","CET","CST6CDT","Canada/Atlantic","Canada/Central","Canada/Eastern","Canada/Mountain","Canada/Newfoundland","Canada/Pacific","Canada/Saskatchewan","Canada/Yukon","Chile/Continental","Chile/EasterIsland","Cuba","EET","EST","EST5EDT","Egypt","Eire","Etc/GMT","Etc/GMT+0","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11","Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5","Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/GMT-0","Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12","Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3","Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8","Etc/GMT-9","Etc/GMT0","Etc/Greenwich","Etc/UCT","Etc/UTC","Etc/Universal","Etc/Zulu","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belfast","Europe/Belgrade","Europe/Berlin","Europe/Bratislava","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Busingen","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man","Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Kyiv","Europe/Lisbon","Europe/Ljubljana","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Mariehamn","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Nicosia","Europe/Oslo","Europe/Paris","Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/San_Marino","Europe/Sarajevo","Europe/Saratov","Europe/Simferopol","Europe/Skopje","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Tiraspol","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vaduz","Europe/Vatican","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zagreb","Europe/Zaporozhye","Europe/Zurich","GB","GB-Eire","GMT","GMT+0","GMT-0","GMT0","Greenwich","HST","Hongkong","Iceland","Indian/Antananarivo","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Mayotte","Indian/Reunion","Iran","Israel","Jamaica","Japan","Kwajalein","Libya","MET","MST","MST7MDT","Mexico/BajaNorte","Mexico/BajaSur","Mexico/General","NZ","NZ-CHAT","Navajo","PRC","PST8PDT","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Johnston","Pacific/Kanton","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Midway","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Ponape","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Saipan","Pacific/Samoa","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Truk","Pacific/Wake","Pacific/Wallis","Pacific/Yap","Poland","Portugal","ROC","ROK","Singapore","Turkey","UCT","US/Alaska","US/Aleutian","US/Arizona","US/Central","US/East-Indiana","US/Eastern","US/Hawaii","US/Indiana-Starke","US/Michigan","US/Mountain","US/Pacific","US/Samoa","UTC","Universal","W-SU","WET","Zulu","localtime",""],"type":"string","description":"tz database style timezone string\n\n* `Africa/Abidjan`\n* `Africa/Accra`\n* `Africa/Addis_Ababa`\n* `Africa/Algiers`\n* `Africa/Asmara`\n* `Africa/Asmera`\n* `Africa/Bamako`\n* `Africa/Bangui`\n* `Africa/Banjul`\n* `Africa/Bissau`\n* `Africa/Blantyre`\n* `Africa/Brazzaville`\n* `Africa/Bujumbura`\n* `Africa/Cairo`\n* `Africa/Casablanca`\n* `Africa/Ceuta`\n* `Africa/Conakry`\n* `Africa/Dakar`\n* `Africa/Dar_es_Salaam`\n* `Africa/Djibouti`\n* `Africa/Douala`\n* `Africa/El_Aaiun`\n* `Africa/Freetown`\n* `Africa/Gaborone`\n* `Africa/Harare`\n* `Africa/Johannesburg`\n* `Africa/Juba`\n* `Africa/Kampala`\n* `Africa/Khartoum`\n* `Africa/Kigali`\n* `Africa/Kinshasa`\n* `Africa/Lagos`\n* `Africa/Libreville`\n* `Africa/Lome`\n* `Africa/Luanda`\n* `Africa/Lubumbashi`\n* `Africa/Lusaka`\n* `Africa/Malabo`\n* `Africa/Maputo`\n* `Africa/Maseru`\n* `Africa/Mbabane`\n* `Africa/Mogadishu`\n* `Africa/Monrovia`\n* `Africa/Nairobi`\n* `Africa/Ndjamena`\n* `Africa/Niamey`\n* `Africa/Nouakchott`\n* `Africa/Ouagadougou`\n* `Africa/Porto-Novo`\n* `Africa/Sao_Tome`\n* `Africa/Timbuktu`\n* `Africa/Tripoli`\n* `Africa/Tunis`\n* `Africa/Windhoek`\n* `America/Adak`\n* `America/Anchorage`\n* `America/Anguilla`\n* `America/Antigua`\n* `America/Araguaina`\n* `America/Argentina/Buenos_Aires`\n* `America/Argentina/Catamarca`\n* `America/Argentina/ComodRivadavia`\n* `America/Argentina/Cordoba`\n* `America/Argentina/Jujuy`\n* `America/Argentina/La_Rioja`\n* `America/Argentina/Mendoza`\n* `America/Argentina/Rio_Gallegos`\n* `America/Argentina/Salta`\n* `America/Argentina/San_Juan`\n* `America/Argentina/San_Luis`\n* `America/Argentina/Tucuman`\n* `America/Argentina/Ushuaia`\n* `America/Aruba`\n* `America/Asuncion`\n* `America/Atikokan`\n* `America/Atka`\n* `America/Bahia`\n* `America/Bahia_Banderas`\n* `America/Barbados`\n* `America/Belem`\n* `America/Belize`\n* `America/Blanc-Sablon`\n* `America/Boa_Vista`\n* `America/Bogota`\n* `America/Boise`\n* `America/Buenos_Aires`\n* `America/Cambridge_Bay`\n* `America/Campo_Grande`\n* `America/Cancun`\n* `America/Caracas`\n* `America/Catamarca`\n* `America/Cayenne`\n* `America/Cayman`\n* `America/Chicago`\n* `America/Chihuahua`\n* `America/Ciudad_Juarez`\n* `America/Coral_Harbour`\n* `America/Cordoba`\n* `America/Costa_Rica`\n* `America/Coyhaique`\n* `America/Creston`\n* `America/Cuiaba`\n* `America/Curacao`\n* `America/Danmarkshavn`\n* `America/Dawson`\n* `America/Dawson_Creek`\n* `America/Denver`\n* `America/Detroit`\n* `America/Dominica`\n* `America/Edmonton`\n* `America/Eirunepe`\n* `America/El_Salvador`\n* `America/Ensenada`\n* `America/Fort_Nelson`\n* `America/Fort_Wayne`\n* `America/Fortaleza`\n* `America/Glace_Bay`\n* `America/Godthab`\n* `America/Goose_Bay`\n* `America/Grand_Turk`\n* `America/Grenada`\n* `America/Guadeloupe`\n* `America/Guatemala`\n* `America/Guayaquil`\n* `America/Guyana`\n* `America/Halifax`\n* `America/Havana`\n* `America/Hermosillo`\n* `America/Indiana/Indianapolis`\n* `America/Indiana/Knox`\n* `America/Indiana/Marengo`\n* `America/Indiana/Petersburg`\n* `America/Indiana/Tell_City`\n* `America/Indiana/Vevay`\n* `America/Indiana/Vincennes`\n* `America/Indiana/Winamac`\n* `America/Indianapolis`\n* `America/Inuvik`\n* `America/Iqaluit`\n* `America/Jamaica`\n* `America/Jujuy`\n* `America/Juneau`\n* `America/Kentucky/Louisville`\n* `America/Kentucky/Monticello`\n* `America/Knox_IN`\n* `America/Kralendijk`\n* `America/La_Paz`\n* `America/Lima`\n* `America/Los_Angeles`\n* `America/Louisville`\n* `America/Lower_Princes`\n* `America/Maceio`\n* `America/Managua`\n* `America/Manaus`\n* `America/Marigot`\n* `America/Martinique`\n* `America/Matamoros`\n* `America/Mazatlan`\n* `America/Mendoza`\n* `America/Menominee`\n* `America/Merida`\n* `America/Metlakatla`\n* `America/Mexico_City`\n* `America/Miquelon`\n* `America/Moncton`\n* `America/Monterrey`\n* `America/Montevideo`\n* `America/Montreal`\n* `America/Montserrat`\n* `America/Nassau`\n* `America/New_York`\n* `America/Nipigon`\n* `America/Nome`\n* `America/Noronha`\n* `America/North_Dakota/Beulah`\n* `America/North_Dakota/Center`\n* `America/North_Dakota/New_Salem`\n* `America/Nuuk`\n* `America/Ojinaga`\n* `America/Panama`\n* `America/Pangnirtung`\n* `America/Paramaribo`\n* `America/Phoenix`\n* `America/Port-au-Prince`\n* `America/Port_of_Spain`\n* `America/Porto_Acre`\n* `America/Porto_Velho`\n* `America/Puerto_Rico`\n* `America/Punta_Arenas`\n* `America/Rainy_River`\n* `America/Rankin_Inlet`\n* `America/Recife`\n* `America/Regina`\n* `America/Resolute`\n* `America/Rio_Branco`\n* `America/Rosario`\n* `America/Santa_Isabel`\n* `America/Santarem`\n* `America/Santiago`\n* `America/Santo_Domingo`\n* `America/Sao_Paulo`\n* `America/Scoresbysund`\n* `America/Shiprock`\n* `America/Sitka`\n* `America/St_Barthelemy`\n* `America/St_Johns`\n* `America/St_Kitts`\n* `America/St_Lucia`\n* `America/St_Thomas`\n* `America/St_Vincent`\n* `America/Swift_Current`\n* `America/Tegucigalpa`\n* `America/Thule`\n* `America/Thunder_Bay`\n* `America/Tijuana`\n* `America/Toronto`\n* `America/Tortola`\n* `America/Vancouver`\n* `America/Virgin`\n* `America/Whitehorse`\n* `America/Winnipeg`\n* `America/Yakutat`\n* `America/Yellowknife`\n* `Antarctica/Casey`\n* `Antarctica/Davis`\n* `Antarctica/DumontDUrville`\n* `Antarctica/Macquarie`\n* `Antarctica/Mawson`\n* `Antarctica/McMurdo`\n* `Antarctica/Palmer`\n* `Antarctica/Rothera`\n* `Antarctica/South_Pole`\n* `Antarctica/Syowa`\n* `Antarctica/Troll`\n* `Antarctica/Vostok`\n* `Arctic/Longyearbyen`\n* `Asia/Aden`\n* `Asia/Almaty`\n* `Asia/Amman`\n* `Asia/Anadyr`\n* `Asia/Aqtau`\n* `Asia/Aqtobe`\n* `Asia/Ashgabat`\n* `Asia/Ashkhabad`\n* `Asia/Atyrau`\n* `Asia/Baghdad`\n* `Asia/Bahrain`\n* `Asia/Baku`\n* `Asia/Bangkok`\n* `Asia/Barnaul`\n* `Asia/Beirut`\n* `Asia/Bishkek`\n* `Asia/Brunei`\n* `Asia/Calcutta`\n* `Asia/Chita`\n* `Asia/Choibalsan`\n* `Asia/Chongqing`\n* `Asia/Chungking`\n* `Asia/Colombo`\n* `Asia/Dacca`\n* `Asia/Damascus`\n* `Asia/Dhaka`\n* `Asia/Dili`\n* `Asia/Dubai`\n* `Asia/Dushanbe`\n* `Asia/Famagusta`\n* `Asia/Gaza`\n* `Asia/Harbin`\n* `Asia/Hebron`\n* `Asia/Ho_Chi_Minh`\n* `Asia/Hong_Kong`\n* `Asia/Hovd`\n* `Asia/Irkutsk`\n* `Asia/Istanbul`\n* `Asia/Jakarta`\n* `Asia/Jayapura`\n* `Asia/Jerusalem`\n* `Asia/Kabul`\n* `Asia/Kamchatka`\n* `Asia/Karachi`\n* `Asia/Kashgar`\n* `Asia/Kathmandu`\n* `Asia/Katmandu`\n* `Asia/Khandyga`\n* `Asia/Kolkata`\n* `Asia/Krasnoyarsk`\n* `Asia/Kuala_Lumpur`\n* `Asia/Kuching`\n* `Asia/Kuwait`\n* `Asia/Macao`\n* `Asia/Macau`\n* `Asia/Magadan`\n* `Asia/Makassar`\n* `Asia/Manila`\n* `Asia/Muscat`\n* `Asia/Nicosia`\n* `Asia/Novokuznetsk`\n* `Asia/Novosibirsk`\n* `Asia/Omsk`\n* `Asia/Oral`\n* `Asia/Phnom_Penh`\n* `Asia/Pontianak`\n* `Asia/Pyongyang`\n* `Asia/Qatar`\n* `Asia/Qostanay`\n* `Asia/Qyzylorda`\n* `Asia/Rangoon`\n* `Asia/Riyadh`\n* `Asia/Saigon`\n* `Asia/Sakhalin`\n* `Asia/Samarkand`\n* `Asia/Seoul`\n* `Asia/Shanghai`\n* `Asia/Singapore`\n* `Asia/Srednekolymsk`\n* `Asia/Taipei`\n* `Asia/Tashkent`\n* `Asia/Tbilisi`\n* `Asia/Tehran`\n* `Asia/Tel_Aviv`\n* `Asia/Thimbu`\n* `Asia/Thimphu`\n* `Asia/Tokyo`\n* `Asia/Tomsk`\n* `Asia/Ujung_Pandang`\n* `Asia/Ulaanbaatar`\n* `Asia/Ulan_Bator`\n* `Asia/Urumqi`\n* `Asia/Ust-Nera`\n* `Asia/Vientiane`\n* `Asia/Vladivostok`\n* `Asia/Yakutsk`\n* `Asia/Yangon`\n* `Asia/Yekaterinburg`\n* `Asia/Yerevan`\n* `Atlantic/Azores`\n* `Atlantic/Bermuda`\n* `Atlantic/Canary`\n* `Atlantic/Cape_Verde`\n* `Atlantic/Faeroe`\n* `Atlantic/Faroe`\n* `Atlantic/Jan_Mayen`\n* `Atlantic/Madeira`\n* `Atlantic/Reykjavik`\n* `Atlantic/South_Georgia`\n* `Atlantic/St_Helena`\n* `Atlantic/Stanley`\n* `Australia/ACT`\n* `Australia/Adelaide`\n* `Australia/Brisbane`\n* `Australia/Broken_Hill`\n* `Australia/Canberra`\n* `Australia/Currie`\n* `Australia/Darwin`\n* `Australia/Eucla`\n* `Australia/Hobart`\n* `Australia/LHI`\n* `Australia/Lindeman`\n* `Australia/Lord_Howe`\n* `Australia/Melbourne`\n* `Australia/NSW`\n* `Australia/North`\n* `Australia/Perth`\n* `Australia/Queensland`\n* `Australia/South`\n* `Australia/Sydney`\n* `Australia/Tasmania`\n* `Australia/Victoria`\n* `Australia/West`\n* `Australia/Yancowinna`\n* `Brazil/Acre`\n* `Brazil/DeNoronha`\n* `Brazil/East`\n* `Brazil/West`\n* `CET`\n* `CST6CDT`\n* `Canada/Atlantic`\n* `Canada/Central`\n* `Canada/Eastern`\n* `Canada/Mountain`\n* `Canada/Newfoundland`\n* `Canada/Pacific`\n* `Canada/Saskatchewan`\n* `Canada/Yukon`\n* `Chile/Continental`\n* `Chile/EasterIsland`\n* `Cuba`\n* `EET`\n* `EST`\n* `EST5EDT`\n* `Egypt`\n* `Eire`\n* `Etc/GMT`\n* `Etc/GMT+0`\n* `Etc/GMT+1`\n* `Etc/GMT+10`\n* `Etc/GMT+11`\n* `Etc/GMT+12`\n* `Etc/GMT+2`\n* `Etc/GMT+3`\n* `Etc/GMT+4`\n* `Etc/GMT+5`\n* `Etc/GMT+6`\n* `Etc/GMT+7`\n* `Etc/GMT+8`\n* `Etc/GMT+9`\n* `Etc/GMT-0`\n* `Etc/GMT-1`\n* `Etc/GMT-10`\n* `Etc/GMT-11`\n* `Etc/GMT-12`\n* `Etc/GMT-13`\n* `Etc/GMT-14`\n* `Etc/GMT-2`\n* `Etc/GMT-3`\n* `Etc/GMT-4`\n* `Etc/GMT-5`\n* `Etc/GMT-6`\n* `Etc/GMT-7`\n* `Etc/GMT-8`\n* `Etc/GMT-9`\n* `Etc/GMT0`\n* `Etc/Greenwich`\n* `Etc/UCT`\n* `Etc/UTC`\n* `Etc/Universal`\n* `Etc/Zulu`\n* `Europe/Amsterdam`\n* `Europe/Andorra`\n* `Europe/Astrakhan`\n* `Europe/Athens`\n* `Europe/Belfast`\n* `Europe/Belgrade`\n* `Europe/Berlin`\n* `Europe/Bratislava`\n* `Europe/Brussels`\n* `Europe/Bucharest`\n* `Europe/Budapest`\n* `Europe/Busingen`\n* `Europe/Chisinau`\n* `Europe/Copenhagen`\n* `Europe/Dublin`\n* `Europe/Gibraltar`\n* `Europe/Guernsey`\n* `Europe/Helsinki`\n* `Europe/Isle_of_Man`\n* `Europe/Istanbul`\n* `Europe/Jersey`\n* `Europe/Kaliningrad`\n* `Europe/Kiev`\n* `Europe/Kirov`\n* `Europe/Kyiv`\n* `Europe/Lisbon`\n* `Europe/Ljubljana`\n* `Europe/London`\n* `Europe/Luxembourg`\n* `Europe/Madrid`\n* `Europe/Malta`\n* `Europe/Mariehamn`\n* `Europe/Minsk`\n* `Europe/Monaco`\n* `Europe/Moscow`\n* `Europe/Nicosia`\n* `Europe/Oslo`\n* `Europe/Paris`\n* `Europe/Podgorica`\n* `Europe/Prague`\n* `Europe/Riga`\n* `Europe/Rome`\n* `Europe/Samara`\n* `Europe/San_Marino`\n* `Europe/Sarajevo`\n* `Europe/Saratov`\n* `Europe/Simferopol`\n* `Europe/Skopje`\n* `Europe/Sofia`\n* `Europe/Stockholm`\n* `Europe/Tallinn`\n* `Europe/Tirane`\n* `Europe/Tiraspol`\n* `Europe/Ulyanovsk`\n* `Europe/Uzhgorod`\n* `Europe/Vaduz`\n* `Europe/Vatican`\n* `Europe/Vienna`\n* `Europe/Vilnius`\n* `Europe/Volgograd`\n* `Europe/Warsaw`\n* `Europe/Zagreb`\n* `Europe/Zaporozhye`\n* `Europe/Zurich`\n* `GB`\n* `GB-Eire`\n* `GMT`\n* `GMT+0`\n* `GMT-0`\n* `GMT0`\n* `Greenwich`\n* `HST`\n* `Hongkong`\n* `Iceland`\n* `Indian/Antananarivo`\n* `Indian/Chagos`\n* `Indian/Christmas`\n* `Indian/Cocos`\n* `Indian/Comoro`\n* `Indian/Kerguelen`\n* `Indian/Mahe`\n* `Indian/Maldives`\n* `Indian/Mauritius`\n* `Indian/Mayotte`\n* `Indian/Reunion`\n* `Iran`\n* `Israel`\n* `Jamaica`\n* `Japan`\n* `Kwajalein`\n* `Libya`\n* `MET`\n* `MST`\n* `MST7MDT`\n* `Mexico/BajaNorte`\n* `Mexico/BajaSur`\n* `Mexico/General`\n* `NZ`\n* `NZ-CHAT`\n* `Navajo`\n* `PRC`\n* `PST8PDT`\n* `Pacific/Apia`\n* `Pacific/Auckland`\n* `Pacific/Bougainville`\n* `Pacific/Chatham`\n* `Pacific/Chuuk`\n* `Pacific/Easter`\n* `Pacific/Efate`\n* `Pacific/Enderbury`\n* `Pacific/Fakaofo`\n* `Pacific/Fiji`\n* `Pacific/Funafuti`\n* `Pacific/Galapagos`\n* `Pacific/Gambier`\n* `Pacific/Guadalcanal`\n* `Pacific/Guam`\n* `Pacific/Honolulu`\n* `Pacific/Johnston`\n* `Pacific/Kanton`\n* `Pacific/Kiritimati`\n* `Pacific/Kosrae`\n* `Pacific/Kwajalein`\n* `Pacific/Majuro`\n* `Pacific/Marquesas`\n* `Pacific/Midway`\n* `Pacific/Nauru`\n* `Pacific/Niue`\n* `Pacific/Norfolk`\n* `Pacific/Noumea`\n* `Pacific/Pago_Pago`\n* `Pacific/Palau`\n* `Pacific/Pitcairn`\n* `Pacific/Pohnpei`\n* `Pacific/Ponape`\n* `Pacific/Port_Moresby`\n* `Pacific/Rarotonga`\n* `Pacific/Saipan`\n* `Pacific/Samoa`\n* `Pacific/Tahiti`\n* `Pacific/Tarawa`\n* `Pacific/Tongatapu`\n* `Pacific/Truk`\n* `Pacific/Wake`\n* `Pacific/Wallis`\n* `Pacific/Yap`\n* `Poland`\n* `Portugal`\n* `ROC`\n* `ROK`\n* `Singapore`\n* `Turkey`\n* `UCT`\n* `US/Alaska`\n* `US/Aleutian`\n* `US/Arizona`\n* `US/Central`\n* `US/East-Indiana`\n* `US/Eastern`\n* `US/Hawaii`\n* `US/Indiana-Starke`\n* `US/Michigan`\n* `US/Mountain`\n* `US/Pacific`\n* `US/Samoa`\n* `UTC`\n* `Universal`\n* `W-SU`\n* `WET`\n* `Zulu`\n* `localtime`"},"failure_issue_threshold":{"type":"integer","maximum":720,"minimum":1,"nullable":true,"description":"How many consecutive missed or failed check-ins in a row before creating a new issue."},"recovery_threshold":{"type":"integer","maximum":720,"minimum":1,"nullable":true,"description":"How many successful check-ins in a row before resolving an issue."}},"required":["schedule"]}],"description":"The configuration for the monitor."},"slug":{"type":"string","description":"Uniquely identifies your monitor within your organization. Changing this slug will require updates to any instrumented check-in calls.","maxLength":50,"pattern":"^(?![0-9]+$)[a-z0-9_\\-]+$"},"status":{"enum":["active","disabled"],"type":"string","default":"active","description":"Status of the monitor. Disabled monitors will not accept events and will not count towards the monitor quota.\n\n* `active`\n* `disabled`"},"owner":{"type":"string","nullable":true,"description":"The ID of the team or user that owns the monitor. (eg. user:51 or team:6)"},"is_muted":{"type":"boolean","description":"Disable creation of monitor incidents"}},"required":["config","name","project"]}}},"required":true},"security":[{"auth_token":["alerts:write","project:admin","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"status":{"type":"string"},"isMuted":{"type":"boolean"},"isUpserting":{"type":"boolean"},"config":{"type":"object","properties":{"schedule_type":{"enum":["crontab","interval"],"type":"string"},"schedule":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"integer"},"minLength":2,"maxLength":2}]},"checkin_margin":{"type":"integer","nullable":true},"max_runtime":{"type":"integer","nullable":true},"timezone":{"type":"string","nullable":true},"failure_issue_threshold":{"type":"integer","nullable":true},"recovery_threshold":{"type":"integer","nullable":true},"alert_rule_id":{"type":"integer","nullable":true}},"required":["alert_rule_id","checkin_margin","failure_issue_threshold","max_runtime","recovery_threshold","schedule","schedule_type","timezone"]},"dateCreated":{"type":"string","format":"date-time"},"project":{"type":"object","properties":{"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"isInternal":{"type":"boolean"},"isPublic":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"color":{"type":"string"},"status":{"type":"string"}},"required":["access","avatar","color","dateCreated","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","id","isBookmarked","isInternal","isMember","isPublic","name","platform","slug","status"]},"environments":{"type":"object","properties":{"name":{"type":"string"},"status":{"type":"string"},"isMuted":{"type":"boolean"},"dateCreated":{"type":"string","format":"date-time"},"lastCheckIn":{"type":"string","format":"date-time"},"nextCheckIn":{"type":"string","format":"date-time"},"nextCheckInLatest":{"type":"string","format":"date-time"},"activeIncident":{"type":"object","properties":{"startingTimestamp":{"type":"string","format":"date-time"},"resolvingTimestamp":{"type":"string","format":"date-time"},"brokenNotice":{"type":"object","properties":{"userNotifiedTimestamp":{"type":"string","format":"date-time"},"environmentMutedTimestamp":{"type":"string","format":"date-time"}},"required":["environmentMutedTimestamp","userNotifiedTimestamp"],"nullable":true}},"required":["brokenNotice","resolvingTimestamp","startingTimestamp"],"nullable":true}},"required":["activeIncident","dateCreated","isMuted","lastCheckIn","name","nextCheckIn","nextCheckInLatest","status"]},"owner":{"type":"object","properties":{"type":{"enum":["user","team"],"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["id","name","type"]}},"required":["config","dateCreated","environments","id","isMuted","isUpserting","name","owner","project","slug","status"]}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteOrganizationMonitor","description":"Delete a monitor or monitor environments.","summary":"Delete a Monitor or Monitor Environments","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"monitor_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the monitor.","required":true},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."}],"tags":["Crons"],"security":[{"auth_token":["alerts:write","project:admin","project:write"]}],"responses":{"202":{"description":"Accepted"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/monitors/{monitor_id_or_slug}/checkins/":{"get":{"operationId":"listOrganizationMonitorCheckins","description":"Retrieve a list of check-ins for a monitor","summary":"Retrieve Check-Ins for a Monitor","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"monitor_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the monitor.","required":true},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Crons"],"security":[{"auth_token":["alerts:read","alerts:write","project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"groups":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"environment":{"type":"string"},"status":{"type":"string"},"duration":{"type":"integer","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"dateAdded":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"dateInProgress":{"type":"string","format":"date-time","nullable":true},"dateClock":{"type":"string","format":"date-time"},"expectedTime":{"type":"string","format":"date-time"},"monitorConfig":{"type":"object","properties":{"schedule_type":{"enum":["crontab","interval"],"type":"string"},"schedule":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"integer"},"minLength":2,"maxLength":2}]},"checkin_margin":{"type":"integer","nullable":true},"max_runtime":{"type":"integer","nullable":true},"timezone":{"type":"string","nullable":true},"failure_issue_threshold":{"type":"integer","nullable":true},"recovery_threshold":{"type":"integer","nullable":true},"alert_rule_id":{"type":"integer","nullable":true}},"required":["alert_rule_id","checkin_margin","failure_issue_threshold","max_runtime","recovery_threshold","schedule","schedule_type","timezone"]}},"required":["dateAdded","dateClock","dateCreated","dateInProgress","dateUpdated","duration","environment","expectedTime","id","monitorConfig","status"]}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/notifications/actions/":{"get":{"operationId":"listOrganizationNotificationsActions","description":"Returns all Spike Protection Notification Actions for an organization.\n\nNotification Actions notify a set of members when an action has been triggered through a notification service such as Slack or Sentry.\nFor example, organization owners and managers can receive an email when a spike occurs.\n\nYou can use the `project` query parameter with project IDs or slugs to filter for certain projects.\nA legacy project slug query parameter is also supported and takes priority if both are present.","summary":"List Spike Protection Notifications","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects.\nFor example, the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=android&project=javascript-react`\n- `/?project=-1`\n"},{"in":"query","name":"project_id_or_slug","schema":{"type":"array","items":{"type":"string"}},"description":"The legacy project slug filter. Prefer `project`, which accepts project IDs or slugs. Use `$all` to include all available projects. For example, the following are valid parameters:\n- `/?projectSlug=$all`\n- `/?projectSlug=android&projectSlug=javascript-react`\n"},{"in":"query","name":"triggerType","schema":{"type":"string"},"description":"Type of the trigger that causes the notification. The only supported value right now is: `spike-protection`"}],"tags":["Spike Protection"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"integrationId":{"type":"integer","nullable":true},"sentryAppId":{"type":"integer","nullable":true},"projects":{"type":"array","items":{"type":"integer"}},"serviceType":{"type":"string","nullable":true},"triggerType":{"type":"string"},"targetType":{"type":"string","nullable":true},"targetIdentifier":{"type":"string","nullable":true},"targetDisplay":{"type":"string","nullable":true}},"required":["id","integrationId","organizationId","projects","sentryAppId","serviceType","targetDisplay","targetIdentifier","targetType","triggerType"]},"examples":{"CreateANewEmailSpikeProtectionNotificationActionForAProject":{"value":{"id":836501735,"organizationId":62848264,"integrationId":null,"sentryAppId":null,"serviceType":"sentry_notification","targetDisplay":"default","targetIdentifier":"default","targetType":"specific","triggerType":"spike-protection","projects":[4505321021243392]},"summary":"Create a new email spike protection notification action for a project"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"post":{"operationId":"createOrganizationNotificationsAction","description":"Creates a new Notification Action for Spike Protection.\n\nNotification Actions notify a set of members when an action has been triggered through a notification service such as Slack or Sentry.\nFor example, organization owners and managers can receive an email when a spike occurs.","summary":"Create a Spike Protection Notification Action","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["Spike Protection"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Django Rest Framework serializer for incoming NotificationAction API payloads","properties":{"trigger_type":{"type":"string","description":"Type of the trigger that causes the notification. The only supported trigger right now is: `spike-protection`."},"service_type":{"type":"string","description":"Service that is used for sending the notification.\n- `email`\n- `slack`\n- `sentry_notification`\n- `pagerduty`\n- `opsgenie`\n"},"integration_id":{"type":"integer","description":"ID of the integration used as the notification service. See\n[List Integrations](https://docs.sentry.io/api/integrations/list-an-organizations-available-integrations/)\nto retrieve a full list of integrations.\n\nRequired if **service_type** is `slack`, `pagerduty` or `opsgenie`.\n"},"target_identifier":{"type":"string","description":"ID of the notification target, like a Slack channel ID.\n\nRequired if **service_type** is `slack` or `opsgenie`.\n"},"target_display":{"type":"string","description":"Name of the notification target, like a Slack channel name.\n\nRequired if **service_type** is `slack` or `opsgenie`.\n"},"projects":{"type":"array","items":{"type":"string"},"description":"List of project IDs or slugs that the Notification Action is created for."},"sentry_app_id":{"type":"integer","description":"ID of the custom integration to notify, when the target is a Sentry app."},"target_type":{"type":"string","default":"specific","description":"How the notification target is addressed."}},"required":["service_type","trigger_type"]}}},"required":true},"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"integrationId":{"type":"integer","nullable":true},"sentryAppId":{"type":"integer","nullable":true},"projects":{"type":"array","items":{"type":"integer"}},"serviceType":{"type":"string","nullable":true},"triggerType":{"type":"string"},"targetType":{"type":"string","nullable":true},"targetIdentifier":{"type":"string","nullable":true},"targetDisplay":{"type":"string","nullable":true}},"required":["id","integrationId","organizationId","projects","sentryAppId","serviceType","targetDisplay","targetIdentifier","targetType","triggerType"]},"examples":{"CreateANewEmailSpikeProtectionNotificationActionForAProject":{"value":{"id":836501735,"organizationId":62848264,"integrationId":null,"sentryAppId":null,"serviceType":"sentry_notification","targetDisplay":"default","targetIdentifier":"default","targetType":"specific","triggerType":"spike-protection","projects":[4505321021243392]},"summary":"Create a new email spike protection notification action for a project"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/notifications/actions/{action_id}/":{"get":{"operationId":"getOrganizationNotificationsAction","description":"Returns a serialized Spike Protection Notification Action object.\n\nNotification Actions notify a set of members when an action has been triggered through a notification service such as Slack or Sentry.\nFor example, organization owners and managers can receive an email when a spike occurs.","summary":"Retrieve a Spike Protection Notification Action","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"action_id","schema":{"type":"integer"},"description":"ID of the notification action to retrieve","required":true}],"tags":["Spike Protection"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"integrationId":{"type":"integer","nullable":true},"sentryAppId":{"type":"integer","nullable":true},"projects":{"type":"array","items":{"type":"integer"}},"serviceType":{"type":"string","nullable":true},"triggerType":{"type":"string"},"targetType":{"type":"string","nullable":true},"targetIdentifier":{"type":"string","nullable":true},"targetDisplay":{"type":"string","nullable":true}},"required":["id","integrationId","organizationId","projects","sentryAppId","serviceType","targetDisplay","targetIdentifier","targetType","triggerType"]},"examples":{"RetrieveASpikeProtectionNotificationActionCreatedForAProject":{"value":{"id":836501735,"organizationId":62848264,"integrationId":null,"sentryAppId":null,"serviceType":"sentry_notification","targetDisplay":"default","targetIdentifier":"default","targetType":"specific","triggerType":"spike-protection","projects":[4505321021243392]},"summary":"Retrieve a spike protection notification action created for a project"}}}},"description":""}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"updateOrganizationNotificationsAction","description":"Updates a Spike Protection Notification Action.\n\nNotification Actions notify a set of members when an action has been triggered through a notification service such as Slack or Sentry.\nFor example, organization owners and managers can receive an email when a spike occurs.","summary":"Update a Spike Protection Notification Action","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"action_id","schema":{"type":"integer"},"description":"ID of the notification action to retrieve","required":true}],"tags":["Spike Protection"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Django Rest Framework serializer for incoming NotificationAction API payloads","properties":{"trigger_type":{"type":"string","description":"Type of the trigger that causes the notification. The only supported trigger right now is: `spike-protection`."},"service_type":{"type":"string","description":"Service that is used for sending the notification.\n- `email`\n- `slack`\n- `sentry_notification`\n- `pagerduty`\n- `opsgenie`\n"},"integration_id":{"type":"integer","description":"ID of the integration used as the notification service. See\n[List Integrations](https://docs.sentry.io/api/integrations/list-an-organizations-available-integrations/)\nto retrieve a full list of integrations.\n\nRequired if **service_type** is `slack`, `pagerduty` or `opsgenie`.\n"},"target_identifier":{"type":"string","description":"ID of the notification target, like a Slack channel ID.\n\nRequired if **service_type** is `slack` or `opsgenie`.\n"},"target_display":{"type":"string","description":"Name of the notification target, like a Slack channel name.\n\nRequired if **service_type** is `slack` or `opsgenie`.\n"},"projects":{"type":"array","items":{"type":"string"},"description":"List of project IDs or slugs that the Notification Action is created for."},"sentry_app_id":{"type":"integer","description":"ID of the custom integration to notify, when the target is a Sentry app."},"target_type":{"type":"string","default":"specific","description":"How the notification target is addressed."}},"required":["service_type","trigger_type"]}}},"required":true},"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"202":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"integrationId":{"type":"integer","nullable":true},"sentryAppId":{"type":"integer","nullable":true},"projects":{"type":"array","items":{"type":"integer"}},"serviceType":{"type":"string","nullable":true},"triggerType":{"type":"string"},"targetType":{"type":"string","nullable":true},"targetIdentifier":{"type":"string","nullable":true},"targetDisplay":{"type":"string","nullable":true}},"required":["id","integrationId","organizationId","projects","sentryAppId","serviceType","targetDisplay","targetIdentifier","targetType","triggerType"]},"examples":{"UpdateASpikeProtectionNotificationActionCreatedForAProjectToUseSentryNotificationAsNotificationService.":{"value":{"id":836501735,"organizationId":62848264,"integrationId":null,"sentryAppId":null,"serviceType":"sentry_notification","targetDisplay":"default","targetIdentifier":"default","targetType":"specific","triggerType":"spike-protection","projects":[4505321021243392]},"summary":"Update a spike protection notification action created for a project to use sentry_notification as notification service."}}}},"description":""},"400":{"description":"Bad Request"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteOrganizationNotificationsAction","description":"Deletes a Spike Protection Notification Action.\n\nNotification Actions notify a set of members when an action has been triggered through a notification service such as Slack or Sentry.\nFor example, organization owners and managers can receive an email when a spike occurs.","summary":"Delete a Spike Protection Notification Action","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"action_id","schema":{"type":"integer"},"description":"ID of the notification action to retrieve","required":true}],"tags":["Spike Protection"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"204":{"description":"No Content"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/preprodartifacts/{artifact_id}/install-details/":{"get":{"operationId":"getOrganizationPreprodArtifactInstallDetails","description":"Retrieve install info for a given artifact.\n\nReturns distribution and installation details for a specific preprod artifact,\nincluding whether the artifact is installable, the install URL, download count,\nand iOS-specific code signing information.","summary":"Retrieve install info for a given artifact","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"artifact_id","schema":{"type":"string"},"description":"The ID of the build artifact.","required":true}],"tags":["Mobile Builds"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"buildId":{"type":"string"},"state":{"type":"string"},"appInfo":{"type":"object","properties":{"appId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true},"buildNumber":{"type":"integer","nullable":true},"artifactType":{"type":"string","nullable":true},"dateAdded":{"type":"string","nullable":true},"dateBuilt":{"type":"string","nullable":true}},"required":["appId","artifactType","buildNumber","dateAdded","dateBuilt","name","version"]},"gitInfo":{"type":"object","properties":{"headSha":{"type":"string","nullable":true},"baseSha":{"type":"string","nullable":true},"provider":{"type":"string","nullable":true},"headRepoName":{"type":"string","nullable":true},"baseRepoName":{"type":"string","nullable":true},"headRef":{"type":"string","nullable":true},"baseRef":{"type":"string","nullable":true},"prNumber":{"type":"integer","nullable":true}},"required":["baseRef","baseRepoName","baseSha","headRef","headRepoName","headSha","prNumber","provider"],"nullable":true},"platform":{"type":"string","nullable":true},"projectId":{"type":"string"},"projectSlug":{"type":"string"},"buildConfiguration":{"type":"string","nullable":true},"isInstallable":{"type":"boolean"},"installUrl":{"type":"string","nullable":true},"installUrlExpiresAt":{"type":"string","nullable":true},"downloadCount":{"type":"integer"},"releaseNotes":{"type":"string","nullable":true},"installGroups":{"type":"array","items":{"type":"string"},"nullable":true},"isCodeSignatureValid":{"type":"boolean","nullable":true},"profileName":{"type":"string","nullable":true},"codesigningType":{"type":"string","nullable":true}},"required":["appInfo","buildConfiguration","buildId","codesigningType","downloadCount","gitInfo","installGroups","installUrl","installUrlExpiresAt","isCodeSignatureValid","isInstallable","platform","profileName","projectId","projectSlug","releaseNotes","state"]},"examples":{"InstallableArtifact":{"value":{"buildId":"12345","state":"PROCESSED","appInfo":{"appId":"com.example.app","name":"Example App","version":"1.2.0","buildNumber":42,"artifactType":"AAB","dateAdded":"2025-01-15T10:30:00+00:00","dateBuilt":"2025-01-15T10:00:00+00:00"},"gitInfo":{"headSha":"abc123def456","baseSha":"789xyz000111","provider":"github","headRepoName":"org/repo","baseRepoName":"org/repo","headRef":"feature-branch","baseRef":"main","prNumber":42},"platform":"ANDROID","projectId":"1","projectSlug":"my-project","buildConfiguration":"release","isInstallable":true,"installUrl":"https://sentry.io/api/0/projects/org/project/files/installablepreprodartifact/abc123/?response_format=apk","installUrlExpiresAt":"2025-01-15T22:30:00+00:00","downloadCount":5,"releaseNotes":"Bug fixes and performance improvements.","installGroups":["beta-testers"],"isCodeSignatureValid":null,"profileName":null,"codesigningType":null},"summary":"Installable Artifact"},"Non-InstallableArtifact":{"value":{"buildId":"12345","state":"PROCESSED","appInfo":{"appId":"com.example.app","name":"Example App","version":"1.2.0","buildNumber":42,"artifactType":"AAB","dateAdded":"2025-01-15T10:30:00+00:00","dateBuilt":"2025-01-15T10:00:00+00:00"},"gitInfo":null,"platform":"ANDROID","projectId":"1","projectSlug":"my-project","buildConfiguration":null,"isInstallable":false,"installUrl":null,"installUrlExpiresAt":null,"downloadCount":0,"releaseNotes":null,"installGroups":null,"isCodeSignatureValid":null,"profileName":null,"codesigningType":null},"summary":"Non-Installable Artifact"},"AppleArtifactWithCodeSigning":{"value":{"buildId":"12346","state":"PROCESSED","appInfo":{"appId":"com.example.app","name":"Example App","version":"1.2.0","buildNumber":42,"artifactType":"XCARCHIVE","dateAdded":"2025-01-15T10:30:00+00:00","dateBuilt":"2025-01-15T10:00:00+00:00"},"gitInfo":{"headSha":"abc123def456","baseSha":"789xyz000111","provider":"github","headRepoName":"org/repo","baseRepoName":"org/repo","headRef":"feature-branch","baseRef":"main","prNumber":42},"platform":"APPLE","projectId":"1","projectSlug":"my-project","buildConfiguration":"release","isInstallable":true,"installUrl":"https://sentry.io/api/0/projects/org/project/files/installablepreprodartifact/abc123/?response_format=plist","installUrlExpiresAt":"2025-01-15T22:30:00+00:00","downloadCount":3,"releaseNotes":null,"installGroups":null,"isCodeSignatureValid":true,"profileName":"iOS Team Provisioning Profile","codesigningType":"development"},"summary":"Apple Artifact with Code Signing"}}}},"description":""},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/preprodartifacts/{artifact_id}/size-analysis/":{"get":{"operationId":"getOrganizationPreprodArtifactSizeAnalysis","description":"Retrieve size analysis results for a given artifact.\n\nReturns size metrics including download size, install size, and optional insights.\nWhen a base artifact exists (either from commit comparison or via the `baseArtifactId` parameter),\ncomparison data showing size differences is included.\n\nThe response `state` field indicates the analysis status:\n- `PENDING`: Analysis has not started yet.\n- `PROCESSING`: Analysis is currently running.\n- `FAILED` / `NOT_RAN`: Analysis did not complete; `errorCode` and `errorMessage` are included.\n- `COMPLETED`: Analysis finished successfully with full size data.","summary":"Retrieve Size Analysis results for a given artifact","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"artifact_id","schema":{"type":"string"},"description":"The ID of the build artifact.","required":true},{"in":"query","name":"baseArtifactId","schema":{"type":"string"},"description":"Optional ID of the base artifact to compare against. If not provided, uses the default base head artifact."}],"tags":["Mobile Builds"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"buildId":{"type":"string"},"state":{"type":"string"},"appInfo":{"type":"object","properties":{"appId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true},"buildNumber":{"type":"integer","nullable":true},"artifactType":{"type":"string","nullable":true},"dateAdded":{"type":"string","nullable":true},"dateBuilt":{"type":"string","nullable":true}},"required":["appId","artifactType","buildNumber","dateAdded","dateBuilt","name","version"]},"gitInfo":{"type":"object","properties":{"headSha":{"type":"string","nullable":true},"baseSha":{"type":"string","nullable":true},"provider":{"type":"string","nullable":true},"headRepoName":{"type":"string","nullable":true},"baseRepoName":{"type":"string","nullable":true},"headRef":{"type":"string","nullable":true},"baseRef":{"type":"string","nullable":true},"prNumber":{"type":"integer","nullable":true}},"required":["baseRef","baseRepoName","baseSha","headRef","headRepoName","headSha","prNumber","provider"],"nullable":true},"errorCode":{"type":"string","nullable":true},"errorMessage":{"type":"string","nullable":true},"downloadSize":{"type":"integer","nullable":true},"installSize":{"type":"integer","nullable":true},"analysisDuration":{"type":"number","format":"double","nullable":true},"analysisVersion":{"type":"string","nullable":true},"baseBuildId":{"type":"string","nullable":true},"baseAppInfo":{"type":"object","properties":{"appId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true},"buildNumber":{"type":"integer","nullable":true},"artifactType":{"type":"string","nullable":true},"dateAdded":{"type":"string","nullable":true},"dateBuilt":{"type":"string","nullable":true}},"required":["appId","artifactType","buildNumber","dateAdded","dateBuilt","name","version"],"nullable":true},"insights":{"type":"object","additionalProperties":{},"nullable":true},"appComponents":{"type":"array","items":{"type":"object","properties":{"componentType":{"type":"string"},"name":{"type":"string"},"appId":{"type":"string"},"path":{"type":"string"},"downloadSize":{"type":"integer"},"installSize":{"type":"integer"}},"required":["appId","componentType","downloadSize","installSize","name","path"]},"nullable":true},"comparisons":{"type":"array","items":{"type":"object","properties":{"metricsArtifactType":{"type":"string"},"identifier":{"type":"string","nullable":true},"state":{"type":"string"},"errorCode":{"type":"string","nullable":true},"errorMessage":{"type":"string","nullable":true},"sizeMetricDiff":{"type":"object","properties":{"metricsArtifactType":{"type":"string"},"identifier":{"type":"string","nullable":true},"headInstallSize":{"type":"integer"},"headDownloadSize":{"type":"integer"},"baseInstallSize":{"type":"integer"},"baseDownloadSize":{"type":"integer"}},"required":["baseDownloadSize","baseInstallSize","headDownloadSize","headInstallSize","identifier","metricsArtifactType"],"nullable":true},"diffItems":{"type":"array","items":{"type":"object","properties":{"sizeDiff":{"type":"integer"},"headSize":{"type":"integer","nullable":true},"baseSize":{"type":"integer","nullable":true},"path":{"type":"string"},"itemType":{"type":"string","nullable":true},"type":{"type":"string"},"diffItems":{"type":"array","items":{},"nullable":true}},"required":["baseSize","diffItems","headSize","itemType","path","sizeDiff","type"]},"nullable":true},"insightDiffItems":{"type":"array","items":{"type":"object","properties":{"insightType":{"type":"string"},"status":{"type":"string"},"totalSavingsChange":{"type":"integer"},"fileDiffs":{"type":"array","items":{"type":"object","properties":{"sizeDiff":{"type":"integer"},"headSize":{"type":"integer","nullable":true},"baseSize":{"type":"integer","nullable":true},"path":{"type":"string"},"itemType":{"type":"string","nullable":true},"type":{"type":"string"},"diffItems":{"type":"array","items":{},"nullable":true}},"required":["baseSize","diffItems","headSize","itemType","path","sizeDiff","type"]}},"groupDiffs":{"type":"array","items":{"type":"object","properties":{"sizeDiff":{"type":"integer"},"headSize":{"type":"integer","nullable":true},"baseSize":{"type":"integer","nullable":true},"path":{"type":"string"},"itemType":{"type":"string","nullable":true},"type":{"type":"string"},"diffItems":{"type":"array","items":{},"nullable":true}},"required":["baseSize","diffItems","headSize","itemType","path","sizeDiff","type"]}}},"required":["fileDiffs","groupDiffs","insightType","status","totalSavingsChange"]},"nullable":true}},"required":["diffItems","errorCode","errorMessage","identifier","insightDiffItems","metricsArtifactType","sizeMetricDiff","state"]},"nullable":true}},"required":["analysisDuration","analysisVersion","appComponents","appInfo","baseAppInfo","baseBuildId","buildId","comparisons","downloadSize","errorCode","errorMessage","gitInfo","insights","installSize","state"]},"examples":{"PendingAnalysis":{"value":{"buildId":"12345","appInfo":{"appId":"com.example.app","name":"Example App","version":"1.2.0","buildNumber":42,"artifactType":"AAB","dateAdded":"2025-01-15T10:30:00+00:00","dateBuilt":"2025-01-15T10:00:00+00:00"},"gitInfo":{"headSha":"abc123def456","baseSha":"789xyz000111","provider":"github","headRepoName":"org/repo","baseRepoName":"org/repo","headRef":"feature-branch","baseRef":"main","prNumber":42},"errorCode":null,"errorMessage":null,"downloadSize":null,"installSize":null,"analysisDuration":null,"analysisVersion":null,"insights":null,"appComponents":null,"baseBuildId":null,"baseAppInfo":null,"comparisons":null,"state":"PENDING"},"summary":"Pending Analysis"},"FailedAnalysis":{"value":{"buildId":"12345","appInfo":{"appId":"com.example.app","name":"Example App","version":"1.2.0","buildNumber":42,"artifactType":"AAB","dateAdded":"2025-01-15T10:30:00+00:00","dateBuilt":"2025-01-15T10:00:00+00:00"},"gitInfo":{"headSha":"abc123def456","baseSha":"789xyz000111","provider":"github","headRepoName":"org/repo","baseRepoName":"org/repo","headRef":"feature-branch","baseRef":"main","prNumber":42},"errorCode":"TIMEOUT","errorMessage":"Failed to analyze artifact: unsupported format","downloadSize":null,"installSize":null,"analysisDuration":null,"analysisVersion":null,"insights":null,"appComponents":null,"baseBuildId":null,"baseAppInfo":null,"comparisons":null,"state":"FAILED"},"summary":"Failed Analysis"},"CompletedAnalysis":{"value":{"buildId":"12345","appInfo":{"appId":"com.example.app","name":"Example App","version":"1.2.0","buildNumber":42,"artifactType":"AAB","dateAdded":"2025-01-15T10:30:00+00:00","dateBuilt":"2025-01-15T10:00:00+00:00"},"gitInfo":{"headSha":"abc123def456","baseSha":"789xyz000111","provider":"github","headRepoName":"org/repo","baseRepoName":"org/repo","headRef":"feature-branch","baseRef":"main","prNumber":42},"errorCode":null,"errorMessage":null,"downloadSize":5120000,"installSize":10240000,"analysisDuration":3.5,"analysisVersion":"1.0.0","insights":null,"appComponents":null,"baseBuildId":null,"baseAppInfo":null,"comparisons":null,"state":"COMPLETED"},"summary":"Completed Analysis"},"CompletedAnalysisWithComparison":{"value":{"buildId":"12345","appInfo":{"appId":"com.example.app","name":"Example App","version":"1.2.0","buildNumber":42,"artifactType":"AAB","dateAdded":"2025-01-15T10:30:00+00:00","dateBuilt":"2025-01-15T10:00:00+00:00"},"gitInfo":{"headSha":"abc123def456","baseSha":"789xyz000111","provider":"github","headRepoName":"org/repo","baseRepoName":"org/repo","headRef":"feature-branch","baseRef":"main","prNumber":42},"errorCode":null,"errorMessage":null,"downloadSize":5120000,"installSize":10240000,"analysisDuration":3.5,"analysisVersion":"1.0.0","insights":null,"appComponents":null,"baseBuildId":"12344","baseAppInfo":{"appId":"com.example.app","name":"Example App","version":"1.1.0","buildNumber":41,"artifactType":"AAB","dateAdded":"2025-01-15T10:30:00+00:00","dateBuilt":"2025-01-15T10:00:00+00:00"},"comparisons":[{"metricsArtifactType":"MAIN_ARTIFACT","identifier":null,"state":"SUCCESS","errorCode":null,"errorMessage":null,"diffItems":[{"sizeDiff":1024,"headSize":5120,"baseSize":4096,"path":"lib/armeabi-v7a/libnative.so","itemType":"native_library","type":"modified","diffItems":null}],"insightDiffItems":null,"sizeMetricDiff":{"metricsArtifactType":"MAIN_ARTIFACT","identifier":null,"headInstallSize":10240000,"headDownloadSize":5120000,"baseInstallSize":9800000,"baseDownloadSize":4900000}}],"state":"COMPLETED"},"summary":"Completed Analysis with Comparison"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/preprodartifacts/snapshots/{snapshot_id}/":{"get":{"operationId":"getOrganizationPreprodArtifactSnapshot","description":"Retrieve full details for a snapshot, including categorized image lists\nand comparison status.\n\nWhen a comparison exists (`comparison_type` is `diff`), images are\ncategorized into `changed`, `added`, `removed`, `renamed`, `unchanged`,\n`errored`, and `skipped` lists with counts, and the top-level `images`\narray is empty because those images are already present in the\ncategorized lists. For `solo` and `waiting_for_base` snapshots the\ncategorized lists are empty and `images` is the only populated source.\n`image_count` is accurate in all modes.\n\nUse `compact_metadata=1` to strip image objects down to `display_name`,\n`image_file_name`, `group`, and `description` only.\n\nThis endpoint requires a bearer token with `project:read` access.","summary":"Retrieve Snapshot details","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"snapshot_id","schema":{"type":"string"},"description":"The ID of the snapshot.","required":true},{"in":"query","name":"compact_metadata","schema":{"type":"string"},"description":"Set to '1' or 'true' to strip image metadata to display_name, image_file_name, group, and description only."}],"tags":["Snapshots"],"security":[{"auth_token":["org:ci","project:admin","project:read","project:releases","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"head_artifact_id":{"type":"string"},"base_artifact_id":{"type":"string","nullable":true},"project_id":{"type":"string"},"comparison_type":{"type":"string"},"state":{"type":"string"},"vcs_info":{"type":"object","properties":{"head_sha":{"type":"string","nullable":true},"base_sha":{"type":"string","nullable":true},"provider":{"type":"string","nullable":true},"head_repo_name":{"type":"string","nullable":true},"base_repo_name":{"type":"string","nullable":true},"head_ref":{"type":"string","nullable":true},"base_ref":{"type":"string","nullable":true},"pr_number":{"type":"integer","nullable":true}}},"app_id":{"type":"string","nullable":true},"is_selective":{"type":"boolean"},"images":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"display_name":{"type":"string","nullable":true},"group":{"type":"string","nullable":true},"image_file_name":{"type":"string"},"width":{"type":"integer"},"height":{"type":"integer"},"canvas_theme":{"enum":["light","dark",null],"type":"string","nullable":true}}}},"image_count":{"type":"integer"},"added":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"display_name":{"type":"string","nullable":true},"group":{"type":"string","nullable":true},"image_file_name":{"type":"string"},"width":{"type":"integer"},"height":{"type":"integer"},"canvas_theme":{"enum":["light","dark",null],"type":"string","nullable":true}}}},"added_count":{"type":"integer"},"removed":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"display_name":{"type":"string","nullable":true},"group":{"type":"string","nullable":true},"image_file_name":{"type":"string"},"width":{"type":"integer"},"height":{"type":"integer"},"canvas_theme":{"enum":["light","dark",null],"type":"string","nullable":true}}}},"removed_count":{"type":"integer"},"renamed":{"type":"array","items":{"type":"object","properties":{"base_image":{"type":"object","properties":{"key":{"type":"string"},"display_name":{"type":"string","nullable":true},"group":{"type":"string","nullable":true},"image_file_name":{"type":"string"},"width":{"type":"integer"},"height":{"type":"integer"},"canvas_theme":{"enum":["light","dark",null],"type":"string","nullable":true}}},"head_image":{"type":"object","properties":{"key":{"type":"string"},"display_name":{"type":"string","nullable":true},"group":{"type":"string","nullable":true},"image_file_name":{"type":"string"},"width":{"type":"integer"},"height":{"type":"integer"},"canvas_theme":{"enum":["light","dark",null],"type":"string","nullable":true}}},"diff_image_key":{"type":"string","nullable":true},"diff":{"type":"number","format":"double","nullable":true}}}},"renamed_count":{"type":"integer"},"changed":{"type":"array","items":{"type":"object","properties":{"base_image":{"type":"object","properties":{"key":{"type":"string"},"display_name":{"type":"string","nullable":true},"group":{"type":"string","nullable":true},"image_file_name":{"type":"string"},"width":{"type":"integer"},"height":{"type":"integer"},"canvas_theme":{"enum":["light","dark",null],"type":"string","nullable":true}}},"head_image":{"type":"object","properties":{"key":{"type":"string"},"display_name":{"type":"string","nullable":true},"group":{"type":"string","nullable":true},"image_file_name":{"type":"string"},"width":{"type":"integer"},"height":{"type":"integer"},"canvas_theme":{"enum":["light","dark",null],"type":"string","nullable":true}}},"diff_image_key":{"type":"string","nullable":true},"diff":{"type":"number","format":"double","nullable":true}}}},"changed_count":{"type":"integer"},"unchanged":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"display_name":{"type":"string","nullable":true},"group":{"type":"string","nullable":true},"image_file_name":{"type":"string"},"width":{"type":"integer"},"height":{"type":"integer"},"canvas_theme":{"enum":["light","dark",null],"type":"string","nullable":true}}}},"unchanged_count":{"type":"integer"},"errored":{"type":"array","items":{"type":"object","properties":{"base_image":{"type":"object","properties":{"key":{"type":"string"},"display_name":{"type":"string","nullable":true},"group":{"type":"string","nullable":true},"image_file_name":{"type":"string"},"width":{"type":"integer"},"height":{"type":"integer"},"canvas_theme":{"enum":["light","dark",null],"type":"string","nullable":true}}},"head_image":{"type":"object","properties":{"key":{"type":"string"},"display_name":{"type":"string","nullable":true},"group":{"type":"string","nullable":true},"image_file_name":{"type":"string"},"width":{"type":"integer"},"height":{"type":"integer"},"canvas_theme":{"enum":["light","dark",null],"type":"string","nullable":true}}},"diff_image_key":{"type":"string","nullable":true},"diff":{"type":"number","format":"double","nullable":true}}}},"errored_count":{"type":"integer"},"skipped":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"display_name":{"type":"string","nullable":true},"group":{"type":"string","nullable":true},"image_file_name":{"type":"string"},"width":{"type":"integer"},"height":{"type":"integer"},"canvas_theme":{"enum":["light","dark",null],"type":"string","nullable":true}}}},"skipped_count":{"type":"integer"},"diff_threshold":{"type":"number","format":"double","nullable":true},"comparison_state":{"type":"string","nullable":true},"approval_status":{"type":"string","nullable":true},"comparison_error_message":{"type":"string","nullable":true},"approvers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"username":{"type":"string","nullable":true},"avatar_url":{"type":"string","nullable":true},"approved_at":{"type":"string","nullable":true},"source":{"enum":["sentry","github"],"type":"string"}}}}}},"examples":{"SnapshotWithComparison(Diff)":{"value":{"head_artifact_id":"100","base_artifact_id":"99","project_id":"1","comparison_type":"diff","state":"UPLOADED","vcs_info":{"head_sha":"abc123def456","base_sha":"789xyz000111","provider":"github","head_repo_name":"org/repo","base_repo_name":"org/repo","head_ref":"feature-branch","base_ref":"main","pr_number":42},"app_id":"com.example.app","is_selective":false,"images":[],"image_count":1,"added":[],"added_count":0,"removed":[],"removed_count":0,"renamed":[],"renamed_count":0,"changed":[{"base_image":{"key":"old_hash_123","display_name":"Home Screen","group":"iPhone 15","image_file_name":"home_screen_iphone15.png","width":1170,"height":2532,"canvas_theme":"dark"},"head_image":{"key":"a1b2c3d4e5f6","display_name":"Home Screen","group":"iPhone 15","image_file_name":"home_screen_iphone15.png","width":1170,"height":2532,"canvas_theme":"dark"},"diff_image_key":"diff_hash_456","diff":0.02}],"changed_count":1,"unchanged":[],"unchanged_count":0,"errored":[],"errored_count":0,"skipped":[],"skipped_count":0,"diff_threshold":0.01,"comparison_state":"success","approval_status":"requires_approval","comparison_error_message":null,"approvers":[]},"summary":"Snapshot with Comparison (Diff)"},"SnapshotWithoutComparison(Solo)":{"value":{"head_artifact_id":"100","base_artifact_id":null,"project_id":"1","comparison_type":"solo","state":"UPLOADED","vcs_info":{"head_sha":"abc123def456","base_sha":null,"provider":"github","head_repo_name":"org/repo","base_repo_name":null,"head_ref":"main","base_ref":null,"pr_number":null},"app_id":"com.example.app","is_selective":false,"images":[{"key":"a1b2c3d4e5f6","display_name":"Home Screen","group":"iPhone 15","image_file_name":"home_screen_iphone15.png","width":1170,"height":2532,"canvas_theme":"dark"}],"image_count":1,"added":[],"added_count":0,"removed":[],"removed_count":0,"renamed":[],"renamed_count":0,"changed":[],"changed_count":0,"unchanged":[],"unchanged_count":0,"errored":[],"errored_count":0,"skipped":[],"skipped_count":0,"diff_threshold":0.01,"comparison_state":null,"approval_status":null,"comparison_error_message":null,"approvers":[]},"summary":"Snapshot without Comparison (Solo)"}}}},"description":""},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteOrganizationPreprodArtifactSnapshot","description":"Delete a snapshot and all associated data (images, comparisons, metrics).\n\nThis is a permanent, irreversible operation. The snapshot and its images\nwill no longer be accessible after deletion.\n\nThis endpoint requires a bearer token with `project:write` access.","summary":"Delete a Snapshot","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"snapshot_id","schema":{"type":"string"},"description":"The ID of the snapshot to delete.","required":true}],"tags":["Snapshots"],"security":[{"auth_token":["project:admin","project:releases"]}],"responses":{"204":{"description":"No response body"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/preprodartifacts/snapshots/{snapshot_id}/images/{image_identifier}/":{"get":{"operationId":"getOrganizationPreprodArtifactSnapshotImage","description":"Retrieve detailed information for a single image within a snapshot.\n\nThe `image_identifier` can be either the image filename or its content\nhash. The response includes head and base image metadata, comparison\nstatus, diff image URL, diff percentage, and previous filename for\nrenames.\n\nThis endpoint uses a flat response format with nullable fields designed\nfor LLM/MCP consumers.\n\nThis endpoint requires a bearer token with `project:read` access.","summary":"Retrieve Snapshot image detail","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"snapshot_id","schema":{"type":"string"},"description":"The ID of the snapshot.","required":true},{"in":"path","name":"image_identifier","schema":{"type":"string"},"description":"The image filename or content hash.","required":true}],"tags":["Snapshots"],"security":[{"auth_token":["org:ci","project:admin","project:read","project:releases","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"image_file_name":{"type":"string"},"comparison_status":{"type":"string","nullable":true},"head_image":{"type":"object","properties":{"key":{"type":"string"},"display_name":{"type":"string","nullable":true},"group":{"type":"string","nullable":true},"image_file_name":{"type":"string"},"width":{"type":"integer"},"height":{"type":"integer"},"canvas_theme":{"enum":["light","dark",null],"type":"string","nullable":true},"diff_threshold":{"type":"number","format":"double","nullable":true},"description":{"type":"string","nullable":true},"tags":{"type":"object","additionalProperties":{"type":"string"},"nullable":true},"image_url":{"type":"string"}},"nullable":true},"base_image":{"type":"object","properties":{"key":{"type":"string"},"display_name":{"type":"string","nullable":true},"group":{"type":"string","nullable":true},"image_file_name":{"type":"string"},"width":{"type":"integer"},"height":{"type":"integer"},"canvas_theme":{"enum":["light","dark",null],"type":"string","nullable":true},"diff_threshold":{"type":"number","format":"double","nullable":true},"description":{"type":"string","nullable":true},"tags":{"type":"object","additionalProperties":{"type":"string"},"nullable":true},"image_url":{"type":"string"}},"nullable":true},"diff_image_url":{"type":"string","nullable":true},"diff_percentage":{"type":"number","format":"double","nullable":true},"previous_image_file_name":{"type":"string","nullable":true}}},"examples":{"ChangedImage":{"value":{"image_file_name":"home_screen_iphone15.png","comparison_status":"changed","head_image":{"key":"a1b2c3d4e5f6","display_name":"Home Screen","group":"iPhone 15","image_file_name":"home_screen_iphone15.png","width":1170,"height":2532,"diff_threshold":0.01,"description":null,"tags":null,"canvas_theme":"dark","image_url":"/api/0/projects/org-slug/project-slug/files/images/a1b2c3d4e5f6/"},"base_image":{"key":"old_hash_123","display_name":"Home Screen","group":"iPhone 15","image_file_name":"home_screen_iphone15.png","width":1170,"height":2532,"diff_threshold":0.01,"description":null,"tags":null,"canvas_theme":"dark","image_url":"/api/0/projects/org-slug/project-slug/files/images/old_hash_123/"},"diff_image_url":"/api/0/projects/org-slug/project-slug/files/images/diff_hash_456/","diff_percentage":0.02,"previous_image_file_name":null},"summary":"Changed Image"},"AddedImage":{"value":{"image_file_name":"new_screen.png","comparison_status":"added","head_image":{"key":"new_hash_789","display_name":"New Screen","group":"iPhone 15","image_file_name":"new_screen.png","width":1170,"height":2532,"diff_threshold":null,"description":null,"tags":null,"canvas_theme":"light","image_url":"/api/0/projects/org-slug/project-slug/files/images/new_hash_789/"},"base_image":null,"diff_image_url":null,"diff_percentage":null,"previous_image_file_name":null},"summary":"Added Image"}}}},"description":""},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/preprodartifacts/snapshots/latest-base/":{"get":{"operationId":"getOrganizationPreprodArtifactSnapshotLatestBase","description":"Retrieve the most recent base snapshot for a given app.\n\nA base snapshot is one uploaded without a `base_sha` (i.e., a snapshot\nfrom a base branch like `main`). Use the optional `branch` and `project`\nparameters to narrow the search.\n\nThe response includes the full image list with download URLs. Use\n`compact_metadata=1` to reduce image metadata.\n\nThis endpoint requires a bearer token with `project:read` access.","summary":"Retrieve latest base Snapshot","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"app_id","schema":{"type":"string"},"description":"App identifier to match.","required":true},{"in":"query","name":"branch","schema":{"type":"string"},"description":"Git branch name to filter on."},{"in":"query","name":"project","schema":{"anyOf":[{"type":"integer"},{"type":"string"}]},"description":"Project ID or slug to scope the lookup."},{"in":"query","name":"compact_metadata","schema":{"type":"string"},"description":"Set to '1' or 'true' to strip image metadata to display_name, image_file_name, group, description, and image_url only."}],"tags":["Snapshots"],"security":[{"auth_token":["org:ci","project:admin","project:read","project:releases","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"head_artifact_id":{"type":"string"},"project_id":{"type":"string"},"project_slug":{"type":"string"},"app_id":{"type":"string","nullable":true},"image_count":{"type":"integer"},"images":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"display_name":{"type":"string","nullable":true},"group":{"type":"string","nullable":true},"image_file_name":{"type":"string"},"width":{"type":"integer"},"height":{"type":"integer"},"canvas_theme":{"enum":["light","dark",null],"type":"string","nullable":true},"image_url":{"type":"string"}}}},"diff_threshold":{"type":"number","format":"double","nullable":true},"date_added":{"type":"string"},"vcs_info":{"type":"object","properties":{"head_sha":{"type":"string","nullable":true},"base_sha":{"type":"string","nullable":true},"head_ref":{"type":"string","nullable":true},"base_ref":{"type":"string","nullable":true},"head_repo_name":{"type":"string","nullable":true},"pr_number":{"type":"integer","nullable":true}}}}},"examples":{"LatestBaseSnapshot":{"value":{"head_artifact_id":"99","project_id":"1","project_slug":"my-project","app_id":"com.example.app","image_count":2,"images":[{"key":"a1b2c3d4e5f6","display_name":"Home Screen","group":"iPhone 15","image_file_name":"home_screen_iphone15.png","width":1170,"height":2532,"canvas_theme":"dark","image_url":"/api/0/projects/org-slug/my-project/files/images/a1b2c3d4e5f6/"}],"diff_threshold":0.01,"date_added":"2025-01-15T10:30:00+00:00","vcs_info":{"head_sha":"abc123def456","base_sha":null,"head_ref":"main","base_ref":null,"head_repo_name":"org/repo","pr_number":null}},"summary":"Latest Base Snapshot"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/profiling/chunks/":{"get":{"operationId":"listOrganizationProfilingChunks","description":"Retrieve continuous profiling data for a profiler over a time range.\n\nExactly one project must be specified via the `project` query parameter.\n\nRequires continuous profiling to be enabled for the organization.","summary":"Retrieve Profile Chunks for an Organization","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"project","schema":{"type":"string"},"description":"The ID or slug of the project to fetch chunks for. Exactly one project must be specified.","required":true},{"in":"query","name":"profiler_id","schema":{"type":"string","format":"uuid"},"description":"The continuous-profiler ID to fetch chunks for.","required":true},{"in":"query","name":"statsPeriod","schema":{"type":"string"},"description":"The period of time for the query, will override the start & end parameters, a number followed by one of:\n- `d` for days\n- `h` for hours\n- `m` for minutes\n- `s` for seconds\n- `w` for weeks\n\nFor example, `24h`, to mean query data starting from 24 hours ago to now."},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."}],"tags":["Profiling"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{}},"examples":{"ReturnContinuous-profileChunksForAProfiler":{"value":{"chunk":{"chunk_id":"0123456789abcdef0123456789abcdef","profiler_id":"fedcba9876543210fedcba9876543210","project_id":1,"organization_id":1,"environment":"production","platform":"python","release":"1.0.0","received":1779957840,"retention_days":30,"version":"2","profile":{"samples":[{"stack_id":0,"thread_id":"1","timestamp":1779957840}],"stacks":[[0,1]],"frames":[{"function":"main","module":"app.main","in_app":true,"lineno":10},{"function":"do_work","module":"app.worker","in_app":true,"lineno":42}],"thread_metadata":{"1":{"name":"MainThread"}}}},"debug_chunk_ids":["0123456789abcdef0123456789abcdef"]},"summary":"Return continuous-profile chunks for a profiler"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/profiling/flamegraph/":{"get":{"operationId":"getOrganizationProfilingFlamegraph","description":"Retrieve an aggregated flamegraph for the organization, built from the\nrequested data source (transactions, profiles, functions, or spans).\n\nPass `expand=metrics` to include aggregated function metrics in the response.\n\nRequires profiling to be enabled for the organization.","summary":"Retrieve a Flamegraph for an Organization","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects.\nFor example, the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=android&project=javascript-react`\n- `/?project=-1`\n"},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."},{"in":"query","name":"statsPeriod","schema":{"type":"string"},"description":"The period of time for the query, will override the start & end parameters, a number followed by one of:\n- `d` for days\n- `h` for hours\n- `m` for minutes\n- `s` for seconds\n- `w` for weeks\n\nFor example, `24h`, to mean query data starting from 24 hours ago to now."},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"dataSource","schema":{"type":"string","enum":["functions","profiles","spans","transactions"]},"description":"Source dataset to build the flamegraph from. Defaults to `functions` when `fingerprint` is set and `transactions` otherwise."},{"in":"query","name":"fingerprint","schema":{"type":"integer"},"description":"A UInt32 function fingerprint. Only valid when `dataSource=functions`."},{"in":"query","name":"query","schema":{"type":"string"},"description":"Sentry [search syntax](https://docs.sentry.io/concepts/search/) to filter the candidate profiles."},{"in":"query","name":"expand","schema":{"type":"array","items":{"type":"string","enum":["metrics"]}},"description":"Optional expansions. Pass `metrics` to include flamegraph metric aggregates in the response."}],"tags":["Profiling"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{}},"examples":{"ReturnAFlamegraphForTheOrganization":{"value":{"activeProfileIndex":0,"metadata":{"deviceClassification":"","deviceLocale":"","deviceManufacturer":"","deviceModel":"","deviceOSName":"","deviceOSVersion":"","durationNS":0,"organizationID":0,"platform":"python","profileID":"","projectID":0,"received":"2026-04-15T18:22:31Z","sampled":false,"timestamp":"2026-04-15T18:22:31Z","traceID":"","transactionID":"","transactionName":"GET /api/0/projects/{org}/{proj}/files/dsyms/","version":""},"platform":"python","transactionName":"GET /api/0/projects/{org}/{proj}/files/dsyms/","projectID":1,"shared":{"frames":[{"name":"handle_request","file":"app/web.py","is_application":true,"line":88,"fingerprint":1111111111},{"name":"do_work","file":"app/worker.py","is_application":true,"line":42,"fingerprint":2222222222},{"name":"loads","file":"json/__init__.py","is_application":false,"line":299,"fingerprint":3333333333}],"frame_infos":[{"count":40,"weight":40,"sumDuration":4000000000,"sumSelfTime":0,"p75Duration":110000000,"p95Duration":180000000,"p99Duration":240000000},{"count":40,"weight":40,"sumDuration":4000000000,"sumSelfTime":1000000000,"p75Duration":95000000,"p95Duration":150000000,"p99Duration":210000000},{"count":30,"weight":30,"sumDuration":3000000000,"sumSelfTime":3000000000,"p75Duration":81000000,"p95Duration":120000000,"p99Duration":160000000}],"profiles":[{"project_id":1,"profile_id":"a1b2c3d4e5f60718293a4b5c6d7e8f90","start":1780084617.323,"end":1780084617.8065438}]},"profiles":[{"endValue":40,"isMainThread":true,"name":"MainThread","samples":[[0,1,2],[0,1]],"sample_counts":[30,10],"samples_examples":[[0],[0]],"sample_durations_ns":[3000000000,1000000000],"startValue":0,"threadID":1,"type":"sampled","unit":"count","weights":[30,10]}],"metrics":null},"summary":"Return a flamegraph for the organization"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/project-keys/":{"get":{"operationId":"listOrganizationProjectKeys","description":"Return a list of client keys (DSNs) for all projects in an organization.\n\nThis paginated endpoint lists client keys across all projects in an organization. Each key includes the project ID\nto identify which project it belongs to.\n\nQuery Parameters:\n- team: Filter by team slug or ID to get keys only for that team's projects\n- status: Filter by 'active' or 'inactive' to get keys with specific status","summary":"List an Organization's Client Keys","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"},{"in":"query","name":"team","schema":{"type":"string","minLength":1},"description":"Filter keys by team slug or ID. If provided, only keys for projects belonging to this team will be returned."},{"in":"query","name":"status","schema":{"enum":["active","inactive"],"type":"string","minLength":1},"description":"Filter keys by status. Options are 'active' or 'inactive'.\n\n* `active`\n* `inactive`"}],"tags":["Organizations"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","description":"This represents a Sentry Project Client Key.","properties":{"id":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"public":{"type":"string","nullable":true},"secret":{"type":"string","nullable":true},"projectId":{"type":"integer"},"isActive":{"type":"boolean"},"rateLimit":{"type":"object","properties":{"window":{"type":"integer"},"count":{"type":"integer"}},"required":["count","window"],"nullable":true},"dsn":{"type":"object","properties":{"secret":{"type":"string"},"public":{"type":"string"},"csp":{"type":"string"},"security":{"type":"string"},"minidump":{"type":"string"},"nel":{"type":"string"},"unreal":{"type":"string"},"crons":{"type":"string"},"cdn":{"type":"string"},"playstation":{"type":"string"},"integration":{"type":"string"},"otlp_traces":{"type":"string"},"otlp_logs":{"type":"string"}},"required":["cdn","crons","csp","integration","minidump","nel","otlp_logs","otlp_traces","playstation","public","secret","security","unreal"]},"browserSdkVersion":{"type":"string"},"browserSdk":{"type":"object","properties":{"choices":{"type":"array","items":{"type":"array","items":{"type":"string"}}}},"required":["choices"]},"dateCreated":{"type":"string","format":"date-time","nullable":true},"dynamicSdkLoaderOptions":{"type":"object","properties":{"hasReplay":{"type":"boolean"},"hasPerformance":{"type":"boolean"},"hasDebug":{"type":"boolean"},"hasFeedback":{"type":"boolean"},"hasLogsAndMetrics":{"type":"boolean"}},"required":["hasDebug","hasFeedback","hasLogsAndMetrics","hasPerformance","hasReplay"]},"useCase":{"type":"string"}},"required":["browserSdk","browserSdkVersion","dateCreated","dsn","dynamicSdkLoaderOptions","id","isActive","label","name","projectId","public","rateLimit","secret"]}},"examples":{"ListClientKeysForAllProjectsInAnOrganization":{"value":[{"id":"60120449b6b1d5e45f75561e6dabd80b","name":"Liked Pegasus","label":"Liked Pegasus","public":"60120449b6b1d5e45f75561e6dabd80b","secret":"189485c3b8ccf582bf5e12c530ef8858","projectId":4505281256090153,"isActive":true,"rateLimit":{"window":7200,"count":1000},"dsn":{"secret":"https://a785682ddda742d7a8a4088810e67701:bcd99b3790b3441c85ce4b1eaa854f66@o4504765715316736.ingest.sentry.io/4505281256090153","public":"https://a785682ddda742d7a8a4088810e67791@o4504765715316736.ingest.sentry.io/4505281256090153","csp":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/csp-report/?sentry_key=a785682ddda719b7a8a4011110d75598","security":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/security/?sentry_key=a785682ddda719b7a8a4011110d75598","minidump":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/minidump/?sentry_key=a785682ddda719b7a8a4011110d75598","playstation":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/playstation/?sentry_key=a785682ddda719b7a8a4011110d75598","integration":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/integration/","otlp_traces":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/integration/otlp/v1/traces","otlp_logs":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/integration/otlp/v1/logs","nel":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/nel/?sentry_key=a785682ddda719b7a8a4011110d75598","unreal":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/unreal/a785682ddda719b7a8a4011110d75598/","cdn":"https://js.sentry-cdn.com/a785682ddda719b7a8a4011110d75598.min.js","crons":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/crons/___MONITOR_SLUG___/a785682ddda719b7a8a4011110d75598/"},"browserSdkVersion":"7.x","browserSdk":{"choices":[["latest","latest"],["7.x","7.x"]]},"dateCreated":"2023-06-21T19:50:26.036254Z","dynamicSdkLoaderOptions":{"hasReplay":true,"hasPerformance":true,"hasDebug":true,"hasFeedback":false,"hasLogsAndMetrics":false}},{"id":"da8d69cb17e80677b76e08fde4656b93","name":"Bold Oarfish","label":"Bold Oarfish","public":"da8d69cb17e80677b76e08fde4656b93","secret":"5c241ebc42ccfbec281cbefbedc7ab96","projectId":4505281256090153,"isActive":true,"rateLimit":null,"dsn":{"secret":"https://a785682ddda742d7a8a4088810e67701:bcd99b3790b3441c85ce4b1eaa854f66@o4504765715316736.ingest.sentry.io/4505281256090153","public":"https://a785682ddda742d7a8a4088810e67791@o4504765715316736.ingest.sentry.io/4505281256090153","csp":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/csp-report/?sentry_key=a785682ddda719b7a8a4011110d75598","security":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/security/?sentry_key=a785682ddda719b7a8a4011110d75598","minidump":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/minidump/?sentry_key=a785682ddda719b7a8a4011110d75598","playstation":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/playstation/?sentry_key=a785682ddda719b7a8a4011110d75598","integration":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/integration/","otlp_traces":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/integration/otlp/v1/traces","otlp_logs":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/integration/otlp/v1/logs","nel":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/nel/?sentry_key=a785682ddda719b7a8a4011110d75598","unreal":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/unreal/a785682ddda719b7a8a4011110d75598/","cdn":"https://js.sentry-cdn.com/a785682ddda719b7a8a4011110d75598.min.js","crons":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/crons/___MONITOR_SLUG___/a785682ddda719b7a8a4011110d75598/"},"browserSdkVersion":"7.x","browserSdk":{"choices":[["latest","latest"],["7.x","7.x"]]},"dateCreated":"2023-06-21T19:50:26.036254Z","dynamicSdkLoaderOptions":{"hasReplay":true,"hasPerformance":true,"hasDebug":true,"hasFeedback":false,"hasLogsAndMetrics":false}}],"summary":"List client keys for all projects in an organization"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/projects/":{"get":{"operationId":"listOrganizationProjects","description":"Return a list of projects bound to a organization.","summary":"List an Organization's Projects","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"},{"in":"query","name":"per_page","schema":{"type":"integer"},"description":"Limit the number of rows to return in the result. Default and maximum allowed is 100."},{"in":"query","name":"query","schema":{"type":"string"},"description":"Filter projects by name or slug."}],"tags":["Organizations"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"latestDeploys":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"string"}},"nullable":true},"options":{"type":"object","additionalProperties":{}},"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"team":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"],"nullable":true},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]}},"platforms":{"type":"array","items":{"type":"string"}},"hasUserReports":{"type":"boolean"},"environments":{"type":"array","items":{"type":"string"}},"latestRelease":{"type":"object","properties":{"version":{"type":"string"}},"required":["version"],"nullable":true}},"required":["access","dateCreated","environments","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","hasUserReports","id","isBookmarked","isMember","latestRelease","name","platform","platforms","slug","team","teams"]}},"examples":{"ListAnOrganization'sProjects":{"value":[{"slug":"prime-mover","name":"Prime Mover","dateCreated":"2018-11-06T21:19:58.536Z","firstEvent":null,"access":[],"hasAccess":true,"id":"3","isBookmarked":false,"isMember":true,"platform":"","platforms":[],"team":{"id":"2","name":"Powerful Abolitionist","slug":"powerful-abolitionist"},"teams":[{"id":"2","name":"Powerful Abolitionist","slug":"powerful-abolitionist"}],"environments":["local"],"features":["releases"],"firstTransactionEvent":true,"hasSessions":true,"hasProfiles":true,"hasReplays":true,"hasFlags":true,"hasMinifiedStackTrace":false,"hasMonitors":true,"hasFeedbacks":false,"hasNewFeedbacks":false,"hasUserReports":false,"hasInsightsHttp":true,"hasInsightsDb":false,"hasInsightsAssets":true,"hasInsightsAppStart":false,"hasInsightsScreenLoad":false,"hasInsightsVitals":false,"hasInsightsCaches":false,"hasInsightsQueues":false,"hasInsightsAgentMonitoring":false,"hasInsightsMCP":false,"hasLogs":false,"hasTraceMetrics":false,"latestRelease":null}],"summary":"List an organization's projects"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"post":{"operationId":"createOrganizationProject","description":"Create a new project for an organization. A personal team (`team-{username}`) is automatically created for the caller with Team Admin role, and the project is bound to it. If the org has member project creation disabled (`disable_member_project_creation`), `org:write` scope is required.","summary":"Create a Project for an Organization","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["Projects"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name for the project.","maxLength":50},"slug":{"type":"string","nullable":true,"description":"Uniquely identifies a project and is used for the interface.\n If not provided, it is automatically generated from the name.","maxLength":100,"pattern":"^(?![0-9]+$)[a-z0-9_\\-]+$"},"platform":{"type":"string","nullable":true,"description":"The platform for the project."},"default_rules":{"type":"boolean","description":"\nDefaults to true where the behavior is to alert the user on every new\nissue. Setting this to false will turn this off and the user must create\ntheir own alerts to be notified of new issues.\n "}},"required":["name"]}}},"required":true},"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"latestDeploys":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"string"}},"nullable":true},"options":{"type":"object","additionalProperties":{}},"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"team":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"],"nullable":true},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]}},"platforms":{"type":"array","items":{"type":"string"}},"hasUserReports":{"type":"boolean"},"environments":{"type":"array","items":{"type":"string"}},"latestRelease":{"type":"object","properties":{"version":{"type":"string"}},"required":["version"],"nullable":true}},"required":["access","dateCreated","environments","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","hasUserReports","id","isBookmarked","isMember","latestRelease","name","platform","platforms","slug","team","teams"]},"examples":{"ProjectSuccessfullyCreated":{"value":{"team":{"id":"2349234102","name":"Prime Mover","slug":"prime-mover"},"teams":[{"id":"2349234102","name":"Prime Mover","slug":"prime-mover"},{"id":"47584447","name":"Powerful Abolitionist","slug":"powerful-abolitionist"}],"id":"6758470122493650","slug":"the-spoiled-yoghurt","name":"The Spoiled Yoghurt","isBookmarked":false,"isMember":true,"access":["project:read","event:read","team:read","alerts:read","org:read","event:write","project:releases","member:read"],"hasAccess":true,"dateCreated":"2023-03-29T15:25:21.344565Z","environments":["production"],"features":["custom-inbound-filters","discard-groups","minidump","rate-limits","servicehooks","similarity-indexing","similarity-indexing-v2","similarity-view","similarity-view-v2"],"firstEvent":null,"firstTransactionEvent":true,"hasSessions":false,"hasProfiles":false,"hasReplays":false,"hasFlags":false,"hasMonitors":false,"hasFeedbacks":false,"hasNewFeedbacks":false,"hasMinifiedStackTrace":false,"hasInsightsHttp":true,"hasInsightsDb":false,"hasInsightsAssets":false,"hasInsightsAppStart":false,"hasInsightsScreenLoad":false,"hasInsightsVitals":false,"hasInsightsCaches":true,"hasInsightsQueues":true,"hasInsightsAgentMonitoring":false,"hasInsightsMCP":false,"hasLogs":false,"hasTraceMetrics":false,"platform":"node-express","platforms":[],"latestRelease":null,"hasUserReports":false,"latestDeploys":null},"summary":"Project successfully created"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"409":{"description":"Conflict"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/projects/{project_id_or_slug}/detectors/":{"post":{"operationId":"createOrganizationProjectDetector","description":"Create a Monitor for a project","summary":"Create a Monitor for a Project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Monitors"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"name":{"type":"string","description":"Name of the monitor.","maxLength":200},"type":{"type":"string","description":"The type of monitor - `metric_issue`."},"workflow_ids":{"type":"array","items":{"type":"integer"},"description":"The IDs of the alerts to connect this monitor to. Use the 'Fetch Alerts' endpoint to find the IDs."},"data_sources":{"type":"array","items":{},"description":"\n The data sources for the metric monitor to use based on what you want to measure.\n\n `timeWindow` is measured in seconds. Cron Monitors use schedules instead of this field.\n Legacy metric alert rules expressed this value in minutes, so multiply a legacy value\n by 60 when migrating it to a monitor. For example, a legacy 5-minute window becomes\n `\"timeWindow\": 300`.\n\n **Number of Errors Metric Monitor**\n - `eventTypes`: Any of `error` or `default`.\n ```json\n [\n {\n \"aggregate\": \"count()\",\n \"dataset\" : \"events\",\n \"environment\": \"prod\",\n \"eventTypes\": [\"default\", \"error\"],\n \"query\": \"is:unresolved\",\n \"queryType\": 0,\n \"timeWindow\": 3600\n }\n ]\n ```\n\n **Users Experiencing Errors Metric Monitor**\n - `eventTypes`: Any of `error` or `default`.\n ```json\n [\n {\n \"aggregate\": \"count_unique(tags[sentry:user])\",\n \"dataset\" : \"events\",\n \"environment\": \"prod\",\n \"eventTypes\": [\"default\", \"error\"],\n \"query\": \"is:unresolved\",\n \"queryType\": 0,\n \"timeWindow\": 3600\n }\n ]\n ```\n\n\n **Throughput Metric Monitor**\n ```json\n [\n {\n \"aggregate\":\"count(span.duration)\",\n \"dataset\":\"events_analytics_platform\",\n \"environment\":\"prod\",\n \"eventTypes\":[\"trace_item_span\"],\n \"query\":\"\",\n \"queryType\":1,\n \"timeWindow\":3600,\n \"extrapolationMode\":\"unknown\"\n }\n ]\n ```\n\n **Duration Metric Monitor**\n ```json\n [\n {\n \"aggregate\":\"p95(span.duration)\",\n \"dataset\":\"events_analytics_platform\",\n \"environment\":\"prod\",\n \"eventTypes\":[\"trace_item_span\"],\n \"query\":\"\",\n \"queryType\":1,\n \"timeWindow\":3600,\n \"extrapolationMode\":\"unknown\"\n }\n ]\n ```\n\n **Failure Rate Metric Monitor**\n ```json\n [\n {\n \"aggregate\":\"failure_rate()\",\n \"dataset\":\"events_analytics_platform\",\n \"environment\":\"prod\",\n \"eventTypes\":[\"trace_item_span\"],\n \"query\":\"\",\n \"queryType\":1,\n \"timeWindow\":3600,\n \"extrapolationMode\":\"unknown\"\n }\n ]\n ```\n\n **Largest Contentful Paint Metric Monitor**\n - `dataset`: Use `events_analytics_platform`. To query transaction spans, add `is_transaction:true` to `query`.\n - `aggregate`: Valid values are `avg(measurements.lcp)`, `p50(measurements.lcp)`, `p75(measurements.lcp)`, `p95(measurements.lcp)`, `p99(measurements.lcp)`, `p100(measurements.lcp)`, and `percentile(measurements.lcp,x)`, where `x` is your custom percentile.\n\n ```json\n [\n {\n \"aggregate\":\"p95(measurements.lcp)\",\n \"dataset\":\"events_analytics_platform\",\n \"environment\":\"prod\",\n \"eventTypes\":[\"trace_item_span\"],\n \"query\":\"is_transaction:true\",\n \"queryType\":1,\n \"timeWindow\":3600,\n \"extrapolationMode\":\"unknown\"\n }\n ]\n ```\n\n **Custom Metric Monitor**\n - `dataset`: Use `events_analytics_platform`. To query transaction spans, add `is_transaction:true` to `query`.\n - `aggregate`: Valid values are:\n `avg(x)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.\n `p50(x)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.\n `p75(x)`, where x is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.\n `p95(x)`, where x is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.\n `p99(x)`, where x is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.\n `p100(x)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.\n `percentile(x,y)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`, and `y` is the custom percentile.\n `failure_rate()`\n `apdex(x)`, where `x` is the value of the Apdex score.\n `count()`\n\n ```json\n [\n {\n \"aggregate\": \"p75(measurements.ttfb)\",\n \"dataset\": \"events_analytics_platform\",\n \"environment\": \"prod\",\n \"queryType\": 1,\n \"eventTypes\": [\"trace_item_span\"],\n \"query\": \"is_transaction:true\",\n \"timeWindow\": 3600,\n \"extrapolationMode\": \"unknown\"\n }\n ]\n ```\n"},"config":{"type":"object","additionalProperties":{},"description":"\n The issue detection type configuration.\n\n\n - `detectionType`\n - `static`: Threshold based monitor\n - `percent`: Change based monitor\n - `dynamic`: Dynamic monitor\n - `comparisonDelta`: If selecting a **change** detection type, the comparison delta is the time period, in seconds, at which to compare against historical data.\n For example, a value of 3600 compares the metric tracked against data 1 hour ago.\n - `300`: 5 minutes\n - `900`: 15 minutes\n - `3600`: 1 hour\n - `86400`: 1 day\n - `604800`: 1 week\n - `2592000`: 1 month\n\n **Threshold**\n ```json\n {\n \"detectionType\": \"static\"\n }\n ```\n **Change**\n ```json\n {\n \"detectionType\": \"percent\",\n \"comparisonDelta\": 3600\n }\n ```\n **Dynamic**\n ```json\n {\n \"detectionType\": \"dynamic\"\n }\n ```\n "},"condition_group":{"allOf":[{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"id":{"type":"integer"},"logic_type":{"enum":["any","any-short","all","none"],"type":"string","description":"* `any`\n* `any-short`\n* `all`\n* `none`"},"conditions":{"type":"array","items":{}}},"required":["logic_type"]}],"description":"\n Issue detection configuration for when to create an issue and at what priority level.\n\n\n - `logicType`: `any`\n - `type`: Any of `gt` (greater than), `lte` (less than or equal), or `anomaly_detection` (dynamic)\n - `comparison`: Any positive integer. This is threshold that must be crossed for the monitor to create an issue, e.g. \"Create a metric issue when there are more than 5 unresolved error events\".\n - If creating a **dynamic** monitor, see the options below.\n - `seasonality`: `auto`\n - `sensitivity`: Level of responsiveness. Options are one of `low`, `medium`, or `high`\n - `thresholdType`: If you want to be alerted to anomalies that are moving above, below, or in both directions in relation to your threshold.\n - `0`: Above\n - `1`: Below\n - `2`: Above and below\n\n - `conditionResult`: The issue state change when the threshold is crossed.\n - `75`: High priority\n - `50`: Low priority\n - `0`: Resolved\n\n\n **Threshold and Change Monitor**\n ```json\n \"logicType\": \"any\",\n \"conditions\": [\n {\n \"type\": \"gt\",\n \"comparison\": 10,\n \"conditionResult\": 75\n },\n {\n \"type\": \"lte\",\n \"comparison\": 10,\n \"conditionResult\": 0\n }\n ],\n \"actions\": []\n ```\n\n **Threshold Monitor with Medium Priority**\n ```json\n \"logicType\": \"any\",\n \"conditions\": [\n {\n type: \"gt\",\n comparison: 5,\n conditionResult: 75\n },\n {\n type: \"gt\",\n comparison: 2,\n conditionResult: 50\n },\n {\n type: \"lte\",\n comparison: 2,\n conditionResult: 0\n }\n ],\n \"actions\": []\n ```\n\n **Dynamic Monitor**\n ```json\n \"logicType\": \"any\",\n \"conditions\": [\n {\n \"type\": \"anomaly_detection\",\n \"comparison\": {\n \"seasonality\": \"auto\",\n \"sensitivity\": \"medium\",\n \"thresholdType\": 2\n },\n \"conditionResult\": 75\n }\n ],\n \"actions\": []\n ```\n "},"owner":{"type":"string","nullable":true,"description":"\n The ID user or team who owns the monitor or alert prefaced by the string 'user' or 'team'.\n\n **User**\n ```json\n \"user:123456\"\n ```\n\n **Team**\n ```json\n \"team:456789\"\n ```\n "},"description":{"type":"string","nullable":true,"description":"A description of the monitor. Will be used in the resulting issue."},"enabled":{"type":"boolean","description":"Set to False if you want to disable the monitor."}},"required":["name","type"]}}},"required":true},"security":[{"auth_token":["alerts:write","project:admin","project:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"owner":{"type":"object","properties":{"type":{"enum":["user","team"],"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["id","name","type"],"nullable":true},"createdBy":{"type":"string","nullable":true},"latestGroup":{"type":"object","additionalProperties":{},"nullable":true},"description":{"type":"string","nullable":true},"id":{"type":"string"},"projectId":{"type":"string","nullable":true},"name":{"type":"string"},"type":{"type":"string"},"workflowIds":{"type":"array","items":{"type":"string"},"nullable":true},"dateCreated":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"dataSources":{"type":"array","items":{"type":"object","additionalProperties":{}},"nullable":true},"conditionGroup":{"type":"object","additionalProperties":{},"nullable":true},"config":{"type":"object","additionalProperties":{}},"enabled":{"type":"boolean"}},"required":["conditionGroup","config","dataSources","dateCreated","dateUpdated","enabled","id","name","projectId","type","workflowIds"]},"examples":{"MonitorSuccessfullyCreated":{"value":{"id":"12345","projectId":"1","name":"Example metric monitor","description":"Example description","type":"metric_issue","workflowIds":[],"owner":{"type":"user","id":"12345","name":"Jane Doe","email":"jane@sentry.io"},"createdBy":"12345","dateCreated":"2026-01-08T23:45:13.235259Z","dateUpdated":"2026-01-08T23:45:13.235243Z","dataSources":[{"id":"123456","organizationId":"1","type":"snuba_query_subscription","sourceId":"12345","queryObj":{"id":"23456","status":1,"subscription":null,"snubaQuery":{"id":"45678","dataset":"events","query":"is:unresolved","aggregate":"count()","timeWindow":3600,"environment":null,"eventTypes":["error","default"],"extrapolationMode":"unknown"}}}],"conditionGroup":{"id":"1234567","organizationId":"1","logicType":"any","conditions":[{"id":"2345677","type":"gt","comparison":10,"conditionResult":75},{"id":"567891","type":"lte","comparison":10,"conditionResult":0}],"actions":[]},"config":{"detectionType":"static"},"enabled":true,"latestGroup":null},"summary":"Monitor successfully created"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/relay_usage/":{"get":{"operationId":"listOrganizationRelayUsage","description":"Return a list of trusted relays bound to an organization.","summary":"List an Organization's trusted Relays","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["Organizations"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"relayId":{"type":"string"},"version":{"type":"string"},"publicKey":{"type":"string","nullable":true},"firstSeen":{"type":"string","format":"date-time"},"lastSeen":{"type":"string","format":"date-time"}},"required":["firstSeen","lastSeen","publicKey","relayId","version"]}},"examples":{"ListAnOrganization'sTrustedRelays":{"value":[{"relayId":"0123abcd-4567-efgh-ij89-012aaa456bbb","version":"23.11.2","firstSeen":"2023-12-10T00:00:00.000000Z","lastSeen":"2023-12-20T22:22:22.222222Z","publicKey":"asdfa54g9987ga9dfha0f8adfhkj324-dafd78321-I"}],"summary":"List an organization's trusted relays"}}}},"description":""},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/release-threshold-statuses/":{"get":{"operationId":"listOrganizationReleaseThresholdStatuses","description":"**Experimental:** This API is under active development and may change.\n\nList all derived statuses of releases that fall within the provided start/end datetimes.\n\nConstructs a response key'd off \\{`release_version`\\}-\\{`project_slug`\\} that lists thresholds with their status for *specified* projects.\nEach returned enriched threshold will contain the full serialized `release_threshold` instance as well as it's derived health statuses.","summary":"Retrieve Statuses of Release Thresholds (Alpha)","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"The start of the time series range as an explicit datetime, either in UTC ISO8601 or epoch seconds. Use along with `end`.","required":true},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"The inclusive end of the time series range as an explicit datetime, either in UTC ISO8601 or epoch seconds. Use along with `start`.","required":true},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"A list of environment names to filter your results by."},{"in":"query","name":"projectSlug","schema":{"type":"array","items":{"type":"string"}},"description":"A list of project slugs to filter your results by."},{"in":"query","name":"release","schema":{"type":"array","items":{"type":"string"}},"description":"A list of release versions to filter your results by."},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"A list of project IDs or slugs to filter your results by."}],"tags":["Releases"],"security":[{"auth_token":["org:ci","project:admin","project:read","project:releases","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"date_added":{"type":"string","format":"date-time"},"environment":{"type":"object","additionalProperties":{},"nullable":true},"project":{"type":"object","additionalProperties":{}},"release":{"type":"string"},"threshold_type":{"enum":["total_error_count","new_issue_count","unhandled_issue_count","regressed_issue_count","failure_rate","crash_free_session_rate","crash_free_user_rate"],"type":"string"},"trigger_type":{"enum":["over","under"],"type":"string"},"value":{"type":"integer"},"window_in_seconds":{"type":"integer"},"end":{"type":"string","format":"date-time"},"is_healthy":{"type":"boolean"},"key":{"type":"string"},"project_slug":{"type":"string"},"project_id":{"type":"integer"},"start":{"type":"string","format":"date-time"},"metric_value":{"anyOf":[{"type":"integer"},{"type":"number","format":"double"},{"type":"object","nullable":true}]}},"required":["end","is_healthy","key","metric_value","project_id","project_slug","start"]}}},"examples":{"ClientKeyWithRateLimiting":{"value":{"the-spoiled-yoghurt-v1.0.0":[{"project_id":0,"project_slug":"the-spoiled-yoghurt","environment":{"name":"production"},"project":{"id":"4505321021243392","slug":"the-spoiled-yoghurt","name":"The Spoiled Yoghurt","platform":"python","dateCreated":"2023-06-08T00:13:06.004534Z","isBookmarked":false,"isMember":true,"features":["custom-inbound-filters","discard-groups","minidump","rate-limits","servicehooks","similarity-indexing","similarity-indexing-v2","similarity-view","similarity-view-v2"],"firstEvent":null,"firstTransactionEvent":false,"access":["member:read","event:read","project:admin","team:write","project:write","team:admin","project:read","org:integrations","org:read","project:releases","team:read","alerts:write","event:admin","event:write","alerts:read"],"hasAccess":true,"hasMinifiedStackTrace":false,"hasFeedbacks":false,"hasMonitors":false,"hasNewFeedbacks":false,"hasProfiles":false,"hasReplays":false,"hasFlags":false,"hasSessions":false,"hasInsightsHttp":true,"hasInsightsDb":false,"hasInsightsAssets":true,"hasInsightsAppStart":false,"hasInsightsScreenLoad":false,"hasInsightsVitals":false,"hasInsightsCaches":false,"hasInsightsQueues":false,"hasInsightsAgentMonitoring":false,"hasInsightsMCP":false,"hasLogs":false,"hasTraceMetrics":false,"isInternal":false,"isPublic":false,"avatar":{"avatarType":"letter_avatar","avatarUuid":null},"color":"#3f70bf","status":"active"},"threshold_type":"total_error_count","trigger_type":"over","value":100,"window_in_seconds":600,"key":"foobar-v1.0.0","release":"the-spoiled-yoghurt-v1.0.0","is_healthy":true,"start":"2022-02-14T19:00:00Z","end":"2022-02-28T18:03:00Z","metric_value":0.1}]},"summary":"Client key with rate limiting"}}}},"description":""},"400":{"description":"Bad Request"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"},"x-sentry-experimental":true}},"/api/0/organizations/{organization_id_or_slug}/releases/":{"get":{"operationId":"listOrganizationReleases","description":"Return a list of releases for a given organization, sorted by most recent.","summary":"List an Organization's Releases","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects.\nFor example, the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=android&project=javascript-react`\n- `/?project=-1`\n"},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."},{"in":"query","name":"query","schema":{"type":"string"},"description":"Case-insensitive substring match against the release version."},{"in":"query","name":"per_page","schema":{"type":"integer"},"description":"Limit the number of rows to return in the result. Default and maximum allowed is 100."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Releases"],"security":[{"auth_token":["org:ci","project:admin","project:read","project:releases","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"dateReleased":{"type":"string","format":"date-time","nullable":true},"dateCreated":{"type":"string","format":"date-time","nullable":true},"dateStarted":{"type":"string","format":"date-time","nullable":true},"owner":{"type":"object","additionalProperties":{},"nullable":true},"lastCommit":{"type":"object","additionalProperties":{},"nullable":true},"lastDeploy":{"type":"object","properties":{"dateStarted":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"id":{"type":"string"},"environment":{"type":"string"},"dateFinished":{"type":"string"},"name":{"type":"string"}},"required":["dateFinished","environment","id","name"],"nullable":true},"firstEvent":{"type":"string","format":"date-time","nullable":true},"lastEvent":{"type":"string","format":"date-time","nullable":true},"currentProjectMeta":{"type":"object","additionalProperties":{},"nullable":true},"userAgent":{"type":"string","nullable":true},"adoptionStages":{"type":"object","additionalProperties":{},"nullable":true},"id":{"type":"integer"},"version":{"type":"string"},"newGroups":{"type":"integer"},"status":{"type":"string"},"shortVersion":{"type":"string"},"versionInfo":{"type":"object","properties":{"description":{"type":"string"},"package":{"type":"string","nullable":true},"version":{"type":"object","additionalProperties":{}},"buildHash":{"type":"string","nullable":true}},"required":["buildHash","package","version"],"nullable":true},"data":{"type":"object","additionalProperties":{}},"commitCount":{"type":"integer"},"deployCount":{"type":"integer"},"authors":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string"}},"required":["email","name"]}]}},"projects":{"type":"array","items":{"type":"object","properties":{"healthData":{"type":"object","properties":{"durationP50":{"type":"number","format":"double","nullable":true},"durationP90":{"type":"number","format":"double","nullable":true},"crashFreeUsers":{"type":"number","format":"double","nullable":true},"crashFreeSessions":{"type":"number","format":"double","nullable":true},"totalUsers":{"type":"integer","nullable":true},"totalUsers24h":{"type":"integer","nullable":true},"totalProjectUsers24h":{"type":"integer","nullable":true},"totalSessions":{"type":"integer","nullable":true},"totalSessions24h":{"type":"integer","nullable":true},"totalProjectSessions24h":{"type":"integer","nullable":true},"adoption":{"type":"number","format":"double","nullable":true},"sessionsAdoption":{"type":"number","format":"double","nullable":true},"sessionsCrashed":{"type":"integer"},"sessionsErrored":{"type":"integer"},"hasHealthData":{"type":"boolean"},"stats":{"type":"object","additionalProperties":{}}},"required":["hasHealthData","sessionsCrashed","sessionsErrored","stats"],"nullable":true},"dateReleased":{"type":"string","format":"date-time","nullable":true},"dateCreated":{"type":"string","format":"date-time","nullable":true},"dateStarted":{"type":"string","format":"date-time","nullable":true},"id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"platforms":{"type":"array","items":{"type":"string"},"nullable":true},"hasHealthData":{"type":"boolean"},"newGroups":{"type":"integer"}},"required":["hasHealthData","id","name","newGroups","platform","platforms","slug"]}}},"required":["authors","commitCount","data","deployCount","id","newGroups","projects","shortVersion","status","version","versionInfo"]}},"examples":{"ReturnAListOfReleasesForAnOrganization":{"value":[{"id":1,"version":"frontend@1.0.0","shortVersion":"frontend@1.0.0","status":"open","versionInfo":{"package":"frontend","version":{"raw":"1.0.0","major":1,"minor":0,"patch":0,"pre":null,"buildCode":null,"components":3},"description":"1.0.0","buildHash":null},"ref":null,"url":null,"dateReleased":null,"dateCreated":"2024-01-01T00:00:00Z","data":{},"newGroups":0,"owner":null,"commitCount":0,"lastCommit":null,"deployCount":0,"lastDeploy":null,"authors":[],"projects":[{"id":1,"slug":"sentry","name":"sentry","newGroups":0,"platform":"javascript","platforms":["javascript"],"hasHealthData":false}],"firstEvent":null,"lastEvent":null,"currentProjectMeta":{},"userAgent":null}],"summary":"Return a list of releases for an organization"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"post":{"operationId":"createOrganizationRelease","description":"Create a new release for the given organization. Releases are used by Sentry to\nimprove error reporting by correlating first-seen events with the release that may\nhave introduced them, and are required for source maps and other debug features.\n\nRelease versions that are the same across multiple projects within an organization\nare treated as the same release in Sentry.","summary":"Create a New Release for an Organization","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["Releases"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"string","description":"A version identifier for this release. Can be a version number, a commit hash, and so on.","maxLength":200},"projects":{"type":"array","items":{"type":"string"},"description":"A list of project slugs that are involved in this release."},"ref":{"type":"string","nullable":true,"description":"An optional commit reference. This is useful if a tagged version has been provided.","maxLength":200},"url":{"type":"string","format":"uri","nullable":true,"description":"A URL that points to the release. For instance, this can be the path to an online interface to the source code, such as a GitHub URL."},"dateReleased":{"type":"string","format":"date-time","nullable":true,"description":"An optional date that indicates when the release went live. If not provided the current time is used."},"commits":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":64},"repository":{"type":"string","nullable":true,"maxLength":64},"message":{"type":"string","nullable":true},"author_name":{"type":"string","nullable":true,"maxLength":128},"author_email":{"type":"string","nullable":true,"maxLength":200},"timestamp":{"type":"string","format":"date-time","nullable":true},"patch_set":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","maxLength":510},"type":{"type":"string","maxLength":1}},"required":["path","type"]},"nullable":true}},"required":["id"]},"description":"An optional list of commit data to be associated. Very long lists are truncated to the most recent commits."},"status":{"type":"string","description":"The status of the release. Can be `open` or `archived`."},"owner":{"type":"string","description":"The username of the user to set as the release owner."},"headCommits":{"type":"array","items":{"type":"object","properties":{"currentId":{"type":"string","maxLength":64},"repository":{"type":"string","maxLength":64},"previousId":{"type":"string","nullable":true,"maxLength":64}},"required":["currentId","repository"]},"description":"(Deprecated) Use `refs` instead. An optional list of head commits to associate with the release, one per repository."},"refs":{"type":"array","items":{"type":"object","properties":{"commit":{"type":"string"},"repository":{"type":"string","maxLength":200},"previousCommit":{"type":"string","nullable":true,"maxLength":64}},"required":["commit","repository"]},"description":"An optional list of commit references, one per repository, used to associate commits with the release."}},"required":["projects","version"]}}},"required":true},"security":[{"auth_token":["org:ci","project:admin","project:releases","project:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"ref":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"dateReleased":{"type":"string","format":"date-time","nullable":true},"dateCreated":{"type":"string","format":"date-time","nullable":true},"dateStarted":{"type":"string","format":"date-time","nullable":true},"owner":{"type":"object","additionalProperties":{},"nullable":true},"lastCommit":{"type":"object","additionalProperties":{},"nullable":true},"lastDeploy":{"type":"object","properties":{"dateStarted":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"id":{"type":"string"},"environment":{"type":"string"},"dateFinished":{"type":"string"},"name":{"type":"string"}},"required":["dateFinished","environment","id","name"],"nullable":true},"firstEvent":{"type":"string","format":"date-time","nullable":true},"lastEvent":{"type":"string","format":"date-time","nullable":true},"currentProjectMeta":{"type":"object","additionalProperties":{},"nullable":true},"userAgent":{"type":"string","nullable":true},"adoptionStages":{"type":"object","additionalProperties":{},"nullable":true},"id":{"type":"integer"},"version":{"type":"string"},"newGroups":{"type":"integer"},"status":{"type":"string"},"shortVersion":{"type":"string"},"versionInfo":{"type":"object","properties":{"description":{"type":"string"},"package":{"type":"string","nullable":true},"version":{"type":"object","additionalProperties":{}},"buildHash":{"type":"string","nullable":true}},"required":["buildHash","package","version"],"nullable":true},"data":{"type":"object","additionalProperties":{}},"commitCount":{"type":"integer"},"deployCount":{"type":"integer"},"authors":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string"}},"required":["email","name"]}]}},"projects":{"type":"array","items":{"type":"object","properties":{"healthData":{"type":"object","properties":{"durationP50":{"type":"number","format":"double","nullable":true},"durationP90":{"type":"number","format":"double","nullable":true},"crashFreeUsers":{"type":"number","format":"double","nullable":true},"crashFreeSessions":{"type":"number","format":"double","nullable":true},"totalUsers":{"type":"integer","nullable":true},"totalUsers24h":{"type":"integer","nullable":true},"totalProjectUsers24h":{"type":"integer","nullable":true},"totalSessions":{"type":"integer","nullable":true},"totalSessions24h":{"type":"integer","nullable":true},"totalProjectSessions24h":{"type":"integer","nullable":true},"adoption":{"type":"number","format":"double","nullable":true},"sessionsAdoption":{"type":"number","format":"double","nullable":true},"sessionsCrashed":{"type":"integer"},"sessionsErrored":{"type":"integer"},"hasHealthData":{"type":"boolean"},"stats":{"type":"object","additionalProperties":{}}},"required":["hasHealthData","sessionsCrashed","sessionsErrored","stats"],"nullable":true},"dateReleased":{"type":"string","format":"date-time","nullable":true},"dateCreated":{"type":"string","format":"date-time","nullable":true},"dateStarted":{"type":"string","format":"date-time","nullable":true},"id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"platforms":{"type":"array","items":{"type":"string"},"nullable":true},"hasHealthData":{"type":"boolean"},"newGroups":{"type":"integer"}},"required":["hasHealthData","id","name","newGroups","platform","platforms","slug"]}}},"required":["authors","commitCount","data","deployCount","id","newGroups","projects","shortVersion","status","version","versionInfo"]},"examples":{"CreateARelease":{"value":{"id":1,"version":"frontend@1.0.0","shortVersion":"frontend@1.0.0","status":"open","versionInfo":{"package":"frontend","version":{"raw":"1.0.0","major":1,"minor":0,"patch":0,"pre":null,"buildCode":null,"components":3},"description":"1.0.0","buildHash":null},"ref":null,"url":null,"dateReleased":null,"dateCreated":"2024-01-01T00:00:00Z","data":{},"newGroups":0,"owner":null,"commitCount":0,"lastCommit":null,"deployCount":0,"lastDeploy":null,"authors":[],"projects":[{"id":1,"slug":"sentry","name":"sentry","newGroups":0,"platform":"javascript","platforms":["javascript"],"hasHealthData":false}],"firstEvent":null,"lastEvent":null,"currentProjectMeta":{},"userAgent":null},"summary":"Create a release"}}}},"description":""},"208":{"description":"Already Reported"},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/releases/{version}/":{"get":{"operationId":"getOrganizationRelease","description":"Return details on an individual release.","summary":"Retrieve an Organization's Release","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"version","schema":{"type":"string"},"description":"The version identifier of the release","required":true},{"in":"query","name":"project_id","schema":{"type":"string"},"description":"Deprecated. Use project instead.","deprecated":true},{"in":"query","name":"project","schema":{"anyOf":[{"type":"integer"},{"type":"string"}]},"description":"The project ID or slug to filter by. Overrides project_id when both are sent."},{"in":"query","name":"health","schema":{"type":"boolean"},"description":"Whether or not to include health data with the release. By default, this is false."},{"in":"query","name":"adoptionStages","schema":{"type":"boolean"},"description":"Whether or not to include adoption stages with the release. By default, this is false."},{"in":"query","name":"summaryStatsPeriod","schema":{"type":"string","enum":["14d","1d","1h","24h","2d","30d","48h","7d","90d"]},"description":"The period of time used to query summary stats for the release. By default, this is 14d."},{"in":"query","name":"healthStatsPeriod","schema":{"type":"string","enum":["14d","1d","1h","24h","2d","30d","48h","7d","90d"]},"description":"The period of time used to query health stats for the release. By default, this is 24h if health is enabled."},{"in":"query","name":"sort","schema":{"type":"string","enum":["date"]},"description":"The field used to sort results by. By default, this is `date`."},{"in":"query","name":"status","schema":{"type":"string","enum":["archived","open"]},"description":"Release statuses that you can filter by."},{"in":"query","name":"query","schema":{"type":"string"},"description":"Filters results by using [query syntax](/product/sentry-basics/search/).\n\nExample: `query=(transaction:foo AND release:abc) OR (transaction:[bar,baz] AND release:def)`\n"}],"tags":["Releases"],"security":[{"auth_token":["org:ci","project:admin","project:read","project:releases","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"ref":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"dateReleased":{"type":"string","format":"date-time","nullable":true},"dateCreated":{"type":"string","format":"date-time","nullable":true},"dateStarted":{"type":"string","format":"date-time","nullable":true},"owner":{"type":"object","additionalProperties":{},"nullable":true},"lastCommit":{"type":"object","additionalProperties":{},"nullable":true},"lastDeploy":{"type":"object","properties":{"dateStarted":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"id":{"type":"string"},"environment":{"type":"string"},"dateFinished":{"type":"string"},"name":{"type":"string"}},"required":["dateFinished","environment","id","name"],"nullable":true},"firstEvent":{"type":"string","format":"date-time","nullable":true},"lastEvent":{"type":"string","format":"date-time","nullable":true},"currentProjectMeta":{"type":"object","additionalProperties":{},"nullable":true},"userAgent":{"type":"string","nullable":true},"adoptionStages":{"type":"object","additionalProperties":{},"nullable":true},"id":{"type":"integer"},"version":{"type":"string"},"newGroups":{"type":"integer"},"status":{"type":"string"},"shortVersion":{"type":"string"},"versionInfo":{"type":"object","properties":{"description":{"type":"string"},"package":{"type":"string","nullable":true},"version":{"type":"object","additionalProperties":{}},"buildHash":{"type":"string","nullable":true}},"required":["buildHash","package","version"],"nullable":true},"data":{"type":"object","additionalProperties":{}},"commitCount":{"type":"integer"},"deployCount":{"type":"integer"},"authors":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string"}},"required":["email","name"]}]}},"projects":{"type":"array","items":{"type":"object","properties":{"healthData":{"type":"object","properties":{"durationP50":{"type":"number","format":"double","nullable":true},"durationP90":{"type":"number","format":"double","nullable":true},"crashFreeUsers":{"type":"number","format":"double","nullable":true},"crashFreeSessions":{"type":"number","format":"double","nullable":true},"totalUsers":{"type":"integer","nullable":true},"totalUsers24h":{"type":"integer","nullable":true},"totalProjectUsers24h":{"type":"integer","nullable":true},"totalSessions":{"type":"integer","nullable":true},"totalSessions24h":{"type":"integer","nullable":true},"totalProjectSessions24h":{"type":"integer","nullable":true},"adoption":{"type":"number","format":"double","nullable":true},"sessionsAdoption":{"type":"number","format":"double","nullable":true},"sessionsCrashed":{"type":"integer"},"sessionsErrored":{"type":"integer"},"hasHealthData":{"type":"boolean"},"stats":{"type":"object","additionalProperties":{}}},"required":["hasHealthData","sessionsCrashed","sessionsErrored","stats"],"nullable":true},"dateReleased":{"type":"string","format":"date-time","nullable":true},"dateCreated":{"type":"string","format":"date-time","nullable":true},"dateStarted":{"type":"string","format":"date-time","nullable":true},"id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"platforms":{"type":"array","items":{"type":"string"},"nullable":true},"hasHealthData":{"type":"boolean"},"newGroups":{"type":"integer"}},"required":["hasHealthData","id","name","newGroups","platform","platforms","slug"]}}},"required":["authors","commitCount","data","deployCount","id","newGroups","projects","shortVersion","status","version","versionInfo"]},"examples":{"RetrieveReleaseDetails":{"value":{"id":1122684517,"version":"control@abc123","status":"open","shortVersion":"control@abc123","versionInfo":{"package":"control","version":{"raw":"abc123"},"description":"abc123","buildHash":"abc123"},"ref":null,"url":null,"dateReleased":null,"dateCreated":"2024-05-21T11:26:16.190281Z","data":{},"newGroups":0,"owner":null,"commitCount":2,"lastCommit":{"id":"xyz123","message":"feat(raspberries): Made raspberries even more delicious","dateCreated":"2024-05-21T11:04:55Z","pullRequest":{"id":"70214","title":"feat(raspberries): Made raspberries even more delicious","message":"Made raspberries even more delicious","dateCreated":"2024-05-03T07:32:28.205043Z","repository":{"id":"1","name":"raj/raspberries","url":"https://raspberries.raspberries/raj/raspberries","provider":{"id":"integrations:github","name":"GitHub"},"status":"active","dateCreated":"2016-10-10T21:36:42.414678Z","integrationId":"2933","externalSlug":"raj/raspberries","externalId":"873328"},"author":{"id":"2837091","name":"Raj's Raspberries","username":"rajraspberry","avatarUrl":"https://gravatar.com/avatar/bf99685de539465db9208ab3a888843ba0e5e85b1f156084484c7c6c31312be5?s=32&d=mm","isActive":true,"isSuspended":false,"hasPasswordAuth":false,"isManaged":false,"dateJoined":"2023-08-07T12:32:09.091427Z","lastLogin":"2024-05-21T05:46:23.824074Z","has2fa":true,"lastActive":"2024-05-21T13:59:10.614891Z","isSuperuser":true,"isStaff":true,"experiments":{},"emails":[{"id":"2972219","email":"raj@raspberries","is_verified":true}],"avatar":{"avatarType":"upload","avatarUuid":"xyz123","avatarUrl":"https://sentry.io/avatar/xyz123/"}},"externalUrl":"https://github.com/raj/raspberries/pull/70214"},"suspectCommitType":"","repository":{"id":"1","name":"raj/raspberries","url":"https://github.com/raj/raspberries","provider":{"id":"integrations:github","name":"GitHub"},"status":"active","dateCreated":"2016-10-10T21:36:42.414678Z","integrationId":"2933","externalSlug":"raj/raspberries","externalId":"873328"},"author":{"id":"2837091","name":"Raj's Raspberries","username":"rajraspberry","avatarUrl":"https://gravatar.com/avatar/bf99685de539465db9208ab3a888843ba0e5e85b1f156084484c7c6c31312be5?s=32&d=mm","isActive":true,"isSuspended":false,"hasPasswordAuth":false,"isManaged":false,"dateJoined":"2023-08-07T12:32:09.091427Z","lastLogin":"2024-05-21T05:46:23.824074Z","has2fa":true,"lastActive":"2024-05-21T13:59:10.614891Z","isSuperuser":true,"isStaff":true,"experiments":{},"emails":[{"id":"2972219","email":"raj@raspberries","is_verified":true}],"avatar":{"avatarType":"upload","avatarUuid":"xyz123","avatarUrl":"https://sentry.io/avatar/xyz123/"}},"releases":[{"version":"control@abc123","shortVersion":"control@abc123","ref":null,"url":null,"dateReleased":null,"dateCreated":"2024-05-21T11:26:16.190281Z"},{"version":"backend@abc123","shortVersion":"backend@abc123","ref":null,"url":null,"dateReleased":null,"dateCreated":"2024-05-21T11:56:36.790866Z"},{"version":"control@def789","shortVersion":"control@def789","ref":null,"url":null,"dateReleased":null,"dateCreated":"2024-05-21T12:44:25.923663Z"},{"version":"frontend@ghi012","shortVersion":"frontend@ghi012","ref":null,"url":null,"dateReleased":null,"dateCreated":"2024-05-21T12:46:42.338358Z"}]},"deployCount":1,"lastDeploy":{"id":"53070941","environment":"canary-test-control","dateStarted":null,"dateFinished":"2024-05-21T11:26:17.597793Z","name":"control@abc123 to canary-test-","url":null},"authors":[{"id":"2837091","name":"Raj's Raspberries","username":"rajraspberry","email":"raj@raspberries","avatarUrl":"https://gravatar.com/avatar/bf99685de539465db9208ab3a888843ba0e5e85b1f156084484c7c6c31312be5?s=32&d=mm","isActive":true,"isSuspended":false,"hasPasswordAuth":false,"isManaged":false,"dateJoined":"2023-08-07T12:32:09.091427Z","lastLogin":"2024-05-21T05:46:23.824074Z","has2fa":true,"lastActive":"2024-05-21T13:59:10.614891Z","isSuperuser":true,"isStaff":true,"experiments":{},"emails":[{"id":"2972219","email":"raj@raspberries","is_verified":true}],"avatar":{"avatarType":"upload","avatarUuid":"xyz123","avatarUrl":"https://sentry.io/avatar/xyz123/"}}],"projects":[{"id":1,"slug":"sentry","name":"Backend","newGroups":0,"platform":"python","platforms":["native","other","python"],"hasHealthData":false,"healthData":{"durationP50":null,"durationP90":null,"crashFreeUsers":null,"crashFreeSessions":null,"sessionsCrashed":0,"sessionsErrored":0,"totalUsers":null,"totalUsers24h":null,"totalProjectUsers24h":null,"totalSessions":null,"totalSessions24h":null,"totalProjectSessions24h":null,"adoption":null,"sessionsAdoption":null,"stats":{"24h":[[1715126400,0],[1715212800,0],[1715299200,0],[1715385600,0],[1715472000,0],[1715558400,0],[1715644800,0],[1715731200,0],[1715817600,0],[1715904000,0],[1715990400,0],[1716076800,0],[1716163200,0],[1716249600,0]]},"hasHealthData":false}}],"firstEvent":null,"lastEvent":null,"currentProjectMeta":{},"userAgent":"Python-urllib/3.11","adoptionStages":{"sentry":{"stage":"low_adoption","adopted":null,"unadopted":null}}},"summary":"Retrieve release details"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"updateOrganizationRelease","description":"Update a release. This can change some metadata associated with\nthe release (the ref, url, and dates).","summary":"Update an Organization's Release","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"version","schema":{"type":"string"},"description":"The version identifier of the release","required":true}],"tags":["Releases"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ref":{"type":"string","nullable":true,"description":"An optional commit reference. This is useful if a tagged version has been provided.","maxLength":200},"url":{"type":"string","format":"uri","nullable":true,"description":"A URL that points to the release. For instance, this can be the path to an online interface to the source code, such as a GitHub URL."},"dateReleased":{"type":"string","format":"date-time","nullable":true,"description":"An optional date that indicates when the release went live. If not provided the current time is used."},"commits":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":64},"repository":{"type":"string","nullable":true,"maxLength":64},"message":{"type":"string","nullable":true},"author_name":{"type":"string","nullable":true,"maxLength":128},"author_email":{"type":"string","nullable":true,"maxLength":200},"timestamp":{"type":"string","format":"date-time","nullable":true},"patch_set":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","maxLength":510},"type":{"type":"string","maxLength":1}},"required":["path","type"]},"nullable":true}},"required":["id"]},"description":"An optional list of commit data to be associated. Very long lists are truncated to the most recent commits."},"status":{"type":"string","description":"The status of the release. Can be `open` or `archived`."},"headCommits":{"type":"array","items":{"type":"object","properties":{"currentId":{"type":"string","maxLength":64},"repository":{"type":"string","maxLength":64},"previousId":{"type":"string","nullable":true,"maxLength":64}},"required":["currentId","repository"]},"description":"Deprecated, use `commits`. Head commits to associate with the release."},"refs":{"type":"array","items":{"type":"object","properties":{"commit":{"type":"string"},"repository":{"type":"string","maxLength":200},"previousCommit":{"type":"string","nullable":true,"maxLength":64}},"required":["commit","repository"]},"description":"An optional way to indicate the start and end commits for each repository included in a release. Head commits must include parameters ``repository`` and ``commit`` (the HEAD SHA). For GitLab repositories, please use the Group name instead of the slug. They can optionally include ``previousCommit`` (the SHA of the HEAD of the previous release), which should be specified if this is the first time you've sent commit data."}}}}}},"security":[{"auth_token":["org:ci","project:admin","project:releases","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"ref":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"dateReleased":{"type":"string","format":"date-time","nullable":true},"dateCreated":{"type":"string","format":"date-time","nullable":true},"dateStarted":{"type":"string","format":"date-time","nullable":true},"owner":{"type":"object","additionalProperties":{},"nullable":true},"lastCommit":{"type":"object","additionalProperties":{},"nullable":true},"lastDeploy":{"type":"object","properties":{"dateStarted":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"id":{"type":"string"},"environment":{"type":"string"},"dateFinished":{"type":"string"},"name":{"type":"string"}},"required":["dateFinished","environment","id","name"],"nullable":true},"firstEvent":{"type":"string","format":"date-time","nullable":true},"lastEvent":{"type":"string","format":"date-time","nullable":true},"currentProjectMeta":{"type":"object","additionalProperties":{},"nullable":true},"userAgent":{"type":"string","nullable":true},"adoptionStages":{"type":"object","additionalProperties":{},"nullable":true},"id":{"type":"integer"},"version":{"type":"string"},"newGroups":{"type":"integer"},"status":{"type":"string"},"shortVersion":{"type":"string"},"versionInfo":{"type":"object","properties":{"description":{"type":"string"},"package":{"type":"string","nullable":true},"version":{"type":"object","additionalProperties":{}},"buildHash":{"type":"string","nullable":true}},"required":["buildHash","package","version"],"nullable":true},"data":{"type":"object","additionalProperties":{}},"commitCount":{"type":"integer"},"deployCount":{"type":"integer"},"authors":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string"}},"required":["email","name"]}]}},"projects":{"type":"array","items":{"type":"object","properties":{"healthData":{"type":"object","properties":{"durationP50":{"type":"number","format":"double","nullable":true},"durationP90":{"type":"number","format":"double","nullable":true},"crashFreeUsers":{"type":"number","format":"double","nullable":true},"crashFreeSessions":{"type":"number","format":"double","nullable":true},"totalUsers":{"type":"integer","nullable":true},"totalUsers24h":{"type":"integer","nullable":true},"totalProjectUsers24h":{"type":"integer","nullable":true},"totalSessions":{"type":"integer","nullable":true},"totalSessions24h":{"type":"integer","nullable":true},"totalProjectSessions24h":{"type":"integer","nullable":true},"adoption":{"type":"number","format":"double","nullable":true},"sessionsAdoption":{"type":"number","format":"double","nullable":true},"sessionsCrashed":{"type":"integer"},"sessionsErrored":{"type":"integer"},"hasHealthData":{"type":"boolean"},"stats":{"type":"object","additionalProperties":{}}},"required":["hasHealthData","sessionsCrashed","sessionsErrored","stats"],"nullable":true},"dateReleased":{"type":"string","format":"date-time","nullable":true},"dateCreated":{"type":"string","format":"date-time","nullable":true},"dateStarted":{"type":"string","format":"date-time","nullable":true},"id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"platforms":{"type":"array","items":{"type":"string"},"nullable":true},"hasHealthData":{"type":"boolean"},"newGroups":{"type":"integer"}},"required":["hasHealthData","id","name","newGroups","platform","platforms","slug"]}}},"required":["authors","commitCount","data","deployCount","id","newGroups","projects","shortVersion","status","version","versionInfo"]},"examples":{"RetrieveReleaseDetails":{"value":{"id":1122684517,"version":"control@abc123","status":"open","shortVersion":"control@abc123","versionInfo":{"package":"control","version":{"raw":"abc123"},"description":"abc123","buildHash":"abc123"},"ref":null,"url":null,"dateReleased":null,"dateCreated":"2024-05-21T11:26:16.190281Z","data":{},"newGroups":0,"owner":null,"commitCount":2,"lastCommit":{"id":"xyz123","message":"feat(raspberries): Made raspberries even more delicious","dateCreated":"2024-05-21T11:04:55Z","pullRequest":{"id":"70214","title":"feat(raspberries): Made raspberries even more delicious","message":"Made raspberries even more delicious","dateCreated":"2024-05-03T07:32:28.205043Z","repository":{"id":"1","name":"raj/raspberries","url":"https://raspberries.raspberries/raj/raspberries","provider":{"id":"integrations:github","name":"GitHub"},"status":"active","dateCreated":"2016-10-10T21:36:42.414678Z","integrationId":"2933","externalSlug":"raj/raspberries","externalId":"873328"},"author":{"id":"2837091","name":"Raj's Raspberries","username":"rajraspberry","avatarUrl":"https://gravatar.com/avatar/bf99685de539465db9208ab3a888843ba0e5e85b1f156084484c7c6c31312be5?s=32&d=mm","isActive":true,"isSuspended":false,"hasPasswordAuth":false,"isManaged":false,"dateJoined":"2023-08-07T12:32:09.091427Z","lastLogin":"2024-05-21T05:46:23.824074Z","has2fa":true,"lastActive":"2024-05-21T13:59:10.614891Z","isSuperuser":true,"isStaff":true,"experiments":{},"emails":[{"id":"2972219","email":"raj@raspberries","is_verified":true}],"avatar":{"avatarType":"upload","avatarUuid":"xyz123","avatarUrl":"https://sentry.io/avatar/xyz123/"}},"externalUrl":"https://github.com/raj/raspberries/pull/70214"},"suspectCommitType":"","repository":{"id":"1","name":"raj/raspberries","url":"https://github.com/raj/raspberries","provider":{"id":"integrations:github","name":"GitHub"},"status":"active","dateCreated":"2016-10-10T21:36:42.414678Z","integrationId":"2933","externalSlug":"raj/raspberries","externalId":"873328"},"author":{"id":"2837091","name":"Raj's Raspberries","username":"rajraspberry","avatarUrl":"https://gravatar.com/avatar/bf99685de539465db9208ab3a888843ba0e5e85b1f156084484c7c6c31312be5?s=32&d=mm","isActive":true,"isSuspended":false,"hasPasswordAuth":false,"isManaged":false,"dateJoined":"2023-08-07T12:32:09.091427Z","lastLogin":"2024-05-21T05:46:23.824074Z","has2fa":true,"lastActive":"2024-05-21T13:59:10.614891Z","isSuperuser":true,"isStaff":true,"experiments":{},"emails":[{"id":"2972219","email":"raj@raspberries","is_verified":true}],"avatar":{"avatarType":"upload","avatarUuid":"xyz123","avatarUrl":"https://sentry.io/avatar/xyz123/"}},"releases":[{"version":"control@abc123","shortVersion":"control@abc123","ref":null,"url":null,"dateReleased":null,"dateCreated":"2024-05-21T11:26:16.190281Z"},{"version":"backend@abc123","shortVersion":"backend@abc123","ref":null,"url":null,"dateReleased":null,"dateCreated":"2024-05-21T11:56:36.790866Z"},{"version":"control@def789","shortVersion":"control@def789","ref":null,"url":null,"dateReleased":null,"dateCreated":"2024-05-21T12:44:25.923663Z"},{"version":"frontend@ghi012","shortVersion":"frontend@ghi012","ref":null,"url":null,"dateReleased":null,"dateCreated":"2024-05-21T12:46:42.338358Z"}]},"deployCount":1,"lastDeploy":{"id":"53070941","environment":"canary-test-control","dateStarted":null,"dateFinished":"2024-05-21T11:26:17.597793Z","name":"control@abc123 to canary-test-","url":null},"authors":[{"id":"2837091","name":"Raj's Raspberries","username":"rajraspberry","email":"raj@raspberries","avatarUrl":"https://gravatar.com/avatar/bf99685de539465db9208ab3a888843ba0e5e85b1f156084484c7c6c31312be5?s=32&d=mm","isActive":true,"isSuspended":false,"hasPasswordAuth":false,"isManaged":false,"dateJoined":"2023-08-07T12:32:09.091427Z","lastLogin":"2024-05-21T05:46:23.824074Z","has2fa":true,"lastActive":"2024-05-21T13:59:10.614891Z","isSuperuser":true,"isStaff":true,"experiments":{},"emails":[{"id":"2972219","email":"raj@raspberries","is_verified":true}],"avatar":{"avatarType":"upload","avatarUuid":"xyz123","avatarUrl":"https://sentry.io/avatar/xyz123/"}}],"projects":[{"id":1,"slug":"sentry","name":"Backend","newGroups":0,"platform":"python","platforms":["native","other","python"],"hasHealthData":false,"healthData":{"durationP50":null,"durationP90":null,"crashFreeUsers":null,"crashFreeSessions":null,"sessionsCrashed":0,"sessionsErrored":0,"totalUsers":null,"totalUsers24h":null,"totalProjectUsers24h":null,"totalSessions":null,"totalSessions24h":null,"totalProjectSessions24h":null,"adoption":null,"sessionsAdoption":null,"stats":{"24h":[[1715126400,0],[1715212800,0],[1715299200,0],[1715385600,0],[1715472000,0],[1715558400,0],[1715644800,0],[1715731200,0],[1715817600,0],[1715904000,0],[1715990400,0],[1716076800,0],[1716163200,0],[1716249600,0]]},"hasHealthData":false}}],"firstEvent":null,"lastEvent":null,"currentProjectMeta":{},"userAgent":"Python-urllib/3.11","adoptionStages":{"sentry":{"stage":"low_adoption","adopted":null,"unadopted":null}}},"summary":"Retrieve release details"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteOrganizationRelease","description":"Permanently remove a release and all of its files.","summary":"Delete an Organization's Release","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"version","schema":{"type":"string"},"description":"The version identifier of the release","required":true}],"tags":["Releases"],"security":[{"auth_token":["project:admin","project:releases"]}],"responses":{"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/releases/{version}/commits/":{"get":{"operationId":"listOrganizationReleaseCommits","description":"Retrieve a list of commits for a given release.","summary":"List an Organization Release's Commits","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"version","schema":{"type":"string"},"description":"The version identifier of the release","required":true},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Releases"],"security":[{"auth_token":["org:ci","project:admin","project:read","project:releases","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"message":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"pullRequest":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string","nullable":true},"message":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"mergedAt":{"type":"string","format":"date-time","nullable":true},"status":{"enum":["merged","open","closed","draft","unknown",null],"type":"string","nullable":true},"repository":{"type":"object","properties":{"url":{"type":"string","nullable":true},"provider":{"type":"object","additionalProperties":{"type":"string"}},"status":{"type":"string"},"integrationId":{"type":"string","nullable":true},"externalSlug":{"type":"string","nullable":true},"externalId":{"type":"string","nullable":true},"settings":{"type":"object","properties":{"enabledCodeReview":{"type":"boolean"},"codeReviewTriggers":{"type":"array","items":{"type":"string"}}},"required":["codeReviewTriggers","enabledCodeReview"],"nullable":true},"id":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","id","name"]},"author":{"anyOf":[{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string"}},"required":["email","name"]}]},"externalUrl":{"type":"string"}},"required":["author","dateCreated","externalUrl","id","mergedAt","message","repository","status","title"],"nullable":true},"suspectCommitType":{"type":"string"},"repository":{"type":"object","properties":{"url":{"type":"string","nullable":true},"provider":{"type":"object","additionalProperties":{"type":"string"}},"status":{"type":"string"},"integrationId":{"type":"string","nullable":true},"externalSlug":{"type":"string","nullable":true},"externalId":{"type":"string","nullable":true},"settings":{"type":"object","properties":{"enabledCodeReview":{"type":"boolean"},"codeReviewTriggers":{"type":"array","items":{"type":"string"}}},"required":["codeReviewTriggers","enabledCodeReview"],"nullable":true},"id":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","id","name"]},"author":{"anyOf":[{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string"}},"required":["email","name"]},{"type":"object","description":"The commit serializer emits ``{}`` for ``author`` when the commit has no\nmapped author, so the published schema must allow an empty object alongside a\npopulated ``Author``."}]},"releases":{"type":"array","items":{"type":"object","properties":{"version":{"type":"string"},"shortVersion":{"type":"string"},"ref":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"dateReleased":{"type":"string","format":"date-time","nullable":true},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","dateReleased","ref","shortVersion","url","version"]}}},"required":["dateCreated","id","message","pullRequest","releases","suspectCommitType"]}},"examples":{"ReturnAListOfCommitsForARelease":{"value":[{"id":"a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2","message":"fix: handle empty release version","dateCreated":"2024-01-01T00:00:00Z","pullRequest":null,"suspectCommitType":"","releases":[{"version":"frontend@1.0.0","shortVersion":"1.0.0","ref":null,"url":null,"dateReleased":null,"dateCreated":"2024-01-01T00:00:00Z"}]}],"summary":"Return a list of commits for a release"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/releases/{version}/deploys/":{"get":{"operationId":"listOrganizationReleaseDeploys","description":"Returns a list of deploys based on the organization, version, and project.","summary":"List a Release's Deploys","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"version","schema":{"type":"string"},"description":"The version identifier of the release","required":true},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Releases"],"security":[{"auth_token":["org:ci","project:admin","project:read","project:releases","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","description":"Serializer for Deploy response objects","properties":{"id":{"type":"string","description":"The ID of the deploy"},"environment":{"type":"string","description":"The environment name"},"dateStarted":{"type":"string","format":"date-time","nullable":true,"description":"An optional date that indicates when the deploy started"},"dateFinished":{"type":"string","format":"date-time","description":"An optional date that indicates when the deploy ended"},"name":{"type":"string","nullable":true,"description":"The optional name of the deploy"},"url":{"type":"string","format":"uri","nullable":true,"description":"The optional URL that points to the deploy"}},"required":["dateFinished","dateStarted","environment","id","name","url"]}}}},"description":""}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"post":{"operationId":"createOrganizationReleaseDeploy","description":"Create a deploy for a given release.","summary":"Create a Deploy","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"version","schema":{"type":"string"},"description":"The version identifier of the release","required":true}],"tags":["Releases"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"environment":{"type":"string","description":"The environment you're deploying to","maxLength":64},"name":{"type":"string","nullable":true,"description":"The optional name of the deploy","maxLength":64},"url":{"type":"string","format":"uri","nullable":true,"description":"The optional URL that points to the deploy"},"dateStarted":{"type":"string","format":"date-time","nullable":true,"description":"An optional date that indicates when the deploy started"},"dateFinished":{"type":"string","format":"date-time","nullable":true,"description":"An optional date that indicates when the deploy ended. If not provided, the current time is used."},"projects":{"type":"array","items":{"type":"string"},"description":"The optional list of project slugs to create a deploy within. If not provided, deploys are created for all of the release's projects."}},"required":["environment"]}}},"required":true},"security":[{"auth_token":["org:ci","project:admin","project:releases","project:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","description":"Serializer for Deploy response objects","properties":{"id":{"type":"string","description":"The ID of the deploy"},"environment":{"type":"string","description":"The environment name"},"dateStarted":{"type":"string","format":"date-time","nullable":true,"description":"An optional date that indicates when the deploy started"},"dateFinished":{"type":"string","format":"date-time","description":"An optional date that indicates when the deploy ended"},"name":{"type":"string","nullable":true,"description":"The optional name of the deploy"},"url":{"type":"string","format":"uri","nullable":true,"description":"The optional URL that points to the deploy"}},"required":["dateFinished","dateStarted","environment","id","name","url"]}}},"description":""},"400":{"description":"Bad Request"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/releases/{version}/files/":{"get":{"operationId":"listOrganizationReleaseFiles","description":"Retrieve a list of files for a given release.","summary":"List an Organization's Release Files","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"version","schema":{"type":"string"},"description":"The version identifier of the release","required":true},{"in":"query","name":"query","schema":{"type":"array","items":{"type":"string"}},"description":"If set, only files with these partial names will be returned."},{"in":"query","name":"checksum","schema":{"type":"array","items":{"type":"string"}},"description":"If set, only files with these exact checksums will be returned."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Releases"],"security":[{"auth_token":["org:ci","project:admin","project:read","project:releases","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"dist":{"type":"string","nullable":true},"headers":{"type":"object","additionalProperties":{}},"size":{"type":"integer"},"sha1":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","dist","headers","id","name","sha1","size"]}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"post":{"operationId":"uploadOrganizationReleaseFile","description":"Upload a new file for the given release.\n\nFiles must be uploaded using the `multipart/form-data` content type, against the\nregion-specific domain (e.g. `us.sentry.io` or `de.sentry.io`).","summary":"Upload a New Organization Release File","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"version","schema":{"type":"string"},"description":"The version identifier of the release","required":true}],"tags":["Releases"],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","description":"Documents the multipart/form-data body of the release file upload endpoints.\n\nThe endpoints read the upload directly off ``request.data``; this serializer\nexists to describe the request body in the OpenAPI schema.","properties":{"file":{"type":"string","format":"uri","description":"The multipart-encoded file contents to upload."},"name":{"type":"string","description":"The name (full path) the file will be referenced as, e.g. the full web URI of a JavaScript file. Defaults to the uploaded file's name."},"dist":{"type":"string","description":"The name of the distribution to associate the file with."},"header":{"type":"array","items":{"type":"string"},"description":"Headers to attach to the file, each formatted as a `\"key:value\"` string (for example, to define a content type). May be supplied multiple times."}},"required":["file"]}}},"required":true},"security":[{"auth_token":["org:ci","project:admin","project:releases","project:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"dist":{"type":"string","nullable":true},"headers":{"type":"object","additionalProperties":{}},"size":{"type":"integer"},"sha1":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","dist","headers","id","name","sha1","size"]}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"409":{"description":"Conflict"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/releases/{version}/files/{file_id}/":{"get":{"operationId":"getOrganizationReleaseFile","description":"Return metadata for an individual file within a release. Does not return the file\ncontents unless `download` is set.","summary":"Retrieve an Organization Release's File","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"version","schema":{"type":"string"},"description":"The version identifier of the release","required":true},{"in":"path","name":"file_id","schema":{"type":"string"},"description":"The ID of the release file.","required":true},{"in":"query","name":"download","schema":{"type":"string"},"description":"If set, download the file contents instead of returning metadata."}],"tags":["Releases"],"security":[{"auth_token":["org:ci","project:admin","project:read","project:releases","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"dist":{"type":"string","nullable":true},"headers":{"type":"object","additionalProperties":{}},"size":{"type":"integer"},"sha1":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","dist","headers","id","name","sha1","size"]}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"updateOrganizationReleaseFile","description":"Update metadata of an existing release file. Currently only the name of the file\ncan be changed.","summary":"Update an Organization Release File","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"version","schema":{"type":"string"},"description":"The version identifier of the release","required":true},{"in":"path","name":"file_id","schema":{"type":"string"},"description":"The ID of the release file.","required":true}],"tags":["Releases"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The new name (full path) of the file.","maxLength":200}},"required":["name"]}}},"required":true},"security":[{"auth_token":["org:ci","project:admin","project:releases","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"dist":{"type":"string","nullable":true},"headers":{"type":"object","additionalProperties":{}},"size":{"type":"integer"},"sha1":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","dist","headers","id","name","sha1","size"]}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteOrganizationReleaseFile","description":"Permanently remove a file from a release. Also removes the physical file from\nstorage.","summary":"Delete an Organization Release's File","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"version","schema":{"type":"string"},"description":"The version identifier of the release","required":true},{"in":"path","name":"file_id","schema":{"type":"string"},"description":"The ID of the release file.","required":true}],"tags":["Releases"],"security":[{"auth_token":["project:admin","project:releases"]}],"responses":{"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/replay-count/":{"get":{"operationId":"getOrganizationReplayCount","description":"Return a count of replays for a list of issue or transaction IDs.\n\nThe `query` parameter is required. It is a search query that includes exactly one of `issue.id`, `transaction`, or `replay_id` (string or list of strings).","summary":"Retrieve a Count of Replays for a Given Issue or Transaction","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"query","schema":{"type":"string","minLength":1},"description":"Filters results by using [query syntax](/product/sentry-basics/search/).\n\nExample: `query=(transaction:foo AND release:abc) OR (transaction:[bar,baz] AND release:def)`\n","required":true},{"in":"query","name":"data_source","schema":{"enum":["errors","search_issues","spans"],"type":"string","minLength":1},"description":"The data source to query replays from.\n\n* `errors`\n* `search_issues`\n* `spans`","required":true},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"statsPeriod","schema":{"type":"string"},"description":"The period of time for the query, will override the start & end parameters, a number followed by one of:\n- `d` for days\n- `h` for hours\n- `m` for minutes\n- `s` for seconds\n- `w` for weeks\n\nFor example, `24h`, to mean query data starting from 24 hours ago to now."},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects.\nFor example, the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=android&project=javascript-react`\n- `/?project=-1`\n"},{"in":"query","name":"project_id_or_slug","schema":{"type":"array","items":{"type":"string"}},"description":"The legacy project slug filter. Prefer `project`, which accepts project IDs or slugs. Use `$all` to include all available projects. For example, the following are valid parameters:\n- `/?projectSlug=$all`\n- `/?projectSlug=android&projectSlug=javascript-react`\n"},{"in":"query","name":"returnIds","schema":{"type":"boolean","default":false},"description":"If true, return issue IDs rather than counts."}],"tags":["Replays"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"integer"}},"examples":{"QueryReplayCountByIssueOrTransactionId":{"value":{"1":9,"2":0,"5":0,"9":1,"10":29},"summary":"Query replay count by issue or transaction id"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/replay-selectors/":{"get":{"operationId":"listOrganizationReplaySelectors","description":"Return a list of selectors for a given organization.","summary":"List an Organization's Selectors","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The environment to filter by."},{"in":"query","name":"statsPeriod","schema":{"type":"string","minLength":1},"description":"This defines the range of the time series, relative to now. The range is given in a `` format. For example `1d` for a one day range. Possible units are `m` for minutes, `h` for hours, `d` for days and `w` for weeks.You must either provide a `statsPeriod`, or a `start` and `end`."},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"This defines the start of the time series range as an explicit datetime, either in UTC ISO8601 or epoch seconds.Use along with `end` instead of `statsPeriod`."},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"This defines the inclusive end of the time series range as an explicit datetime, either in UTC ISO8601 or epoch seconds.Use along with `start` instead of `statsPeriod`."},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"A list of project IDs or slugs to filter by."},{"in":"query","name":"projectSlug","schema":{"type":"array","items":{"type":"string"}},"description":"A list of project slugs to filter your results by."},{"in":"query","name":"sort","schema":{"type":"string","minLength":1},"description":"The field to sort the output by."},{"in":"query","name":"sortBy","schema":{"type":"string","minLength":1},"description":"The field to sort the output by."},{"in":"query","name":"orderBy","schema":{"type":"string","minLength":1},"description":"The field to sort the output by."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"},{"in":"query","name":"per_page","schema":{"type":"integer"},"description":"Limit the number of rows to return in the result. Default and maximum allowed is 100."},{"in":"query","name":"query","schema":{"type":"string"},"description":"Filters results by using [query syntax](/product/sentry-basics/search/).\n\nExample: `query=(transaction:foo AND release:abc) OR (transaction:[bar,baz] AND release:def)`\n"}],"tags":["Replays"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"count_dead_clicks":{"type":"integer"},"count_rage_clicks":{"type":"integer"},"dom_element":{"type":"string"},"element":{"type":"object","properties":{"alt":{"type":"string"},"aria_label":{"type":"string"},"class":{"type":"array","items":{"type":"string"}},"component_name":{"type":"string"},"id":{"type":"string"},"role":{"type":"string"},"tag":{"type":"string"},"testid":{"type":"string"},"title":{"type":"string"}},"required":["alt","aria_label","class","component_name","id","role","tag","testid","title"]},"project_id":{"type":"string"}}}}},"required":["data"]},"examples":{"RetrieveACollectionOfSelectorsForAnOrganization.":{"value":{"data":[{"count_dead_clicks":2,"count_rage_clicks":1,"dom_element":"div#myid.class1.class2","element":{"alt":"","aria_label":"","class":["class1","class2"],"component_name":"","id":"myid","role":"","tag":"div","testid":"","title":""},"project_id":"1"}]},"summary":"Retrieve a collection of selectors for an organization."}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/replays/":{"get":{"operationId":"listOrganizationReplays","description":"Return a list of replays belonging to an organization.","summary":"List an Organization's Replays","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"statsPeriod","schema":{"type":"string","minLength":1},"description":"\nThis defines the range of the time series, relative to now. The range is given in a\n`` format. For example `1d` for a one day range. Possible units are `m` for\nminutes, `h` for hours, `d` for days and `w` for weeks. You must either provide a\n`statsPeriod`, or a `start` and `end`.\n"},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"\nThis defines the start of the time series range as an explicit datetime, either in UTC\nISO8601 or epoch seconds. Use along with `end` instead of `statsPeriod`.\n"},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"\nThis defines the inclusive end of the time series range as an explicit datetime, either in\nUTC ISO8601 or epoch seconds. Use along with `start` instead of `statsPeriod`.\n"},{"in":"query","name":"field","schema":{"type":"array","items":{"enum":["activity","browser","clicks","count_dead_clicks","count_errors","count_infos","count_rage_clicks","count_segments","count_urls","count_warnings","device","dist","duration","environment","error_ids","finished_at","has_viewed","id","is_archived","os","ota_updates","platform","project_id","releases","replay_type","sdk","segment_names","started_at","tags","trace_ids","urls","user"],"type":"string","description":"* `activity`\n* `browser`\n* `clicks`\n* `count_dead_clicks`\n* `count_errors`\n* `count_infos`\n* `count_rage_clicks`\n* `count_segments`\n* `count_urls`\n* `count_warnings`\n* `device`\n* `dist`\n* `duration`\n* `environment`\n* `error_ids`\n* `finished_at`\n* `has_viewed`\n* `id`\n* `is_archived`\n* `os`\n* `ota_updates`\n* `platform`\n* `project_id`\n* `releases`\n* `replay_type`\n* `sdk`\n* `segment_names`\n* `started_at`\n* `tags`\n* `trace_ids`\n* `urls`\n* `user`"}},"description":"Specifies a field that should be marshaled in the output. Invalid fields will be rejected."},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"A list of project IDs or slugs to filter by."},{"in":"query","name":"projectSlug","schema":{"type":"array","items":{"type":"string"}},"description":"A list of project slugs to filter your results by."},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The environments to filter by."},{"in":"query","name":"sort","schema":{"type":"string","minLength":1},"description":"The field to sort the output by."},{"in":"query","name":"sortBy","schema":{"type":"string","minLength":1},"description":"The field to sort the output by."},{"in":"query","name":"orderBy","schema":{"type":"string","minLength":1},"description":"The field to sort the output by."},{"in":"query","name":"query","schema":{"type":"string","minLength":1},"description":"A structured query string to filter the output by."},{"in":"query","name":"queryReferrer","schema":{"type":"string","minLength":1},"description":"Internal referrer identifier used for query tracing."},{"in":"query","name":"per_page","schema":{"type":"integer"},"description":"Limit the number of rows to return in the result."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"The cursor parameter is used to paginate results. See [here](https://docs.sentry.io/api/pagination/) for how to use this query parameter"}],"tags":["Replays"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"trace_ids":{"type":"array","items":{"type":"string"}},"error_ids":{"type":"array","items":{"type":"string"}},"environment":{"type":"string","nullable":true},"tags":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},{"type":"array","items":{}}]},"user":{"type":"object","properties":{"id":{"type":"string","nullable":true},"username":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"ip":{"type":"string","nullable":true},"display_name":{"type":"string","nullable":true},"geo":{"type":"object","properties":{"city":{"type":"string","nullable":true},"country_code":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"subdivision":{"type":"string","nullable":true}}}}},"sdk":{"type":"object","properties":{"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true}}},"os":{"type":"object","properties":{"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true}}},"browser":{"type":"object","properties":{"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true}}},"device":{"type":"object","properties":{"name":{"type":"string","nullable":true},"brand":{"type":"string","nullable":true},"model":{"type":"string","nullable":true},"family":{"type":"string","nullable":true}}},"ota_updates":{"type":"object","properties":{"channel":{"type":"string","nullable":true},"runtime_version":{"type":"string","nullable":true},"update_id":{"type":"string","nullable":true}}},"is_archived":{"type":"boolean","nullable":true},"urls":{"type":"array","items":{"type":"string"},"nullable":true},"segment_names":{"type":"array","items":{"type":"string"},"nullable":true},"clicks":{"type":"array","items":{"type":"object","additionalProperties":{}}},"count_dead_clicks":{"type":"integer","nullable":true},"count_rage_clicks":{"type":"integer","nullable":true},"count_errors":{"type":"integer","nullable":true},"duration":{"type":"integer","nullable":true},"finished_at":{"type":"string","nullable":true},"started_at":{"type":"string","nullable":true},"activity":{"type":"integer","nullable":true},"count_urls":{"type":"integer","nullable":true},"replay_type":{"type":"string"},"count_segments":{"type":"integer","nullable":true},"platform":{"type":"string","nullable":true},"releases":{"type":"array","items":{"type":"string"}},"dist":{"type":"string","nullable":true},"count_warnings":{"type":"integer","nullable":true},"count_infos":{"type":"integer","nullable":true},"has_viewed":{"type":"boolean"}}}}},"required":["data"]},"examples":{"GetListOfReplays":{"value":{"data":[{"activity":5,"browser":{"name":"Chome","version":"103.0.38"},"count_dead_clicks":6,"count_rage_clicks":1,"count_errors":1,"count_segments":0,"count_urls":1,"device":{"brand":"Apple","family":"iPhone","model":"11","name":"iPhone 11"},"dist":null,"duration":576,"environment":"production","error_ids":["7e07485f-12f9-416b-8b14-26260799b51f"],"finished_at":"2022-07-07T14:15:33.201019","has_viewed":true,"id":"7e07485f-12f9-416b-8b14-26260799b51f","is_archived":null,"os":{"name":"iOS","version":"16.2"},"platform":"Sentry","project_id":"639195","releases":["version@1.4"],"sdk":{"name":"Thundercat","version":"27.1"},"started_at":"2022-07-07T14:05:57.909921","tags":{"hello":["world","Lionel Richie"]},"trace_ids":["7e07485f-12f9-416b-8b14-26260799b51f"],"urls":["/organizations/abc123/issues"],"user":{"display_name":"John Doe","email":"john.doe@example.com","id":"30246326","ip":"213.164.1.114","username":"John Doe"}}]},"summary":"Get list of replays"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/replays/{replay_id}/":{"get":{"operationId":"getOrganizationReplay","description":"Return details on an individual replay.","summary":"Retrieve a Replay Instance","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"replay_id","schema":{"type":"string","pattern":"^[0-9a-f]{32}$"},"description":"The ID of the replay you'd like to retrieve. It is a 32-character hexadecimal string.","required":true},{"in":"query","name":"statsPeriod","schema":{"type":"string","minLength":1},"description":"\nThis defines the range of the time series, relative to now. The range is given in a\n`` format. For example `1d` for a one day range. Possible units are `m` for\nminutes, `h` for hours, `d` for days and `w` for weeks. You must either provide a\n`statsPeriod`, or a `start` and `end`.\n"},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"\nThis defines the start of the time series range as an explicit datetime, either in UTC\nISO8601 or epoch seconds. Use along with `end` instead of `statsPeriod`.\n"},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"\nThis defines the inclusive end of the time series range as an explicit datetime, either in\nUTC ISO8601 or epoch seconds. Use along with `start` instead of `statsPeriod`.\n"},{"in":"query","name":"field","schema":{"type":"array","items":{"enum":["activity","browser","clicks","count_dead_clicks","count_errors","count_infos","count_rage_clicks","count_segments","count_urls","count_warnings","device","dist","duration","environment","error_ids","finished_at","has_viewed","id","is_archived","os","ota_updates","platform","project_id","releases","replay_type","sdk","segment_names","started_at","tags","trace_ids","urls","user"],"type":"string","description":"* `activity`\n* `browser`\n* `clicks`\n* `count_dead_clicks`\n* `count_errors`\n* `count_infos`\n* `count_rage_clicks`\n* `count_segments`\n* `count_urls`\n* `count_warnings`\n* `device`\n* `dist`\n* `duration`\n* `environment`\n* `error_ids`\n* `finished_at`\n* `has_viewed`\n* `id`\n* `is_archived`\n* `os`\n* `ota_updates`\n* `platform`\n* `project_id`\n* `releases`\n* `replay_type`\n* `sdk`\n* `segment_names`\n* `started_at`\n* `tags`\n* `trace_ids`\n* `urls`\n* `user`"}},"description":"Specifies a field that should be marshaled in the output. Invalid fields will be rejected."},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"A list of project IDs or slugs to filter by."},{"in":"query","name":"projectSlug","schema":{"type":"array","items":{"type":"string"}},"description":"A list of project slugs to filter your results by."},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The environments to filter by."},{"in":"query","name":"sort","schema":{"type":"string","minLength":1},"description":"The field to sort the output by."},{"in":"query","name":"sortBy","schema":{"type":"string","minLength":1},"description":"The field to sort the output by."},{"in":"query","name":"orderBy","schema":{"type":"string","minLength":1},"description":"The field to sort the output by."},{"in":"query","name":"query","schema":{"type":"string","minLength":1},"description":"A structured query string to filter the output by."},{"in":"query","name":"queryReferrer","schema":{"type":"string","minLength":1},"description":"Internal referrer identifier used for query tracing."},{"in":"query","name":"per_page","schema":{"type":"integer"},"description":"Limit the number of rows to return in the result."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"The cursor parameter is used to paginate results. See [here](https://docs.sentry.io/api/pagination/) for how to use this query parameter"}],"tags":["Replays"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"trace_ids":{"type":"array","items":{"type":"string"}},"error_ids":{"type":"array","items":{"type":"string"}},"environment":{"type":"string","nullable":true},"tags":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},{"type":"array","items":{}}]},"user":{"type":"object","properties":{"id":{"type":"string","nullable":true},"username":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"ip":{"type":"string","nullable":true},"display_name":{"type":"string","nullable":true},"geo":{"type":"object","properties":{"city":{"type":"string","nullable":true},"country_code":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"subdivision":{"type":"string","nullable":true}}}}},"sdk":{"type":"object","properties":{"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true}}},"os":{"type":"object","properties":{"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true}}},"browser":{"type":"object","properties":{"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true}}},"device":{"type":"object","properties":{"name":{"type":"string","nullable":true},"brand":{"type":"string","nullable":true},"model":{"type":"string","nullable":true},"family":{"type":"string","nullable":true}}},"ota_updates":{"type":"object","properties":{"channel":{"type":"string","nullable":true},"runtime_version":{"type":"string","nullable":true},"update_id":{"type":"string","nullable":true}}},"is_archived":{"type":"boolean","nullable":true},"urls":{"type":"array","items":{"type":"string"},"nullable":true},"segment_names":{"type":"array","items":{"type":"string"},"nullable":true},"clicks":{"type":"array","items":{"type":"object","additionalProperties":{}}},"count_dead_clicks":{"type":"integer","nullable":true},"count_rage_clicks":{"type":"integer","nullable":true},"count_errors":{"type":"integer","nullable":true},"duration":{"type":"integer","nullable":true},"finished_at":{"type":"string","nullable":true},"started_at":{"type":"string","nullable":true},"activity":{"type":"integer","nullable":true},"count_urls":{"type":"integer","nullable":true},"replay_type":{"type":"string"},"count_segments":{"type":"integer","nullable":true},"platform":{"type":"string","nullable":true},"releases":{"type":"array","items":{"type":"string"}},"dist":{"type":"string","nullable":true},"count_warnings":{"type":"integer","nullable":true},"count_infos":{"type":"integer","nullable":true},"has_viewed":{"type":"boolean"}}}},"required":["data"]},"examples":{"GetSingleReplayDetails":{"value":{"data":{"activity":5,"browser":{"name":"Chome","version":"103.0.38"},"count_dead_clicks":6,"count_rage_clicks":1,"count_errors":1,"count_segments":0,"count_urls":1,"device":{"brand":"Apple","family":"iPhone","model":"11","name":"iPhone 11"},"dist":null,"duration":576,"environment":"production","error_ids":["7e07485f-12f9-416b-8b14-26260799b51f"],"finished_at":"2022-07-07T14:15:33.201019","has_viewed":true,"id":"7e07485f-12f9-416b-8b14-26260799b51f","is_archived":null,"os":{"name":"iOS","version":"16.2"},"platform":"Sentry","project_id":"639195","releases":["version@1.4"],"sdk":{"name":"Thundercat","version":"27.1"},"started_at":"2022-07-07T14:05:57.909921","tags":{"hello":["world","Lionel Richie"]},"trace_ids":["7e07485f-12f9-416b-8b14-26260799b51f"],"urls":["/organizations/abc123/issues"],"user":{"display_name":"John Doe","email":"john.doe@example.com","id":"30246326","ip":"213.164.1.114","username":"John Doe"}}},"summary":"Get single replay details"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/repos/":{"get":{"operationId":"listOrganizationRepos","description":"Return a list of version control repositories for a given organization.","summary":"List an Organization's Repositories","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"query","schema":{"type":"string"},"description":"Filter repositories by name."},{"in":"query","name":"status","schema":{"type":"string","enum":["active","deleted"]},"description":"Filter repositories by status. Defaults to `active`."},{"in":"query","name":"integration_id","schema":{"type":"string"},"description":"Filter repositories by integration ID."},{"in":"query","name":"expand","schema":{"type":"array","items":{"type":"string"}},"description":"Optional repository fields to expand, such as `settings`."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"},{"in":"query","name":"per_page","schema":{"type":"integer"},"description":"The maximum number of repositories to return per page (1\u2013100)."}],"tags":["Organizations"],"security":[{"auth_token":["org:admin","org:ci","org:integrations","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","nullable":true},"provider":{"type":"object","additionalProperties":{"type":"string"}},"status":{"type":"string"},"integrationId":{"type":"string","nullable":true},"externalSlug":{"type":"string","nullable":true},"externalId":{"type":"string","nullable":true},"settings":{"type":"object","properties":{"enabledCodeReview":{"type":"boolean"},"codeReviewTriggers":{"type":"array","items":{"type":"string"}}},"required":["codeReviewTriggers","enabledCodeReview"],"nullable":true},"id":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","id","name"]}},"examples":{"OrganizationRepositories":{"value":[{"dateCreated":"2018-11-06T21:19:58.536Z","id":"3","name":"sentry/sentry"}],"summary":"Organization Repositories"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/repos/{repo_id}/commits/":{"get":{"operationId":"listOrganizationRepoCommits","description":"List a Repository's Commits","summary":"List a Repository's Commits","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"repo_id","schema":{"type":"string"},"description":"The repository ID.","required":true},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Organizations"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"message":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"pullRequest":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string","nullable":true},"message":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"mergedAt":{"type":"string","format":"date-time","nullable":true},"status":{"enum":["merged","open","closed","draft","unknown",null],"type":"string","nullable":true},"repository":{"type":"object","properties":{"url":{"type":"string","nullable":true},"provider":{"type":"object","additionalProperties":{"type":"string"}},"status":{"type":"string"},"integrationId":{"type":"string","nullable":true},"externalSlug":{"type":"string","nullable":true},"externalId":{"type":"string","nullable":true},"settings":{"type":"object","properties":{"enabledCodeReview":{"type":"boolean"},"codeReviewTriggers":{"type":"array","items":{"type":"string"}}},"required":["codeReviewTriggers","enabledCodeReview"],"nullable":true},"id":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","id","name"]},"author":{"anyOf":[{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string"}},"required":["email","name"]}]},"externalUrl":{"type":"string"}},"required":["author","dateCreated","externalUrl","id","mergedAt","message","repository","status","title"],"nullable":true},"suspectCommitType":{"type":"string"},"repository":{"type":"object","properties":{"url":{"type":"string","nullable":true},"provider":{"type":"object","additionalProperties":{"type":"string"}},"status":{"type":"string"},"integrationId":{"type":"string","nullable":true},"externalSlug":{"type":"string","nullable":true},"externalId":{"type":"string","nullable":true},"settings":{"type":"object","properties":{"enabledCodeReview":{"type":"boolean"},"codeReviewTriggers":{"type":"array","items":{"type":"string"}}},"required":["codeReviewTriggers","enabledCodeReview"],"nullable":true},"id":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","id","name"]},"author":{"anyOf":[{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string"}},"required":["email","name"]},{"type":"object","description":"The commit serializer emits ``{}`` for ``author`` when the commit has no\nmapped author, so the published schema must allow an empty object alongside a\npopulated ``Author``."}]}},"required":["dateCreated","id","message","pullRequest","suspectCommitType"]}},"examples":{"RepositoryCommits":{"value":[{"dateCreated":"2018-11-06T21:19:58.536Z","id":"acbafc639127fd89d10f474520104517ff1d709e","message":"Initial commit from Create Next App","suspectCommitType":"","pullRequest":null}],"summary":"Repository Commits"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/repos/settings/":{"put":{"operationId":"updateOrganizationRepositorySettings","description":"Update code review settings for one or more repositories in the organization. Provide at least one of `enabledCodeReview` or `codeReviewTriggers`.","summary":"Update Settings for Organization Repositories","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["Integrations"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"repositoryIds":{"type":"array","items":{"type":"integer"},"description":"List of repository IDs to update settings for. Maximum 1000 repositories.","maxItems":1000},"enabledCodeReview":{"type":"boolean","description":"Whether code review is enabled for these repositories"},"codeReviewTriggers":{"type":"array","items":{"enum":["on_new_commit","on_ready_for_review"],"type":"string","description":"A code review trigger to enable.\n\n* `on_new_commit`\n* `on_ready_for_review`"},"description":"List of triggers for code review"}},"required":["repositoryIds"]}}},"required":true},"security":[{"auth_token":["org:admin","org:integrations","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","nullable":true},"provider":{"type":"object","additionalProperties":{"type":"string"}},"status":{"type":"string"},"integrationId":{"type":"string","nullable":true},"externalSlug":{"type":"string","nullable":true},"externalId":{"type":"string","nullable":true},"settings":{"type":"object","properties":{"enabledCodeReview":{"type":"boolean"},"codeReviewTriggers":{"type":"array","items":{"type":"string"}}},"required":["codeReviewTriggers","enabledCodeReview"],"nullable":true},"id":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","id","name"]}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/scim/v2/Groups":{"get":{"operationId":"listOrganizationScimV2Groups","description":"Returns a paginated list of teams bound to a organization with a SCIM Groups GET Request.\n\nNote that the members field will only contain up to 10,000 members.","summary":"List an Organization's Paginated Teams","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"startIndex","schema":{"type":"integer","minimum":1,"default":1},"description":"SCIM 1-offset based index for pagination."},{"in":"query","name":"count","schema":{"type":"integer","minimum":0,"default":100},"description":"The maximum number of results the query should return, maximum of 100."},{"in":"query","name":"filter","schema":{"type":"string","minLength":1},"description":"A SCIM filter expression. The only operator currently supported is `eq`."},{"in":"query","name":"excludedAttributes","schema":{"type":"array","items":{"type":"string"}},"description":"Fields that should be left off of return values. Right now the only supported field for this query is members."}],"tags":["SCIM"],"security":[{"auth_token":["team:admin","team:read","team:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"totalResults":{"type":"integer"},"startIndex":{"type":"integer"},"itemsPerPage":{"type":"integer"},"Resources":{"type":"array","items":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"displayName":{"type":"string"},"meta":{"type":"object","properties":{"resourceType":{"type":"string"}},"required":["resourceType"]},"members":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"display":{"type":"string"}},"required":["display","value"]}}},"required":["displayName","id","meta","schemas"]}}},"required":["Resources","itemsPerPage","schemas","startIndex","totalResults"]},"examples":{"ListAnOrgs'sPaginatedTeams":{"value":{"schemas":["urn:ietf:params:scim:api:messages:2.0:ListResponse"],"totalResults":1,"startIndex":1,"itemsPerPage":1,"Resources":[{"schemas":["urn:ietf:params:scim:schemas:core:2.0:Group"],"id":"23232","displayName":"test-scimv2","members":[],"meta":{"resourceType":"Group"}}]},"summary":"List an orgs's paginated teams"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"post":{"operationId":"provisionOrganizationScimV2Group","description":"Create a new team bound to an organization via a SCIM Groups POST\nRequest. The slug will have a normalization of uppercases/spaces to\nlowercases and dashes.\n\nNote that teams are always created with an empty member set.","summary":"Provision a New Team","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["SCIM"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"displayName":{"type":"string","description":"The slug of the team that is shown in the UI."}},"required":["displayName"]}}},"required":true},"security":[{"auth_token":["team:admin","team:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"displayName":{"type":"string"},"meta":{"type":"object","properties":{"resourceType":{"type":"string"}},"required":["resourceType"]},"members":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"display":{"type":"string"}},"required":["display","value"]}}},"required":["displayName","id","meta","schemas"]},"examples":{"ProvisionTeam":{"value":{"schemas":["urn:ietf:params:scim:schemas:core:2.0:Group"],"displayName":"Test SCIMv2","members":[],"meta":{"resourceType":"Group"},"id":"123"},"summary":"provisionTeam"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/scim/v2/Groups/{team_id_or_slug}":{"get":{"operationId":"getOrganizationScimV2Group","description":"Query an individual team with a SCIM Group GET Request.\n- Note that the members field will only contain up to 10000 members.","summary":"Query an Individual Team","parameters":[{"in":"path","name":"team_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the team the resource belongs to.","required":true},{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["SCIM"],"security":[{"auth_token":["team:admin","team:read","team:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"displayName":{"type":"string"},"meta":{"type":"object","properties":{"resourceType":{"type":"string"}},"required":["resourceType"]},"members":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"display":{"type":"string"}},"required":["display","value"]}}},"required":["displayName","id","meta","schemas"]},"examples":{"QueryIndividualTeam":{"value":{"schemas":["urn:ietf:params:scim:schemas:core:2.0:Group"],"id":"23232","displayName":"test-scimv2","members":[],"meta":{"resourceType":"Group"}},"summary":"Query individual team"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"patch":{"operationId":"updateOrganizationScimV2Group","description":"Update a team's attributes with a SCIM Group PATCH Request.","summary":"Update a Team's Attributes","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"team_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the team the resource belongs to.","required":true}],"tags":["SCIM"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"},"description":"SCIM schema URIs identifying the request format. Must be the PatchOp schema."},"Operations":{"type":"array","items":{"type":"object","properties":{"op":{"type":"string"},"value":{"type":"object","additionalProperties":{}},"path":{"type":"string"}},"required":["op"]},"description":"The list of operations to perform. Valid operations are:\n* Renaming a team:\n```json\n{\n \"Operations\": [{\n \"op\": \"replace\",\n \"value\": {\n \"id\": 23,\n \"displayName\": \"newName\"\n }\n }]\n}\n```\n* Adding a member to a team:\n```json\n{\n \"Operations\": [{\n \"op\": \"add\",\n \"path\": \"members\",\n \"value\": [\n {\n \"value\": 23,\n \"display\": \"testexample@example.com\"\n }\n ]\n }]\n}\n```\n* Removing a member from a team:\n```json\n{\n \"Operations\": [{\n \"op\": \"remove\",\n \"path\": \"members[value eq \"23\"]\"\n }]\n}\n```\n* Replacing an entire member set of a team:\n```json\n{\n \"Operations\": [{\n \"op\": \"replace\",\n \"path\": \"members\",\n \"value\": [\n {\n \"value\": 23,\n \"display\": \"testexample2@sentry.io\"\n },\n {\n \"value\": 24,\n \"display\": \"testexample3@sentry.io\"\n }\n ]\n }]\n}\n```\n"}},"required":["Operations","schemas"]}}},"required":true},"security":[{"auth_token":["team:admin","team:write"]}],"responses":{"204":{"description":"Success"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteOrganizationScimV2Group","description":"Delete a team with a SCIM Group DELETE Request.","summary":"Delete an Individual Team","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"team_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the team the resource belongs to.","required":true}],"tags":["SCIM"],"security":[{"auth_token":["team:admin"]}],"responses":{"204":{"description":"Success"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/scim/v2/ResourceTypes":{"get":{"operationId":"listOrganizationScimV2ResourceTypes","description":"List the resource types available via SCIM: User (organization\nmembers) and Group (teams). Pagination parameters are ignored per\nRFC 7644 section 4; both resource types are always returned.","summary":"List the SCIM Resource Types","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["SCIM"],"security":[{"auth_token":["member:admin","member:read","member:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"totalResults":{"type":"integer"},"startIndex":{"type":"integer"},"itemsPerPage":{"type":"integer"},"Resources":{"type":"array","items":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"endpoint":{"type":"string"},"schema":{"type":"string"},"meta":{"type":"object","properties":{"resourceType":{"type":"string"},"location":{"type":"string"}},"required":["location","resourceType"]}},"required":["description","endpoint","id","meta","name","schema","schemas"]}}},"required":["Resources","itemsPerPage","schemas","startIndex","totalResults"]},"examples":{"ListTheResourceTypes":{"value":{"schemas":["urn:ietf:params:scim:api:messages:2.0:ListResponse"],"totalResults":2,"startIndex":1,"itemsPerPage":2,"Resources":[{"schemas":["urn:ietf:params:scim:schemas:core:2.0:ResourceType"],"id":"User","name":"User","description":"SCIM User maps to Sentry Organization Member","endpoint":"/Users","schema":"urn:ietf:params:scim:schemas:core:2.0:User","meta":{"resourceType":"ResourceType","location":"https://sentry.io/api/0/organizations/example-org/scim/v2/ResourceTypes/User"}},{"schemas":["urn:ietf:params:scim:schemas:core:2.0:ResourceType"],"id":"Group","name":"Group","description":"SCIM Group maps to Sentry Team","endpoint":"/Groups","schema":"urn:ietf:params:scim:schemas:core:2.0:Group","meta":{"resourceType":"ResourceType","location":"https://sentry.io/api/0/organizations/example-org/scim/v2/ResourceTypes/Group"}}]},"summary":"List the resource types"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/scim/v2/ResourceTypes/{resource_type_name}":{"get":{"operationId":"getOrganizationScimV2ResourceType","description":"Return a single SCIM resource type by name (`User` or `Group`).","summary":"Query an Individual SCIM Resource Type","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"resource_type_name","schema":{"type":"string"},"description":"The SCIM resource type name: `User` or `Group`.","required":true}],"tags":["SCIM"],"security":[{"auth_token":["member:admin","member:read","member:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"endpoint":{"type":"string"},"schema":{"type":"string"},"meta":{"type":"object","properties":{"resourceType":{"type":"string"},"location":{"type":"string"}},"required":["location","resourceType"]}},"required":["description","endpoint","id","meta","name","schema","schemas"]},"examples":{"QueryAnIndividualResourceType":{"value":{"schemas":["urn:ietf:params:scim:schemas:core:2.0:ResourceType"],"id":"User","name":"User","description":"SCIM User maps to Sentry Organization Member","endpoint":"/Users","schema":"urn:ietf:params:scim:schemas:core:2.0:User","meta":{"resourceType":"ResourceType","location":"https://sentry.io/api/0/organizations/example-org/scim/v2/ResourceTypes/User"}},"summary":"Query an individual resource type"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/scim/v2/Schemas/{schema_uri}":{"get":{"operationId":"getOrganizationScimV2Schema","description":"Return a single SCIM schema definition by its URI. Sentry supports the\ncore User and Group schemas.","summary":"Query an Individual SCIM Schema","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"schema_uri","schema":{"type":"string"},"description":"The SCIM schema URI, e.g. `urn:ietf:params:scim:schemas:core:2.0:User`.","required":true}],"tags":["SCIM"],"security":[{"auth_token":["member:admin","member:read","member:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"attributes":{"type":"array","items":{"type":"object","additionalProperties":{}}},"meta":{"type":"object","properties":{"resourceType":{"type":"string"},"location":{"type":"string"}},"required":["location","resourceType"]}},"required":["attributes","description","id","meta","name","schemas"]},"examples":{"QueryAnIndividualSchema":{"value":{"schemas":["urn:ietf:params:scim:schemas:core:2.0:Schema"],"id":"urn:ietf:params:scim:schemas:core:2.0:User","name":"User","description":"SCIM User maps to Sentry Organization Member","attributes":[{"name":"userName","type":"string","multiValued":false,"description":"Unique identifier for the User, which for Sentry is an email address.","required":true,"caseExact":false,"mutability":"immutable","returned":"default","uniqueness":"server"}],"meta":{"resourceType":"Schema","location":"https://sentry.io/api/0/organizations/example-org/scim/v2/Schemas/urn:ietf:params:scim:schemas:core:2.0:User"}},"summary":"Query an individual schema"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/scim/v2/ServiceProviderConfig":{"get":{"operationId":"getOrganizationScimV2ServiceProviderConfig","description":"Return the SCIM Service Provider Configuration, which describes the\nSCIM 2.0 protocol features Sentry supports (RFC 7643 section 5).","summary":"Retrieve the SCIM Service Provider Configuration","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["SCIM"],"security":[{"auth_token":["member:admin","member:read","member:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"documentationUri":{"type":"string"},"patch":{"type":"object","properties":{"supported":{"type":"boolean"}},"required":["supported"]},"bulk":{"type":"object","properties":{"supported":{"type":"boolean"},"maxOperations":{"type":"integer"},"maxPayloadSize":{"type":"integer"}},"required":["maxOperations","maxPayloadSize","supported"]},"filter":{"type":"object","properties":{"supported":{"type":"boolean"},"maxResults":{"type":"integer"}},"required":["maxResults","supported"]},"changePassword":{"type":"object","properties":{"supported":{"type":"boolean"}},"required":["supported"]},"sort":{"type":"object","properties":{"supported":{"type":"boolean"}},"required":["supported"]},"etag":{"type":"object","properties":{"supported":{"type":"boolean"}},"required":["supported"]},"authenticationSchemes":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"specUri":{"type":"string"},"primary":{"type":"boolean"}},"required":["description","name","primary","specUri","type"]}},"meta":{"type":"object","properties":{"resourceType":{"type":"string"},"location":{"type":"string"}},"required":["location","resourceType"]}},"required":["authenticationSchemes","bulk","changePassword","documentationUri","etag","filter","meta","patch","schemas","sort"]},"examples":{"RetrieveTheServiceProviderConfiguration":{"value":{"schemas":["urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig"],"documentationUri":"https://docs.sentry.io/organization/authentication/sso/","patch":{"supported":true},"bulk":{"supported":false,"maxOperations":0,"maxPayloadSize":0},"filter":{"supported":true,"maxResults":100},"changePassword":{"supported":false},"sort":{"supported":false},"etag":{"supported":false},"authenticationSchemes":[{"type":"oauthbearertoken","name":"OAuth Bearer Token","description":"Authentication scheme using the OAuth Bearer Token standard. Use the SCIM token generated for your organization.","specUri":"https://www.rfc-editor.org/info/rfc6750","primary":true}],"meta":{"resourceType":"ServiceProviderConfig","location":"https://sentry.io/api/0/organizations/example-org/scim/v2/ServiceProviderConfig"}},"summary":"Retrieve the service provider configuration"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/scim/v2/Users":{"get":{"operationId":"listOrganizationScimV2Users","description":"Returns a paginated list of members bound to a organization with a SCIM Users GET Request.","summary":"List an Organization's SCIM Members","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"startIndex","schema":{"type":"integer","minimum":1,"default":1},"description":"SCIM 1-offset based index for pagination."},{"in":"query","name":"count","schema":{"type":"integer","minimum":0,"default":100},"description":"The maximum number of results the query should return, maximum of 100."},{"in":"query","name":"filter","schema":{"type":"string","minLength":1},"description":"A SCIM filter expression. The only operator currently supported is `eq`."},{"in":"query","name":"excludedAttributes","schema":{"type":"array","items":{"type":"string"}},"description":"Fields that should be left off of return values. Right now the only supported field for this query is members."}],"tags":["SCIM"],"security":[{"auth_token":["member:admin","member:read","member:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"schemas":{"type":"array","items":{"type":"string"}},"totalResults":{"type":"integer"},"startIndex":{"type":"integer"},"itemsPerPage":{"type":"integer"},"Resources":{"type":"array","items":{"type":"object","description":"Conforming to the SCIM RFC, this represents a Sentry Org Member\nas a SCIM user object.","properties":{"active":{"type":"boolean"},"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"userName":{"type":"string"},"name":{"type":"object","properties":{"givenName":{"type":"string"},"familyName":{"type":"string"}},"required":["familyName","givenName"]},"emails":{"type":"array","items":{"type":"object","properties":{"primary":{"type":"boolean"},"value":{"type":"string"},"type":{"type":"string"}},"required":["primary","type","value"]}},"meta":{"type":"object","properties":{"resourceType":{"type":"string"}},"required":["resourceType"]},"sentryOrgRole":{"type":"string"}},"required":["emails","id","meta","name","schemas","sentryOrgRole","userName"]}}},"required":["Resources","itemsPerPage","schemas","startIndex","totalResults"]},"examples":{"ListAnOrganization'sMembers":{"value":{"schemas":["urn:ietf:params:scim:api:messages:2.0:ListResponse"],"totalResults":1,"startIndex":1,"itemsPerPage":1,"Resources":[{"schemas":["urn:ietf:params:scim:schemas:core:2.0:User"],"id":"102","userName":"test.user@okta.local","emails":[{"primary":true,"value":"test.user@okta.local","type":"work"}],"name":{"familyName":"N/A","givenName":"N/A"},"active":true,"meta":{"resourceType":"User"},"sentryOrgRole":"member"}]},"summary":"List an Organization's Members"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"post":{"operationId":"provisionOrganizationScimV2User","description":"Create a new Organization Member via a SCIM Users POST Request.\n\nNote that this API does not support setting secondary emails.","summary":"Provision a New Organization Member","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["SCIM"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"userName":{"type":"string","format":"email","description":"The SAML field used for email."},"sentryOrgRole":{"enum":["billing","member","manager","admin"],"type":"string","description":"The organization role of the member. If unspecified, this will be\n set to the organization's default role. The options are:\n\n* `billing` - Can manage payment and compliance details.\n* `member` - Can view and act on events, as well as view most other data within the organization.\n* `manager` - Has full management access to all teams and projects. Can also manage\n the organization's membership.\n* `admin` - Can edit global integrations, manage projects, and add/remove teams.\n They automatically assume the Team Admin role for teams they join.\n Note: This role can no longer be assigned in Business and Enterprise plans. Use `TeamRoles` instead.\n "}},"required":["userName"]}}},"required":true},"security":[{"auth_token":["member:admin","member:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","description":"Conforming to the SCIM RFC, this represents a Sentry Org Member\nas a SCIM user object.","properties":{"active":{"type":"boolean"},"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"userName":{"type":"string"},"name":{"type":"object","properties":{"givenName":{"type":"string"},"familyName":{"type":"string"}},"required":["familyName","givenName"]},"emails":{"type":"array","items":{"type":"object","properties":{"primary":{"type":"boolean"},"value":{"type":"string"},"type":{"type":"string"}},"required":["primary","type","value"]}},"meta":{"type":"object","properties":{"resourceType":{"type":"string"}},"required":["resourceType"]},"sentryOrgRole":{"type":"string"}},"required":["emails","id","meta","name","schemas","sentryOrgRole","userName"]},"examples":{"ProvisionNewMember":{"value":{"schemas":["urn:ietf:params:scim:schemas:core:2.0:User"],"id":"242","userName":"test.user@okta.local","emails":[{"primary":true,"value":"test.user@okta.local","type":"work"}],"active":true,"name":{"familyName":"N/A","givenName":"N/A"},"meta":{"resourceType":"User"},"sentryOrgRole":"member"},"summary":"Provision new member"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/scim/v2/Users/{member_id}":{"get":{"operationId":"getOrganizationScimV2User","description":"Query an individual organization member with a SCIM User GET Request.\n- The `name` object will contain fields `firstName` and `lastName` with the values of `N/A`.\nSentry's SCIM API does not currently support these fields but returns them for compatibility purposes.","summary":"Query an Individual Organization Member","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"member_id","schema":{"type":"string"},"description":"The ID of the member to query.","required":true}],"tags":["SCIM"],"security":[{"auth_token":["member:admin","member:read","member:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","description":"Conforming to the SCIM RFC, this represents a Sentry Org Member\nas a SCIM user object.","properties":{"active":{"type":"boolean"},"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"userName":{"type":"string"},"name":{"type":"object","properties":{"givenName":{"type":"string"},"familyName":{"type":"string"}},"required":["familyName","givenName"]},"emails":{"type":"array","items":{"type":"object","properties":{"primary":{"type":"boolean"},"value":{"type":"string"},"type":{"type":"string"}},"required":["primary","type","value"]}},"meta":{"type":"object","properties":{"resourceType":{"type":"string"}},"required":["resourceType"]},"sentryOrgRole":{"type":"string"}},"required":["emails","id","meta","name","schemas","sentryOrgRole","userName"]},"examples":{"QueryOrgMember":{"value":{"schemas":["urn:ietf:params:scim:schemas:core:2.0:User"],"id":"102","userName":"test.user@okta.local","emails":[{"primary":true,"value":"test.user@okta.local","type":"work"}],"name":{"familyName":"N/A","givenName":"N/A"},"active":true,"meta":{"resourceType":"User"},"sentryOrgRole":"member"},"summary":"Query org member"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"patch":{"operationId":"updateOrganizationScimV2User","description":"Update an organization member's attributes with a SCIM PATCH Request.","summary":"Update an Organization Member's Attributes","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"member_id","schema":{"type":"string"},"description":"The ID of the member to update.","required":true}],"tags":["SCIM"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"Operations":{"type":"array","items":{"type":"object","properties":{"op":{"type":"string"},"value":{},"path":{"type":"string"}},"required":["op","value"]},"description":"A list of operations to perform. Currently, the only valid operation is setting\na member's `active` attribute to false, after which the member will be permanently deleted.\n```json\n{\n \"Operations\": [{\n \"op\": \"replace\",\n \"path\": \"active\",\n \"value\": False\n }]\n}\n```\n","maxItems":100},"schemas":{"type":"array","items":{"type":"string"},"description":"SCIM schema URIs identifying the request format. Must be the PatchOp schema."}},"required":["Operations"]}}},"required":true},"security":[{"auth_token":["member:admin","member:write"]}],"responses":{"204":{"description":"Success"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteOrganizationScimV2User","description":"Delete an organization member with a SCIM User DELETE Request.","summary":"Delete an Organization Member via SCIM","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"member_id","schema":{"type":"string"},"description":"The ID of the member to delete.","required":true}],"tags":["SCIM"],"security":[{"auth_token":["member:admin"]}],"responses":{"204":{"description":"Success"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/sentry-app-components/":{"get":{"operationId":"listOrganizationSentryAppComponents","description":"**Experimental:** This API is under active development and may change.\n\nRetrieve prepared UI components for installed custom integrations, including issue-link forms.\n\nAPI clients can use `filter=issue-link` to create or link an external issue through\nan app such as Linear. The `uri` values in `schema` are paths on the app's own server.\nClients never call them directly; Sentry calls the app on their behalf:\n\n- To load a select field's choices, pass the field's `uri` to\n `GET /sentry-app-installations/{installationUuid}/external-requests/`.\n- To create or link the issue, send the form values with the `uri` from\n `schema.create` or `schema.link` to\n `POST /sentry-app-installations/{installationUuid}/external-issue-actions/`.","summary":"List an Organization's Installed Sentry App Components","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"},{"in":"query","name":"filter","schema":{"type":"string"},"description":"Filter components by type, such as `issue-link`."}],"tags":["Integration"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"uuid":{"type":"string"},"type":{"type":"string"},"schema":{"type":"object","additionalProperties":{}},"error":{"anyOf":[{"type":"string"},{"type":"object","properties":{"detail":{"type":"string"},"context":{"type":"object","additionalProperties":{}}}}]},"sentryApp":{"type":"object","properties":{"uuid":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"avatars":{"type":"array","items":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string"},"avatarUrl":{"type":"string"},"color":{"type":"boolean"},"photoType":{"type":"string"}},"required":["avatarType","avatarUrl","avatarUuid","color","photoType"]}}},"required":["avatars","name","slug","uuid"]},"installationUuid":{"type":"string"}},"required":["error","installationUuid","schema","sentryApp","type","uuid"]}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"control","organizationParameter":"organization_id_or_slug"},"x-sentry-experimental":true}},"/api/0/organizations/{organization_id_or_slug}/sentry-apps/":{"get":{"operationId":"listOrganizationSentryApps","description":"Retrieve the custom integrations for an organization","summary":"Retrieve the custom integrations created by an organization","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["Integration"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"allowedOrigins":{"type":"array","items":{"type":"string"}},"avatars":{"type":"array","items":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string"},"avatarUrl":{"type":"string"},"color":{"type":"boolean"},"photoType":{"type":"string"}},"required":["avatarType","avatarUrl","avatarUuid","color","photoType"]}},"events":{"type":"array","items":{"type":"string"}},"webhookEvents":{"type":"array","items":{"type":"string"}},"featureData":{"type":"array","items":{"type":"string"}},"isAlertable":{"type":"boolean"},"metadata":{"type":"string"},"name":{"type":"string"},"schema":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"slug":{"type":"string"},"status":{"type":"string"},"uuid":{"type":"string"},"verifyInstall":{"type":"boolean"},"webhookHeaders":{"type":"array","items":{"type":"string"}},"isDisabled":{"type":"boolean"},"author":{"type":"string","nullable":true},"overview":{"type":"string","nullable":true},"popularity":{"type":"integer","nullable":true},"redirectUrl":{"type":"string","nullable":true},"webhookUrl":{"type":"string","nullable":true},"clientSecret":{"type":"string","nullable":true},"datePublished":{"type":"string","format":"date-time"},"clientId":{"type":"string"},"owner":{"type":"object","properties":{"id":{"type":"integer"},"slug":{"type":"string"}},"required":["id","slug"]}},"required":["allowedOrigins","avatars","events","featureData","isAlertable","metadata","name","schema","scopes","slug","status","uuid","verifyInstall","webhookEvents","webhookHeaders"]}},"examples":{"RetrieveTheCustomIntegrationsCreatedByTheGivenOrganization":{"value":[{"allowedOrigins":[],"author":"ACME Corp","avatars":[{"avatarType":"avatar","avatarUuid":"6c25b771-a576-4c18-a1c3-ab059c1d42ba","avatarUrl":"https://example.com/avatar.png","color":false,"photoType":"icon"}],"events":["issue"],"webhookEvents":["issue.assigned","issue.created","issue.ignored","issue.resolved","issue.unresolved"],"isAlertable":false,"isDisabled":false,"metadata":"","name":"ACME Corp Integration","overview":null,"popularity":27,"redirectUrl":null,"featureData":[],"schema":"","scopes":["event:read","org:read"],"slug":"acme-corp-integration","status":"unpublished","uuid":"77cebea3-019e-484d-8673-6c3969698827","verifyInstall":true,"webhookUrl":"https://example.com/webhook","webhookHeaders":["X-Custom-Header: value"],"clientId":"ed06141686bb60102d878c607eff449fa9907fa7a8cb70f0d337a8fb0b6566c3","clientSecret":"**********","owner":{"id":42,"slug":"acme-corp"}},{"allowedOrigins":[],"author":"ACME Corp","avatars":[],"events":["issue"],"webhookEvents":["issue.resolved"],"isAlertable":false,"isDisabled":false,"metadata":"","name":"ACME Corp Integration v2","overview":null,"popularity":0,"redirectUrl":"example.com","featureData":[],"schema":"","scopes":["event:admin","org:admin"],"slug":"acme-corp-integration-v2","status":"unpublished","uuid":"77cebea3-019e-484d-8673-123124234","verifyInstall":true,"webhookUrl":"https://example.com/webhook","webhookHeaders":["X-Custom-Header: value"],"clientId":"2730a92919437a7b052e6827cd2c9f119be37101asdasdad123131231231231","clientSecret":"**********","owner":{"id":42,"slug":"acme-corp"}}],"summary":"Retrieve the custom integrations created by the given organization"}}}},"description":""}},"x-sentry-routing":{"silo":"control","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/sessions/":{"get":{"operationId":"getOrganizationSessions","description":"Returns a time series of release health session statistics for projects bound to an organization.\n\nThe interval and date range are subject to certain restrictions and rounding rules.\n\nThe date range is rounded to align with the interval, and is rounded to at least one\nhour. The interval can at most be one day and at least one hour currently. It has to cleanly\ndivide one day, for rounding reasons.\n\nBecause of technical limitations, this endpoint returns\nat most 10000 data points. For example, if you select a 90 day window grouped by releases,\nyou will see at most `floor(10k / (90 + 1)) = 109` releases. To get more results, reduce the\n`statsPeriod`.","summary":"Retrieve Release Health Session Statistics","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"field","schema":{"type":"array","items":{"type":"string"}},"description":"The list of fields to query.\n\nThe available fields are\n- `sum(session)`\n- `count_unique(user)`\n- `avg`, `p50`, `p75`, `p90`, `p95`, `p99`, `max` applied to `session.duration`. For example, `p99(session.duration)`. Session duration is [no longer being recorded](https://github.com/getsentry/sentry/discussions/42716) as of on Jan 12, 2023. Returned data may be incomplete.\n- `crash_rate`, `crash_free_rate` applied to `user` or `session`. For example, `crash_free_rate(user)`\n","required":true},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."},{"in":"query","name":"statsPeriod","schema":{"type":"string"},"description":"The period of time for the query, will override the start & end parameters, a number followed by one of:\n- `d` for days\n- `h` for hours\n- `m` for minutes\n- `s` for seconds\n- `w` for weeks\n\nFor example, `24h`, to mean query data starting from 24 hours ago to now."},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects.\nFor example, the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=android&project=javascript-react`\n- `/?project=-1`\n"},{"in":"query","name":"per_page","schema":{"type":"integer"},"description":"The number of groups to return per request."},{"in":"query","name":"interval","schema":{"type":"string"},"description":"Resolution of the time series, given in the same format as `statsPeriod`.\n\nThe default and\n the minimum interval is `1h`."},{"in":"query","name":"groupBy","schema":{"type":"array","items":{"type":"string"}},"description":"The list of properties to group by.\n\nThe available groupBy conditions are `project`,\n `release`, `environment` and `session.status`."},{"in":"query","name":"orderBy","schema":{"type":"string"},"description":"An optional field to order by, which must be one of the fields provided in `field`. Use `-`\n for descending order, for example, `-sum(session)`"},{"in":"query","name":"includeTotals","schema":{"type":"integer"},"description":"Specify `0` to exclude totals from the response. The default is `1`"},{"in":"query","name":"includeSeries","schema":{"type":"integer"},"description":"Specify `0` to exclude series from the response. The default is `1`"},{"in":"query","name":"query","schema":{"type":"string"},"description":"Filters results by using [query syntax](/product/sentry-basics/search/).\n\nExample: `query=(transaction:foo AND release:abc) OR (transaction:[bar,baz] AND release:def)`\n"}],"tags":["Releases"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"type":"string","format":"date-time"},"end":{"type":"string","format":"date-time"},"intervals":{"type":"array","items":{"type":"string"}},"groups":{"type":"array","items":{"type":"object","properties":{"by":{"type":"object","properties":{"project":{"type":"integer"},"release":{"type":"string"},"environment":{"type":"string"},"session.status":{"type":"string"}}},"series":{"type":"object","additionalProperties":{"type":"array","items":{"type":"number","format":"double","nullable":true}}},"totals":{"type":"object","additionalProperties":{"type":"number","format":"double","nullable":true}}},"required":["by","series","totals"]}},"query":{"type":"string"}},"required":["end","groups","intervals","query","start"]},"examples":{"QuerySessions":{"value":{"groups":[{"by":{"session.status":"errored"},"totals":{"sum(session)":1000},"series":{"sum(session)":[368,392,240]}},{"by":{"session.status":"healthy"},"totals":{"sum(session)":17905998},"series":{"sum(session)":[6230841,6923689,4751465]}}],"start":"2024-01-29T07:30:00Z","end":"2024-01-29T09:00:00Z","intervals":["2024-01-29T07:30:00Z","2024-01-29T08:00:00Z","2024-01-29T08:30:00Z"],"query":""},"summary":"Query Sessions"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/shortids/{issue_id}/":{"get":{"operationId":"resolveOrganizationShortId","description":"Resolve a short ID to the project slug and group details.","summary":"Resolve a Short ID","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"issue_id","schema":{"type":"string"},"description":"The short ID of the issue to resolve.","required":true},{"in":"query","name":"collapse","schema":{"type":"array","items":{"type":"string","enum":["base","filtered","lifetime","stats","unhandled"]}},"description":"Fields to remove from the response to improve query performance."}],"tags":["Organizations"],"security":[{"auth_token":["event:admin","event:read","event:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"organizationSlug":{"type":"string"},"projectSlug":{"type":"string"},"groupId":{"type":"string"},"group":{"type":"object","properties":{"isUnhandled":{"type":"boolean"},"count":{"type":"string"},"userCount":{"type":"integer"},"firstSeen":{"type":"string","format":"date-time","nullable":true},"lastSeen":{"type":"string","format":"date-time","nullable":true},"derivedData":{"type":"object","properties":{"blocker":{"type":"string"},"progress":{"type":"string"},"status":{"type":"string"},"viewCount":{"type":"integer"},"hasOpenFixPr":{"type":"boolean"},"isAssigned":{"type":"boolean"},"hasRootCause":{"type":"boolean"},"lastCompletedAutofixStep":{"type":"string"},"lastProgressedAt":{"type":"string","format":"date-time","nullable":true}},"required":["blocker","hasOpenFixPr","hasRootCause","isAssigned","lastCompletedAutofixStep","lastProgressedAt","progress","status","viewCount"]},"id":{"type":"string"},"shareId":{"type":"string","nullable":true},"shortId":{"type":"string"},"title":{"type":"string"},"culprit":{"type":"string","nullable":true},"permalink":{"type":"string"},"logger":{"type":"string","nullable":true},"level":{"enum":["sample","debug","info","warning","error","fatal","unknown"],"type":"string"},"status":{"enum":["resolved","ignored","pending_deletion","pending_merge","reprocessing","unresolved"],"type":"string"},"statusDetails":{"type":"object","properties":{"ignoreCount":{"type":"integer"},"ignoreUntil":{"type":"string","format":"date-time"},"ignoreUserCount":{"type":"integer"},"ignoreUserWindow":{"type":"integer"},"ignoreWindow":{"type":"integer"},"actor":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},"inNextRelease":{"type":"boolean"},"inRelease":{"type":"string"},"inCommit":{"type":"string"},"pendingEvents":{"type":"integer"},"info":{"type":"object","properties":{"dateCreated":{"type":"string"},"syncCount":{"type":"integer"},"totalEvents":{"type":"integer"}},"required":["dateCreated","syncCount","totalEvents"],"nullable":true}}},"substatus":{"enum":["archived_until_escalating","archived_until_condition_met","archived_forever","escalating","ongoing","regressed","new",null],"type":"string","nullable":true},"isPublic":{"type":"boolean"},"platform":{"type":"string","nullable":true},"priority":{"enum":["low","medium","high",null],"type":"string","nullable":true},"priorityLockedAt":{"type":"string","format":"date-time","nullable":true},"seerFixabilityScore":{"type":"number","format":"double","nullable":true},"seerAutofixLastTriggered":{"type":"string","format":"date-time","nullable":true},"seerExplorerAutofixLastTriggered":{"type":"string","format":"date-time","nullable":true},"project":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"platform":{"type":"string","nullable":true}},"required":["id","name","platform","slug"]},"type":{"enum":["default","error","csp","nel","hpkp","expectct","expectstaple","transaction","generic","feedback"],"type":"string"},"issueType":{"type":"string"},"issueCategory":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"numComments":{"type":"integer"},"assignedTo":{"type":"object","properties":{"type":{"enum":["user","team"],"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["id","name","type"],"nullable":true},"isBookmarked":{"type":"boolean"},"isSubscribed":{"type":"boolean"},"subscriptionDetails":{"type":"object","properties":{"disabled":{"type":"boolean"},"reason":{"type":"string"}},"nullable":true},"hasSeen":{"type":"boolean"},"annotations":{"type":"array","items":{"type":"object","properties":{"displayName":{"type":"string"},"url":{"type":"string"}},"required":["displayName","url"]}}},"required":["annotations","assignedTo","culprit","hasSeen","id","isBookmarked","isPublic","isSubscribed","issueCategory","issueType","level","logger","metadata","numComments","permalink","platform","priority","priorityLockedAt","project","seerAutofixLastTriggered","seerExplorerAutofixLastTriggered","seerFixabilityScore","shareId","shortId","status","statusDetails","subscriptionDetails","substatus","title","type"]},"shortId":{"type":"string"}},"required":["group","groupId","organizationSlug","projectSlug","shortId"]},"examples":{"ShortIDLookup":{"value":{"group":{"annotations":[],"assignedTo":{"id":"1","name":"John Doe","email":"john@example.com","type":"user"},"count":"1","culprit":"raven.scripts.runner in main","firstSeen":"2018-11-06T21:19:55Z","hasSeen":false,"id":"1","isBookmarked":false,"isPublic":false,"isSubscribed":true,"lastSeen":"2018-11-06T21:19:55Z","level":"error","logger":null,"metadata":{"title":"This is an example Python exception"},"numComments":0,"permalink":"https://sentry.io/the-interstellar-jurisdiction/pump-station/issues/1/","project":{"id":"2","name":"Pump Station","slug":"pump-station","platform":"python"},"shareId":"abc123","shortId":"PUMP-STATION-1","status":"unresolved","statusDetails":{},"subscriptionDetails":null,"title":"This is an example Python exception","type":"default","userCount":0,"issueCategory":"error","issueType":"error","platform":"python","priority":"medium","priorityLockedAt":null,"seerFixabilityScore":0.5,"seerAutofixLastTriggered":null,"seerExplorerAutofixLastTriggered":null,"substatus":"ongoing"},"groupId":"1","organizationSlug":"the-interstellar-jurisdiction","projectSlug":"pump-station","shortId":"PUMP-STATION-1"},"summary":"Short ID Lookup"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/starred-service-spans/":{"post":{"operationId":"starOrganizationServiceSpan","description":"**Experimental:** This API is under active development and may change.\n\nStar a service span for the requesting user. Span queries expose this as the\n`is_starred_transaction` field. Returns `403` if the user has already starred\nthe service span.","summary":"Star a Service Span","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["Explore"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"service_span":{"type":"string","description":"The name of the service span to star or unstar."},"project_id":{"type":"integer","minimum":1,"description":"The ID of the project the service span belongs to."}},"required":["project_id","service_span"]}}},"required":true},"security":[{"auth_token":["member:read","member:write"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"},"x-sentry-experimental":true},"delete":{"operationId":"unstarOrganizationServiceSpan","description":"**Experimental:** This API is under active development and may change.\n\nUnstar a service span for the requesting user. Succeeds even if the\nservice span was not starred.","summary":"Unstar a Service Span","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"service_span","schema":{"type":"string"},"description":"The name of the service span to unstar.","required":true},{"in":"query","name":"project_id","schema":{"type":"integer"},"description":"The ID of the project the service span belongs to.","required":true}],"tags":["Explore"],"security":[{"auth_token":["member:read","member:write"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"},"x-sentry-experimental":true}},"/api/0/organizations/{organization_id_or_slug}/stats-summary/":{"get":{"operationId":"getOrganizationStatsSummary","description":"Query summarized event counts by project for your Organization. Also see https://docs.sentry.io/api/organizations/retrieve-event-counts-for-an-organization-v2/ for reference.","summary":"Retrieve an Organization's Events Count by Project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"field","schema":{"enum":["sum(quantity)","sum(times_seen)"],"type":"string","minLength":1},"description":"the `sum(quantity)` field is bytes for attachments, and all others the 'event' count for those types of events.\n\n`sum(times_seen)` sums the number of times an event has been seen. For 'normal' event types, this will be equal to\u00a0`sum(quantity)`\u00a0for now. For sessions, quantity will sum the total number of events seen in a session, while `times_seen` will be the unique number of sessions. and for attachments, `times_seen` will be the total number of attachments, while quantity will be the total sum of attachment bytes.\n\n* `sum(quantity)`\n* `sum(times_seen)`","required":true},{"in":"query","name":"statsPeriod","schema":{"type":"string","minLength":1},"description":"This defines the range of the time series, relative to now. The range is given in a `` format. For example `1d` for a one day range. Possible units are `m` for minutes, `h` for hours, `d` for days and `w` for weeks. You must either provide a `statsPeriod`, or a `start` and `end`."},{"in":"query","name":"interval","schema":{"type":"string","minLength":1},"description":"This is the resolution of the time series, given in the same format as `statsPeriod`. The default resolution is `1h` and the minimum resolution is currently restricted to `1h` as well. Intervals larger than `1d` are not supported, and the interval has to cleanly divide one day."},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"This defines the start of the time series range as an explicit datetime, either in UTC ISO8601 or epoch seconds. Use along with `end` instead of `statsPeriod`."},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"This defines the inclusive end of the time series range as an explicit datetime, either in UTC ISO8601 or epoch seconds. Use along with `start` instead of `statsPeriod`."},{"in":"query","name":"project","schema":{"type":"array","items":{}},"description":"The ID of the projects to filter by."},{"in":"query","name":"category","schema":{"enum":["error","transaction","attachment","replays","profiles"],"type":"string","minLength":1},"description":"If filtering by attachments, you cannot filter by any other category due to quantity values becoming nonsensical (combining bytes and event counts).\n\nIf filtering by\u00a0`error`, it will automatically add\u00a0`default`\u00a0and\u00a0`security`\u00a0as we currently roll those two categories into\u00a0`error`\u00a0for displaying.\n\n* `error`\n* `transaction`\n* `attachment`\n* `replays`\n* `profiles`"},{"in":"query","name":"outcome","schema":{"enum":["accepted","filtered","rate_limited","invalid","abuse","client_discard","cardinality_limited"],"type":"string","minLength":1},"description":"See https://docs.sentry.io/product/stats/ for more information on outcome statuses.\n\n* `accepted`\n* `filtered`\n* `rate_limited`\n* `invalid`\n* `abuse`\n* `client_discard`\n* `cardinality_limited`"},{"in":"query","name":"reason","schema":{"type":"string","minLength":1},"description":"The reason field will contain why an event was filtered/dropped."},{"in":"query","name":"download","schema":{"type":"boolean"},"description":"Download the API response in as a csv file"}],"tags":["Organizations"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"},"projects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"stats":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["id","slug","stats"]}}},"required":["end","projects","start"]},"examples":{"GetEventCountsForProjectsInAnOrganization":{"value":{"start":"2023-09-19T13:00:00Z","end":"2023-09-19T12:28:00Z","projects":[{"id":"1","slug":"android-project","stats":[{"category":"error","outcomes":{"accepted":1930571,"filtered":1934881,"rate_limited":2506132,"invalid":0,"abuse":1938113,"client_discard":1942414,"cardinality_limited":0},"totals":{"dropped":2506132,"sum(quantity)":10252111}},{"category":"transaction","outcomes":{"accepted":1909849,"filtered":1947142,"rate_limited":2458946,"invalid":0,"abuse":1927179,"client_discard":1931595,"cardinality_limited":0},"totals":{"dropped":2458946,"sum(quantity)":10174711}}]}]},"summary":"Get event counts for projects in an organization"}}}},"description":""},"401":{"description":"Unauthorized"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/stats_v2/":{"get":{"operationId":"listOrganizationStatsV2","description":"Query event counts for your Organization.\nSelect a field, define a date range, and group or filter by columns.","summary":"Retrieve Event Counts for an Organization (v2)","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"groupBy","schema":{"type":"array","items":{"enum":["outcome","category","reason","project"],"type":"string","description":"* `outcome`\n* `category`\n* `reason`\n* `project`"}},"description":"can pass multiple groupBy parameters to group by multiple, e.g.\u00a0`groupBy=project&groupBy=outcome`\u00a0to group by multiple dimensions. Note that grouping by project can cause missing rows if the number of projects / interval is large. If you have a large number of projects, we recommend filtering and querying by them individually.Also note that grouping by projects does not currently support timeseries interval responses and will instead be a sum of the projectover the entire period specified.","required":true},{"in":"query","name":"field","schema":{"enum":["sum(quantity)","sum(times_seen)"],"type":"string","minLength":1},"description":"the `sum(quantity)` field is bytes for attachments, and all others the 'event' count for those types of events.\n\n`sum(times_seen)` sums the number of times an event has been seen. For 'normal' event types, this will be equal to\u00a0`sum(quantity)`\u00a0for now. For sessions, quantity will sum the total number of events seen in a session, while `times_seen` will be the unique number of sessions. and for attachments, `times_seen` will be the total number of attachments, while quantity will be the total sum of attachment bytes.\n\n* `sum(quantity)`\n* `sum(times_seen)`","required":true},{"in":"query","name":"statsPeriod","schema":{"type":"string","minLength":1},"description":"This defines the range of the time series, relative to now. The range is given in a `` format. For example `1d` for a one day range. Possible units are `m` for minutes, `h` for hours, `d` for days and `w` for weeks. You must either provide a `statsPeriod`, or a `start` and `end`."},{"in":"query","name":"interval","schema":{"type":"string","minLength":1},"description":"This is the resolution of the time series, given in the same format as `statsPeriod`. The default resolution is `1h` and the minimum resolution is currently restricted to `1h` as well. Intervals larger than `1d` are not supported, and the interval has to cleanly divide one day."},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"This defines the start of the time series range as an explicit datetime, either in UTC ISO8601 or epoch seconds. Use along with `end` instead of `statsPeriod`."},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"This defines the inclusive end of the time series range as an explicit datetime, either in UTC ISO8601 or epoch seconds. Use along with `start` instead of `statsPeriod`."},{"in":"query","name":"project","schema":{"type":"array","items":{}},"description":"The ID of the projects to filter by.\n\nUse `-1` to include all accessible projects."},{"in":"query","name":"category","schema":{"enum":["error","transaction","attachment","replay","profile","profile_duration","profile_duration_ui","profile_chunk","profile_chunk_ui","monitor"],"type":"string","minLength":1},"description":"Filter by data category. Each category represents a different type of data:\n\n- `error`: Error events (includes `default` and `security` categories)\n- `transaction`: Transaction events\n- `attachment`: File attachments (note: cannot be combined with other categories since quantity represents bytes)\n- `replay`: Session replay events\n- `profile`: Performance profiles\n- `profile_duration`: Profile duration data (note: cannot be combined with other categories since quantity represents milliseconds)\n- `profile_duration_ui`: Profile duration (UI) data (note: cannot be combined with other categories since quantity represents milliseconds)\n- `profile_chunk`: Profile chunk data\n- `profile_chunk_ui`: Profile chunk (UI) data\n- `monitor`: Cron monitor events\n\n* `error`\n* `transaction`\n* `attachment`\n* `replay`\n* `profile`\n* `profile_duration`\n* `profile_duration_ui`\n* `profile_chunk`\n* `profile_chunk_ui`\n* `monitor`"},{"in":"query","name":"outcome","schema":{"enum":["accepted","filtered","rate_limited","invalid","abuse","client_discard","cardinality_limited"],"type":"string","minLength":1},"description":"See https://docs.sentry.io/product/stats/ for more information on outcome statuses.\n\n* `accepted`\n* `filtered`\n* `rate_limited`\n* `invalid`\n* `abuse`\n* `client_discard`\n* `cardinality_limited`"},{"in":"query","name":"reason","schema":{"type":"string","minLength":1},"description":"The reason field will contain why an event was filtered/dropped."}],"tags":["Organizations"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"},"intervals":{"type":"array","items":{"type":"string"}},"groups":{"type":"array","items":{"type":"object","properties":{"by":{"type":"object","additionalProperties":{}},"totals":{"type":"object","additionalProperties":{}},"series":{"type":"object","additionalProperties":{}}},"required":["by","series","totals"]}}},"required":["end","groups","intervals","start"]},"examples":{"RetrieveEventCountsV2":{"value":{"start":"2022-02-14T19:00:00Z","end":"2022-02-28T18:03:00Z","intervals":["2022-02-28T00:00:00Z"],"groups":[{"by":{"outcome":"invalid"},"totals":{"sum(quantity)":165665},"series":{"sum(quantity)":[165665]}}]},"summary":"Retrieve event counts v2"}}}},"description":""},"401":{"description":"Unauthorized"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/tags/":{"get":{"operationId":"listOrganizationTags","description":"Return a list of tag keys for the given organization.","summary":"List an Organization's Tags","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects.\nFor example, the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=android&project=javascript-react`\n- `/?project=-1`\n"},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."},{"in":"query","name":"statsPeriod","schema":{"type":"string"},"description":"The period of time for the query, will override the start & end parameters, a number followed by one of:\n- `d` for days\n- `h` for hours\n- `m` for minutes\n- `s` for seconds\n- `w` for weeks\n\nFor example, `24h`, to mean query data starting from 24 hours ago to now."},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"dataset","schema":{"type":"string","enum":["discover","events","replays","search_issues"]},"description":"The dataset to query. Defaults to `discover`."},{"in":"query","name":"use_cache","schema":{"type":"string","enum":["0","1"]},"description":"Set to `\"1\"` to enable caching for the tag key query."},{"in":"query","name":"useFlagsBackend","schema":{"type":"string","enum":["0","1"]},"description":"Set to `\"1\"` to query feature flags instead of tags."}],"tags":["Discover"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"uniqueValues":{"type":"integer","nullable":true},"totalValues":{"type":"integer","nullable":true},"topValues":{"type":"array","items":{"type":"object","properties":{"query":{"type":"string","nullable":true},"key":{"type":"string"},"name":{"type":"string"},"value":{"type":"string","nullable":true},"count":{"type":"integer","nullable":true},"lastSeen":{"type":"string","nullable":true},"firstSeen":{"type":"string","nullable":true}},"required":["count","firstSeen","key","lastSeen","name","value"]},"nullable":true},"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"]}},"examples":{"ReturnAListOfTagKeysForAnOrganization":{"value":[{"key":"browser","name":"Browser","totalValues":350},{"key":"browser.name","name":"Browser Name","totalValues":350},{"key":"environment","name":"Environment","totalValues":500},{"key":"level","name":"Level","totalValues":500},{"key":"os","name":"OS","totalValues":420},{"key":"release","name":"Release","totalValues":100}],"summary":"Return a list of tag keys for an organization"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/teams/":{"get":{"operationId":"listOrganizationTeams","description":"Returns a list of teams bound to a organization.","summary":"List an Organization's Teams","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"detailed","schema":{"type":"string"},"description":"\nSpecify `\"0\"` to return team details that do not include projects.\n"},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"},{"in":"query","name":"per_page","schema":{"type":"integer"},"description":"Limit the number of rows to return in the result. Default and maximum allowed is 100."},{"in":"query","name":"query","schema":{"type":"string"},"description":"Filter teams by name or slug."}],"tags":["Teams"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time","nullable":true},"isMember":{"type":"boolean"},"teamRole":{"type":"string","nullable":true},"flags":{"type":"object","additionalProperties":{}},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"isPending":{"type":"boolean"},"memberCount":{"type":"integer"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"externalTeams":{"type":"array","items":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]}},"organization":{"type":"object","properties":{"features":{"type":"array","items":{"type":"string"}},"extraOptions":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{}}},"access":{"type":"array","items":{"type":"string"}},"onboardingTasks":{"type":"array","items":{"type":"object","properties":{"task":{"type":"string","nullable":true},"status":{"type":"string"},"completionSeen":{"type":"string","format":"date-time","nullable":true},"dateCompleted":{"type":"string","format":"date-time"},"data":{}},"required":["completionSeen","data","dateCompleted","status","task"]}},"id":{"type":"string"},"slug":{"type":"string"},"status":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"isEarlyAdopter":{"type":"boolean"},"require2FA":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"links":{"type":"object","properties":{"organizationUrl":{"type":"string"},"regionUrl":{"type":"string"}},"required":["organizationUrl","regionUrl"]},"hasAuthProvider":{"type":"boolean"},"allowMemberInvite":{"type":"boolean"},"allowMemberProjectCreation":{"type":"boolean"},"allowSuperuserAccess":{"type":"boolean"}},"required":["allowMemberInvite","allowMemberProjectCreation","allowSuperuserAccess","avatar","dateCreated","hasAuthProvider","id","isEarlyAdopter","links","name","require2FA","slug","status"]},"projects":{"type":"array","items":{"type":"object","properties":{"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"isInternal":{"type":"boolean"},"isPublic":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"color":{"type":"string"},"status":{"type":"string"}},"required":["access","avatar","color","dateCreated","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","id","isBookmarked","isInternal","isMember","isPublic","name","platform","slug","status"]}}},"required":["access","avatar","dateCreated","flags","hasAccess","id","isMember","isPending","memberCount","name","slug","teamRole"]}},"examples":{"GetListOfOrganization'sTeams":{"value":[{"id":"48531","slug":"ancient-gabelers","name":"Ancient Gabelers","dateCreated":"2018-11-06T21:20:08.115Z","isMember":false,"teamRole":null,"flags":{"idp:provisioned":false},"access":["member:read","alerts:read","org:read","event:read","project:read","project:releases","event:write","team:read"],"hasAccess":true,"isPending":false,"memberCount":2,"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":null}},{"id":"100253","slug":"powerful-abolitionist","name":"Powerful Abolitionist","dateCreated":"2018-10-03T17:47:50.745447Z","isMember":false,"teamRole":null,"flags":{"idp:provisioned":false},"access":["member:read","alerts:read","org:read","event:read","project:read","project:releases","event:write","team:read"],"hasAccess":true,"isPending":false,"memberCount":5,"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":null},"projects":[{"id":"6403534","slug":"prime-mover","name":"Prime Mover","platform":null,"dateCreated":"2019-04-06T00:02:40.468175Z","isBookmarked":false,"isMember":false,"features":["custom-inbound-filters","discard-groups","minidump","rate-limits","servicehooks","similarity-indexing","similarity-indexing-v2","similarity-view","similarity-view-v2","releases"],"firstEvent":"2019-04-06T02:00:21Z","firstTransactionEvent":true,"access":["alerts:read","event:write","org:read","project:read","member:read","team:read","event:read","project:releases"],"hasAccess":true,"hasMinifiedStackTrace":false,"hasMonitors":true,"hasProfiles":false,"hasReplays":false,"hasFlags":false,"hasFeedbacks":false,"hasNewFeedbacks":false,"hasSessions":true,"hasInsightsHttp":true,"hasInsightsDb":false,"hasInsightsAssets":true,"hasInsightsAppStart":false,"hasInsightsScreenLoad":false,"hasInsightsVitals":false,"hasInsightsCaches":false,"hasInsightsQueues":false,"hasInsightsAgentMonitoring":false,"hasInsightsMCP":false,"hasLogs":false,"hasTraceMetrics":false,"isInternal":false,"isPublic":false,"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":null},"color":"#6d3fbf","status":"active"},{"id":"6403599","slug":"the-spoiled-yoghurt","name":"The Spoiled Yoghurt","platform":"","dateCreated":"2022-06-24T17:55:27.304367Z","isBookmarked":false,"isMember":false,"features":["custom-inbound-filters","discard-groups","minidump","rate-limits","servicehooks","similarity-indexing","similarity-indexing-v2","similarity-view","similarity-view-v2"],"firstEvent":"2022-07-13T18:17:56.197351Z","firstTransactionEvent":false,"access":["alerts:read","event:write","org:read","project:read","member:read","team:read","event:read","project:releases"],"hasAccess":true,"hasMinifiedStackTrace":false,"hasMonitors":true,"hasProfiles":false,"hasReplays":false,"hasFlags":false,"hasFeedbacks":false,"hasNewFeedbacks":false,"hasSessions":false,"hasInsightsHttp":false,"hasInsightsDb":true,"hasInsightsAssets":true,"hasInsightsAppStart":true,"hasInsightsScreenLoad":true,"hasInsightsVitals":false,"hasInsightsCaches":false,"hasInsightsQueues":false,"hasInsightsAgentMonitoring":false,"hasInsightsMCP":false,"hasLogs":false,"hasTraceMetrics":false,"isInternal":false,"isPublic":false,"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":null},"color":"#6e3fbf","status":"active"}]}],"summary":"Get list of organization's teams"}}}},"description":""},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"post":{"operationId":"createOrganizationTeam","description":"Create a new team bound to an organization. Requires at least one of the `name`\nor `slug` body params to be set.","summary":"Create a New Team","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["Teams"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","nullable":true,"description":"Uniquely identifies a team and is used for the interface. If not\n provided, it is automatically generated from the name.","maxLength":50,"pattern":"^(?![0-9]+$)[a-z0-9_\\-]+$"},"name":{"type":"string","nullable":true,"description":"**`[DEPRECATED]`** The name for the team. If not provided, it is\n automatically generated from the slug","maxLength":64,"deprecated":true}}}}}},"security":[{"auth_token":["org:admin","org:write","team:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time","nullable":true},"isMember":{"type":"boolean"},"teamRole":{"type":"string","nullable":true},"flags":{"type":"object","additionalProperties":{}},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"isPending":{"type":"boolean"},"memberCount":{"type":"integer"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"externalTeams":{"type":"array","items":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]}},"organization":{"type":"object","properties":{"features":{"type":"array","items":{"type":"string"}},"extraOptions":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{}}},"access":{"type":"array","items":{"type":"string"}},"onboardingTasks":{"type":"array","items":{"type":"object","properties":{"task":{"type":"string","nullable":true},"status":{"type":"string"},"completionSeen":{"type":"string","format":"date-time","nullable":true},"dateCompleted":{"type":"string","format":"date-time"},"data":{}},"required":["completionSeen","data","dateCompleted","status","task"]}},"id":{"type":"string"},"slug":{"type":"string"},"status":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"isEarlyAdopter":{"type":"boolean"},"require2FA":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"links":{"type":"object","properties":{"organizationUrl":{"type":"string"},"regionUrl":{"type":"string"}},"required":["organizationUrl","regionUrl"]},"hasAuthProvider":{"type":"boolean"},"allowMemberInvite":{"type":"boolean"},"allowMemberProjectCreation":{"type":"boolean"},"allowSuperuserAccess":{"type":"boolean"}},"required":["allowMemberInvite","allowMemberProjectCreation","allowSuperuserAccess","avatar","dateCreated","hasAuthProvider","id","isEarlyAdopter","links","name","require2FA","slug","status"]},"projects":{"type":"array","items":{"type":"object","properties":{"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"isInternal":{"type":"boolean"},"isPublic":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"color":{"type":"string"},"status":{"type":"string"}},"required":["access","avatar","color","dateCreated","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","id","isBookmarked","isInternal","isMember","isPublic","name","platform","slug","status"]}}},"required":["access","avatar","dateCreated","flags","hasAccess","id","isMember","isPending","memberCount","name","slug","teamRole"]},"examples":{"CreateANewTeam":{"value":{"id":"5151492858","slug":"ancient-gabelers","name":"Ancient Gabelers","dateCreated":"2021-06-12T23:38:54.168307Z","isMember":true,"teamRole":"admin","flags":{"idp:provisioned":false},"access":["project:write","member:read","event:write","team:admin","alerts:read","project:releases","alerts:write","org:read","team:read","project:admin","project:read","org:integrations","event:read","event:admin","team:write"],"hasAccess":true,"isPending":false,"memberCount":1,"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":null}},"summary":"Create a new team"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"A team with this slug already exists."}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/trace-items/attributes/":{"get":{"operationId":"listOrganizationTraceItemAttributes","description":"List the attribute keys available on a given trace item dataset (spans, logs,\ntrace metrics, etc.), with optional substring and structured filtering.\n\nPass `expand=context` (experimental) to include each attribute's metadata:\na brief description, examples, and deprecation details.","summary":"List Trace Item Attributes","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"statsPeriod","schema":{"type":"string"},"description":"The period of time for the query, will override the start & end parameters, a number followed by one of:\n- `d` for days\n- `h` for hours\n- `m` for minutes\n- `s` for seconds\n- `w` for weeks\n\nFor example, `24h`, to mean query data starting from 24 hours ago to now."},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects.\nFor example, the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=android&project=javascript-react`\n- `/?project=-1`\n"},{"in":"query","name":"dataset","schema":{"type":"string","enum":["logs","preprod","processing_errors","spans","tracemetrics"]},"description":"The trace item dataset to list attributes for. One of `itemType` or `dataset` is required."},{"in":"query","name":"itemType","schema":{"type":"string","enum":["logs","preprod","processing_errors","spans","tracemetrics"]},"description":"Deprecated alias of `dataset`. Use `dataset` instead.","deprecated":true},{"in":"query","name":"attributeType","schema":{"type":"array","items":{"type":"string","enum":["array","boolean","number","string"]}},"description":"Filter to attributes of one or more types. Defaults to all types."},{"in":"query","name":"substringMatch","schema":{"type":"string"},"description":"Restrict results to attribute names containing this substring (case-sensitive)."},{"in":"query","name":"query","schema":{"type":"string"},"description":"Sentry [search syntax](https://docs.sentry.io/concepts/search/) to filter trace items before computing attributes."},{"in":"query","name":"expand","schema":{"type":"array","items":{"type":"string","enum":["context"]}},"description":"**Experimental:** This parameter is under active development and may change.\n\nOptional fields to expand. Pass `context` to include attribute metadata (brief, examples, deprecation, etc.).","x-sentry-experimental":true},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Discover"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"secondaryAliases":{"type":"array","items":{"type":"string"}},"attributeSource":{"type":"object","properties":{"source_type":{"enum":["sentry","user"],"type":"string"},"is_transformed_alias":{"type":"boolean"}},"required":["source_type"]},"attributeType":{"enum":["string","number","boolean","array"],"type":"string"},"context":{"type":"object","description":"Additional, mostly-static metadata about an attribute.\n\nWhen ``expand=context`` is requested, context is attached to every attribute.\nMetadata comes from the sentry conventions, Sentry's own column definitions,\nor user-authored context (gated behind ``data-browsing-attribute-context``),\nin that precedence order. Only the fields available are included, so an\nattribute with no metadata gets an empty context.","properties":{"isConvention":{"type":"boolean"},"isCustom":{"type":"boolean"},"brief":{"type":"string"},"isDeprecated":{"type":"boolean"},"details":{"type":"array","items":{"type":"string"}},"examples":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number","format":"double"},{"type":"boolean"}]}},"replacementAttribute":{"type":"string"}}}},"required":["attributeSource","attributeType","key","name"]}},"examples":{"ReturnAListOfTraceItemAttributeKeys":{"value":[{"key":"device.class","name":"device.class","attributeSource":{"source_type":"sentry"},"attributeType":"string"},{"key":"tags[Batch Size,number]","name":"Batch Size","attributeSource":{"source_type":"user"},"attributeType":"number"}],"summary":"Return a list of trace item attribute keys"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/trace-items/metrics/":{"get":{"operationId":"listOrganizationTraceMetrics","description":"**Experimental:** This API is under active development and may change.\n\nList trace metrics (name, type, unit, count, last seen) with optional context.","summary":"List an Organization's Trace Metrics","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects.\nFor example, the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=android&project=javascript-react`\n- `/?project=-1`\n"},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."},{"in":"query","name":"statsPeriod","schema":{"type":"string"},"description":"The period of time for the query, will override the start & end parameters, a number followed by one of:\n- `d` for days\n- `h` for hours\n- `m` for minutes\n- `s` for seconds\n- `w` for weeks\n\nFor example, `24h`, to mean query data starting from 24 hours ago to now."},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"query","schema":{"type":"string"},"description":"Search query to filter metrics, using the same syntax as the metrics dataset."},{"in":"query","name":"sort","schema":{"type":"string","enum":["-count","-lastSeen","-name","-type","-unit","count","lastSeen","name","type","unit"]},"description":"Response field to sort by, prefixed with `-` for descending. Defaults to metric name ascending."},{"in":"query","name":"expand","schema":{"type":"array","items":{"type":"string","enum":["context"]}},"description":"Optional fields to expand. Pass `context` to include each metric's authored context (brief and details), which describes what the metric measures. Requires the `data-browsing-attribute-context` feature; without it the `context` field is omitted."},{"in":"query","name":"contextOnly","schema":{"type":"boolean"},"description":"Return only metrics that have authored context, and include that context in the response. Use this to discover the metrics that are described well enough to query confidently. Requires the `data-browsing-attribute-context` feature; without it this is a no-op."}],"tags":["Explore"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"enum":["counter","gauge","distribution"],"type":"string"},"unit":{"type":"string","nullable":true},"count":{"type":"number","format":"double"},"lastSeen":{"type":"number","format":"double","nullable":true},"context":{"type":"object","properties":{"brief":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}},"required":["count","lastSeen","name","type","unit"]}},"examples":{"ListTheTraceMetricsForAnOrganization":{"value":[{"name":"checkout.latency","type":"distribution","unit":"millisecond","count":1432,"lastSeen":1735689600,"context":{"brief":"End-to-end latency of the checkout flow.","details":["Recorded once per completed checkout, from cart submit to receipt."]}},{"name":"cart.items","type":"gauge","unit":null,"count":87,"lastSeen":1735686000}],"summary":"List the trace metrics for an organization"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"},"x-sentry-experimental":true}},"/api/0/organizations/{organization_id_or_slug}/trace-items/stats/":{"get":{"operationId":"Retrieve Trace Item Statistics","description":"Compute statistics, such as attribute value distributions, over the trace\nitems (spans or occurrences) matching the given query within the requested\ntime range.","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"statsType","schema":{"type":"array","items":{"type":"string","enum":["attributeDistributions"]}},"description":"The statistics to compute over the matching trace items.","required":true},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects.\nFor example, the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=android&project=javascript-react`\n- `/?project=-1`\n"},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."},{"in":"query","name":"statsPeriod","schema":{"type":"string"},"description":"The period of time for the query, will override the start & end parameters, a number followed by one of:\n- `d` for days\n- `h` for hours\n- `m` for minutes\n- `s` for seconds\n- `w` for weeks\n\nFor example, `24h`, to mean query data starting from 24 hours ago to now."},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"itemType","schema":{"type":"string","enum":["occurrences","spans"]},"description":"The trace item dataset to compute statistics for. Defaults to `spans`."},{"in":"query","name":"query","schema":{"type":"string"},"description":"Sentry [search syntax](https://docs.sentry.io/concepts/search/) to filter trace items before computing statistics."},{"in":"query","name":"substringMatch","schema":{"type":"string"},"description":"Restrict results to attribute names containing this substring (case-sensitive)."},{"in":"query","name":"traceItemsLimit","schema":{"type":"integer"},"description":"Maximum number of trace items to sample when computing statistics. Defaults to `1000`, which is also the maximum."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Explore"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"attributeDistributions":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"number","format":"double"}},"required":["label","value"]}}}},"required":["data"]}},"required":["attributeDistributions"]}}},"required":["data"]},"examples":{"AttributeDistributionsForTheMatchingTraceItems":{"value":{"data":[{"attributeDistributions":{"data":{"sentry.device":[{"label":"mobile","value":3},{"label":"desktop","value":1}],"browser.name":[{"label":"chrome","value":3},{"label":"safari","value":1}]}}}]},"summary":"Attribute distributions for the matching trace items"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/trace-meta/{trace_id}/":{"get":{"operationId":"getOrganizationTraceMeta","description":"Retrieve aggregate metadata for a single trace, including counts of spans,\nerrors, performance issues, logs, and metrics, along with per-span-operation\nand per-transaction child-count breakdowns.","summary":"Retrieve Trace Metadata","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"trace_id","schema":{"type":"string"},"description":"The ID of the trace, a 32-character hexadecimal string.","required":true},{"in":"query","name":"statsPeriod","schema":{"type":"string"},"description":"The period of time for the query, will override the start & end parameters, a number followed by one of:\n- `d` for days\n- `h` for hours\n- `m` for minutes\n- `s` for seconds\n- `w` for weeks\n\nFor example, `24h`, to mean query data starting from 24 hours ago to now."},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"include_uptime","schema":{"type":"string","enum":["0","1"]},"description":"Set to `1` to include uptime check counts in the response. Defaults to `0` (disabled)."}],"tags":["Discover"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"uptimeCount":{"type":"integer"},"errorsCount":{"type":"integer"},"logsCount":{"type":"number","format":"double"},"metricsCount":{"type":"number","format":"double"},"performanceIssuesCount":{"type":"integer"},"spansCount":{"type":"number","format":"double"},"transactionChildCountMap":{"type":"array","items":{"type":"object","additionalProperties":{}}},"spansCountMap":{"type":"object","additionalProperties":{"type":"number","format":"double"}}},"required":["errorsCount","logsCount","metricsCount","performanceIssuesCount","spansCount","spansCountMap","transactionChildCountMap"]},"examples":{"ReturnAggregateMetadataForATrace":{"value":{"errorsCount":0,"logsCount":5,"metricsCount":0,"performanceIssuesCount":0,"spansCount":195,"transactionChildCountMap":[{"transaction.event_id":"280027d94f30428c83a2de46f932612a","count()":7},{"transaction.event_id":"66087f4e87c847759db67fd62e32829c","count()":38}],"spansCountMap":{"db":58,"cache.get":56,"http.server":6}},"summary":"Return aggregate metadata for a trace"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/trace/{trace_id}/":{"get":{"operationId":"getOrganizationTrace","description":"Retrieve the spans, errors, and (optionally) uptime checks that make up a single trace.\n\nThe response is a list of top-level events; each item may have nested `children`, `errors`,\nand `occurrences` arrays representing related items. Top-level entries are spans by default\nand may also be uptime checks when `include_uptime=1` is passed.","summary":"Retrieve a Trace","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"trace_id","schema":{"type":"string"},"description":"The ID of the trace, a 32-character hexadecimal string.","required":true},{"in":"query","name":"statsPeriod","schema":{"type":"string"},"description":"The period of time for the query, will override the start & end parameters, a number followed by one of:\n- `d` for days\n- `h` for hours\n- `m` for minutes\n- `s` for seconds\n- `w` for weeks\n\nFor example, `24h`, to mean query data starting from 24 hours ago to now."},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"referrer","schema":{"type":"string"},"description":"Internal referrer identifier used for query tracing. Most clients can omit this."},{"in":"query","name":"errorId","schema":{"type":"string"},"description":"A 32-character hexadecimal event ID to bias the trace results toward including."},{"in":"query","name":"additional_attributes","schema":{"type":"array","items":{"type":"string"}},"description":"Additional span attributes to include on each event. Repeat to request multiple."},{"in":"query","name":"include_uptime","schema":{"type":"string","enum":["0","1"]},"description":"Set to `1` to include uptime check results in the trace. Defaults to `0`."}],"tags":["Discover"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"description":{"type":"string"},"event_id":{"type":"string"},"project_id":{"type":"integer"},"project_slug":{"type":"string"},"transaction":{"type":"string"},"event_type":{"enum":["span"],"type":"string"},"children":{"type":"array","items":{"type":"object","description":"Fields shared by every item in a trace. Entries in `children` are full\nspans at runtime; only the shared fields are documented here.","properties":{"description":{"type":"string"},"event_id":{"type":"string"},"project_id":{"type":"integer"},"project_slug":{"type":"string"},"transaction":{"type":"string"}},"required":["description","event_id","project_id","project_slug","transaction"]}},"errors":{"type":"array","items":{"type":"object","properties":{"description":{"type":"string"},"event_id":{"type":"string"},"project_id":{"type":"integer"},"project_slug":{"type":"string"},"transaction":{"type":"string"},"event_type":{"enum":["error","occurrence"],"type":"string"},"issue_id":{"type":"integer"},"level":{"type":"string"},"start_timestamp":{"type":"number","format":"double"},"end_timestamp":{"type":"number","format":"double"},"culprit":{"type":"string","nullable":true},"short_id":{"type":"string","nullable":true},"issue_type":{"type":"integer"}},"required":["culprit","description","event_id","event_type","issue_id","issue_type","level","project_id","project_slug","short_id","start_timestamp","transaction"]}},"occurrences":{"type":"array","items":{"type":"object","properties":{"description":{"type":"string"},"event_id":{"type":"string"},"project_id":{"type":"integer"},"project_slug":{"type":"string"},"transaction":{"type":"string"},"event_type":{"enum":["error","occurrence"],"type":"string"},"issue_id":{"type":"integer"},"level":{"type":"string"},"start_timestamp":{"type":"number","format":"double"},"end_timestamp":{"type":"number","format":"double"},"culprit":{"type":"string","nullable":true},"short_id":{"type":"string","nullable":true},"issue_type":{"type":"integer"}},"required":["culprit","description","event_id","event_type","issue_id","issue_type","level","project_id","project_slug","short_id","start_timestamp","transaction"]}},"duration":{"type":"number","format":"double"},"end_timestamp":{"type":"number","format":"double"},"measurements":{"type":"object","additionalProperties":{"type":"number","format":"double"}},"browser_web_vital":{"type":"object","additionalProperties":{"type":"number","format":"double"}},"mobile_app_vital":{"type":"object","additionalProperties":{"type":"number","format":"double"}},"op":{"type":"string"},"name":{"type":"string"},"parent_span_id":{"type":"string","nullable":true},"profile_id":{"type":"string"},"profiler_id":{"type":"string"},"sdk_name":{"type":"string"},"start_timestamp":{"type":"number","format":"double"},"is_transaction":{"type":"boolean"},"transaction_id":{"type":"string"},"additional_attributes":{"type":"object","additionalProperties":{}}},"required":["browser_web_vital","children","description","duration","end_timestamp","errors","event_id","event_type","is_transaction","measurements","mobile_app_vital","name","occurrences","op","parent_span_id","profile_id","profiler_id","project_id","project_slug","sdk_name","start_timestamp","transaction","transaction_id"]},{"type":"object","properties":{"description":{"type":"string"},"event_id":{"type":"string"},"project_id":{"type":"integer"},"project_slug":{"type":"string"},"transaction":{"type":"string"},"event_type":{"enum":["error","occurrence"],"type":"string"},"issue_id":{"type":"integer"},"level":{"type":"string"},"start_timestamp":{"type":"number","format":"double"},"end_timestamp":{"type":"number","format":"double"},"culprit":{"type":"string","nullable":true},"short_id":{"type":"string","nullable":true},"issue_type":{"type":"integer"}},"required":["culprit","description","event_id","event_type","issue_id","issue_type","level","project_id","project_slug","short_id","start_timestamp","transaction"]},{"type":"object","properties":{"description":{"type":"string"},"event_id":{"type":"string"},"project_id":{"type":"integer"},"project_slug":{"type":"string"},"transaction":{"type":"string"},"event_type":{"enum":["uptime_check"],"type":"string"},"children":{"type":"array","items":{"type":"object","description":"Fields shared by every item in a trace. Entries in `children` are full\nspans at runtime; only the shared fields are documented here.","properties":{"description":{"type":"string"},"event_id":{"type":"string"},"project_id":{"type":"integer"},"project_slug":{"type":"string"},"transaction":{"type":"string"}},"required":["description","event_id","project_id","project_slug","transaction"]}},"errors":{"type":"array","items":{"type":"object","properties":{"description":{"type":"string"},"event_id":{"type":"string"},"project_id":{"type":"integer"},"project_slug":{"type":"string"},"transaction":{"type":"string"},"event_type":{"enum":["error","occurrence"],"type":"string"},"issue_id":{"type":"integer"},"level":{"type":"string"},"start_timestamp":{"type":"number","format":"double"},"end_timestamp":{"type":"number","format":"double"},"culprit":{"type":"string","nullable":true},"short_id":{"type":"string","nullable":true},"issue_type":{"type":"integer"}},"required":["culprit","description","event_id","event_type","issue_id","issue_type","level","project_id","project_slug","short_id","start_timestamp","transaction"]}},"occurrences":{"type":"array","items":{"type":"object","properties":{"description":{"type":"string"},"event_id":{"type":"string"},"project_id":{"type":"integer"},"project_slug":{"type":"string"},"transaction":{"type":"string"},"event_type":{"enum":["error","occurrence"],"type":"string"},"issue_id":{"type":"integer"},"level":{"type":"string"},"start_timestamp":{"type":"number","format":"double"},"end_timestamp":{"type":"number","format":"double"},"culprit":{"type":"string","nullable":true},"short_id":{"type":"string","nullable":true},"issue_type":{"type":"integer"}},"required":["culprit","description","event_id","event_type","issue_id","issue_type","level","project_id","project_slug","short_id","start_timestamp","transaction"]}},"transaction_id":{"type":"string"},"op":{"type":"string"},"start_timestamp":{"type":"number","format":"double"},"end_timestamp":{"type":"number","format":"double"},"duration":{"type":"number","format":"double"},"name":{"type":"string"},"region_name":{"type":"string"},"additional_attributes":{"type":"object","additionalProperties":{}}},"required":["additional_attributes","children","description","duration","end_timestamp","errors","event_id","event_type","name","occurrences","op","project_id","project_slug","region_name","start_timestamp","transaction","transaction_id"]}]}},"examples":{"ReturnTheSpans,Errors,AndOccurrencesOfATrace":{"value":[{"event_id":"0123456789abcdef0123456789abcdef","event_type":"span","transaction_id":"280027d94f30428c83a2de46f932612a","project_id":4505281256090153,"project_slug":"javascript","transaction":"POST /api/0/projects/{org}/{proj}/events/{event_id}/attachments/","description":"POST /api/0/projects/{org}/{proj}/events/{event_id}/attachments/","op":"http.server","name":"http.server","parent_span_id":null,"profile_id":"","profiler_id":"","sdk_name":"sentry.python","is_transaction":true,"start_timestamp":1776277351,"end_timestamp":1776277351.25,"duration":250,"measurements":{"measurements.frames_slow_rate":0.02,"measurements.frames_frozen_rate":0.01},"browser_web_vital":{"browser.web_vital.lcp.value":2807.335,"browser.web_vital.cls.value":0.0382,"browser.web_vital.inp.value":120,"browser.web_vital.ttfb.value":450,"browser.web_vital.fcp.value":2258.06},"mobile_app_vital":{"app.vitals.start.cold.value":1600,"app.vitals.start.warm.value":400,"app.vitals.ttid.value":1200,"app.vitals.ttfd.value":2400},"children":[],"errors":[],"occurrences":[]}],"summary":"Return the spans, errors, and occurrences of a trace"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/user-teams/":{"get":{"operationId":"listOrganizationUserTeams","description":"Returns a list of teams the user has access to in the specified organization.\nNote that this endpoint is restricted to [user auth tokens](https://docs.sentry.io/account/auth-tokens/#user-auth-tokens).","summary":"List a User's Teams for an Organization","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["Teams"],"security":[{"auth_token":["org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time","nullable":true},"isMember":{"type":"boolean"},"teamRole":{"type":"string","nullable":true},"flags":{"type":"object","additionalProperties":{}},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"isPending":{"type":"boolean"},"memberCount":{"type":"integer"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"externalTeams":{"type":"array","items":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]}},"organization":{"type":"object","properties":{"features":{"type":"array","items":{"type":"string"}},"extraOptions":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{}}},"access":{"type":"array","items":{"type":"string"}},"onboardingTasks":{"type":"array","items":{"type":"object","properties":{"task":{"type":"string","nullable":true},"status":{"type":"string"},"completionSeen":{"type":"string","format":"date-time","nullable":true},"dateCompleted":{"type":"string","format":"date-time"},"data":{}},"required":["completionSeen","data","dateCompleted","status","task"]}},"id":{"type":"string"},"slug":{"type":"string"},"status":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"isEarlyAdopter":{"type":"boolean"},"require2FA":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"links":{"type":"object","properties":{"organizationUrl":{"type":"string"},"regionUrl":{"type":"string"}},"required":["organizationUrl","regionUrl"]},"hasAuthProvider":{"type":"boolean"},"allowMemberInvite":{"type":"boolean"},"allowMemberProjectCreation":{"type":"boolean"},"allowSuperuserAccess":{"type":"boolean"}},"required":["allowMemberInvite","allowMemberProjectCreation","allowSuperuserAccess","avatar","dateCreated","hasAuthProvider","id","isEarlyAdopter","links","name","require2FA","slug","status"]},"projects":{"type":"array","items":{"type":"object","properties":{"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"isInternal":{"type":"boolean"},"isPublic":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"color":{"type":"string"},"status":{"type":"string"}},"required":["access","avatar","color","dateCreated","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","id","isBookmarked","isInternal","isMember","isPublic","name","platform","slug","status"]}}},"required":["access","avatar","dateCreated","flags","hasAccess","id","isMember","isPending","memberCount","name","slug","teamRole"]}},"examples":{"GetListOfOrganization'sTeams":{"value":[{"id":"48531","slug":"ancient-gabelers","name":"Ancient Gabelers","dateCreated":"2018-11-06T21:20:08.115Z","isMember":false,"teamRole":null,"flags":{"idp:provisioned":false},"access":["member:read","alerts:read","org:read","event:read","project:read","project:releases","event:write","team:read"],"hasAccess":true,"isPending":false,"memberCount":2,"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":null}},{"id":"100253","slug":"powerful-abolitionist","name":"Powerful Abolitionist","dateCreated":"2018-10-03T17:47:50.745447Z","isMember":false,"teamRole":null,"flags":{"idp:provisioned":false},"access":["member:read","alerts:read","org:read","event:read","project:read","project:releases","event:write","team:read"],"hasAccess":true,"isPending":false,"memberCount":5,"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":null},"projects":[{"id":"6403534","slug":"prime-mover","name":"Prime Mover","platform":null,"dateCreated":"2019-04-06T00:02:40.468175Z","isBookmarked":false,"isMember":false,"features":["custom-inbound-filters","discard-groups","minidump","rate-limits","servicehooks","similarity-indexing","similarity-indexing-v2","similarity-view","similarity-view-v2","releases"],"firstEvent":"2019-04-06T02:00:21Z","firstTransactionEvent":true,"access":["alerts:read","event:write","org:read","project:read","member:read","team:read","event:read","project:releases"],"hasAccess":true,"hasMinifiedStackTrace":false,"hasMonitors":true,"hasProfiles":false,"hasReplays":false,"hasFlags":false,"hasFeedbacks":false,"hasNewFeedbacks":false,"hasSessions":true,"hasInsightsHttp":true,"hasInsightsDb":false,"hasInsightsAssets":true,"hasInsightsAppStart":false,"hasInsightsScreenLoad":false,"hasInsightsVitals":false,"hasInsightsCaches":false,"hasInsightsQueues":false,"hasInsightsAgentMonitoring":false,"hasInsightsMCP":false,"hasLogs":false,"hasTraceMetrics":false,"isInternal":false,"isPublic":false,"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":null},"color":"#6d3fbf","status":"active"},{"id":"6403599","slug":"the-spoiled-yoghurt","name":"The Spoiled Yoghurt","platform":"","dateCreated":"2022-06-24T17:55:27.304367Z","isBookmarked":false,"isMember":false,"features":["custom-inbound-filters","discard-groups","minidump","rate-limits","servicehooks","similarity-indexing","similarity-indexing-v2","similarity-view","similarity-view-v2"],"firstEvent":"2022-07-13T18:17:56.197351Z","firstTransactionEvent":false,"access":["alerts:read","event:write","org:read","project:read","member:read","team:read","event:read","project:releases"],"hasAccess":true,"hasMinifiedStackTrace":false,"hasMonitors":true,"hasProfiles":false,"hasReplays":false,"hasFlags":false,"hasFeedbacks":false,"hasNewFeedbacks":false,"hasSessions":false,"hasInsightsHttp":false,"hasInsightsDb":true,"hasInsightsAssets":true,"hasInsightsAppStart":true,"hasInsightsScreenLoad":true,"hasInsightsVitals":false,"hasInsightsCaches":false,"hasInsightsQueues":false,"hasInsightsAgentMonitoring":false,"hasInsightsMCP":false,"hasLogs":false,"hasTraceMetrics":false,"isInternal":false,"isPublic":false,"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":null},"color":"#6e3fbf","status":"active"}]}],"summary":"Get list of organization's teams"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/workflows/":{"get":{"operationId":"listOrganizationWorkflows","description":"Returns a list of alerts for a given organization","summary":"Fetch Alerts","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"sortBy","schema":{"type":"string"},"description":"The field to sort results by. If not specified, the results are sorted by id.\n\nAvailable fields are:\n- `name`\n- `id`\n- `dateCreated`\n- `dateUpdated`\n- `connectedDetectors`\n- `actions`\n- `priorityDetector`\n\nPrefix with `-` to sort in descending order.\n "},{"in":"query","name":"query","schema":{"type":"string"},"description":"An optional search query for filtering alerts."},{"in":"query","name":"id","schema":{"type":"array","items":{"type":"integer"}},"description":"The ID of the alert you'd like to query."},{"in":"query","name":"detector","schema":{"type":"array","items":{"type":"integer"}},"description":"The IDs of monitors connected to the alerts you'd like to query."},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects.\nFor example, the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=android&project=javascript-react`\n- `/?project=-1`\n"},{"in":"query","name":"per_page","schema":{"type":"integer"},"description":"Limit the number of rows to return in the result. Default and maximum allowed is 100."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Monitors"],"security":[{"auth_token":["alerts:read","org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organizationId":{"type":"string"},"createdBy":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"triggers":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"logicType":{"type":"string"},"conditions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"comparison":{"anyOf":[{"type":"boolean"},{"type":"integer"}]},"conditionResult":{"type":"boolean"}},"required":["comparison","conditionResult","id","type"]}},{"type":"array","items":{}}]},"actions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"integrationId":{"type":"string","nullable":true},"data":{"type":"object","additionalProperties":{"type":"string"}},"config":{"type":"object","additionalProperties":{}},"status":{"type":"string"}}}},{"type":"array","items":{}}]}},"nullable":true},"actionFilters":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"logicType":{"type":"string"},"conditions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"comparison":{"anyOf":[{"type":"boolean"},{"type":"integer"}]},"conditionResult":{"type":"boolean"}},"required":["comparison","conditionResult","id","type"]}},{"type":"array","items":{}}]},"actions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"integrationId":{"type":"string","nullable":true},"data":{"type":"object","additionalProperties":{"type":"string"}},"config":{"type":"object","additionalProperties":{}},"status":{"type":"string"}}}},{"type":"array","items":{}}]}}},"nullable":true},"environment":{"type":"string","nullable":true},"config":{"type":"object","additionalProperties":{}},"detectorIds":{"type":"array","items":{"type":"string"},"nullable":true},"enabled":{"type":"boolean"},"lastTriggered":{"type":"string","format":"date-time","nullable":true},"owner":{"type":"string","nullable":true}},"required":["actionFilters","config","createdBy","dateCreated","dateUpdated","detectorIds","enabled","environment","id","lastTriggered","name","organizationId","owner","triggers"]}},"examples":{"ListAllWorkflowsInAnOrganization":{"value":[{"id":"123","name":"Send a notification for high priority issues","organizationId":"1","createdBy":null,"dateCreated":"2025-03-18T20:48:55.495059Z","dateUpdated":"2025-03-18T20:48:55.579094Z","triggers":{"id":"12345","organizationId":"1","logicType":"any-short","conditions":[{"id":"2345","type":"new_high_priority_issue","comparison":true,"conditionResult":true},{"id":"3456","type":"existing_high_priority_issue","comparison":true,"conditionResult":true}],"actions":[]},"actionFilters":[{"id":"5678","organizationId":"1","logicType":"all","conditions":[],"actions":[{"id":"234","type":"email","integrationId":null,"data":{"fallthroughType":"ActiveMembers"},"config":{"targetType":"issue_owners","targetDisplay":null,"targetIdentifier":null},"status":"active"}]}],"environment":null,"config":{"frequency":30},"detectorIds":[],"enabled":true,"lastTriggered":null,"owner":"user:123456"},{"id":"456","name":"Notify team #example-team","organizationId":"1","createdBy":"34567","dateCreated":"2026-01-15T23:46:39.594915Z","dateUpdated":"2026-01-15T23:46:39.594903Z","triggers":{"id":"12345","organizationId":"1","logicType":"any-short","conditions":[],"actions":[]},"actionFilters":[{"id":"6789","organizationId":"1","logicType":"any-short","conditions":[{"id":"5678","type":"event_frequency_count","comparison":{"value":100,"interval":"1h"},"conditionResult":true}],"actions":[{"id":"1234","type":"email","integrationId":null,"data":{},"config":{"targetType":"team","targetDisplay":null,"targetIdentifier":"1234567890"},"status":"active"}]}],"environment":null,"config":{"frequency":1440},"detectorIds":[],"enabled":true,"lastTriggered":null,"owner":"team:456789"},{"id":"789","name":"Notify Jane Doe","organizationId":"1","createdBy":"2345","dateCreated":"2026-01-15T23:46:39.594915Z","dateUpdated":"2026-01-15T23:49:57.697583Z","triggers":{"id":"56789","organizationId":"1","logicType":"any-short","conditions":[],"actions":[]},"actionFilters":[{"id":"56789","organizationId":"1","logicType":"any-short","conditions":[{"id":"234567","type":"event_unique_user_frequency_count","comparison":{"value":100,"filters":[{"key":"foo","match":"eq","value":"bar"}],"interval":"1h"},"conditionResult":true}],"actions":[{"id":"456789","type":"email","integrationId":null,"data":{},"config":{"targetType":"user","targetDisplay":null,"targetIdentifier":"123456"},"status":"active"}]}],"environment":null,"config":{"frequency":1440},"detectorIds":[],"enabled":true,"lastTriggered":null,"owner":null}],"summary":"List all workflows in an organization"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"post":{"operationId":"createOrganizationWorkflow","description":"Creates an alert for an organization","summary":"Create an Alert for an Organization","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true}],"tags":["Monitors"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"name":{"type":"string","description":"The name of the alert","maxLength":256},"id":{"type":"string","description":"The ID of the existing alert"},"enabled":{"type":"boolean","default":true,"description":"Whether the alert is enabled or disabled"},"detector_ids":{"type":"array","items":{"type":"integer"},"description":"The IDs of the monitors to connect this alert to. Use 'Fetch an Organization's Monitors' to find the IDs."},"config":{"type":"object","additionalProperties":{},"description":"\n Typically the frequency at which the alert will fire, in minutes.\n\n - `0`: 0 minutes\n - `5`: 5 minutes\n - `10`: 10 minutes\n - `30`: 30 minutes\n - `60`: 1 hour\n - `180`: 3 hours\n - `720`: 12 hours\n - `1440`: 24 hours\n\n ```json\n {\n \"frequency\": 60\n }\n ```\n "},"environment":{"type":"string","nullable":true,"description":"The name of the environment for the alert to evaluate in"},"triggers":{"allOf":[{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"id":{"type":"integer"},"logic_type":{"enum":["any","any-short","all","none"],"type":"string","description":"* `any`\n* `any-short`\n* `all`\n* `none`"},"conditions":{"type":"array","items":{}}},"required":["logic_type"]}],"description":"The conditions on which the alert will trigger. See available options below.\n ```json\n {\n \"triggers\": {\n \"organizationId\": \"1\",\n \"logicType\": \"any-short\",\n \"conditions\": [\n {\n \"type\": \"first_seen_event\",\n \"comparison\": true,\n \"conditionResult\": true\n },\n {\n \"type\": \"issue_resolved_trigger\",\n \"comparison\": true,\n \"conditionResult\": true\n },\n {\n \"type\": \"reappeared_event\",\n \"comparison\": true,\n \"conditionResult\": true\n },\n {\n \"type\": \"regression_event\",\n \"comparison\": true,\n \"conditionResult\": true\n },\n {\n \"type\": \"seer_activity_trigger\",\n \"comparison\": [\n \"rca_completed\",\n \"solution_completed\",\n \"coding_completed\",\n \"pr_ready_for_review\"\n ],\n \"conditionResult\": true\n }\n ]\n }\n }\n ```\n "},"action_filters":{"type":"array","items":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"id":{"type":"integer"},"logic_type":{"enum":["any","any-short","all","none"],"type":"string","description":"* `any`\n* `any-short`\n* `all`\n* `none`"},"conditions":{"type":"array","items":{}},"actions":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["actions","logic_type"]},"description":"The filters to run before the action will fire and the action(s) to fire.\n\n `logicType` can be one of `any-short`, `all`, or `none`.\n\n Below is a basic example. See below for all other options.\n\n ```json\n \"actionFilters\": [\n {\n \"logicType\": \"any\",\n \"conditions\": [\n {\n \"type\": \"level\",\n \"comparison\": {\n \"level\": 50,\n \"match\": \"eq\"\n },\n \"conditionResult\": true\n }\n ],\n \"actions\": [\n {\n \"id\": \"123\",\n \"type\": \"email\",\n \"integrationId\": null,\n \"data\": {},\n \"config\": {\n \"targetType\": \"user\",\n \"targetDisplay\": null,\n \"targetIdentifier\": \"56789\"\n },\n \"status\": \"active\"\n }\n ]\n }\n ]\n ```\n\n ## Conditions\n\n **Issue Age**\n - `time`: One of `minute`, `hour`, `day`, or `week`.\n - `value`: A positive integer.\n - `comparisonType`: One of `older` or `newer`.\n ```json\n {\n \"type\": \"age_comparison\",\n \"comparison\": {\n \"time\": \"minute\",\n \"value\": 10,\n \"comparisonType\": \"older\"\n },\n \"conditionResult\": true\n }\n\n ```\n\n **Issue Assignment**\n - `targetType`: Who the issue is assigned to\n - `Unassigned`: Unassigned\n - `Member`: Assigned to a user\n - `Team`: Assigned to a team\n - `targetIdentifier`: The ID of the user or team from the `targetType`. Enter \"\" if `targetType` is `Unassigned`.\n ```json\n {\n \"type\": \"assigned_to\",\n \"comparison\": {\n \"targetType\": \"Member\",\n \"targetIdentifier\": 123456\n },\n \"conditionResult\": true\n }\n ```\n\n **Issue Category**\n - `value`: The issue category to filter to.\n - `1`: Error issues\n - `6`: Feedback issues\n - `10`: Outage issues\n - `11`: Metric issues\n - `12`: DB Query issues\n - `13`: HTTP Client issues\n - `14`: Front end issues\n - `15`: Mobile issues\n - `17`: Preprod issues\n - `19`: Configuration issues\n ```json\n {\n \"type\": \"issue_category\",\n \"comparison\": {\n \"value\": 1\n },\n \"conditionResult\": true\n }\n ```\n\n **Issue Frequency**\n - `value`: A positive integer representing how many times the issue has to happen before the alert will fire.\n ```json\n {\n \"type\": \"issue_occurrences\",\n \"comparison\": {\n \"value\": 10\n },\n \"conditionResult\": true\n }\n ```\n\n **De-escalation**\n - `comparison`: The priority threshold the issue must de-escalate below.\n - `75`: High priority\n - `50`: Medium priority\n - `25`: Low priority\n ```json\n {\n \"type\": \"issue_priority_deescalating\",\n \"comparison\": 75,\n \"conditionResult\": true\n }\n ```\n\n **Issue Priority**\n - `comparison`: The priority the issue must be for the alert to fire.\n - `75`: High priority\n - `50`: Medium priority\n - `25`: Low priority\n ```json\n {\n \"type\": \"issue_priority_greater_or_equal\",\n \"comparison\": 75,\n \"conditionResult\": true\n }\n ```\n\n **Number of Users Affected**\n - `value`: A positive integer representing the number of users that must be affected before the alert will fire.\n - `filters`: A list of additional sub-filters to evaluate before the alert will fire.\n - `interval`: The time period in which to evaluate the value. e.g. Number of users affected by an issue is more than `value` in `interval`.\n - `1m`: 1 minute\n - `5m`: 5 minutes\n - `15m`: 15 minutes\n - `1h`: 1 hour\n - `1d`: 1 day\n - `1w`: 1 week\n - `30d`: 30 days\n ```json\n {\n \"type\": \"event_unique_user_frequency_count\",\n \"comparison\": {\n \"value\": 100,\n \"filters\": [{\"key\": \"foo\", \"match\": \"eq\", \"value\": \"bar\"}],\n \"interval\": \"1h\"\n },\n \"conditionResult\": true\n }\n ```\n\n **Number of Events**\n - `value`: A positive integer representing the number of events in an issue that must come in before the alert will fire\n - `interval`: The time period in which to evaluate the value. e.g. Number of events in an issue is more than `value` in `interval`.\n - `1m`: 1 minute\n - `5m`: 5 minutes\n - `15m`: 15 minutes\n - `1h`: 1 hour\n - `1d`: 1 day\n - `1w`: 1 week\n - `30d`: 30 days\n ```json\n {\n \"type\": \"event_frequency_count\",\n \"comparison\": {\n \"value\": 100,\n \"interval\": \"1h\"\n },\n \"conditionResult\": true\n }\n ```\n\n **Percent of Events**\n - `value`: A positive integer representing the number of events in an issue that must come in before the alert will fire\n - `interval`: The time period in which to evaluate the value.\n - `1m`: 1 minute\n - `5m`: 5 minutes\n - `15m`: 15 minutes\n - `1h`: 1 hour\n - `1d`: 1 day\n - `1w`: 1 week\n - `30d`: 30 days\n - `comparisonInterval`: The time period to compare against.\n - `5m`: 5 minutes\n - `15m`: 15 minutes\n - `1h`: 1 hour\n - `1d`: 1 day\n - `1w`: 1 week\n - `30d`: 30 days\n ```json\n {\n \"type\": \"event_frequency_percent\",\n \"comparison\": {\n \"value\": 100,\n \"interval\": \"1h\",\n \"comparisonInterval\": \"1w\"\n },\n \"conditionResult\": true\n }\n\n ```\n\n **Percentage of Sessions Affected Count**\n - `value`: A positive integer representing the number of events in an issue that must come in before the alert will fire\n - `interval`: The time period in which to evaluate the value. e.g. Percentage of sessions affected by an issue is more than `value` in `interval`.\n - `1m`: 1 minute\n - `5m`: 5 minutes\n - `10m`: 10 minutes\n - `30m`: 30 minutes\n - `1h`: 1 hour\n ```json\n {\n \"type\": \"percent_sessions_count\",\n \"comparison\": {\n \"value\": 10,\n \"interval\": \"1h\"\n },\n \"conditionResult\": true\n }\n ```\n\n **Percentage of Sessions Affected Percent**\n - `value`: A positive integer representing the number of events in an issue that must come in before the alert will fire\n - `interval`: The time period in which to evaluate the value.\n - `1m`: 1 minute\n - `5m`: 5 minutes\n - `10m`: 10 minutes\n - `30m`: 30 minutes\n - `1h`: 1 hour\n - `comparisonInterval`: The time period to compare against.\n - `5m`: 5 minutes\n - `15m`: 15 minutes\n - `1h`: 1 hour\n - `1d`: 1 day\n - `1w`: 1 week\n - `30d`: 30 days\n ```json\n {\n \"type\": \"percent_sessions_percent\",\n \"comparison\": {\n \"value\": 10,\n \"interval\": \"1h\",\n \"comparisonInterval\": \"1w\"\n },\n \"conditionResult\": true\n }\n ```\n\n **Event Attribute**\n The event's `attribute` value `match` `value`\n\n - `attribute`: The event attribute to match on. Valid values are: `message`, `platform`, `environment`, `type`, `error.handled`, `error.unhandled`, `error.main_thread`, `exception.type`, `exception.value`, `user.id`, `user.email`, `user.username`, `user.ip_address`, `http.method`, `http.url`, `http.status_code`, `sdk.name`, `stacktrace.code`, `stacktrace.module`, `stacktrace.filename`, `stacktrace.abs_path`, `stacktrace.package`, `unreal.crash_type`, `app.in_foreground`.\n - `match`: The comparison operator\n - `co`: Contains\n - `nc`: Does not contain\n - `eq`: Equals\n - `ne`: Does not equal\n - `sw`: Starts with\n - `ew`: Ends with\n - `is`: Is set\n - `ns`: Is not set\n - `value`: A string. Must be omitted when match is `is` or `ns`; required otherwise.\n\n ```json\n {\n \"type\": \"event_attribute\",\n \"comparison\": {\n \"match\": \"co\",\n \"value\": \"bar\",\n \"attribute\": \"message\"\n },\n \"conditionResult\": true\n }\n ```\n\n **Tagged Event**\n The event's tags `key` match `value`\n - `key`: The tag value\n - `match`: The comparison operator\n - `co`: Contains\n - `nc`: Does not contain\n - `eq`: Equals\n - `ne`: Does not equal\n - `sw`: Starts with\n - `ew`: Ends with\n - `is`: Is set\n - `ns`: Is not set\n - `value`: A string. Must be omitted when match is `is` or `ns`; required otherwise.\n\n ```json\n {\n \"type\": \"tagged_event\",\n \"comparison\": {\n \"key\": \"level\",\n \"match\": \"eq\",\n \"value\": \"error\"\n },\n \"conditionResult\": true\n }\n ```\n\n **Latest Release**\n The event is from the latest release\n\n ```json\n {\n \"type\": \"latest_release\",\n \"comparison\": true,\n \"conditionResult\": true\n }\n ```\n\n **Release Age**\n ```json\n {\n \"type\": \"latest_adopted_release\",\n \"comparison\": {\n \"environment\": \"production\",\n \"ageComparison\": \"older\",\n \"releaseAgeType\": \"oldest\"\n },\n \"conditionResult\": true\n }\n ```\n\n **Event Level**\n The event's level is `match` `level`\n - `match`: The comparison operator\n - `eq`: Equal\n - `gte`: Greater than or equal\n - `lte`: Less than or equal\n - `level`: The event level\n - `50`: Fatal\n - `40`: Error\n - `30`: Warning\n - `20`: Info\n - `10`: Debug\n - `0`: Sample\n\n ```json\n {\n \"type\": \"level\",\n \"comparison\": {\n \"level\": 50,\n \"match\": \"eq\"\n },\n \"conditionResult\": true\n }\n ```\n\n ## Actions\n A list of actions that take place when all required conditions and filters for the alert are met. See below for a list of possible actions.\n\n\n **Notify on Preferred Channel**\n - `data`: A dictionary with the fallthrough type option when choosing to notify Suggested Assignees. Leave empty if notifying a user or team.\n - `fallthroughType`\n - `ActiveMembers`\n - `AllMembers`\n - `NoOne`\n - `config`: A dictionary with the configuration options for notification.\n - `targetType`: The type of recipient to notify\n - `user`: User\n - `team`: Team\n - `issue_owners`: Suggested Assignees\n - `targetDisplay`: null\n - `targetIdentifier`: The id of the user or team to notify. Leave null for Suggested Assignees.\n\n ```json\n {\n \"type\":\"email\",\n \"integrationId\":null,\n \"data\":{},\n \"config\":{\n \"targetType\":\"user\",\n \"targetDisplay\":null,\n \"targetIdentifier\":\"232692\"\n },\n \"status\":\"active\"\n },\n {\n \"type\":\"email\",\n \"integrationId\":null,\n \"data\":{\n \"fallthroughType\":\"ActiveMembers\"\n },\n \"config\":{\n \"targetType\":\"issue_owners\",\n \"targetDisplay\":null,\n \"targetIdentifier\":\"\"}\n ,\n \"status\":\"active\"\n }\n ```\n **Notify on Slack**\n - `targetDisplay`: The name of the channel to notify in.\n `integrationId`: The stringified ID of the integration.\n\n ```json\n {\n \"type\":\"slack\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\"\",\n \"targetDisplay\":\"notify-errors\"\n },\n \"integrationId\":\"1\",\n \"data\":{},\n \"status\":\"active\"\n }\n ```\n\n **Notify on PagerDuty**\n - `targetDisplay`: The name of the service to create the ticket in.\n - `integrationId`: The stringified ID of the integration.\n - `data[\"priority\"]`: The severity level for the notification.\n\n ```json\n {\n \"type\":\"pagerduty\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\"123456\",\n \"targetDisplay\":\"Error Service\"\n },\n \"integrationId\":\"2345\",\n \"data\":{\n \"priority\":\"default\"\n },\n \"status\":\"active\"\n }\n ```\n\n **Notify on Discord**\n - `targetDisplay`: The name of the service to create the ticket in.\n - `integrationId`: The stringified ID of the integration.\n - `data[\"tags\"]`: Comma separated list of tags to add to the notification.\n\n ```json\n {\n \"type\":\"discord\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\"12345\",\n \"targetDisplay\":\"\"\n },\n \"integrationId\":\"1234\",\n \"data\":{\n \"tags\":\"transaction,environment\"\n },\n \"status\":\"active\"\n }\n ```\n\n **Notify on MSTeams**\n - `targetIdentifier` - The integration ID associated with the Microsoft Teams team.\n - `targetDisplay` - The name of the channel to send the notification to.\n - `integrationId`: The stringified ID of the integration.\n ```json\n {\n \"type\":\"msteams\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\"19:a4b3kghaghgkjah357y6847@thread.skype\",\n \"targetDisplay\":\"notify-errors\"\n },\n \"integrationId\":\"1\",\n \"data\":{},\n \"status\":\"active\"\n }\n ```\n\n **Notify on OpsGenie**\n - `targetDisplay`: The name of the Opsgenie team.\n - `targetIdentifier`: The ID of the Opsgenie team to send the notification to.\n - `integrationId`: The stringified ID of the integration.\n - `data[\"priority\"]`: The priority level for the notification.\n\n ```json\n {\n \"type\":\"opsgenie\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\"123456-Error-Service\",\n \"targetDisplay\":\"Error Service\"\n },\n \"integrationId\":\"2345\",\n \"data\":{\n \"priority\":\"P3\"\n },\n \"status\":\"active\"\n }\n ```\n\n **Notify on Azure DevOps**\n - `integrationId`: The stringified ID of the integration.\n - `data` - A list of any fields you want to include in the ticket as objects.\n\n ```json\n {\n \"type\":\"vsts\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\",\n \"targetDisplay\":\"\"\n },\n \"integrationId\":\"2345\",\n \"data\":{...},\n \"status\":\"active\"\n }\n ```\n\n **Create a Jira ticket**\n - `integrationId`: The stringified ID of the integration.\n - `data` - A list of any fields you want to include in the ticket as objects.\n\n ```json\n {\n \"type\":\"jira\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\",\n \"targetDisplay\":\"\"\n },\n \"integrationId\":\"2345\",\n \"data\":{...},\n \"status\":\"active\"\n }\n ```\n\n **Create a Jira Server ticket**\n - `integrationId`: The stringified ID of the integration.\n - `data` - A list of any fields you want to include in the ticket as objects.\n\n ```json\n {\n \"type\":\"jira_server\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\",\n \"targetDisplay\":\"\"\n },\n \"integrationId\":\"2345\",\n \"data\":{...},\n \"status\":\"active\"\n }\n ```\n\n **Create a GitHub issue**\n - `integrationId`: The stringified ID of the integration.\n - `data` - A list of any fields you want to include in the ticket as objects.\n\n ```json\n {\n \"type\":\"github\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\",\n \"targetDisplay\":\"\"\n },\n \"integrationId\":\"2345\",\n \"data\":{\n \"additional_fields\": {\n \"assignee\": \"\",\n \"integration\": \"2345\",\n \"labels\": [],\n \"repo\": \"example-repo\",\n },\n \"dynamic_form_fields\": [\n {\n \"choices\": [[\"YourOrg/example-repo\", \"example-repo\"]],\n \"default\": \"YourOrg/example-repo\",\n \"label\": \"GitHub Repository\",\n \"name\": \"repo\",\n \"required\": true\n \"type\": \"select\",\n \"updatesForm\": true,\n \"url\": \"/extensions/github/search/example-repo/1234567/\",\n },\n ],\n },\n \"status\":\"active\"\n }\n ```\n "},"owner":{"type":"string","nullable":true,"description":"\n The ID user or team who owns the monitor or alert prefaced by the string 'user' or 'team'.\n\n **User**\n ```json\n \"user:123456\"\n ```\n\n **Team**\n ```json\n \"team:456789\"\n ```\n "}},"required":["name"]}}},"required":true},"security":[{"auth_token":["alerts:write","org:admin","org:read","org:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organizationId":{"type":"string"},"createdBy":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"triggers":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"logicType":{"type":"string"},"conditions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"comparison":{"anyOf":[{"type":"boolean"},{"type":"integer"}]},"conditionResult":{"type":"boolean"}},"required":["comparison","conditionResult","id","type"]}},{"type":"array","items":{}}]},"actions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"integrationId":{"type":"string","nullable":true},"data":{"type":"object","additionalProperties":{"type":"string"}},"config":{"type":"object","additionalProperties":{}},"status":{"type":"string"}}}},{"type":"array","items":{}}]}},"nullable":true},"actionFilters":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"logicType":{"type":"string"},"conditions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"comparison":{"anyOf":[{"type":"boolean"},{"type":"integer"}]},"conditionResult":{"type":"boolean"}},"required":["comparison","conditionResult","id","type"]}},{"type":"array","items":{}}]},"actions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"integrationId":{"type":"string","nullable":true},"data":{"type":"object","additionalProperties":{"type":"string"}},"config":{"type":"object","additionalProperties":{}},"status":{"type":"string"}}}},{"type":"array","items":{}}]}}},"nullable":true},"environment":{"type":"string","nullable":true},"config":{"type":"object","additionalProperties":{}},"detectorIds":{"type":"array","items":{"type":"string"},"nullable":true},"enabled":{"type":"boolean"},"lastTriggered":{"type":"string","format":"date-time","nullable":true},"owner":{"type":"string","nullable":true}},"required":["actionFilters","config","createdBy","dateCreated","dateUpdated","detectorIds","enabled","environment","id","lastTriggered","name","organizationId","owner","triggers"]},"examples":{"WorkflowSuccessfullyCreated":{"value":{"id":"1234567","name":"Notify Jane Doe","organizationId":"1","createdBy":"2345","dateCreated":"2026-01-13T21:21:15.975384Z","dateUpdated":"2026-01-13T21:21:15.975376Z","triggers":{"id":"456789","organizationId":"1","logicType":"any-short","conditions":[{"id":"234567","type":"first_seen_event","comparison":true,"conditionResult":true},{"id":"1234567","type":"issue_resolved_trigger","comparison":true,"conditionResult":true},{"id":"678912","type":"reappeared_event","comparison":true,"conditionResult":true},{"id":"7891234","type":"regression_event","comparison":true,"conditionResult":true}],"actions":[]},"actionFilters":[{"id":"45678","organizationId":"1","logicType":"any-short","conditions":[{"id":"23456789","type":"issue_occurrences","comparison":{"value":10},"conditionResult":true}],"actions":[{"id":"1234789","type":"email","integrationId":null,"data":{},"config":{"targetType":"user","targetDisplay":null,"targetIdentifier":"6789"},"status":"active"}]}],"environment":null,"config":{"frequency":1440},"detectorIds":["1000"],"enabled":true,"lastTriggered":null,"owner":"user:123456"},"summary":"Workflow successfully created"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"updateOrganizationWorkflows","description":"Bulk enable or disable alerts for a given Organization","summary":"Mutate an Organization's Alerts","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"query","schema":{"type":"string"},"description":"An optional search query for filtering alerts."},{"in":"query","name":"id","schema":{"type":"array","items":{"type":"integer"}},"description":"The ID of the alert you'd like to query."},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects.\nFor example, the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=android&project=javascript-react`\n- `/?project=-1`\n"}],"tags":["Monitors"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to enable or disable the alerts"}},"required":["enabled"]}}},"required":true},"security":[{"auth_token":["alerts:write","org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organizationId":{"type":"string"},"createdBy":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"triggers":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"logicType":{"type":"string"},"conditions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"comparison":{"anyOf":[{"type":"boolean"},{"type":"integer"}]},"conditionResult":{"type":"boolean"}},"required":["comparison","conditionResult","id","type"]}},{"type":"array","items":{}}]},"actions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"integrationId":{"type":"string","nullable":true},"data":{"type":"object","additionalProperties":{"type":"string"}},"config":{"type":"object","additionalProperties":{}},"status":{"type":"string"}}}},{"type":"array","items":{}}]}},"nullable":true},"actionFilters":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"logicType":{"type":"string"},"conditions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"comparison":{"anyOf":[{"type":"boolean"},{"type":"integer"}]},"conditionResult":{"type":"boolean"}},"required":["comparison","conditionResult","id","type"]}},{"type":"array","items":{}}]},"actions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"integrationId":{"type":"string","nullable":true},"data":{"type":"object","additionalProperties":{"type":"string"}},"config":{"type":"object","additionalProperties":{}},"status":{"type":"string"}}}},{"type":"array","items":{}}]}}},"nullable":true},"environment":{"type":"string","nullable":true},"config":{"type":"object","additionalProperties":{}},"detectorIds":{"type":"array","items":{"type":"string"},"nullable":true},"enabled":{"type":"boolean"},"lastTriggered":{"type":"string","format":"date-time","nullable":true},"owner":{"type":"string","nullable":true}},"required":["actionFilters","config","createdBy","dateCreated","dateUpdated","detectorIds","enabled","environment","id","lastTriggered","name","organizationId","owner","triggers"]}},"examples":{"ListAllWorkflowsInAnOrganization":{"value":[{"id":"123","name":"Send a notification for high priority issues","organizationId":"1","createdBy":null,"dateCreated":"2025-03-18T20:48:55.495059Z","dateUpdated":"2025-03-18T20:48:55.579094Z","triggers":{"id":"12345","organizationId":"1","logicType":"any-short","conditions":[{"id":"2345","type":"new_high_priority_issue","comparison":true,"conditionResult":true},{"id":"3456","type":"existing_high_priority_issue","comparison":true,"conditionResult":true}],"actions":[]},"actionFilters":[{"id":"5678","organizationId":"1","logicType":"all","conditions":[],"actions":[{"id":"234","type":"email","integrationId":null,"data":{"fallthroughType":"ActiveMembers"},"config":{"targetType":"issue_owners","targetDisplay":null,"targetIdentifier":null},"status":"active"}]}],"environment":null,"config":{"frequency":30},"detectorIds":[],"enabled":true,"lastTriggered":null,"owner":"user:123456"},{"id":"456","name":"Notify team #example-team","organizationId":"1","createdBy":"34567","dateCreated":"2026-01-15T23:46:39.594915Z","dateUpdated":"2026-01-15T23:46:39.594903Z","triggers":{"id":"12345","organizationId":"1","logicType":"any-short","conditions":[],"actions":[]},"actionFilters":[{"id":"6789","organizationId":"1","logicType":"any-short","conditions":[{"id":"5678","type":"event_frequency_count","comparison":{"value":100,"interval":"1h"},"conditionResult":true}],"actions":[{"id":"1234","type":"email","integrationId":null,"data":{},"config":{"targetType":"team","targetDisplay":null,"targetIdentifier":"1234567890"},"status":"active"}]}],"environment":null,"config":{"frequency":1440},"detectorIds":[],"enabled":true,"lastTriggered":null,"owner":"team:456789"},{"id":"789","name":"Notify Jane Doe","organizationId":"1","createdBy":"2345","dateCreated":"2026-01-15T23:46:39.594915Z","dateUpdated":"2026-01-15T23:49:57.697583Z","triggers":{"id":"56789","organizationId":"1","logicType":"any-short","conditions":[],"actions":[]},"actionFilters":[{"id":"56789","organizationId":"1","logicType":"any-short","conditions":[{"id":"234567","type":"event_unique_user_frequency_count","comparison":{"value":100,"filters":[{"key":"foo","match":"eq","value":"bar"}],"interval":"1h"},"conditionResult":true}],"actions":[{"id":"456789","type":"email","integrationId":null,"data":{},"config":{"targetType":"user","targetDisplay":null,"targetIdentifier":"123456"},"status":"active"}]}],"environment":null,"config":{"frequency":1440},"detectorIds":[],"enabled":true,"lastTriggered":null,"owner":null}],"summary":"List all workflows in an organization"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteOrganizationWorkflows","description":"Bulk delete alerts for a given organization","summary":"Bulk Delete Alerts","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"query","name":"query","schema":{"type":"string"},"description":"An optional search query for filtering alerts."},{"in":"query","name":"id","schema":{"type":"array","items":{"type":"integer"}},"description":"The ID of the alert you'd like to query."},{"in":"query","name":"project","schema":{"type":"array","items":{"anyOf":[{"type":"integer"},{"type":"string"}]}},"description":"The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects.\nFor example, the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=android&project=javascript-react`\n- `/?project=-1`\n"}],"tags":["Monitors"],"security":[{"auth_token":["alerts:write","org:admin","org:read","org:write"]}],"responses":{"200":{"description":"Success"},"204":{"description":"No Content"},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/workflows/{workflow_id}/":{"get":{"operationId":"getOrganizationWorkflow","description":"Returns an alert.","summary":"Fetch an Alert","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"workflow_id","schema":{"type":"integer"},"description":"The ID of the alert you'd like to query.","required":true}],"tags":["Monitors"],"security":[{"auth_token":["alerts:read","org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organizationId":{"type":"string"},"createdBy":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"triggers":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"logicType":{"type":"string"},"conditions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"comparison":{"anyOf":[{"type":"boolean"},{"type":"integer"}]},"conditionResult":{"type":"boolean"}},"required":["comparison","conditionResult","id","type"]}},{"type":"array","items":{}}]},"actions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"integrationId":{"type":"string","nullable":true},"data":{"type":"object","additionalProperties":{"type":"string"}},"config":{"type":"object","additionalProperties":{}},"status":{"type":"string"}}}},{"type":"array","items":{}}]}},"nullable":true},"actionFilters":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"logicType":{"type":"string"},"conditions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"comparison":{"anyOf":[{"type":"boolean"},{"type":"integer"}]},"conditionResult":{"type":"boolean"}},"required":["comparison","conditionResult","id","type"]}},{"type":"array","items":{}}]},"actions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"integrationId":{"type":"string","nullable":true},"data":{"type":"object","additionalProperties":{"type":"string"}},"config":{"type":"object","additionalProperties":{}},"status":{"type":"string"}}}},{"type":"array","items":{}}]}}},"nullable":true},"environment":{"type":"string","nullable":true},"config":{"type":"object","additionalProperties":{}},"detectorIds":{"type":"array","items":{"type":"string"},"nullable":true},"enabled":{"type":"boolean"},"lastTriggered":{"type":"string","format":"date-time","nullable":true},"owner":{"type":"string","nullable":true}},"required":["actionFilters","config","createdBy","dateCreated","dateUpdated","detectorIds","enabled","environment","id","lastTriggered","name","organizationId","owner","triggers"]},"examples":{"FetchAnAlert":{"value":{"id":"6789123","name":"My Alert","organizationId":"1","createdBy":"1234567","dateCreated":"2026-01-14T20:08:32.273220Z","dateUpdated":"2026-01-14T20:08:32.273209Z","triggers":{"id":"345678","organizationId":"1","logicType":"any-short","conditions":[{"id":"234","type":"first_seen_event","comparison":true,"conditionResult":true},{"id":"567","type":"issue_resolved_trigger","comparison":true,"conditionResult":true},{"id":"891","type":"reappeared_event","comparison":true,"conditionResult":true},{"id":"789","type":"regression_event","comparison":true,"conditionResult":true}],"actions":[]},"actionFilters":[{"id":"345678","organizationId":"1","logicType":"any-short","conditions":[{"id":"234567","type":"issue_priority_deescalating","comparison":75,"conditionResult":true}],"actions":[{"id":"45678","type":"slack","integrationId":"1","data":{},"config":{"targetType":"specific","targetDisplay":"@jane-doe","targetIdentifier":"ABCDE123456"},"status":"active"}]}],"environment":null,"config":{"frequency":1440},"detectorIds":["1234567"],"enabled":true,"lastTriggered":null,"owner":"user:123456"},"summary":"Fetch an Alert"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"updateOrganizationWorkflow","description":"Updates an alert.","summary":"Update an Alert by ID","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"workflow_id","schema":{"type":"integer"},"description":"The ID of the alert you'd like to query.","required":true}],"tags":["Monitors"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"name":{"type":"string","description":"The name of the alert","maxLength":256},"id":{"type":"string","description":"The ID of the existing alert"},"enabled":{"type":"boolean","default":true,"description":"Whether the alert is enabled or disabled"},"detector_ids":{"type":"array","items":{"type":"integer"},"description":"The IDs of the monitors to connect this alert to. Use 'Fetch an Organization's Monitors' to find the IDs."},"config":{"type":"object","additionalProperties":{},"description":"\n Typically the frequency at which the alert will fire, in minutes.\n\n - `0`: 0 minutes\n - `5`: 5 minutes\n - `10`: 10 minutes\n - `30`: 30 minutes\n - `60`: 1 hour\n - `180`: 3 hours\n - `720`: 12 hours\n - `1440`: 24 hours\n\n ```json\n {\n \"frequency\": 60\n }\n ```\n "},"environment":{"type":"string","nullable":true,"description":"The name of the environment for the alert to evaluate in"},"triggers":{"allOf":[{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"id":{"type":"integer"},"logic_type":{"enum":["any","any-short","all","none"],"type":"string","description":"* `any`\n* `any-short`\n* `all`\n* `none`"},"conditions":{"type":"array","items":{}}},"required":["logic_type"]}],"description":"The conditions on which the alert will trigger. See available options below.\n ```json\n {\n \"triggers\": {\n \"organizationId\": \"1\",\n \"logicType\": \"any-short\",\n \"conditions\": [\n {\n \"type\": \"first_seen_event\",\n \"comparison\": true,\n \"conditionResult\": true\n },\n {\n \"type\": \"issue_resolved_trigger\",\n \"comparison\": true,\n \"conditionResult\": true\n },\n {\n \"type\": \"reappeared_event\",\n \"comparison\": true,\n \"conditionResult\": true\n },\n {\n \"type\": \"regression_event\",\n \"comparison\": true,\n \"conditionResult\": true\n },\n {\n \"type\": \"seer_activity_trigger\",\n \"comparison\": [\n \"rca_completed\",\n \"solution_completed\",\n \"coding_completed\",\n \"pr_ready_for_review\"\n ],\n \"conditionResult\": true\n }\n ]\n }\n }\n ```\n "},"action_filters":{"type":"array","items":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"id":{"type":"integer"},"logic_type":{"enum":["any","any-short","all","none"],"type":"string","description":"* `any`\n* `any-short`\n* `all`\n* `none`"},"conditions":{"type":"array","items":{}},"actions":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["actions","logic_type"]},"description":"The filters to run before the action will fire and the action(s) to fire.\n\n `logicType` can be one of `any-short`, `all`, or `none`.\n\n Below is a basic example. See below for all other options.\n\n ```json\n \"actionFilters\": [\n {\n \"logicType\": \"any\",\n \"conditions\": [\n {\n \"type\": \"level\",\n \"comparison\": {\n \"level\": 50,\n \"match\": \"eq\"\n },\n \"conditionResult\": true\n }\n ],\n \"actions\": [\n {\n \"id\": \"123\",\n \"type\": \"email\",\n \"integrationId\": null,\n \"data\": {},\n \"config\": {\n \"targetType\": \"user\",\n \"targetDisplay\": null,\n \"targetIdentifier\": \"56789\"\n },\n \"status\": \"active\"\n }\n ]\n }\n ]\n ```\n\n ## Conditions\n\n **Issue Age**\n - `time`: One of `minute`, `hour`, `day`, or `week`.\n - `value`: A positive integer.\n - `comparisonType`: One of `older` or `newer`.\n ```json\n {\n \"type\": \"age_comparison\",\n \"comparison\": {\n \"time\": \"minute\",\n \"value\": 10,\n \"comparisonType\": \"older\"\n },\n \"conditionResult\": true\n }\n\n ```\n\n **Issue Assignment**\n - `targetType`: Who the issue is assigned to\n - `Unassigned`: Unassigned\n - `Member`: Assigned to a user\n - `Team`: Assigned to a team\n - `targetIdentifier`: The ID of the user or team from the `targetType`. Enter \"\" if `targetType` is `Unassigned`.\n ```json\n {\n \"type\": \"assigned_to\",\n \"comparison\": {\n \"targetType\": \"Member\",\n \"targetIdentifier\": 123456\n },\n \"conditionResult\": true\n }\n ```\n\n **Issue Category**\n - `value`: The issue category to filter to.\n - `1`: Error issues\n - `6`: Feedback issues\n - `10`: Outage issues\n - `11`: Metric issues\n - `12`: DB Query issues\n - `13`: HTTP Client issues\n - `14`: Front end issues\n - `15`: Mobile issues\n - `17`: Preprod issues\n - `19`: Configuration issues\n ```json\n {\n \"type\": \"issue_category\",\n \"comparison\": {\n \"value\": 1\n },\n \"conditionResult\": true\n }\n ```\n\n **Issue Frequency**\n - `value`: A positive integer representing how many times the issue has to happen before the alert will fire.\n ```json\n {\n \"type\": \"issue_occurrences\",\n \"comparison\": {\n \"value\": 10\n },\n \"conditionResult\": true\n }\n ```\n\n **De-escalation**\n - `comparison`: The priority threshold the issue must de-escalate below.\n - `75`: High priority\n - `50`: Medium priority\n - `25`: Low priority\n ```json\n {\n \"type\": \"issue_priority_deescalating\",\n \"comparison\": 75,\n \"conditionResult\": true\n }\n ```\n\n **Issue Priority**\n - `comparison`: The priority the issue must be for the alert to fire.\n - `75`: High priority\n - `50`: Medium priority\n - `25`: Low priority\n ```json\n {\n \"type\": \"issue_priority_greater_or_equal\",\n \"comparison\": 75,\n \"conditionResult\": true\n }\n ```\n\n **Number of Users Affected**\n - `value`: A positive integer representing the number of users that must be affected before the alert will fire.\n - `filters`: A list of additional sub-filters to evaluate before the alert will fire.\n - `interval`: The time period in which to evaluate the value. e.g. Number of users affected by an issue is more than `value` in `interval`.\n - `1m`: 1 minute\n - `5m`: 5 minutes\n - `15m`: 15 minutes\n - `1h`: 1 hour\n - `1d`: 1 day\n - `1w`: 1 week\n - `30d`: 30 days\n ```json\n {\n \"type\": \"event_unique_user_frequency_count\",\n \"comparison\": {\n \"value\": 100,\n \"filters\": [{\"key\": \"foo\", \"match\": \"eq\", \"value\": \"bar\"}],\n \"interval\": \"1h\"\n },\n \"conditionResult\": true\n }\n ```\n\n **Number of Events**\n - `value`: A positive integer representing the number of events in an issue that must come in before the alert will fire\n - `interval`: The time period in which to evaluate the value. e.g. Number of events in an issue is more than `value` in `interval`.\n - `1m`: 1 minute\n - `5m`: 5 minutes\n - `15m`: 15 minutes\n - `1h`: 1 hour\n - `1d`: 1 day\n - `1w`: 1 week\n - `30d`: 30 days\n ```json\n {\n \"type\": \"event_frequency_count\",\n \"comparison\": {\n \"value\": 100,\n \"interval\": \"1h\"\n },\n \"conditionResult\": true\n }\n ```\n\n **Percent of Events**\n - `value`: A positive integer representing the number of events in an issue that must come in before the alert will fire\n - `interval`: The time period in which to evaluate the value.\n - `1m`: 1 minute\n - `5m`: 5 minutes\n - `15m`: 15 minutes\n - `1h`: 1 hour\n - `1d`: 1 day\n - `1w`: 1 week\n - `30d`: 30 days\n - `comparisonInterval`: The time period to compare against.\n - `5m`: 5 minutes\n - `15m`: 15 minutes\n - `1h`: 1 hour\n - `1d`: 1 day\n - `1w`: 1 week\n - `30d`: 30 days\n ```json\n {\n \"type\": \"event_frequency_percent\",\n \"comparison\": {\n \"value\": 100,\n \"interval\": \"1h\",\n \"comparisonInterval\": \"1w\"\n },\n \"conditionResult\": true\n }\n\n ```\n\n **Percentage of Sessions Affected Count**\n - `value`: A positive integer representing the number of events in an issue that must come in before the alert will fire\n - `interval`: The time period in which to evaluate the value. e.g. Percentage of sessions affected by an issue is more than `value` in `interval`.\n - `1m`: 1 minute\n - `5m`: 5 minutes\n - `10m`: 10 minutes\n - `30m`: 30 minutes\n - `1h`: 1 hour\n ```json\n {\n \"type\": \"percent_sessions_count\",\n \"comparison\": {\n \"value\": 10,\n \"interval\": \"1h\"\n },\n \"conditionResult\": true\n }\n ```\n\n **Percentage of Sessions Affected Percent**\n - `value`: A positive integer representing the number of events in an issue that must come in before the alert will fire\n - `interval`: The time period in which to evaluate the value.\n - `1m`: 1 minute\n - `5m`: 5 minutes\n - `10m`: 10 minutes\n - `30m`: 30 minutes\n - `1h`: 1 hour\n - `comparisonInterval`: The time period to compare against.\n - `5m`: 5 minutes\n - `15m`: 15 minutes\n - `1h`: 1 hour\n - `1d`: 1 day\n - `1w`: 1 week\n - `30d`: 30 days\n ```json\n {\n \"type\": \"percent_sessions_percent\",\n \"comparison\": {\n \"value\": 10,\n \"interval\": \"1h\",\n \"comparisonInterval\": \"1w\"\n },\n \"conditionResult\": true\n }\n ```\n\n **Event Attribute**\n The event's `attribute` value `match` `value`\n\n - `attribute`: The event attribute to match on. Valid values are: `message`, `platform`, `environment`, `type`, `error.handled`, `error.unhandled`, `error.main_thread`, `exception.type`, `exception.value`, `user.id`, `user.email`, `user.username`, `user.ip_address`, `http.method`, `http.url`, `http.status_code`, `sdk.name`, `stacktrace.code`, `stacktrace.module`, `stacktrace.filename`, `stacktrace.abs_path`, `stacktrace.package`, `unreal.crash_type`, `app.in_foreground`.\n - `match`: The comparison operator\n - `co`: Contains\n - `nc`: Does not contain\n - `eq`: Equals\n - `ne`: Does not equal\n - `sw`: Starts with\n - `ew`: Ends with\n - `is`: Is set\n - `ns`: Is not set\n - `value`: A string. Must be omitted when match is `is` or `ns`; required otherwise.\n\n ```json\n {\n \"type\": \"event_attribute\",\n \"comparison\": {\n \"match\": \"co\",\n \"value\": \"bar\",\n \"attribute\": \"message\"\n },\n \"conditionResult\": true\n }\n ```\n\n **Tagged Event**\n The event's tags `key` match `value`\n - `key`: The tag value\n - `match`: The comparison operator\n - `co`: Contains\n - `nc`: Does not contain\n - `eq`: Equals\n - `ne`: Does not equal\n - `sw`: Starts with\n - `ew`: Ends with\n - `is`: Is set\n - `ns`: Is not set\n - `value`: A string. Must be omitted when match is `is` or `ns`; required otherwise.\n\n ```json\n {\n \"type\": \"tagged_event\",\n \"comparison\": {\n \"key\": \"level\",\n \"match\": \"eq\",\n \"value\": \"error\"\n },\n \"conditionResult\": true\n }\n ```\n\n **Latest Release**\n The event is from the latest release\n\n ```json\n {\n \"type\": \"latest_release\",\n \"comparison\": true,\n \"conditionResult\": true\n }\n ```\n\n **Release Age**\n ```json\n {\n \"type\": \"latest_adopted_release\",\n \"comparison\": {\n \"environment\": \"production\",\n \"ageComparison\": \"older\",\n \"releaseAgeType\": \"oldest\"\n },\n \"conditionResult\": true\n }\n ```\n\n **Event Level**\n The event's level is `match` `level`\n - `match`: The comparison operator\n - `eq`: Equal\n - `gte`: Greater than or equal\n - `lte`: Less than or equal\n - `level`: The event level\n - `50`: Fatal\n - `40`: Error\n - `30`: Warning\n - `20`: Info\n - `10`: Debug\n - `0`: Sample\n\n ```json\n {\n \"type\": \"level\",\n \"comparison\": {\n \"level\": 50,\n \"match\": \"eq\"\n },\n \"conditionResult\": true\n }\n ```\n\n ## Actions\n A list of actions that take place when all required conditions and filters for the alert are met. See below for a list of possible actions.\n\n\n **Notify on Preferred Channel**\n - `data`: A dictionary with the fallthrough type option when choosing to notify Suggested Assignees. Leave empty if notifying a user or team.\n - `fallthroughType`\n - `ActiveMembers`\n - `AllMembers`\n - `NoOne`\n - `config`: A dictionary with the configuration options for notification.\n - `targetType`: The type of recipient to notify\n - `user`: User\n - `team`: Team\n - `issue_owners`: Suggested Assignees\n - `targetDisplay`: null\n - `targetIdentifier`: The id of the user or team to notify. Leave null for Suggested Assignees.\n\n ```json\n {\n \"type\":\"email\",\n \"integrationId\":null,\n \"data\":{},\n \"config\":{\n \"targetType\":\"user\",\n \"targetDisplay\":null,\n \"targetIdentifier\":\"232692\"\n },\n \"status\":\"active\"\n },\n {\n \"type\":\"email\",\n \"integrationId\":null,\n \"data\":{\n \"fallthroughType\":\"ActiveMembers\"\n },\n \"config\":{\n \"targetType\":\"issue_owners\",\n \"targetDisplay\":null,\n \"targetIdentifier\":\"\"}\n ,\n \"status\":\"active\"\n }\n ```\n **Notify on Slack**\n - `targetDisplay`: The name of the channel to notify in.\n `integrationId`: The stringified ID of the integration.\n\n ```json\n {\n \"type\":\"slack\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\"\",\n \"targetDisplay\":\"notify-errors\"\n },\n \"integrationId\":\"1\",\n \"data\":{},\n \"status\":\"active\"\n }\n ```\n\n **Notify on PagerDuty**\n - `targetDisplay`: The name of the service to create the ticket in.\n - `integrationId`: The stringified ID of the integration.\n - `data[\"priority\"]`: The severity level for the notification.\n\n ```json\n {\n \"type\":\"pagerduty\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\"123456\",\n \"targetDisplay\":\"Error Service\"\n },\n \"integrationId\":\"2345\",\n \"data\":{\n \"priority\":\"default\"\n },\n \"status\":\"active\"\n }\n ```\n\n **Notify on Discord**\n - `targetDisplay`: The name of the service to create the ticket in.\n - `integrationId`: The stringified ID of the integration.\n - `data[\"tags\"]`: Comma separated list of tags to add to the notification.\n\n ```json\n {\n \"type\":\"discord\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\"12345\",\n \"targetDisplay\":\"\"\n },\n \"integrationId\":\"1234\",\n \"data\":{\n \"tags\":\"transaction,environment\"\n },\n \"status\":\"active\"\n }\n ```\n\n **Notify on MSTeams**\n - `targetIdentifier` - The integration ID associated with the Microsoft Teams team.\n - `targetDisplay` - The name of the channel to send the notification to.\n - `integrationId`: The stringified ID of the integration.\n ```json\n {\n \"type\":\"msteams\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\"19:a4b3kghaghgkjah357y6847@thread.skype\",\n \"targetDisplay\":\"notify-errors\"\n },\n \"integrationId\":\"1\",\n \"data\":{},\n \"status\":\"active\"\n }\n ```\n\n **Notify on OpsGenie**\n - `targetDisplay`: The name of the Opsgenie team.\n - `targetIdentifier`: The ID of the Opsgenie team to send the notification to.\n - `integrationId`: The stringified ID of the integration.\n - `data[\"priority\"]`: The priority level for the notification.\n\n ```json\n {\n \"type\":\"opsgenie\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\"123456-Error-Service\",\n \"targetDisplay\":\"Error Service\"\n },\n \"integrationId\":\"2345\",\n \"data\":{\n \"priority\":\"P3\"\n },\n \"status\":\"active\"\n }\n ```\n\n **Notify on Azure DevOps**\n - `integrationId`: The stringified ID of the integration.\n - `data` - A list of any fields you want to include in the ticket as objects.\n\n ```json\n {\n \"type\":\"vsts\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\",\n \"targetDisplay\":\"\"\n },\n \"integrationId\":\"2345\",\n \"data\":{...},\n \"status\":\"active\"\n }\n ```\n\n **Create a Jira ticket**\n - `integrationId`: The stringified ID of the integration.\n - `data` - A list of any fields you want to include in the ticket as objects.\n\n ```json\n {\n \"type\":\"jira\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\",\n \"targetDisplay\":\"\"\n },\n \"integrationId\":\"2345\",\n \"data\":{...},\n \"status\":\"active\"\n }\n ```\n\n **Create a Jira Server ticket**\n - `integrationId`: The stringified ID of the integration.\n - `data` - A list of any fields you want to include in the ticket as objects.\n\n ```json\n {\n \"type\":\"jira_server\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\",\n \"targetDisplay\":\"\"\n },\n \"integrationId\":\"2345\",\n \"data\":{...},\n \"status\":\"active\"\n }\n ```\n\n **Create a GitHub issue**\n - `integrationId`: The stringified ID of the integration.\n - `data` - A list of any fields you want to include in the ticket as objects.\n\n ```json\n {\n \"type\":\"github\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\",\n \"targetDisplay\":\"\"\n },\n \"integrationId\":\"2345\",\n \"data\":{\n \"additional_fields\": {\n \"assignee\": \"\",\n \"integration\": \"2345\",\n \"labels\": [],\n \"repo\": \"example-repo\",\n },\n \"dynamic_form_fields\": [\n {\n \"choices\": [[\"YourOrg/example-repo\", \"example-repo\"]],\n \"default\": \"YourOrg/example-repo\",\n \"label\": \"GitHub Repository\",\n \"name\": \"repo\",\n \"required\": true\n \"type\": \"select\",\n \"updatesForm\": true,\n \"url\": \"/extensions/github/search/example-repo/1234567/\",\n },\n ],\n },\n \"status\":\"active\"\n }\n ```\n "},"owner":{"type":"string","nullable":true,"description":"\n The ID user or team who owns the monitor or alert prefaced by the string 'user' or 'team'.\n\n **User**\n ```json\n \"user:123456\"\n ```\n\n **Team**\n ```json\n \"team:456789\"\n ```\n "}},"required":["name"]}}},"required":true},"security":[{"auth_token":["alerts:write","org:admin","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organizationId":{"type":"string"},"createdBy":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"triggers":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"logicType":{"type":"string"},"conditions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"comparison":{"anyOf":[{"type":"boolean"},{"type":"integer"}]},"conditionResult":{"type":"boolean"}},"required":["comparison","conditionResult","id","type"]}},{"type":"array","items":{}}]},"actions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"integrationId":{"type":"string","nullable":true},"data":{"type":"object","additionalProperties":{"type":"string"}},"config":{"type":"object","additionalProperties":{}},"status":{"type":"string"}}}},{"type":"array","items":{}}]}},"nullable":true},"actionFilters":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"logicType":{"type":"string"},"conditions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"comparison":{"anyOf":[{"type":"boolean"},{"type":"integer"}]},"conditionResult":{"type":"boolean"}},"required":["comparison","conditionResult","id","type"]}},{"type":"array","items":{}}]},"actions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"integrationId":{"type":"string","nullable":true},"data":{"type":"object","additionalProperties":{"type":"string"}},"config":{"type":"object","additionalProperties":{}},"status":{"type":"string"}}}},{"type":"array","items":{}}]}}},"nullable":true},"environment":{"type":"string","nullable":true},"config":{"type":"object","additionalProperties":{}},"detectorIds":{"type":"array","items":{"type":"string"},"nullable":true},"enabled":{"type":"boolean"},"lastTriggered":{"type":"string","format":"date-time","nullable":true},"owner":{"type":"string","nullable":true}},"required":["actionFilters","config","createdBy","dateCreated","dateUpdated","detectorIds","enabled","environment","id","lastTriggered","name","organizationId","owner","triggers"]},"examples":{"UpdateAnAlert":{"value":{"id":"1234567","name":"My Updated Alert","organizationId":"1","createdBy":"23456","dateCreated":"2026-01-14T20:08:32.273220Z","dateUpdated":"2026-01-14T21:59:45.609912Z","triggers":{"id":"12345","organizationId":"1","logicType":"any-short","conditions":[{"id":"1234","type":"first_seen_event","comparison":true,"conditionResult":true},{"id":"2345","type":"issue_resolved_trigger","comparison":true,"conditionResult":true},{"id":"3456","type":"reappeared_event","comparison":true,"conditionResult":true},{"id":"4567","type":"regression_event","comparison":true,"conditionResult":true}],"actions":[]},"actionFilters":[{"id":"1234567","organizationId":"1","logicType":"any-short","conditions":[{"id":"345678","type":"issue_priority_deescalating","comparison":75,"conditionResult":true}],"actions":[{"id":"56789","type":"slack","integrationId":"1","data":{},"config":{"targetType":"specific","targetDisplay":"@jane-doe","targetIdentifier":"ABCDE123456"},"status":"active"}]}],"environment":null,"config":{"frequency":1440},"detectorIds":["12345678"],"enabled":true,"lastTriggered":null,"owner":"user:123456"},"summary":"Update an Alert"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteOrganizationWorkflow","description":"Deletes an alert.","summary":"Delete an Alert","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"workflow_id","schema":{"type":"integer"},"description":"The ID of the alert you'd like to query.","required":true}],"tags":["Monitors"],"security":[{"auth_token":["alerts:write","org:admin","org:read","org:write"]}],"responses":{"204":{"description":"No Content"},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/":{"get":{"operationId":"getProject","description":"Return details on an individual project.","summary":"Retrieve a Project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Projects"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"isInternal":{"type":"boolean"},"isPublic":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"color":{"type":"string"},"status":{"type":"string"},"team":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]}},"latestRelease":{"type":"object","properties":{"version":{"type":"string"}},"required":["version"],"nullable":true},"options":{"type":"object","additionalProperties":{}},"digestsMinDelay":{"type":"integer"},"digestsMaxDelay":{"type":"integer"},"subjectPrefix":{"type":"string"},"allowedDomains":{"type":"array","items":{"type":"string"}},"resolveAge":{"type":"integer"},"dataScrubber":{"type":"boolean"},"dataScrubberDefaults":{"type":"boolean"},"safeFields":{"type":"array","items":{"type":"string"}},"storeCrashReports":{"type":"integer","nullable":true},"sensitiveFields":{"type":"array","items":{"type":"string"}},"subjectTemplate":{"type":"string"},"securityToken":{"type":"string"},"securityTokenHeader":{"type":"string","nullable":true},"verifySSL":{"type":"boolean"},"scrubIPAddresses":{"type":"boolean"},"scrapeJavaScript":{"type":"boolean"},"enableAutoReleaseCreation":{"type":"boolean"},"highlightTags":{"type":"array","items":{"type":"string"}},"highlightContext":{"type":"object","additionalProperties":{}},"highlightPreset":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"string"}},"context":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"required":["context","tags"]},"groupingConfig":{"type":"string"},"derivedGroupingEnhancements":{"type":"string"},"groupingEnhancements":{"type":"string"},"secondaryGroupingExpiry":{"type":"integer"},"secondaryGroupingConfig":{"type":"string","nullable":true},"fingerprintingRules":{"type":"string"},"organization":{"type":"object","properties":{"features":{"type":"array","items":{"type":"string"}},"extraOptions":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{}}},"access":{"type":"array","items":{"type":"string"}},"onboardingTasks":{"type":"array","items":{"type":"object","properties":{"task":{"type":"string","nullable":true},"status":{"type":"string"},"completionSeen":{"type":"string","format":"date-time","nullable":true},"dateCompleted":{"type":"string","format":"date-time"},"data":{}},"required":["completionSeen","data","dateCompleted","status","task"]}},"id":{"type":"string"},"slug":{"type":"string"},"status":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"isEarlyAdopter":{"type":"boolean"},"require2FA":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"links":{"type":"object","properties":{"organizationUrl":{"type":"string"},"regionUrl":{"type":"string"}},"required":["organizationUrl","regionUrl"]},"hasAuthProvider":{"type":"boolean"},"allowMemberInvite":{"type":"boolean"},"allowMemberProjectCreation":{"type":"boolean"},"allowSuperuserAccess":{"type":"boolean"}},"required":["allowMemberInvite","allowMemberProjectCreation","allowSuperuserAccess","avatar","dateCreated","hasAuthProvider","id","isEarlyAdopter","links","name","require2FA","slug","status"]},"platforms":{"type":"array","items":{"type":"string"}},"processingIssues":{"type":"integer"},"defaultEnvironment":{"type":"string","nullable":true},"relayPiiConfig":{"type":"string","nullable":true},"builtinSymbolSources":{"type":"array","items":{"type":"string"}},"enableNativeSourceServerMapping":{"type":"boolean"},"dynamicSamplingBiases":{"type":"array","items":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"nullable":true},"symbolSources":{"type":"string"},"isDynamicallySampled":{"type":"boolean"},"tempestFetchScreenshots":{"type":"boolean"},"autofixAutomationTuning":{"type":"string"},"seerScannerAutomation":{"type":"boolean"},"seerNightshiftTweaks":{},"scmSourceContextEnabled":{"type":"boolean"},"debugFilesRole":{"type":"string","nullable":true}},"required":["access","allowedDomains","autofixAutomationTuning","avatar","builtinSymbolSources","color","dataScrubber","dataScrubberDefaults","dateCreated","debugFilesRole","defaultEnvironment","derivedGroupingEnhancements","digestsMaxDelay","digestsMinDelay","dynamicSamplingBiases","enableAutoReleaseCreation","enableNativeSourceServerMapping","features","fingerprintingRules","firstEvent","firstTransactionEvent","groupingConfig","groupingEnhancements","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","highlightContext","highlightPreset","highlightTags","id","isBookmarked","isDynamicallySampled","isInternal","isMember","isPublic","latestRelease","name","options","organization","platform","platforms","processingIssues","relayPiiConfig","resolveAge","safeFields","scmSourceContextEnabled","scrapeJavaScript","scrubIPAddresses","secondaryGroupingConfig","secondaryGroupingExpiry","securityToken","securityTokenHeader","seerNightshiftTweaks","seerScannerAutomation","sensitiveFields","slug","status","storeCrashReports","subjectPrefix","subjectTemplate","symbolSources","teams","tempestFetchScreenshots","verifySSL"]},"examples":{"GetDetailedViewAboutAProject":{"value":{"id":"4505278496","slug":"pump-station","name":"Pump Station","platform":"python","dateCreated":"2021-01-14T22:08:52.711809Z","isBookmarked":false,"isMember":true,"features":["custom-inbound-filters","discard-groups","minidump","rate-limits","servicehooks","similarity-indexing","similarity-indexing-v2","similarity-view","similarity-view-v2"],"firstEvent":"2021-01-14T22:08:52.711809Z","firstTransactionEvent":true,"access":["member:read","event:read","project:admin","team:write","project:write","team:admin","project:read","org:integrations","org:read","project:releases","team:read","alerts:write","event:admin","event:write","alerts:read"],"hasAccess":true,"hasMinifiedStackTrace":false,"hasFeedbacks":false,"hasMonitors":false,"hasNewFeedbacks":false,"hasProfiles":false,"hasReplays":false,"hasFlags":false,"hasSessions":false,"hasInsightsHttp":true,"hasInsightsDb":false,"hasInsightsAssets":true,"hasInsightsAppStart":false,"hasInsightsScreenLoad":false,"hasInsightsVitals":false,"hasInsightsCaches":false,"hasInsightsQueues":false,"hasInsightsAgentMonitoring":false,"hasInsightsMCP":false,"hasLogs":false,"hasTraceMetrics":false,"isInternal":false,"isPublic":false,"avatar":{"avatarType":"letter_avatar","avatarUuid":null},"color":"#3f70bf","status":"active","team":{"id":"2","name":"Powerful Abolitionist","slug":"powerful-abolitionist"},"teams":[{"id":"2","name":"Powerful Abolitionist","slug":"powerful-abolitionist"}],"latestRelease":{"version":"backend@3e90a5d9e767ebcfa70e921d7a7ff6c037461168"},"options":{"sentry:transaction_name_cluster_rules":[],"digests:mail:maximum_delay":600,"sentry:scrub_defaults":false,"sentry:scrape_javascript":true,"mail:subject_prefix":"","sentry:relay_pii_config":null,"sentry:scrub_data":false,"sentry:token":"e84c8c0fb1c121e988558785885f9cde","sentry:resolve_age":168,"sentry:grouping_config":"newstyle:2012-12-31","quotas:spike-protection-disabled":false,"sentry:store_crash_reports":5,"digests:mail:minimum_delay":180,"sentry:secondary_grouping_config":"newstyle:2012-11-21","sentry:secondary_grouping_expiry":147555024,"sentry:builtin_symbol_sources":["ios","android","chromium"],"sentry:origins":["getsentry.com","app.getsentry.com","www.getsentry.com","sentry.io"],"sentry:sensitive_fields":["sudo"],"sentry:scrub_ip_address":false,"sentry:default_environment":"prod","sentry:verify_ssl":true,"sentry:csp_ignored_sources_defaults":true,"sentry:csp_ignored_sources":"","filters:blacklisted_ips":"","filters:react-hydration-errors":true,"filters:chunk-load-error":true,"filters:releases":"","filters:error_messages":"","feedback:branding":true},"digestsMinDelay":180,"digestsMaxDelay":600,"subjectPrefix":"","allowedDomains":["getsentry.com","app.getsentry.com","www.getsentry.com","sentry.io"],"resolveAge":168,"dataScrubber":false,"dataScrubberDefaults":false,"safeFields":[],"storeCrashReports":5,"sensitiveFields":["sudo"],"subjectTemplate":"$shortID - $title","securityToken":"e84c8c0fb1c121e988558785885f9cde","securityTokenHeader":null,"verifySSL":true,"scrubIPAddresses":false,"scrapeJavaScript":true,"groupingConfig":"newstyle:2012-12-31","groupingEnhancements":"","derivedGroupingEnhancements":"","secondaryGroupingExpiry":1687010243,"secondaryGroupingConfig":"newstyle:2012-11-21","fingerprintingRules":"","organization":{"id":"1","slug":"sentry","status":{"id":"active","name":"active"},"name":"Sentry","dateCreated":"2014-12-15T04:06:24.263571Z","isEarlyAdopter":true,"allowMemberInvite":true,"allowMemberProjectCreation":true,"allowSuperuserAccess":false,"require2FA":false,"avatar":{"avatarType":"upload","avatarUuid":"24f6f762f7a7473888b259c566da5adb"},"features":["discover-basic","incidents","uptime","monitors"],"links":{"organizationUrl":"https://sentry.sentry.io","regionUrl":"https://us.sentry.io"},"hasAuthProvider":true},"platforms":["native","other","python"],"processingIssues":0,"defaultEnvironment":"prod","relayPiiConfig":null,"builtinSymbolSources":["ios","android","chromium"],"enableNativeSourceServerMapping":false,"dynamicSamplingBiases":[{"id":"boostEnvironments","active":true},{"id":"boostLatestRelease","active":true},{"id":"ignoreHealthChecks","active":true},{"id":"boostKeyTransactions","active":true},{"id":"boostLowVolumeTransactions","active":true},{"id":"boostReplayId","active":true},{"id":"recalibrationRule","active":true}],"symbolSources":"[]","tempestFetchScreenshots":false,"debugFilesRole":null,"isDynamicallySampled":true,"enableAutoReleaseCreation":true,"autofixAutomationTuning":"off","seerScannerAutomation":true,"seerNightshiftTweaks":null,"highlightTags":[],"highlightContext":{},"highlightPreset":{"tags":[],"context":{}},"scmSourceContextEnabled":false},"summary":"Get detailed view about a Project"}}}},"description":""},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"updateProject","description":"Update various attributes and configurable settings for the given project.\n\nNote that solely having the **`project:read`** scope restricts updatable settings to\n`isBookmarked`, `autofixAutomationTuning`, `seerScannerAutomation`,\n`preprodSizeStatusChecksEnabled`, `preprodSizeStatusChecksRules`,\n`preprodSizePrCommentsEnabled`, `preprodSizePrCommentsRules`,\n`preprodSizeEnabledQuery`, `preprodDistributionEnabledQuery`,\n`preprodSizeEnabledByCustomer`, `preprodDistributionEnabledByCustomer`,\nand `preprodDistributionPrCommentsEnabledByCustomer`.","summary":"Update a Project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Projects"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"digestsMinDelay":{"type":"integer","maximum":3600,"minimum":60,"description":"Minimum time in seconds to wait before sending an issue digest email."},"digestsMaxDelay":{"type":"integer","maximum":3600,"minimum":60,"description":"Maximum time in seconds to wait before sending an issue digest email."},"securityToken":{"type":"string","description":"Token sent with security reports (CSP, Expect-CT, HPKP) so Sentry can verify their origin.","maxLength":255,"pattern":"^[-a-zA-Z0-9+/=\\s]+$"},"securityTokenHeader":{"type":"string","description":"Name of the header carrying the security token on inbound security reports.","maxLength":64,"pattern":"^[a-zA-Z0-9_\\-]+$"},"isBookmarked":{"type":"boolean","description":"Enables starring the project within the projects tab. Can be updated with **`project:read`** permission."},"autofixAutomationTuning":{"enum":["off","super_low","low","medium","high","always"],"type":"string","description":"How aggressively Seer runs Autofix on new issues. Can be updated with **`project:read`** permission.\n\n* `off`\n* `super_low`\n* `low`\n* `medium`\n* `high`\n* `always`"},"seerScannerAutomation":{"type":"boolean","description":"Let Seer scan new issues automatically. Can be updated with **`project:read`** permission."},"preprodSizeStatusChecksEnabled":{"type":"boolean","description":"Enable preprod size status checks. Can be updated with **`project:read`** permission."},"preprodSizeStatusChecksRules":{"type":"object","additionalProperties":{},"description":"Rules controlling when preprod size status checks fail. Can be updated with **`project:read`** permission."},"preprodSizePrCommentsEnabled":{"type":"boolean","description":"Enable preprod size PR comments. Can be updated with **`project:read`** permission."},"preprodSizePrCommentsRules":{"type":"object","additionalProperties":{},"description":"Rules controlling which preprod size changes are posted as PR comments. Can be updated with **`project:read`** permission."},"preprodSnapshotStatusChecksEnabled":{"type":"boolean","description":"Enable preprod snapshot status checks."},"preprodSnapshotStatusChecksFailOnAdded":{"type":"boolean","description":"Fail the preprod snapshot status check when snapshots are added."},"preprodSnapshotStatusChecksFailOnRemoved":{"type":"boolean","description":"Fail the preprod snapshot status check when snapshots are removed."},"preprodSnapshotStatusChecksFailOnChanged":{"type":"boolean","description":"Fail the preprod snapshot status check when snapshots change."},"preprodSnapshotStatusChecksFailOnRenamed":{"type":"boolean","description":"Fail the preprod snapshot status check when snapshots are renamed."},"preprodSizeEnabledByCustomer":{"type":"boolean","nullable":true,"description":"Enable preprod size analysis. Can be updated with **`project:read`** permission."},"preprodDistributionEnabledByCustomer":{"type":"boolean","nullable":true,"description":"Enable preprod build distribution. Can be updated with **`project:read`** permission."},"preprodDistributionPrCommentsEnabledByCustomer":{"type":"boolean","nullable":true,"description":"Post preprod distribution updates as PR comments. Can be updated with **`project:read`** permission."},"preprodSnapshotPrCommentsEnabled":{"type":"boolean","nullable":true,"description":"Post preprod snapshot changes as PR comments."},"preprodSnapshotPrCommentsPostOnAdded":{"type":"boolean","nullable":true,"description":"Include added snapshots in preprod snapshot PR comments."},"preprodSnapshotPrCommentsPostOnRemoved":{"type":"boolean","nullable":true,"description":"Include removed snapshots in preprod snapshot PR comments."},"preprodSnapshotPrCommentsPostOnChanged":{"type":"boolean","nullable":true,"description":"Include changed snapshots in preprod snapshot PR comments."},"preprodSnapshotPrCommentsPostOnRenamed":{"type":"boolean","nullable":true,"description":"Include renamed snapshots in preprod snapshot PR comments."},"preprodSizeEnabledQuery":{"type":"string","nullable":true,"description":"Query selecting which preprod builds are size-analyzed. Can be updated with **`project:read`** permission."},"preprodDistributionEnabledQuery":{"type":"string","nullable":true,"description":"Query selecting which preprod builds are distributed. Can be updated with **`project:read`** permission."},"name":{"type":"string","description":"The name for the project","maxLength":200},"slug":{"type":"string","description":"Uniquely identifies a project and is used for the interface.","maxLength":100,"pattern":"^(?![0-9]+$)[a-z0-9_\\-]+$"},"platform":{"type":"string","nullable":true,"description":"The platform for the project"},"subjectPrefix":{"type":"string","description":"Custom prefix for emails from this project.","maxLength":200},"subjectTemplate":{"type":"string","description":"The email subject to use (excluding the prefix) for individual alerts. Here are the list of variables you can use:\n- `$title`\n- `$shortID`\n- `$projectID`\n- `$orgID`\n- `${tag:key}` - such as `${tag:environment}` or `${tag:release}`.","maxLength":200},"resolveAge":{"type":"integer","nullable":true,"description":"Automatically resolve an issue if it hasn't been seen for this many hours. Set to `0` to disable auto-resolve."},"highlightContext":{"type":"object","additionalProperties":{},"description":"A JSON mapping of context types to lists of strings for their keys.\nE.g. `{'user': ['id', 'email']}`"},"highlightTags":{"type":"array","items":{"type":"string"},"description":"A list of strings with tag keys to highlight on this project's issues.\nE.g. `['release', 'environment']`"},"verifySSL":{"type":"boolean","description":"Verify SSL certificates when delivering outbound webhooks and service hooks."},"defaultEnvironment":{"type":"string","nullable":true,"description":"Environment selected by default when viewing this project."},"dataScrubber":{"type":"boolean","description":"Remove known sensitive values from events before storing them."},"dataScrubberDefaults":{"type":"boolean","description":"Also scrub Sentry's built-in list of sensitive field names."},"sensitiveFields":{"type":"array","items":{"type":"string"},"description":"Additional field names to scrub from events, beyond the defaults."},"safeFields":{"type":"array","items":{"type":"string"},"description":"Field names to exempt from scrubbing, including the built-in defaults."},"storeCrashReports":{"type":"integer","maximum":100,"minimum":-1,"nullable":true,"description":"Number of native crash report files to store per issue. Use `-1` for unlimited or `0` to store none."},"relayPiiConfig":{"type":"string","nullable":true,"description":"Advanced data scrubbing rules, as a JSON string, applied before events are stored."},"builtinSymbolSources":{"type":"array","items":{"type":"string"},"description":"Identifiers of Sentry-hosted symbol sources to use when symbolicating events."},"symbolSources":{"type":"string","nullable":true,"description":"Custom symbol sources, as a JSON string, to use when symbolicating events."},"enableNativeSourceServerMapping":{"type":"boolean","description":"Apply source server (srcsrv) information from native debug files to symbolicated frames."},"scrubIPAddresses":{"type":"boolean","description":"Discard client IP addresses rather than storing them on events."},"groupingConfig":{"type":"string","nullable":true,"description":"Identifier of the grouping algorithm used to assign events to issues."},"groupingEnhancements":{"type":"string","nullable":true,"description":"Grouping enhancement rules, as a newline-delimited config string, adjusting which stack frames contribute to an issue."},"fingerprintingRules":{"type":"string","nullable":true,"description":"Fingerprinting rules, as a newline-delimited config string, controlling how events are grouped into issues."},"secondaryGroupingConfig":{"type":"string","nullable":true,"description":"Grouping algorithm run alongside the primary one during a grouping migration."},"secondaryGroupingExpiry":{"type":"integer","minimum":1,"nullable":true,"description":"Unix timestamp after which the secondary grouping algorithm stops running."},"scrapeJavaScript":{"type":"boolean","description":"Allow Sentry to fetch source files and source maps from your servers."},"enableAutoReleaseCreation":{"type":"boolean","description":"Automatically create releases from ingested events. When disabled, releases must be created manually (e.g. via the Sentry CLI)."},"allowedDomains":{"type":"array","items":{"type":"string"},"description":"Origins permitted to send events to this project. Use `*` to allow any."},"copy_from_project":{"type":"integer","description":"ID of a project whose settings, teams, and keys should be copied into this one."},"targetSampleRate":{"type":"number","format":"double","maximum":1,"minimum":0,"description":"Target proportion of transactions to retain, from `0` to `1`. Requires manual dynamic sampling mode."},"dynamicSamplingBiases":{"type":"array","items":{"type":"object","properties":{"id":{"enum":["boostEnvironments","boostKeyTransactions","boostLatestRelease","boostLowVolumeTransactions","boostReplayId","ignoreHealthChecks","minimumSampleRate","recalibrationRule"],"type":"string","description":"* `boostEnvironments`\n* `boostKeyTransactions`\n* `boostLatestRelease`\n* `boostLowVolumeTransactions`\n* `boostReplayId`\n* `ignoreHealthChecks`\n* `minimumSampleRate`\n* `recalibrationRule`"},"active":{"type":"boolean","default":false}},"required":["id"]},"description":"Per-bias toggles adjusting which transactions dynamic sampling favors retaining."},"tempestFetchScreenshots":{"type":"boolean","description":"Fetch screenshots attached to console crash reports. Requires the Tempest feature."},"scmSourceContextEnabled":{"type":"boolean","description":"Enable on-demand source context fetching from SCM integrations for stack traces."},"debugFilesRole":{"enum":["member","admin","manager","owner",null],"type":"string","nullable":true,"description":"The role required to download debug information files, ProGuard mappings and source maps. If not set, inherits from organization setting.\n\n* `member` - Member\n* `admin` - Admin\n* `manager` - Manager\n* `owner` - Owner"}},"required":["digestsMaxDelay","digestsMinDelay","securityToken","securityTokenHeader"]}}},"required":true},"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"isInternal":{"type":"boolean"},"isPublic":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"color":{"type":"string"},"status":{"type":"string"},"team":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]}},"latestRelease":{"type":"object","properties":{"version":{"type":"string"}},"required":["version"],"nullable":true},"options":{"type":"object","additionalProperties":{}},"digestsMinDelay":{"type":"integer"},"digestsMaxDelay":{"type":"integer"},"subjectPrefix":{"type":"string"},"allowedDomains":{"type":"array","items":{"type":"string"}},"resolveAge":{"type":"integer"},"dataScrubber":{"type":"boolean"},"dataScrubberDefaults":{"type":"boolean"},"safeFields":{"type":"array","items":{"type":"string"}},"storeCrashReports":{"type":"integer","nullable":true},"sensitiveFields":{"type":"array","items":{"type":"string"}},"subjectTemplate":{"type":"string"},"securityToken":{"type":"string"},"securityTokenHeader":{"type":"string","nullable":true},"verifySSL":{"type":"boolean"},"scrubIPAddresses":{"type":"boolean"},"scrapeJavaScript":{"type":"boolean"},"enableAutoReleaseCreation":{"type":"boolean"},"highlightTags":{"type":"array","items":{"type":"string"}},"highlightContext":{"type":"object","additionalProperties":{}},"highlightPreset":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"string"}},"context":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"required":["context","tags"]},"groupingConfig":{"type":"string"},"derivedGroupingEnhancements":{"type":"string"},"groupingEnhancements":{"type":"string"},"secondaryGroupingExpiry":{"type":"integer"},"secondaryGroupingConfig":{"type":"string","nullable":true},"fingerprintingRules":{"type":"string"},"organization":{"type":"object","properties":{"features":{"type":"array","items":{"type":"string"}},"extraOptions":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{}}},"access":{"type":"array","items":{"type":"string"}},"onboardingTasks":{"type":"array","items":{"type":"object","properties":{"task":{"type":"string","nullable":true},"status":{"type":"string"},"completionSeen":{"type":"string","format":"date-time","nullable":true},"dateCompleted":{"type":"string","format":"date-time"},"data":{}},"required":["completionSeen","data","dateCompleted","status","task"]}},"id":{"type":"string"},"slug":{"type":"string"},"status":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"isEarlyAdopter":{"type":"boolean"},"require2FA":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"links":{"type":"object","properties":{"organizationUrl":{"type":"string"},"regionUrl":{"type":"string"}},"required":["organizationUrl","regionUrl"]},"hasAuthProvider":{"type":"boolean"},"allowMemberInvite":{"type":"boolean"},"allowMemberProjectCreation":{"type":"boolean"},"allowSuperuserAccess":{"type":"boolean"}},"required":["allowMemberInvite","allowMemberProjectCreation","allowSuperuserAccess","avatar","dateCreated","hasAuthProvider","id","isEarlyAdopter","links","name","require2FA","slug","status"]},"platforms":{"type":"array","items":{"type":"string"}},"processingIssues":{"type":"integer"},"defaultEnvironment":{"type":"string","nullable":true},"relayPiiConfig":{"type":"string","nullable":true},"builtinSymbolSources":{"type":"array","items":{"type":"string"}},"enableNativeSourceServerMapping":{"type":"boolean"},"dynamicSamplingBiases":{"type":"array","items":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"nullable":true},"symbolSources":{"type":"string"},"isDynamicallySampled":{"type":"boolean"},"tempestFetchScreenshots":{"type":"boolean"},"autofixAutomationTuning":{"type":"string"},"seerScannerAutomation":{"type":"boolean"},"seerNightshiftTweaks":{},"scmSourceContextEnabled":{"type":"boolean"},"debugFilesRole":{"type":"string","nullable":true}},"required":["access","allowedDomains","autofixAutomationTuning","avatar","builtinSymbolSources","color","dataScrubber","dataScrubberDefaults","dateCreated","debugFilesRole","defaultEnvironment","derivedGroupingEnhancements","digestsMaxDelay","digestsMinDelay","dynamicSamplingBiases","enableAutoReleaseCreation","enableNativeSourceServerMapping","features","fingerprintingRules","firstEvent","firstTransactionEvent","groupingConfig","groupingEnhancements","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","highlightContext","highlightPreset","highlightTags","id","isBookmarked","isDynamicallySampled","isInternal","isMember","isPublic","latestRelease","name","options","organization","platform","platforms","processingIssues","relayPiiConfig","resolveAge","safeFields","scmSourceContextEnabled","scrapeJavaScript","scrubIPAddresses","secondaryGroupingConfig","secondaryGroupingExpiry","securityToken","securityTokenHeader","seerNightshiftTweaks","seerScannerAutomation","sensitiveFields","slug","status","storeCrashReports","subjectPrefix","subjectTemplate","symbolSources","teams","tempestFetchScreenshots","verifySSL"]},"examples":{"GetDetailedViewAboutAProject":{"value":{"id":"4505278496","slug":"pump-station","name":"Pump Station","platform":"python","dateCreated":"2021-01-14T22:08:52.711809Z","isBookmarked":false,"isMember":true,"features":["custom-inbound-filters","discard-groups","minidump","rate-limits","servicehooks","similarity-indexing","similarity-indexing-v2","similarity-view","similarity-view-v2"],"firstEvent":"2021-01-14T22:08:52.711809Z","firstTransactionEvent":true,"access":["member:read","event:read","project:admin","team:write","project:write","team:admin","project:read","org:integrations","org:read","project:releases","team:read","alerts:write","event:admin","event:write","alerts:read"],"hasAccess":true,"hasMinifiedStackTrace":false,"hasFeedbacks":false,"hasMonitors":false,"hasNewFeedbacks":false,"hasProfiles":false,"hasReplays":false,"hasFlags":false,"hasSessions":false,"hasInsightsHttp":true,"hasInsightsDb":false,"hasInsightsAssets":true,"hasInsightsAppStart":false,"hasInsightsScreenLoad":false,"hasInsightsVitals":false,"hasInsightsCaches":false,"hasInsightsQueues":false,"hasInsightsAgentMonitoring":false,"hasInsightsMCP":false,"hasLogs":false,"hasTraceMetrics":false,"isInternal":false,"isPublic":false,"avatar":{"avatarType":"letter_avatar","avatarUuid":null},"color":"#3f70bf","status":"active","team":{"id":"2","name":"Powerful Abolitionist","slug":"powerful-abolitionist"},"teams":[{"id":"2","name":"Powerful Abolitionist","slug":"powerful-abolitionist"}],"latestRelease":{"version":"backend@3e90a5d9e767ebcfa70e921d7a7ff6c037461168"},"options":{"sentry:transaction_name_cluster_rules":[],"digests:mail:maximum_delay":600,"sentry:scrub_defaults":false,"sentry:scrape_javascript":true,"mail:subject_prefix":"","sentry:relay_pii_config":null,"sentry:scrub_data":false,"sentry:token":"e84c8c0fb1c121e988558785885f9cde","sentry:resolve_age":168,"sentry:grouping_config":"newstyle:2012-12-31","quotas:spike-protection-disabled":false,"sentry:store_crash_reports":5,"digests:mail:minimum_delay":180,"sentry:secondary_grouping_config":"newstyle:2012-11-21","sentry:secondary_grouping_expiry":147555024,"sentry:builtin_symbol_sources":["ios","android","chromium"],"sentry:origins":["getsentry.com","app.getsentry.com","www.getsentry.com","sentry.io"],"sentry:sensitive_fields":["sudo"],"sentry:scrub_ip_address":false,"sentry:default_environment":"prod","sentry:verify_ssl":true,"sentry:csp_ignored_sources_defaults":true,"sentry:csp_ignored_sources":"","filters:blacklisted_ips":"","filters:react-hydration-errors":true,"filters:chunk-load-error":true,"filters:releases":"","filters:error_messages":"","feedback:branding":true},"digestsMinDelay":180,"digestsMaxDelay":600,"subjectPrefix":"","allowedDomains":["getsentry.com","app.getsentry.com","www.getsentry.com","sentry.io"],"resolveAge":168,"dataScrubber":false,"dataScrubberDefaults":false,"safeFields":[],"storeCrashReports":5,"sensitiveFields":["sudo"],"subjectTemplate":"$shortID - $title","securityToken":"e84c8c0fb1c121e988558785885f9cde","securityTokenHeader":null,"verifySSL":true,"scrubIPAddresses":false,"scrapeJavaScript":true,"groupingConfig":"newstyle:2012-12-31","groupingEnhancements":"","derivedGroupingEnhancements":"","secondaryGroupingExpiry":1687010243,"secondaryGroupingConfig":"newstyle:2012-11-21","fingerprintingRules":"","organization":{"id":"1","slug":"sentry","status":{"id":"active","name":"active"},"name":"Sentry","dateCreated":"2014-12-15T04:06:24.263571Z","isEarlyAdopter":true,"allowMemberInvite":true,"allowMemberProjectCreation":true,"allowSuperuserAccess":false,"require2FA":false,"avatar":{"avatarType":"upload","avatarUuid":"24f6f762f7a7473888b259c566da5adb"},"features":["discover-basic","incidents","uptime","monitors"],"links":{"organizationUrl":"https://sentry.sentry.io","regionUrl":"https://us.sentry.io"},"hasAuthProvider":true},"platforms":["native","other","python"],"processingIssues":0,"defaultEnvironment":"prod","relayPiiConfig":null,"builtinSymbolSources":["ios","android","chromium"],"enableNativeSourceServerMapping":false,"dynamicSamplingBiases":[{"id":"boostEnvironments","active":true},{"id":"boostLatestRelease","active":true},{"id":"ignoreHealthChecks","active":true},{"id":"boostKeyTransactions","active":true},{"id":"boostLowVolumeTransactions","active":true},{"id":"boostReplayId","active":true},{"id":"recalibrationRule","active":true}],"symbolSources":"[]","tempestFetchScreenshots":false,"debugFilesRole":null,"isDynamicallySampled":true,"enableAutoReleaseCreation":true,"autofixAutomationTuning":"off","seerScannerAutomation":true,"seerNightshiftTweaks":null,"highlightTags":[],"highlightContext":{},"highlightPreset":{"tags":[],"context":{}},"scmSourceContextEnabled":false},"summary":"Get detailed view about a Project"}}}},"description":""},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteProject","description":"Schedules a project for deletion.\n\nDeletion happens asynchronously and therefore is not immediate. However once deletion has\nbegun the state of a project changes and will be hidden from most public views.","summary":"Delete a Project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Projects"],"security":[{"auth_token":["project:admin"]}],"responses":{"204":{"description":"No Content"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/code-mapping-prefixes/stack/":{"get":{"operationId":"listStackCodeMappingPrefixes","description":"Return ranked directory prefixes from stack traces and existing mappings to help configure a code mapping.","summary":"List Stack Trace Directory Prefixes for Code Mapping Autocomplete","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Integrations"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"prefixes":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"fileCount":{"type":"integer"}},"required":["fileCount","path"]}}},"required":["prefixes"]}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/codeowners/":{"get":{"operationId":"listProjectCodeOwners","description":"Return the CODEOWNERS configurations for a project.","summary":"List a Project's CODEOWNERS Configurations","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"query","name":"expand","schema":{"type":"array","items":{"type":"string","enum":["codeMapping","ownershipSyntax"]}},"description":"Optional fields to expand."}],"tags":["Projects"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"codeMapping":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"projectSlug":{"type":"string"},"repoId":{"type":"string"},"repoName":{"type":"string"},"integrationId":{"type":"string","nullable":true},"provider":{"type":"object","properties":{"key":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"canAdd":{"type":"boolean"},"canDisable":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"aspects":{"type":"object","additionalProperties":{}}},"required":["aspects","canAdd","canDisable","features","key","name","slug"],"nullable":true},"stackRoot":{"type":"string"},"sourceRoot":{"type":"string"},"defaultBranch":{"type":"string","nullable":true},"automaticallyGenerated":{"type":"boolean"},"hasCodeOwner":{"type":"boolean"}},"required":["automaticallyGenerated","defaultBranch","hasCodeOwner","id","integrationId","projectId","projectSlug","provider","repoId","repoName","sourceRoot","stackRoot"]},"ownershipSyntax":{"type":"string"},"errors":{"type":"object","properties":{"missing_user_emails":{"type":"array","items":{"type":"string"}},"missing_external_users":{"type":"array","items":{"type":"string"}},"missing_external_teams":{"type":"array","items":{"type":"string"}},"teams_without_access":{"type":"array","items":{"type":"string"}},"users_without_access":{"type":"array","items":{"type":"string"}}},"required":["missing_external_teams","missing_external_users","missing_user_emails","teams_without_access","users_without_access"]},"schema":{"anyOf":[{"type":"object","properties":{"$version":{"type":"integer"},"rules":{"type":"array","items":{"type":"object","properties":{"matcher":{"type":"object","properties":{"type":{"type":"string"},"pattern":{"type":"string"}},"required":["pattern","type"]},"owners":{"type":"array","items":{"type":"object","description":"Owner as it appears in the API response (after identifier->name rename).","properties":{"type":{"type":"string"},"name":{"type":"string"},"id":{"type":"string"}},"required":["name","type"]}}},"required":["matcher","owners"]}}},"required":["$version","rules"]},{"type":"object","description":"Legacy CODEOWNERS records can have an empty schema before it is built."}]},"codeOwnersUrl":{"type":"string"},"id":{"type":"string"},"raw":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time","nullable":true},"codeMappingId":{"type":"string"},"provider":{"type":"string"}},"required":["codeMappingId","dateCreated","dateSynced","dateUpdated","id","provider","raw"]}},"examples":{"ListAProject'sCODEOWNERSConfigurations":{"value":[{"id":"42","raw":"src/* user@example.com","dateCreated":"2024-01-15T10:30:00Z","dateUpdated":"2024-01-15T10:30:00Z","dateSynced":"2024-01-15T10:30:00Z","codeMappingId":"7","provider":"github","errors":{"missing_external_teams":[],"missing_external_users":[],"missing_user_emails":[],"teams_without_access":[],"users_without_access":[]},"schema":{"$version":1,"rules":[{"matcher":{"type":"codeowners","pattern":"src/*"},"owners":[{"type":"user","id":"1","name":"user@example.com"}]}]},"codeOwnersUrl":"https://github.com/example/repository/blob/main/CODEOWNERS"}],"summary":"List a project's CODEOWNERS configurations"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"post":{"operationId":"createProjectCodeOwners","description":"Create a CODEOWNERS configuration for a project.","summary":"Create a CODEOWNERS Configuration for a Project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Projects"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"raw":{"type":"string","description":"The raw contents of the CODEOWNERS file."},"codeMappingId":{"type":"string","description":"The ID of the code mapping used to translate repository paths to stack trace paths."}},"required":["codeMappingId","raw"]},"examples":{"CreateACODEOWNERSConfiguration":{"value":{"raw":"src/* user@example.com","codeMappingId":"7"},"summary":"Create a CODEOWNERS configuration"}}}},"required":true},"security":[{"auth_token":["project:admin","project:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"codeMapping":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"projectSlug":{"type":"string"},"repoId":{"type":"string"},"repoName":{"type":"string"},"integrationId":{"type":"string","nullable":true},"provider":{"type":"object","properties":{"key":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"canAdd":{"type":"boolean"},"canDisable":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"aspects":{"type":"object","additionalProperties":{}}},"required":["aspects","canAdd","canDisable","features","key","name","slug"],"nullable":true},"stackRoot":{"type":"string"},"sourceRoot":{"type":"string"},"defaultBranch":{"type":"string","nullable":true},"automaticallyGenerated":{"type":"boolean"},"hasCodeOwner":{"type":"boolean"}},"required":["automaticallyGenerated","defaultBranch","hasCodeOwner","id","integrationId","projectId","projectSlug","provider","repoId","repoName","sourceRoot","stackRoot"]},"ownershipSyntax":{"type":"string"},"errors":{"type":"object","properties":{"missing_user_emails":{"type":"array","items":{"type":"string"}},"missing_external_users":{"type":"array","items":{"type":"string"}},"missing_external_teams":{"type":"array","items":{"type":"string"}},"teams_without_access":{"type":"array","items":{"type":"string"}},"users_without_access":{"type":"array","items":{"type":"string"}}},"required":["missing_external_teams","missing_external_users","missing_user_emails","teams_without_access","users_without_access"]},"schema":{"anyOf":[{"type":"object","properties":{"$version":{"type":"integer"},"rules":{"type":"array","items":{"type":"object","properties":{"matcher":{"type":"object","properties":{"type":{"type":"string"},"pattern":{"type":"string"}},"required":["pattern","type"]},"owners":{"type":"array","items":{"type":"object","description":"Owner as it appears in the API response (after identifier->name rename).","properties":{"type":{"type":"string"},"name":{"type":"string"},"id":{"type":"string"}},"required":["name","type"]}}},"required":["matcher","owners"]}}},"required":["$version","rules"]},{"type":"object","description":"Legacy CODEOWNERS records can have an empty schema before it is built."}]},"codeOwnersUrl":{"type":"string"},"id":{"type":"string"},"raw":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time","nullable":true},"codeMappingId":{"type":"string"},"provider":{"type":"string"}},"required":["codeMappingId","dateCreated","dateSynced","dateUpdated","id","provider","raw"]},"examples":{"CreatedCODEOWNERSConfiguration":{"value":{"id":"42","raw":"src/* user@example.com","dateCreated":"2024-01-15T10:30:00Z","dateUpdated":"2024-01-15T10:30:00Z","dateSynced":"2024-01-15T10:30:00Z","codeMappingId":"7","provider":"github","errors":{"missing_external_teams":[],"missing_external_users":[],"missing_user_emails":[],"teams_without_access":[],"users_without_access":[]},"schema":{"$version":1,"rules":[{"matcher":{"type":"codeowners","pattern":"src/*"},"owners":[{"type":"user","id":"1","name":"user@example.com"}]}]},"codeOwnersUrl":"https://github.com/example/repository/blob/main/CODEOWNERS","ownershipSyntax":"codeowners:src/* user@example.com\n"},"summary":"Created CODEOWNERS configuration"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/codeowners/{codeowners_id}/":{"get":{"operationId":"retrieveProjectCodeOwners","description":"Return a single CODEOWNERS configuration.","summary":"Retrieve a Project's CODEOWNERS Configuration","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"codeowners_id","schema":{"type":"string"},"description":"The ID of the CODEOWNERS configuration.","required":true}],"tags":["Projects"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"codeMapping":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"projectSlug":{"type":"string"},"repoId":{"type":"string"},"repoName":{"type":"string"},"integrationId":{"type":"string","nullable":true},"provider":{"type":"object","properties":{"key":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"canAdd":{"type":"boolean"},"canDisable":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"aspects":{"type":"object","additionalProperties":{}}},"required":["aspects","canAdd","canDisable","features","key","name","slug"],"nullable":true},"stackRoot":{"type":"string"},"sourceRoot":{"type":"string"},"defaultBranch":{"type":"string","nullable":true},"automaticallyGenerated":{"type":"boolean"},"hasCodeOwner":{"type":"boolean"}},"required":["automaticallyGenerated","defaultBranch","hasCodeOwner","id","integrationId","projectId","projectSlug","provider","repoId","repoName","sourceRoot","stackRoot"]},"ownershipSyntax":{"type":"string"},"errors":{"type":"object","properties":{"missing_user_emails":{"type":"array","items":{"type":"string"}},"missing_external_users":{"type":"array","items":{"type":"string"}},"missing_external_teams":{"type":"array","items":{"type":"string"}},"teams_without_access":{"type":"array","items":{"type":"string"}},"users_without_access":{"type":"array","items":{"type":"string"}}},"required":["missing_external_teams","missing_external_users","missing_user_emails","teams_without_access","users_without_access"]},"schema":{"anyOf":[{"type":"object","properties":{"$version":{"type":"integer"},"rules":{"type":"array","items":{"type":"object","properties":{"matcher":{"type":"object","properties":{"type":{"type":"string"},"pattern":{"type":"string"}},"required":["pattern","type"]},"owners":{"type":"array","items":{"type":"object","description":"Owner as it appears in the API response (after identifier->name rename).","properties":{"type":{"type":"string"},"name":{"type":"string"},"id":{"type":"string"}},"required":["name","type"]}}},"required":["matcher","owners"]}}},"required":["$version","rules"]},{"type":"object","description":"Legacy CODEOWNERS records can have an empty schema before it is built."}]},"codeOwnersUrl":{"type":"string"},"id":{"type":"string"},"raw":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time","nullable":true},"codeMappingId":{"type":"string"},"provider":{"type":"string"}},"required":["codeMappingId","dateCreated","dateSynced","dateUpdated","id","provider","raw"]},"examples":{"RetrieveACODEOWNERSConfiguration":{"value":{"id":"42","raw":"src/* user@example.com","dateCreated":"2024-01-15T10:30:00Z","dateUpdated":"2024-01-15T10:30:00Z","dateSynced":"2024-01-15T10:30:00Z","codeMappingId":"7","provider":"github","errors":{"missing_external_teams":[],"missing_external_users":[],"missing_user_emails":[],"teams_without_access":[],"users_without_access":[]},"schema":{"$version":1,"rules":[{"matcher":{"type":"codeowners","pattern":"src/*"},"owners":[{"type":"user","id":"1","name":"user@example.com"}]}]},"codeOwnersUrl":"https://github.com/example/repository/blob/main/CODEOWNERS"},"summary":"Retrieve a CODEOWNERS configuration"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"updateProjectCodeOwners","description":"Update a CODEOWNERS configuration.","summary":"Update a Project's CODEOWNERS Configuration","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"codeowners_id","schema":{"type":"string"},"description":"The ID of the CODEOWNERS configuration.","required":true}],"tags":["Projects"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"raw":{"type":"string","description":"The raw contents of the CODEOWNERS file."},"codeMappingId":{"type":"string","description":"The ID of the code mapping used to translate repository paths to stack trace paths."}}},"examples":{"UpdateACODEOWNERSConfiguration":{"value":{"raw":"src/* #backend"},"summary":"Update a CODEOWNERS configuration"}}}}},"security":[{"auth_token":["project:admin","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"codeMapping":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"projectSlug":{"type":"string"},"repoId":{"type":"string"},"repoName":{"type":"string"},"integrationId":{"type":"string","nullable":true},"provider":{"type":"object","properties":{"key":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"canAdd":{"type":"boolean"},"canDisable":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"aspects":{"type":"object","additionalProperties":{}}},"required":["aspects","canAdd","canDisable","features","key","name","slug"],"nullable":true},"stackRoot":{"type":"string"},"sourceRoot":{"type":"string"},"defaultBranch":{"type":"string","nullable":true},"automaticallyGenerated":{"type":"boolean"},"hasCodeOwner":{"type":"boolean"}},"required":["automaticallyGenerated","defaultBranch","hasCodeOwner","id","integrationId","projectId","projectSlug","provider","repoId","repoName","sourceRoot","stackRoot"]},"ownershipSyntax":{"type":"string"},"errors":{"type":"object","properties":{"missing_user_emails":{"type":"array","items":{"type":"string"}},"missing_external_users":{"type":"array","items":{"type":"string"}},"missing_external_teams":{"type":"array","items":{"type":"string"}},"teams_without_access":{"type":"array","items":{"type":"string"}},"users_without_access":{"type":"array","items":{"type":"string"}}},"required":["missing_external_teams","missing_external_users","missing_user_emails","teams_without_access","users_without_access"]},"schema":{"anyOf":[{"type":"object","properties":{"$version":{"type":"integer"},"rules":{"type":"array","items":{"type":"object","properties":{"matcher":{"type":"object","properties":{"type":{"type":"string"},"pattern":{"type":"string"}},"required":["pattern","type"]},"owners":{"type":"array","items":{"type":"object","description":"Owner as it appears in the API response (after identifier->name rename).","properties":{"type":{"type":"string"},"name":{"type":"string"},"id":{"type":"string"}},"required":["name","type"]}}},"required":["matcher","owners"]}}},"required":["$version","rules"]},{"type":"object","description":"Legacy CODEOWNERS records can have an empty schema before it is built."}]},"codeOwnersUrl":{"type":"string"},"id":{"type":"string"},"raw":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time","nullable":true},"codeMappingId":{"type":"string"},"provider":{"type":"string"}},"required":["codeMappingId","dateCreated","dateSynced","dateUpdated","id","provider","raw"]},"examples":{"UpdatedCODEOWNERSConfiguration":{"value":{"id":"42","raw":"src/* user@example.com","dateCreated":"2024-01-15T10:30:00Z","dateUpdated":"2024-01-15T10:30:00Z","dateSynced":"2024-01-15T10:30:00Z","codeMappingId":"7","provider":"github","errors":{"missing_external_teams":[],"missing_external_users":[],"missing_user_emails":[],"teams_without_access":[],"users_without_access":[]},"schema":{"$version":1,"rules":[{"matcher":{"type":"codeowners","pattern":"src/*"},"owners":[{"type":"user","id":"1","name":"user@example.com"}]}]},"codeOwnersUrl":"https://github.com/example/repository/blob/main/CODEOWNERS","ownershipSyntax":"codeowners:src/* user@example.com\n"},"summary":"Updated CODEOWNERS configuration"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteProjectCodeOwners","description":"Delete a CODEOWNERS configuration.","summary":"Delete a Project's CODEOWNERS Configuration","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"codeowners_id","schema":{"type":"string"},"description":"The ID of the CODEOWNERS configuration.","required":true}],"tags":["Projects"],"security":[{"auth_token":["project:admin"]}],"responses":{"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/custom-inbound-filters/":{"get":{"operationId":"List a Project's Custom Inbound Filters","description":"**Experimental:** This API is under active development and may change.\n\nList the custom inbound filters configured for a project.","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Projects"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","readOnly":true,"description":"The ID of the filter."},"dataType":{"enum":["all","error","log","metric","span"],"type":"string","description":"The data the filter matches against. `all` is the catch-all: it filters every data type Sentry ingests, including ones added later, and accepts only the conditions that every data type carries a field for.\n\n* `all`\n* `error`\n* `log`\n* `metric`\n* `span`"},"conditions":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["error_type","error_message","log_message","metric_name","release","ip_address","geo_country_code"],"type":"string","description":"The field the condition matches against. Every `dataType` accepts `release` and `ip_address`. In addition, `error` accepts `error_type`, `error_message` and `geo_country_code`, `log` accepts `log_message`, and `metric` accepts `metric_name`. `span` and `all` accept no other types.\n\n* `error_type`\n* `error_message`\n* `log_message`\n* `metric_name`\n* `release`\n* `ip_address`\n* `geo_country_code`"},"operator":{"enum":["glob","equals","starts_with","contains","ends_with","does_not_start_with","does_not_contain","does_not_end_with","cidr","not_cidr","gt","gte","lt","lte"],"type":"string","description":"How the field compares to `value`. `glob` matches the field against each value as a glob pattern. `equals`, `starts_with`, `contains` and `ends_with` match the field against each value case-insensitively, with every character read literally; `does_not_start_with`, `does_not_contain` and `does_not_end_with` match when no value does. `cidr` matches `ip_address` against each value as an address or a CIDR range, and `not_cidr` matches when no value does. `gt`, `gte`, `lt` and `lte` compare one value as a version and only apply to `release`.\n\n* `glob`\n* `equals`\n* `starts_with`\n* `contains`\n* `ends_with`\n* `does_not_start_with`\n* `does_not_contain`\n* `does_not_end_with`\n* `cidr`\n* `not_cidr`\n* `gt`\n* `gte`\n* `lt`\n* `lte`"},"value":{"type":"array","items":{"type":"string"},"description":"The values the field is compared to. The condition matches when any value matches, so multiple values act as OR; a negated operator matches when none does. A version comparison takes one release with a version such as `1.2.0` or `myapp@1.2.0`. A comparison with a package only applies to releases of that package."}},"required":["type","value"]},"description":"Conditions are combined with AND: an event must match every condition to be filtered out. There is no OR between conditions, so e.g. two release conditions can express a range (`gte 2.0` and `lt 4.0`). To broaden matching, widen a condition's values or add separate filters."},"dateCreated":{"type":"string","format":"date-time","readOnly":true,"description":"When the filter was created."},"dateUpdated":{"type":"string","format":"date-time","readOnly":true,"description":"When the filter was last changed."},"legacyFilter":{"type":"string","readOnly":true,"nullable":true,"description":"Set on a filter that holds one of the filter lists of the project settings, to the id its outcomes are reported under. Such a filter keeps its data type and its one condition: only the name, the active flag and the condition values can change, and deleting it empties the list."},"name":{"type":"string","nullable":true,"description":"A human-readable label for the filter.","maxLength":256},"active":{"type":"boolean","description":"Whether the filter drops matching data. An inactive filter is kept but ignored."}},"required":["conditions","dataType","dateCreated","dateUpdated","id","legacyFilter"]}},"examples":{"ListCustomInboundFilters":{"value":[{"id":"42","name":"Drop TypeErrors from the 1.x releases","active":true,"dataType":"error","conditions":[{"type":"error_type","operator":"equals","value":["TypeError"]},{"type":"error_message","operator":"contains","value":["undefined"]},{"type":"release","operator":"lt","value":["2.0.0"]}],"dateCreated":"2024-07-23T17:52:53.981206Z","dateUpdated":"2024-07-23T17:52:53.981206Z","legacyFilter":null}],"summary":"List custom inbound filters"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"},"x-sentry-experimental":true},"post":{"operationId":"Create a Custom Inbound Filter","description":"**Experimental:** This API is under active development and may change.\n\nCreate a custom inbound filter for a project.","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Projects"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","readOnly":true,"description":"The ID of the filter."},"dataType":{"enum":["all","error","log","metric","span"],"type":"string","description":"The data the filter matches against. `all` is the catch-all: it filters every data type Sentry ingests, including ones added later, and accepts only the conditions that every data type carries a field for.\n\n* `all`\n* `error`\n* `log`\n* `metric`\n* `span`"},"conditions":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["error_type","error_message","log_message","metric_name","release","ip_address","geo_country_code"],"type":"string","description":"The field the condition matches against. Every `dataType` accepts `release` and `ip_address`. In addition, `error` accepts `error_type`, `error_message` and `geo_country_code`, `log` accepts `log_message`, and `metric` accepts `metric_name`. `span` and `all` accept no other types.\n\n* `error_type`\n* `error_message`\n* `log_message`\n* `metric_name`\n* `release`\n* `ip_address`\n* `geo_country_code`"},"operator":{"enum":["glob","equals","starts_with","contains","ends_with","does_not_start_with","does_not_contain","does_not_end_with","cidr","not_cidr","gt","gte","lt","lte"],"type":"string","description":"How the field compares to `value`. `glob` matches the field against each value as a glob pattern. `equals`, `starts_with`, `contains` and `ends_with` match the field against each value case-insensitively, with every character read literally; `does_not_start_with`, `does_not_contain` and `does_not_end_with` match when no value does. `cidr` matches `ip_address` against each value as an address or a CIDR range, and `not_cidr` matches when no value does. `gt`, `gte`, `lt` and `lte` compare one value as a version and only apply to `release`.\n\n* `glob`\n* `equals`\n* `starts_with`\n* `contains`\n* `ends_with`\n* `does_not_start_with`\n* `does_not_contain`\n* `does_not_end_with`\n* `cidr`\n* `not_cidr`\n* `gt`\n* `gte`\n* `lt`\n* `lte`"},"value":{"type":"array","items":{"type":"string"},"description":"The values the field is compared to. The condition matches when any value matches, so multiple values act as OR; a negated operator matches when none does. A version comparison takes one release with a version such as `1.2.0` or `myapp@1.2.0`. A comparison with a package only applies to releases of that package."}},"required":["type","value"]},"description":"Conditions are combined with AND: an event must match every condition to be filtered out. There is no OR between conditions, so e.g. two release conditions can express a range (`gte 2.0` and `lt 4.0`). To broaden matching, widen a condition's values or add separate filters."},"dateCreated":{"type":"string","format":"date-time","readOnly":true,"description":"When the filter was created."},"dateUpdated":{"type":"string","format":"date-time","readOnly":true,"description":"When the filter was last changed."},"legacyFilter":{"type":"string","readOnly":true,"nullable":true,"description":"Set on a filter that holds one of the filter lists of the project settings, to the id its outcomes are reported under. Such a filter keeps its data type and its one condition: only the name, the active flag and the condition values can change, and deleting it empties the list."},"name":{"type":"string","nullable":true,"description":"A human-readable label for the filter.","maxLength":256},"active":{"type":"boolean","description":"Whether the filter drops matching data. An inactive filter is kept but ignored."}},"required":["conditions","dataType","dateCreated","dateUpdated","id","legacyFilter"]}}},"required":true},"security":[{"auth_token":["project:admin","project:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","readOnly":true,"description":"The ID of the filter."},"dataType":{"enum":["all","error","log","metric","span"],"type":"string","description":"The data the filter matches against. `all` is the catch-all: it filters every data type Sentry ingests, including ones added later, and accepts only the conditions that every data type carries a field for.\n\n* `all`\n* `error`\n* `log`\n* `metric`\n* `span`"},"conditions":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["error_type","error_message","log_message","metric_name","release","ip_address","geo_country_code"],"type":"string","description":"The field the condition matches against. Every `dataType` accepts `release` and `ip_address`. In addition, `error` accepts `error_type`, `error_message` and `geo_country_code`, `log` accepts `log_message`, and `metric` accepts `metric_name`. `span` and `all` accept no other types.\n\n* `error_type`\n* `error_message`\n* `log_message`\n* `metric_name`\n* `release`\n* `ip_address`\n* `geo_country_code`"},"operator":{"enum":["glob","equals","starts_with","contains","ends_with","does_not_start_with","does_not_contain","does_not_end_with","cidr","not_cidr","gt","gte","lt","lte"],"type":"string","description":"How the field compares to `value`. `glob` matches the field against each value as a glob pattern. `equals`, `starts_with`, `contains` and `ends_with` match the field against each value case-insensitively, with every character read literally; `does_not_start_with`, `does_not_contain` and `does_not_end_with` match when no value does. `cidr` matches `ip_address` against each value as an address or a CIDR range, and `not_cidr` matches when no value does. `gt`, `gte`, `lt` and `lte` compare one value as a version and only apply to `release`.\n\n* `glob`\n* `equals`\n* `starts_with`\n* `contains`\n* `ends_with`\n* `does_not_start_with`\n* `does_not_contain`\n* `does_not_end_with`\n* `cidr`\n* `not_cidr`\n* `gt`\n* `gte`\n* `lt`\n* `lte`"},"value":{"type":"array","items":{"type":"string"},"description":"The values the field is compared to. The condition matches when any value matches, so multiple values act as OR; a negated operator matches when none does. A version comparison takes one release with a version such as `1.2.0` or `myapp@1.2.0`. A comparison with a package only applies to releases of that package."}},"required":["type","value"]},"description":"Conditions are combined with AND: an event must match every condition to be filtered out. There is no OR between conditions, so e.g. two release conditions can express a range (`gte 2.0` and `lt 4.0`). To broaden matching, widen a condition's values or add separate filters."},"dateCreated":{"type":"string","format":"date-time","readOnly":true,"description":"When the filter was created."},"dateUpdated":{"type":"string","format":"date-time","readOnly":true,"description":"When the filter was last changed."},"legacyFilter":{"type":"string","readOnly":true,"nullable":true,"description":"Set on a filter that holds one of the filter lists of the project settings, to the id its outcomes are reported under. Such a filter keeps its data type and its one condition: only the name, the active flag and the condition values can change, and deleting it empties the list."},"name":{"type":"string","nullable":true,"description":"A human-readable label for the filter.","maxLength":256},"active":{"type":"boolean","description":"Whether the filter drops matching data. An inactive filter is kept but ignored."}},"required":["conditions","dataType","dateCreated","dateUpdated","id","legacyFilter"]},"examples":{"CustomInboundFilter":{"value":{"id":"42","name":"Drop TypeErrors from the 1.x releases","active":true,"dataType":"error","conditions":[{"type":"error_type","operator":"equals","value":["TypeError"]},{"type":"error_message","operator":"contains","value":["undefined"]},{"type":"release","operator":"lt","value":["2.0.0"]}],"dateCreated":"2024-07-23T17:52:53.981206Z","dateUpdated":"2024-07-23T17:52:53.981206Z","legacyFilter":null},"summary":"Custom inbound filter"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"},"x-sentry-experimental":true}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/custom-inbound-filters/{filter_id}/":{"get":{"operationId":"Retrieve a Custom Inbound Filter","description":"**Experimental:** This API is under active development and may change.\n\nRetrieve a single custom inbound filter.","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"filter_id","schema":{"type":"string"},"description":"The ID of the custom inbound filter.","required":true}],"tags":["Projects"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","readOnly":true,"description":"The ID of the filter."},"dataType":{"enum":["all","error","log","metric","span"],"type":"string","description":"The data the filter matches against. `all` is the catch-all: it filters every data type Sentry ingests, including ones added later, and accepts only the conditions that every data type carries a field for.\n\n* `all`\n* `error`\n* `log`\n* `metric`\n* `span`"},"conditions":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["error_type","error_message","log_message","metric_name","release","ip_address","geo_country_code"],"type":"string","description":"The field the condition matches against. Every `dataType` accepts `release` and `ip_address`. In addition, `error` accepts `error_type`, `error_message` and `geo_country_code`, `log` accepts `log_message`, and `metric` accepts `metric_name`. `span` and `all` accept no other types.\n\n* `error_type`\n* `error_message`\n* `log_message`\n* `metric_name`\n* `release`\n* `ip_address`\n* `geo_country_code`"},"operator":{"enum":["glob","equals","starts_with","contains","ends_with","does_not_start_with","does_not_contain","does_not_end_with","cidr","not_cidr","gt","gte","lt","lte"],"type":"string","description":"How the field compares to `value`. `glob` matches the field against each value as a glob pattern. `equals`, `starts_with`, `contains` and `ends_with` match the field against each value case-insensitively, with every character read literally; `does_not_start_with`, `does_not_contain` and `does_not_end_with` match when no value does. `cidr` matches `ip_address` against each value as an address or a CIDR range, and `not_cidr` matches when no value does. `gt`, `gte`, `lt` and `lte` compare one value as a version and only apply to `release`.\n\n* `glob`\n* `equals`\n* `starts_with`\n* `contains`\n* `ends_with`\n* `does_not_start_with`\n* `does_not_contain`\n* `does_not_end_with`\n* `cidr`\n* `not_cidr`\n* `gt`\n* `gte`\n* `lt`\n* `lte`"},"value":{"type":"array","items":{"type":"string"},"description":"The values the field is compared to. The condition matches when any value matches, so multiple values act as OR; a negated operator matches when none does. A version comparison takes one release with a version such as `1.2.0` or `myapp@1.2.0`. A comparison with a package only applies to releases of that package."}},"required":["type","value"]},"description":"Conditions are combined with AND: an event must match every condition to be filtered out. There is no OR between conditions, so e.g. two release conditions can express a range (`gte 2.0` and `lt 4.0`). To broaden matching, widen a condition's values or add separate filters."},"dateCreated":{"type":"string","format":"date-time","readOnly":true,"description":"When the filter was created."},"dateUpdated":{"type":"string","format":"date-time","readOnly":true,"description":"When the filter was last changed."},"legacyFilter":{"type":"string","readOnly":true,"nullable":true,"description":"Set on a filter that holds one of the filter lists of the project settings, to the id its outcomes are reported under. Such a filter keeps its data type and its one condition: only the name, the active flag and the condition values can change, and deleting it empties the list."},"name":{"type":"string","nullable":true,"description":"A human-readable label for the filter.","maxLength":256},"active":{"type":"boolean","description":"Whether the filter drops matching data. An inactive filter is kept but ignored."}},"required":["conditions","dataType","dateCreated","dateUpdated","id","legacyFilter"]},"examples":{"CustomInboundFilter":{"value":{"id":"42","name":"Drop TypeErrors from the 1.x releases","active":true,"dataType":"error","conditions":[{"type":"error_type","operator":"equals","value":["TypeError"]},{"type":"error_message","operator":"contains","value":["undefined"]},{"type":"release","operator":"lt","value":["2.0.0"]}],"dateCreated":"2024-07-23T17:52:53.981206Z","dateUpdated":"2024-07-23T17:52:53.981206Z","legacyFilter":null},"summary":"Custom inbound filter"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"},"x-sentry-experimental":true},"put":{"operationId":"Update a Custom Inbound Filter","description":"**Experimental:** This API is under active development and may change.\n\nUpdate a custom inbound filter's name, active state, or conditions.","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"filter_id","schema":{"type":"string"},"description":"The ID of the custom inbound filter.","required":true}],"tags":["Projects"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","readOnly":true,"description":"The ID of the filter."},"dataType":{"enum":["all","error","log","metric","span"],"type":"string","description":"The data the filter matches against. `all` is the catch-all: it filters every data type Sentry ingests, including ones added later, and accepts only the conditions that every data type carries a field for.\n\n* `all`\n* `error`\n* `log`\n* `metric`\n* `span`"},"conditions":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["error_type","error_message","log_message","metric_name","release","ip_address","geo_country_code"],"type":"string","description":"The field the condition matches against. Every `dataType` accepts `release` and `ip_address`. In addition, `error` accepts `error_type`, `error_message` and `geo_country_code`, `log` accepts `log_message`, and `metric` accepts `metric_name`. `span` and `all` accept no other types.\n\n* `error_type`\n* `error_message`\n* `log_message`\n* `metric_name`\n* `release`\n* `ip_address`\n* `geo_country_code`"},"operator":{"enum":["glob","equals","starts_with","contains","ends_with","does_not_start_with","does_not_contain","does_not_end_with","cidr","not_cidr","gt","gte","lt","lte"],"type":"string","description":"How the field compares to `value`. `glob` matches the field against each value as a glob pattern. `equals`, `starts_with`, `contains` and `ends_with` match the field against each value case-insensitively, with every character read literally; `does_not_start_with`, `does_not_contain` and `does_not_end_with` match when no value does. `cidr` matches `ip_address` against each value as an address or a CIDR range, and `not_cidr` matches when no value does. `gt`, `gte`, `lt` and `lte` compare one value as a version and only apply to `release`.\n\n* `glob`\n* `equals`\n* `starts_with`\n* `contains`\n* `ends_with`\n* `does_not_start_with`\n* `does_not_contain`\n* `does_not_end_with`\n* `cidr`\n* `not_cidr`\n* `gt`\n* `gte`\n* `lt`\n* `lte`"},"value":{"type":"array","items":{"type":"string"},"description":"The values the field is compared to. The condition matches when any value matches, so multiple values act as OR; a negated operator matches when none does. A version comparison takes one release with a version such as `1.2.0` or `myapp@1.2.0`. A comparison with a package only applies to releases of that package."}},"required":["type","value"]},"description":"Conditions are combined with AND: an event must match every condition to be filtered out. There is no OR between conditions, so e.g. two release conditions can express a range (`gte 2.0` and `lt 4.0`). To broaden matching, widen a condition's values or add separate filters."},"dateCreated":{"type":"string","format":"date-time","readOnly":true,"description":"When the filter was created."},"dateUpdated":{"type":"string","format":"date-time","readOnly":true,"description":"When the filter was last changed."},"legacyFilter":{"type":"string","readOnly":true,"nullable":true,"description":"Set on a filter that holds one of the filter lists of the project settings, to the id its outcomes are reported under. Such a filter keeps its data type and its one condition: only the name, the active flag and the condition values can change, and deleting it empties the list."},"name":{"type":"string","nullable":true,"description":"A human-readable label for the filter.","maxLength":256},"active":{"type":"boolean","description":"Whether the filter drops matching data. An inactive filter is kept but ignored."}},"required":["conditions","dataType","dateCreated","dateUpdated","id","legacyFilter"]}}},"required":true},"security":[{"auth_token":["project:admin","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","readOnly":true,"description":"The ID of the filter."},"dataType":{"enum":["all","error","log","metric","span"],"type":"string","description":"The data the filter matches against. `all` is the catch-all: it filters every data type Sentry ingests, including ones added later, and accepts only the conditions that every data type carries a field for.\n\n* `all`\n* `error`\n* `log`\n* `metric`\n* `span`"},"conditions":{"type":"array","items":{"type":"object","properties":{"type":{"enum":["error_type","error_message","log_message","metric_name","release","ip_address","geo_country_code"],"type":"string","description":"The field the condition matches against. Every `dataType` accepts `release` and `ip_address`. In addition, `error` accepts `error_type`, `error_message` and `geo_country_code`, `log` accepts `log_message`, and `metric` accepts `metric_name`. `span` and `all` accept no other types.\n\n* `error_type`\n* `error_message`\n* `log_message`\n* `metric_name`\n* `release`\n* `ip_address`\n* `geo_country_code`"},"operator":{"enum":["glob","equals","starts_with","contains","ends_with","does_not_start_with","does_not_contain","does_not_end_with","cidr","not_cidr","gt","gte","lt","lte"],"type":"string","description":"How the field compares to `value`. `glob` matches the field against each value as a glob pattern. `equals`, `starts_with`, `contains` and `ends_with` match the field against each value case-insensitively, with every character read literally; `does_not_start_with`, `does_not_contain` and `does_not_end_with` match when no value does. `cidr` matches `ip_address` against each value as an address or a CIDR range, and `not_cidr` matches when no value does. `gt`, `gte`, `lt` and `lte` compare one value as a version and only apply to `release`.\n\n* `glob`\n* `equals`\n* `starts_with`\n* `contains`\n* `ends_with`\n* `does_not_start_with`\n* `does_not_contain`\n* `does_not_end_with`\n* `cidr`\n* `not_cidr`\n* `gt`\n* `gte`\n* `lt`\n* `lte`"},"value":{"type":"array","items":{"type":"string"},"description":"The values the field is compared to. The condition matches when any value matches, so multiple values act as OR; a negated operator matches when none does. A version comparison takes one release with a version such as `1.2.0` or `myapp@1.2.0`. A comparison with a package only applies to releases of that package."}},"required":["type","value"]},"description":"Conditions are combined with AND: an event must match every condition to be filtered out. There is no OR between conditions, so e.g. two release conditions can express a range (`gte 2.0` and `lt 4.0`). To broaden matching, widen a condition's values or add separate filters."},"dateCreated":{"type":"string","format":"date-time","readOnly":true,"description":"When the filter was created."},"dateUpdated":{"type":"string","format":"date-time","readOnly":true,"description":"When the filter was last changed."},"legacyFilter":{"type":"string","readOnly":true,"nullable":true,"description":"Set on a filter that holds one of the filter lists of the project settings, to the id its outcomes are reported under. Such a filter keeps its data type and its one condition: only the name, the active flag and the condition values can change, and deleting it empties the list."},"name":{"type":"string","nullable":true,"description":"A human-readable label for the filter.","maxLength":256},"active":{"type":"boolean","description":"Whether the filter drops matching data. An inactive filter is kept but ignored."}},"required":["conditions","dataType","dateCreated","dateUpdated","id","legacyFilter"]},"examples":{"CustomInboundFilter":{"value":{"id":"42","name":"Drop TypeErrors from the 1.x releases","active":true,"dataType":"error","conditions":[{"type":"error_type","operator":"equals","value":["TypeError"]},{"type":"error_message","operator":"contains","value":["undefined"]},{"type":"release","operator":"lt","value":["2.0.0"]}],"dateCreated":"2024-07-23T17:52:53.981206Z","dateUpdated":"2024-07-23T17:52:53.981206Z","legacyFilter":null},"summary":"Custom inbound filter"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"},"x-sentry-experimental":true},"delete":{"operationId":"Delete a Custom Inbound Filter","description":"**Experimental:** This API is under active development and may change.\n\nDelete a custom inbound filter.","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"filter_id","schema":{"type":"string"},"description":"The ID of the custom inbound filter.","required":true}],"tags":["Projects"],"security":[{"auth_token":["project:admin","project:write"]}],"responses":{"204":{"description":"No response body"},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"},"x-sentry-experimental":true}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/environments/":{"get":{"operationId":"listProjectEnvironments","description":"Lists a project's environments.","summary":"List a Project's Environments","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"query","name":"visibility","schema":{"type":"string","enum":["all","hidden","visible"]},"description":"The visibility of the environments to filter by. Defaults to `visible`."}],"tags":["Environments"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"isHidden":{"type":"boolean"}},"required":["id","isHidden","name"]}},"examples":{"ListAProject'sEnvironments":{"value":[{"id":"1","name":"Production","isHidden":false},{"id":"2","name":"Staging","isHidden":true}],"summary":"List a Project's Environments"}}}},"description":""},"400":{"description":"Invalid value for 'visibility'."},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"Bulk Update Project Environments","description":"Bulk update the visibility for a project's environments.","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Environments"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"environmentNames":{"type":"array","items":{"type":"string"},"description":"List of environment names to update. Maximum 1000.","maxItems":1000},"isHidden":{"type":"boolean","description":"Specify `true` to hide or `false` to show the specified environments."}},"required":["environmentNames","isHidden"]}}},"required":true},"security":[{"auth_token":["project:admin","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"isHidden":{"type":"boolean"}},"required":["id","isHidden","name"]}},"examples":{"ListAProject'sEnvironments":{"value":[{"id":"1","name":"Production","isHidden":false},{"id":"2","name":"Staging","isHidden":true}],"summary":"List a Project's Environments"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/environments/{environment}/":{"get":{"operationId":"getProjectEnvironment","description":"Return details on a project environment.","summary":"Retrieve a Project Environment","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"environment","schema":{"type":"string"},"description":"The name of the environment.","required":true}],"tags":["Environments"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"isHidden":{"type":"boolean"}},"required":["id","isHidden","name"]},"examples":{"RetrieveAProjectEnvironment":{"value":{"id":"1","name":"Production","isHidden":false},"summary":"Retrieve a Project Environment"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"updateProjectEnvironment","description":"Update the visibility for a project environment.","summary":"Update a Project Environment","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"environment","schema":{"type":"string"},"description":"The name of the environment.","required":true}],"tags":["Environments"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"isHidden":{"type":"boolean","description":"Specify `true` to make the environment visible or `false` to make the environment hidden."}},"required":["isHidden"]}}},"required":true},"security":[{"auth_token":["project:admin","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"isHidden":{"type":"boolean"}},"required":["id","isHidden","name"]},"examples":{"RetrieveAProjectEnvironment":{"value":{"id":"1","name":"Production","isHidden":false},"summary":"Retrieve a Project Environment"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/events/":{"get":{"operationId":"listProjectEvents","description":"Return a list of events bound to a project.","summary":"List a Project's Error Events","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"query","name":"statsPeriod","schema":{"type":"string"},"description":"The period of time for the query, will override the start & end parameters, a number followed by one of:\n- `d` for days\n- `h` for hours\n- `m` for minutes\n- `s` for seconds\n- `w` for weeks\n\nFor example, `24h`, to mean query data starting from 24 hours ago to now."},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"},{"in":"query","name":"full","schema":{"type":"boolean","default":false},"description":"Specify true to include the full event body, including the stacktrace, in the event payload. When true, the page size is capped at 10."},{"in":"query","name":"sample","schema":{"type":"boolean","default":false},"description":"Return events in pseudo-random order. This is deterministic so an identical query will always return the same events in the same order."}],"tags":["Events"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"event.type":{"type":"string"},"groupID":{"type":"string","nullable":true},"eventID":{"type":"string"},"projectID":{"type":"string"},"message":{"type":"string"},"title":{"type":"string"},"location":{"type":"string","nullable":true},"culprit":{"type":"string","nullable":true},"user":{"type":"object","properties":{"id":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"username":{"type":"string","nullable":true},"ip_address":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"geo":{"type":"object","additionalProperties":{"type":"string"},"nullable":true},"data":{"type":"object","additionalProperties":{},"nullable":true}},"nullable":true},"tags":{"type":"array","items":{"type":"object","properties":{"query":{"type":"string"},"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"crashFile":{"type":"string","nullable":true},"metadata":{"type":"object","additionalProperties":{}}},"required":["crashFile","culprit","dateCreated","event.type","eventID","groupID","id","location","message","metadata","platform","projectID","tags","title","user"]}},"examples":{"ReturnAListOfErrorEventsBoundToAProject":{"value":[{"eventID":"9fac2ceed9344f2bbfdd1fdacb0ed9b1","tags":[{"key":"browser","value":"Chrome 60.0"},{"key":"device","value":"Other"},{"key":"environment","value":"production"},{"value":"fatal","key":"level"},{"key":"os","value":"Mac OS X 10.12.6"},{"value":"CPython 2.7.16","key":"runtime"},{"key":"release","value":"17642328ead24b51867165985996d04b29310337"},{"key":"server_name","value":"web1.example.com"}],"dateCreated":"2020-09-11T17:46:36Z","user":null,"message":"","title":"This is an example Python exception","id":"dfb1a2d057194e76a4186cc8a5271553","platform":"python","event.type":"error","groupID":"1889724436","crashFile":null,"location":"example.py:123","culprit":"/books/new/","projectID":"49271","metadata":{"type":"ExampleException","value":"This is an example Python exception"}}],"summary":"Return a list of error events bound to a project"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/events/{event_id}/":{"get":{"operationId":"getProjectEvent","description":"Return details on an individual event.","summary":"Retrieve an Event for a Project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"event_id","schema":{"type":"string","pattern":"^[0-9a-f]{32}$"},"description":"The ID of the event. It is a 32-character hexadecimal string as reported by the client.","required":true},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."},{"in":"query","name":"collapse","schema":{"type":"array","items":{"type":"string","enum":["adjacentEvents"]}},"description":"Parts of the response to skip computing. Specify `adjacentEvents` to skip looking up the neighboring events in the issue; `nextEventID` and `previousEventID` are then always `null`. Unknown values are ignored."}],"tags":["Events"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"groupID":{"type":"string","nullable":true},"eventID":{"type":"string"},"projectID":{"type":"string"},"message":{"type":"string","nullable":true},"title":{"type":"string"},"location":{"type":"string","nullable":true},"user":{"type":"object","properties":{"id":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"username":{"type":"string","nullable":true},"ip_address":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"geo":{"type":"object","additionalProperties":{"type":"string"},"nullable":true},"data":{"type":"object","additionalProperties":{},"nullable":true}},"nullable":true},"tags":{"type":"array","items":{"type":"object","properties":{"query":{"type":"string"},"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}},"platform":{"type":"string"},"dateReceived":{"type":"string","format":"date-time","nullable":true},"contexts":{"type":"object","additionalProperties":{},"nullable":true},"size":{"type":"integer","nullable":true},"entries":{"type":"array","items":{}},"dist":{"type":"string","nullable":true},"sdk":{"type":"object","properties":{"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true}},"required":["name","version"],"nullable":true},"context":{"type":"object","additionalProperties":{},"nullable":true},"packages":{"type":"object","additionalProperties":{}},"type":{"enum":["default","error","csp","nel","hpkp","expectct","expectstaple","transaction","generic","feedback"],"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"errors":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"data":{"type":"object","additionalProperties":{}}},"required":["data","message","type"]}},"occurrence":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"integer"},"eventId":{"type":"string"},"fingerprint":{"type":"array","items":{"type":"string"}},"issueTitle":{"type":"string"},"subtitle":{"type":"string"},"resourceId":{"type":"string","nullable":true},"evidenceData":{"type":"object","additionalProperties":{}},"evidenceDisplay":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"important":{"type":"boolean"}},"required":["important","name","value"]}},"type":{"type":"integer"},"detectionTime":{"type":"number","format":"double"},"level":{"type":"string","nullable":true},"culprit":{"type":"string","nullable":true},"assignee":{"type":"string","nullable":true},"priority":{"type":"integer","nullable":true}},"required":["assignee","culprit","detectionTime","eventId","evidenceData","evidenceDisplay","fingerprint","id","issueTitle","level","priority","projectId","resourceId","subtitle","type"],"nullable":true},"_meta":{"type":"object","additionalProperties":{}},"crashFile":{"type":"string","nullable":true},"culprit":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"fingerprints":{"type":"array","items":{"type":"string"}},"groupingConfig":{"type":"object","properties":{"id":{"type":"string"},"enhancements":{"type":"string"}},"required":["enhancements","id"]},"startTimestamp":{"type":"number","format":"double"},"endTimestamp":{"type":"number","format":"double"},"measurements":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"type":"number","format":"double"},"unit":{"type":"string","nullable":true}},"required":["unit","value"]},"nullable":true},"breakdowns":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"type":"number","format":"double"},"unit":{"type":"string","nullable":true}},"required":["unit","value"]}},"nullable":true},"release":{"type":"object","properties":{"id":{"type":"integer"},"commitCount":{"type":"integer"},"data":{"type":"object","additionalProperties":{}},"dateCreated":{"type":"string","format":"date-time"},"dateReleased":{"type":"string","format":"date-time","nullable":true},"deployCount":{"type":"integer"},"ref":{"type":"string","nullable":true},"lastCommit":{"type":"object","additionalProperties":{},"nullable":true},"lastDeploy":{"type":"object","properties":{"dateStarted":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"id":{"type":"string"},"environment":{"type":"string"},"dateFinished":{"type":"string"},"name":{"type":"string"}},"required":["dateFinished","environment","id","name"],"nullable":true},"status":{"type":"string"},"url":{"type":"string","nullable":true},"userAgent":{"type":"string","nullable":true},"version":{"type":"string","nullable":true},"versionInfo":{"type":"object","properties":{"description":{"type":"string"},"package":{"type":"string","nullable":true},"version":{"type":"object","additionalProperties":{}},"buildHash":{"type":"string","nullable":true}},"required":["buildHash","package","version"],"nullable":true}},"nullable":true},"userReport":{"type":"object","properties":{"id":{"type":"string"},"eventID":{"type":"string"},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"comments":{"type":"string"},"dateCreated":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"username":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"ipAddress":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}},"required":["avatarUrl","email","id","ipAddress","name","username"],"nullable":true},"event":{"type":"object","properties":{"id":{"type":"string"},"eventID":{"type":"string"}},"required":["eventID","id"]}},"required":["comments","dateCreated","email","event","eventID","id","name","user"],"nullable":true},"sdkUpdates":{"type":"array","items":{"type":"object","additionalProperties":{}}},"resolvedWith":{"type":"array","items":{"type":"string"}},"nextEventID":{"type":"string","nullable":true},"previousEventID":{"type":"string","nullable":true}},"required":["_meta","context","contexts","dateReceived","dist","entries","errors","eventID","groupID","id","location","message","metadata","nextEventID","occurrence","packages","platform","previousEventID","projectID","release","resolvedWith","sdk","sdkUpdates","size","tags","title","type","user","userReport"]},"examples":{"ReturnAnIssueEvent":{"value":{"groupID":"1341191803","eventID":"9999aaaaca8b46d797c23c6077c6ff01","dist":null,"userReport":null,"previousEventID":null,"message":"","title":"This is an example Python exception","id":"9999aaafcc8b46d797c23c6077c6ff01","size":107762,"errors":[{"data":{"column":8,"source":"https://s1.sentry-cdn.com/_static/bloopbloop/sentry/dist/app.js.map","row":15},"message":"Invalid location in sourcemap","type":"js_invalid_sourcemap_location"}],"platform":"javascript","nextEventID":"99f9e199e9a74a14bfef6196ad741619","type":"error","metadata":{"type":"ForbiddenError","value":"GET /organizations/hellboy-meowmeow/users/ 403"},"tags":[{"value":"Chrome 83.0.4103","key":"browser"},{"value":"Chrome","key":"browser.name"},{"value":"prod","key":"environment"},{"value":"yes","key":"handled"},{"value":"error","key":"level"},{"value":"generic","key":"mechanism"}],"dateCreated":"2020-06-17T22:26:56.098086Z","dateReceived":"2020-06-17T22:26:56.428721Z","user":{"username":null,"name":"Hell Boy","ip_address":"192.168.1.1","email":"hell@boy.cat","data":{"isStaff":false},"id":"550747"},"entries":[{"type":"exception","data":{"values":[{"stacktrace":{"frames":[{"function":"ignoreOnError","errors":null,"colNo":23,"vars":null,"package":null,"absPath":"webpack:////usr/src/getsentry/src/sentry/node_modules/@sentry/browser/esm/helpers.js","inApp":false,"lineNo":71,"module":"usr/src/getsentry/src/sentry/node_modules/@sentry/browser/esm/helpers","filename":"/usr/src/getsentry/src/sentry/node_modules/@sentry/browser/esm/helpers.js","platform":null,"instructionAddr":null,"context":[[66," }"],[67," // Attempt to invoke user-land function"],[68," // NOTE: If you are a Sentry user, and you are seeing this stack frame, it"],[69," // means the sentry.javascript SDK caught an error invoking your application code. This"],[70," // is expected behavior and NOT indicative of a bug with sentry.javascript."],[71," return fn.apply(this, wrappedArguments);"],[72," // tslint:enable:no-unsafe-any"],[73," }"],[74," catch (ex) {"],[75," ignoreNextOnError();"],[76," withScope(function (scope) {"]],"symbolAddr":null,"trust":null,"symbol":null},{"function":"apply","errors":null,"colNo":24,"vars":null,"package":null,"absPath":"webpack:////usr/src/getsentry/src/sentry/node_modules/reflux-core/lib/PublisherMethods.js","inApp":false,"lineNo":74,"module":"usr/src/getsentry/src/sentry/node_modules/reflux-core/lib/PublisherMethods","filename":"/usr/src/getsentry/src/sentry/node_modules/reflux-core/lib/PublisherMethods.js","platform":null,"instructionAddr":null,"context":[[69," */"],[70," triggerAsync: function triggerAsync() {"],[71," var args = arguments,"],[72," me = this;"],[73," _.nextTick(function () {"],[74," me.trigger.apply(me, args);"],[75," });"],[76," },"],[77,""],[78," /**"],[79," * Wraps the trigger mechanism with a deferral function."]],"symbolAddr":null,"trust":null,"symbol":null}],"framesOmitted":null,"registers":null,"hasSystemFrames":true},"module":null,"rawStacktrace":{"frames":[{"function":"a","errors":null,"colNo":88800,"vars":null,"package":null,"absPath":"https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js","inApp":false,"lineNo":81,"module":null,"filename":"/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js","platform":null,"instructionAddr":null,"context":[[76,"/*!"],[77," Copyright (c) 2018 Jed Watson."],[78," Licensed under the MIT License (MIT), see"],[79," http://jedwatson.github.io/react-select"],[80,"*/"],[81,"{snip} e,t)}));return e.handleEvent?e.handleEvent.apply(this,s):e.apply(this,s)}catch(e){throw c(),Object(o.m)((function(n){n.addEventProcessor((fu {snip}"],[82,"/*!"],[83," * JavaScript Cookie v2.2.1"],[84," * https://github.com/js-cookie/js-cookie"],[85," *"],[86," * Copyright 2006, 2015 Klaus Hartl & Fagner Brack"]],"symbolAddr":null,"trust":null,"symbol":null},{"function":null,"errors":null,"colNo":149484,"vars":null,"package":null,"absPath":"https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js","inApp":false,"lineNo":119,"module":null,"filename":"/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js","platform":null,"instructionAddr":null,"context":[[114,"/* @license"],[115,"Papa Parse"],[116,"v5.2.0"],[117,"https://github.com/mholt/PapaParse"],[118,"License: MIT"],[119,"{snip} (){var e=arguments,t=this;r.nextTick((function(){t.trigger.apply(t,e)}))},deferWith:function(e){var t=this.trigger,n=this,r=function(){t.app {snip}"],[120,"/**!"],[121," * @fileOverview Kickass library to create and place poppers near their reference elements."],[122," * @version 1.16.1"],[123," * @license"],[124," * Copyright (c) 2016 Federico Zivolo and contributors"]],"symbolAddr":null,"trust":null,"symbol":null}],"framesOmitted":null,"registers":null,"hasSystemFrames":true},"mechanism":{"type":"generic","handled":true},"threadId":null,"value":"GET /organizations/hellboy-meowmeow/users/ 403","type":"ForbiddenError"}],"excOmitted":null,"hasSystemFrames":true}},{"type":"breadcrumbs","data":{"values":[{"category":"tracing","level":"debug","event_id":null,"timestamp":"2020-06-17T22:26:55.266586Z","data":null,"message":"[Tracing] pushActivity: idleTransactionStarted#1","type":"debug"},{"category":"xhr","level":"info","event_id":null,"timestamp":"2020-06-17T22:26:55.619446Z","data":{"url":"/api/0/internal/health/","status_code":200,"method":"GET"},"message":null,"type":"http"},{"category":"sentry.transaction","level":"info","event_id":null,"timestamp":"2020-06-17T22:26:55.945016Z","data":null,"message":"7787a027f3fb46c985aaa2287b3f4d09","type":"default"}]}},{"type":"request","data":{"fragment":null,"cookies":[],"inferredContentType":null,"env":null,"headers":[["User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"]],"url":"https://sentry.io/organizations/hellboy-meowmeow/issues/","query":[["project","5236886"]],"data":null,"method":null}}],"packages":{},"sdk":{"version":"5.17.0","name":"sentry.javascript.browser"},"_meta":{"user":null,"context":null,"entries":{},"contexts":null,"message":null,"packages":null,"tags":{},"sdk":null},"contexts":{"ForbiddenError":{"status":403,"statusText":"Forbidden","responseJSON":{"detail":"You do not have permission to perform this action."},"type":"default"},"browser":{"version":"83.0.4103","type":"browser","name":"Chrome"},"os":{"version":"10","type":"os","name":"Windows"},"trace":{"span_id":"83db1ad17e67dfe7","type":"trace","trace_id":"da6caabcd90e45fdb81f6655824a5f88","op":"navigation"},"organization":{"type":"default","id":"323938","slug":"hellboy-meowmeow"}},"fingerprints":["fbe908cc63d63ea9763fd84cb6bad177"],"context":{"resp":{"status":403,"responseJSON":{"detail":"You do not have permission to perform this action."},"name":"ForbiddenError","statusText":"Forbidden","message":"GET /organizations/hellboy-meowmeow/users/ 403","stack":"Error\n at https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/app.js:1:480441\n at u (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:165:51006)\n at Generator._invoke (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:165:50794)\n at Generator.A.forEach.e. [as next] (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:165:51429)\n at n (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:16:68684)\n at s (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:16:68895)\n at https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:16:68954\n at new Promise ()\n at https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:16:68835\n at v (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/app.js:1:480924)\n at m (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/app.js:1:480152)\n at t.fetchMemberList (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/app.js:1:902983)\n at t.componentDidMount (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/app.js:1:900527)\n at t.componentDidMount (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:189:15597)\n at Pc (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:181:101023)\n at t.unstable_runWithPriority (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:189:3462)\n at Ko (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:181:45529)\n at Rc (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:181:97371)\n at Oc (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:181:87690)\n at https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:181:45820\n at t.unstable_runWithPriority (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:189:3462)\n at Ko (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:181:45529)\n at Zo (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:181:45765)\n at Jo (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:181:45700)\n at gc (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:181:84256)\n at Object.enqueueSetState (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:181:50481)\n at t.M.setState (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:173:1439)\n at t.onUpdate (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/app.js:1:543076)\n at a.n (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:119:149090)\n at a.emit (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:189:6550)\n at p.trigger (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:119:149379)\n at p.onInitializeUrlState (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/app.js:1:541711)\n at a.n (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:119:149090)\n at a.emit (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:189:6550)\n at Function.trigger (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:119:149379)\n at https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:119:149484\n at a (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:81:88800)"}},"release":{"dateReleased":"2020-06-17T19:21:02.186004Z","commitCount":11,"url":"https://freight.getsentry.net/deploys/getsentry/production/8868/","data":{},"lastDeploy":{"name":"b65bc521378269d3eaefdc964f8ef56621414943 to prod","url":null,"environment":"prod","dateStarted":null,"dateFinished":"2020-06-17T19:20:55.641748Z","id":"6883490"},"deployCount":1,"dateCreated":"2020-06-17T18:45:31.042157Z","version":"b65bc521378269d3eaefdc964f8ef56621414943","lastCommit":{"repository":{"status":"active","integrationId":"2933","externalSlug":"getsentry/getsentry","name":"getsentry/getsentry","provider":{"id":"integrations:github","name":"GitHub"},"url":"https://github.com/getsentry/getsentry","id":"2","dateCreated":"2016-10-10T21:36:45.373994Z"},"releases":[{"dateReleased":"2020-06-23T13:26:18.427090Z","url":"https://freight.getsentry.net/deploys/getsentry/staging/2077/","dateCreated":"2020-06-23T13:22:50.420265Z","version":"f3783e5fe710758724f14267439fd46cc2bf5918","shortVersion":"f3783e5fe710758724f14267439fd46cc2bf5918","ref":"perf/source-maps-test"},{"dateReleased":"2020-06-17T19:21:02.186004Z","url":"https://freight.getsentry.net/deploys/getsentry/production/8868/","dateCreated":"2020-06-17T18:45:31.042157Z","version":"b65bc521378269d3eaefdc964f8ef56621414943","shortVersion":"b65bc521378269d3eaefdc964f8ef56621414943","ref":"master"}],"dateCreated":"2020-06-17T18:43:37Z","message":"feat(billing): Get a lot of money","id":"b65bc521378269d3eaefdc964f8ef56621414943"},"ref":"master"},"crashFile":null,"location":"example.py:123","culprit":"/books/new/","groupingConfig":{"enhancements":"abc","id":"2359823092345612392"},"occurrence":null,"projectID":"5236886","resolvedWith":[],"sdkUpdates":[]},"summary":"Return an issue event"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/events/{event_id}/attachments/":{"get":{"operationId":"listProjectEventAttachments","description":"Retrieve a list of attachments uploaded for a given event.\n\nRequires the `event-attachments` organization feature.","summary":"List an Event's Attachments","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"event_id","schema":{"type":"string","pattern":"^[0-9a-f]{32}$"},"description":"The ID of the event. It is a 32-character hexadecimal string as reported by the client.","required":true},{"in":"query","name":"query","schema":{"type":"string"},"description":"Filter the attachments by name (substring match) or by attachment kind. Use `is:screenshot` to restrict the results to screenshot attachments."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Events"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"event_id":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"mimetype":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"size":{"type":"integer"},"headers":{"type":"object","additionalProperties":{"type":"string","nullable":true}},"sha1":{"type":"string","nullable":true}},"required":["dateCreated","event_id","headers","id","mimetype","name","sha1","size","type"]}},"examples":{"ReturnAListOfAttachmentsForAnEvent":{"value":[{"id":"1234","event_id":"9b29bbe17e9d4ee3a6d0fe9b2e8a3b1c","type":"event.attachment","name":"screenshot.png","mimetype":"image/png","dateCreated":"2026-04-15T18:22:31Z","size":248137,"headers":{"Content-Type":"image/png"},"sha1":"d3f299af02d6abbe92dd8368bab781824a9702ed"},{"id":"1235","event_id":"9b29bbe17e9d4ee3a6d0fe9b2e8a3b1c","type":"event.view_hierarchy","name":"view-hierarchy.json","mimetype":"application/json","dateCreated":"2026-04-15T18:22:31Z","size":8421,"headers":{"Content-Type":"application/json"},"sha1":"fa0a5fad9e64129f6b5f60cca3a5b8c9b8a1a3a0"}],"summary":"Return a list of attachments for an event"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/events/{event_id}/attachments/{attachment_id}/":{"get":{"operationId":"getProjectEventAttachment","description":"Retrieve metadata for a single attachment on an event, or download its\ncontents by passing the `download` query parameter.\n\nRequires the `event-attachments` organization feature.","summary":"Retrieve an Event Attachment","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"event_id","schema":{"type":"string","pattern":"^[0-9a-f]{32}$"},"description":"The ID of the event. It is a 32-character hexadecimal string as reported by the client.","required":true},{"in":"path","name":"attachment_id","schema":{"type":"string"},"description":"The numeric ID of the attachment, as returned from the attachments list endpoint.","required":true},{"in":"query","name":"download","schema":{"type":"string"},"description":"If this parameter is present, the response will be a binary file download instead of JSON metadata. The value does not matter \u2014 any value (including empty) triggers the download. Depending on where the attachment is stored, the response may be a redirect to the storage service, so clients must follow redirects."}],"tags":["Events"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"event_id":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"mimetype":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"size":{"type":"integer"},"headers":{"type":"object","additionalProperties":{"type":"string","nullable":true}},"sha1":{"type":"string","nullable":true}},"required":["dateCreated","event_id","headers","id","mimetype","name","sha1","size","type"]},"examples":{"ReturnASingleEventAttachment":{"value":{"id":"1234","event_id":"9b29bbe17e9d4ee3a6d0fe9b2e8a3b1c","type":"event.attachment","name":"screenshot.png","mimetype":"image/png","dateCreated":"2026-04-15T18:22:31Z","size":248137,"headers":{"Content-Type":"image/png"},"sha1":"d3f299af02d6abbe92dd8368bab781824a9702ed"},"summary":"Return a single event attachment"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/events/{event_id}/source-map-debug/":{"get":{"operationId":"getProjectEventSourceMapDebug","description":"Return a list of source map errors for a given event.","summary":"Get Debug Information Related to Source Maps for a Given Event","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"event_id","schema":{"type":"string","pattern":"^[0-9a-f]{32}$"},"description":"The ID of the event. It is a 32-character hexadecimal string as reported by the client.","required":true}],"tags":["Events"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"dist":{"type":"string","nullable":true},"release":{"type":"string","nullable":true},"exceptions":{"type":"array","items":{"type":"object","properties":{"frames":{"type":"array","items":{"type":"object","properties":{"debug_id_process":{"type":"object","properties":{"debug_id":{"type":"string","nullable":true},"uploaded_source_file_with_correct_debug_id":{"type":"boolean"},"uploaded_source_map_with_correct_debug_id":{"type":"boolean"}},"required":["debug_id","uploaded_source_file_with_correct_debug_id","uploaded_source_map_with_correct_debug_id"]},"release_process":{"type":"object","properties":{"abs_path":{"type":"string"},"matching_source_file_names":{"type":"array","items":{"type":"string"}},"matching_source_map_name":{"type":"string","nullable":true},"source_map_reference":{"type":"string","nullable":true},"source_file_lookup_result":{"enum":["found","wrong-dist","unsuccessful"],"type":"string"},"source_map_lookup_result":{"enum":["found","wrong-dist","unsuccessful"],"type":"string"}},"required":["abs_path","matching_source_file_names","matching_source_map_name","source_file_lookup_result","source_map_lookup_result","source_map_reference"],"nullable":true},"scraping_process":{"type":"object","properties":{"source_file":{"anyOf":[{"type":"object","properties":{"url":{"type":"string"},"status":{"enum":["success"],"type":"string"}},"required":["status","url"]},{"type":"object","properties":{"url":{"type":"string"},"status":{"enum":["not_attempted"],"type":"string"}},"required":["status","url"]},{"type":"object","properties":{"url":{"type":"string"},"status":{"enum":["failure"],"type":"string"},"reason":{"enum":["not_found","disabled","invalid_host","permission_denied","timeout","download_error","other"],"type":"string"},"details":{"type":"string","nullable":true}},"required":["details","reason","status","url"]},{"type":"object","nullable":true}]},"source_map":{"anyOf":[{"type":"object","properties":{"url":{"type":"string"},"status":{"enum":["success"],"type":"string"}},"required":["status","url"]},{"type":"object","properties":{"url":{"type":"string"},"status":{"enum":["not_attempted"],"type":"string"}},"required":["status","url"]},{"type":"object","properties":{"url":{"type":"string"},"status":{"enum":["failure"],"type":"string"},"reason":{"enum":["not_found","disabled","invalid_host","permission_denied","timeout","download_error","other"],"type":"string"},"details":{"type":"string","nullable":true}},"required":["details","reason","status","url"]},{"type":"object","nullable":true}]}},"required":["source_file","source_map"]}},"required":["debug_id_process","release_process","scraping_process"]}}},"required":["frames"]}},"has_debug_ids":{"type":"boolean"},"min_debug_id_sdk_version":{"type":"string","nullable":true},"sdk_version":{"type":"string","nullable":true},"project_has_some_artifact_bundle":{"type":"boolean"},"release_has_some_artifact":{"type":"boolean"},"has_uploaded_some_artifact_with_a_debug_id":{"type":"boolean"},"sdk_debug_id_support":{"enum":["not-supported","unofficial-sdk","needs-upgrade","full"],"type":"string"},"has_scraping_data":{"type":"boolean"}},"required":["dist","exceptions","has_debug_ids","has_scraping_data","has_uploaded_some_artifact_with_a_debug_id","min_debug_id_sdk_version","project_has_some_artifact_bundle","release","release_has_some_artifact","sdk_debug_id_support","sdk_version"]},"examples":{"SourceMapDebugInformationForAnEvent":{"value":{"dist":"1.0.0","release":"frontend@1.0.0","exceptions":[{"frames":[{"debug_id_process":{"debug_id":"f206e0e7-3d0c-41cb-bccc-11b716728e27","uploaded_source_file_with_correct_debug_id":true,"uploaded_source_map_with_correct_debug_id":true},"release_process":{"abs_path":"https://example.com/static/js/main.js","matching_source_file_names":["~/static/js/main.js"],"matching_source_map_name":"~/static/js/main.js.map","source_map_reference":"main.js.map","source_file_lookup_result":"found","source_map_lookup_result":"found"},"scraping_process":{"source_file":{"url":"https://example.com/static/js/main.js","status":"success"},"source_map":{"url":"https://example.com/static/js/main.js.map","status":"success"}}}]}],"has_debug_ids":true,"min_debug_id_sdk_version":"7.56.0","sdk_version":"7.60.0","project_has_some_artifact_bundle":true,"release_has_some_artifact":true,"has_uploaded_some_artifact_with_a_debug_id":true,"sdk_debug_id_support":"full","has_scraping_data":true},"summary":"Source map debug information for an event"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/files/difs/assemble/":{"post":{"operationId":"assembleProjectDebugFiles","description":"**Experimental:** This API is under active development and may change.\n\nAssemble previously uploaded chunks into debug information files.\n\nThe response reports each file's `state`, keyed by the same checksums. If chunks are\nmissing, upload them and send the request again. Repeat the request to poll until the\nstate is `ok` or `error`. Resending an identical request is safe: a file that is\nalready assembling or assembled reports its state instead of starting a new job.","summary":"Assemble Debug Information Files","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Projects"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"The files to assemble, keyed by the SHA-1 checksum of each whole file.","additionalProperties":{"type":"object","required":["name","chunks"],"properties":{"name":{"type":"string","description":"The file name. A ProGuard mapping without `debug_id` can carry it in the name, as in `/proguard/mapping-.txt`."},"chunks":{"type":"array","items":{"type":"string","pattern":"^[0-9a-f]{40}$"},"description":"The SHA-1 checksums of the file's chunks, in order. Upload missing chunks with the chunk upload endpoint. Send an empty list to poll the file's state."},"debug_id":{"type":"string","pattern":"^[A-Fa-f0-9-]+$","description":"The debug ID to store the file under, overriding the one read from the file."}},"additionalProperties":true}}}}},"security":[{"auth_token":["org:ci","project:admin","project:releases","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object","properties":{"state":{"type":"string"},"missingChunks":{"type":"array","items":{"type":"string"}},"detail":{"type":"string","nullable":true},"dif":{"type":"object","properties":{"id":{"type":"string"},"uuid":{"type":"string"},"debugId":{"type":"string"},"codeId":{"type":"string","nullable":true},"cpuName":{"type":"string"},"objectName":{"type":"string"},"symbolType":{"type":"string"},"headers":{"type":"object","additionalProperties":{"type":"string"}},"size":{"type":"integer"},"sha1":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"data":{"type":"object","additionalProperties":{}}},"required":["codeId","cpuName","data","dateCreated","debugId","headers","id","objectName","sha1","size","symbolType","uuid"]}},"required":["missingChunks","state"]}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"},"x-sentry-idempotent":true,"x-sentry-experimental":true}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/files/dsyms/":{"get":{"operationId":"listProjectDebugFiles","description":"Retrieve a list of debug information files for a given project.","summary":"List a Project's Debug Information Files","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"query","name":"query","schema":{"type":"string"},"description":"Substring filter matched against object name, debug ID, code ID, CPU name, and file headers."},{"in":"query","name":"debug_id","schema":{"type":"string"},"description":"Filter results to debug information files matching the given debug ID."},{"in":"query","name":"code_id","schema":{"type":"string"},"description":"Filter results to debug information files matching the given code ID."},{"in":"query","name":"file_formats","schema":{"type":"array","items":{"type":"string"}},"description":"Restrict results to one or more file formats."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Projects"],"security":[{"auth_token":["org:ci","project:admin","project:read","project:releases","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"uuid":{"type":"string"},"debugId":{"type":"string"},"codeId":{"type":"string","nullable":true},"cpuName":{"type":"string"},"objectName":{"type":"string"},"symbolType":{"type":"string"},"headers":{"type":"object","additionalProperties":{"type":"string"}},"size":{"type":"integer"},"sha1":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"data":{"type":"object","additionalProperties":{}}},"required":["codeId","cpuName","data","dateCreated","debugId","headers","id","objectName","sha1","size","symbolType","uuid"]}},"examples":{"ReturnAListOfDebugInformationFilesForAProject":{"value":[{"id":"1066716922","uuid":"d8f92f82-3dbc-4fbb-ae68-69e881a9becc","debugId":"d8f92f82-3dbc-4fbb-ae68-69e881a9becc","codeId":null,"cpuName":"any","objectName":"proguard-mapping","symbolType":"proguard","headers":{"Content-Type":"text/x-proguard+plain"},"size":12868987,"sha1":"c31bcca43ff75e8c94c336e647d518fb05dcf658","dateCreated":"2026-03-24T23:31:18.583107Z","data":{"features":["mapping"]}},{"id":"1066716918","uuid":"d50e6bca-81a4-662b-8461-e1c5e27f157b","debugId":"d50e6bca-81a4-662b-8461-e1c5e27f157b","codeId":"ca6b0ed5a4812b668461e1c5e27f157b8422d5bd","cpuName":"arm64","objectName":"libxamarin-app.dbg.so","symbolType":"elf","headers":{"Content-Type":"application/x-elf-binary"},"size":41584,"sha1":"ac40db6f7fff550f82c63242f618e2d3987cc3c7","dateCreated":"2026-03-24T23:31:18.465820Z","data":{"type":"dbg","features":["symtab"]}}],"summary":"Return a list of debug information files for a project"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/filters/":{"get":{"operationId":"listProjectFilters","description":"Retrieve a list of filters for a given project.\n`active` will be either a boolean or a list for the legacy browser filters.","summary":"List a Project's Data Filters","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Projects"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"active":{"anyOf":[{"type":"boolean"},{"type":"array","items":{"type":"string"}}]}},"required":["active","id"]}},"examples":{"ListAProject'sFilters":{"value":[{"id":"browser-extensions","active":false},{"id":"filtered-transaction","active":true},{"id":"legacy-browsers","active":["opera","edge","safari","chrome","ie","opera_mini","firefox","android"]},{"id":"localhost","active":false},{"id":"web-crawlers","active":true}],"summary":"List a project's filters"}}}},"description":""},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/filters/{filter_id}/":{"put":{"operationId":"updateProjectFilter","description":"Update various inbound data filters for a project.","summary":"Update an Inbound Data Filter","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"filter_id","schema":{"type":"string"},"description":"The type of filter toggle to update. The options are:\n- `browser-extensions` - Filter out errors known to be caused by browser extensions.\n- `localhost` - Filter out events coming from localhost. This applies to both IPv4 (``127.0.0.1``)\nand IPv6 (``::1``) addresses.\n- `filtered-transaction` - Filter out transactions for healthcheck and ping endpoints.\n- `web-crawlers` - Filter out known web crawlers. Some crawlers may execute pages in incompatible\nways which cause errors that are unlikely to be seen by a normal user.\n- `legacy-browser` - Filter out known errors from legacy browsers. Older browsers often give less\naccurate information, and while they may report valid issues, the context to understand them is\nincorrect or missing.\n","required":true}],"tags":["Projects"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"active":{"type":"boolean","description":"Toggle the browser-extensions, localhost, filtered-transaction, or web-crawlers filter on or off."},"subfilters":{"type":"array","items":{"enum":["ie","edge","safari","firefox","chrome","opera","android","opera_mini","ie_pre_9","ie9","ie10","ie11","opera_pre_15","android_pre_4","safari_pre_6","opera_mini_pre_8","edge_pre_79"],"type":"string","description":"* `ie`\n* `edge`\n* `safari`\n* `firefox`\n* `chrome`\n* `opera`\n* `android`\n* `opera_mini`\n* `ie_pre_9`\n* `ie9`\n* `ie10`\n* `ie11`\n* `opera_pre_15`\n* `android_pre_4`\n* `safari_pre_6`\n* `opera_mini_pre_8`\n* `edge_pre_79`"},"description":"\nSpecifies which legacy browser filters should be active. Anything excluded from the list will be\ndisabled. The options are:\n- `ie` - Internet Explorer Version 11 and lower\n- `edge` - Edge Version 110 and lower\n- `safari` - Safari Version 15 and lower\n- `firefox` - Firefox Version 110 and lower\n- `chrome` - Chrome Version 110 and lower\n- `opera` - Opera Version 99 and lower\n- `android` - Android Version 3 and lower\n- `opera_mini` - Opera Mini Version 34 and lower\n\nDeprecated options:\n- `ie_pre_9` - Internet Explorer Version 8 and lower\n- `ie9` - Internet Explorer Version 9\n- `ie10` - Internet Explorer Version 10\n- `ie11` - Internet Explorer Version 11\n- `safari_pre_6` - Safari Version 5 and lower\n- `opera_pre_15` - Opera Version 14 and lower\n- `opera_mini_pre_8` - Opera Mini Version 8 and lower\n- `android_pre_4` - Android Version 3 and lower\n- `edge_pre_79` - Edge Version 18 and lower (non Chromium based)\n"}}}}}},"security":[{"auth_token":["project:admin","project:write"]}],"responses":{"204":{"description":"No Content"},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/keys/":{"get":{"operationId":"listProjectKeys","description":"Return a list of client keys bound to a project.","summary":"List a Project's Client Keys","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"},{"in":"query","name":"status","schema":{"type":"string"},"description":"\nFilter client keys by `active` or `inactive`. Defaults to returning all\nkeys if not specified.\n"}],"tags":["Projects"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","description":"This represents a Sentry Project Client Key.","properties":{"id":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"public":{"type":"string","nullable":true},"secret":{"type":"string","nullable":true},"projectId":{"type":"integer"},"isActive":{"type":"boolean"},"rateLimit":{"type":"object","properties":{"window":{"type":"integer"},"count":{"type":"integer"}},"required":["count","window"],"nullable":true},"dsn":{"type":"object","properties":{"secret":{"type":"string"},"public":{"type":"string"},"csp":{"type":"string"},"security":{"type":"string"},"minidump":{"type":"string"},"nel":{"type":"string"},"unreal":{"type":"string"},"crons":{"type":"string"},"cdn":{"type":"string"},"playstation":{"type":"string"},"integration":{"type":"string"},"otlp_traces":{"type":"string"},"otlp_logs":{"type":"string"}},"required":["cdn","crons","csp","integration","minidump","nel","otlp_logs","otlp_traces","playstation","public","secret","security","unreal"]},"browserSdkVersion":{"type":"string"},"browserSdk":{"type":"object","properties":{"choices":{"type":"array","items":{"type":"array","items":{"type":"string"}}}},"required":["choices"]},"dateCreated":{"type":"string","format":"date-time","nullable":true},"dynamicSdkLoaderOptions":{"type":"object","properties":{"hasReplay":{"type":"boolean"},"hasPerformance":{"type":"boolean"},"hasDebug":{"type":"boolean"},"hasFeedback":{"type":"boolean"},"hasLogsAndMetrics":{"type":"boolean"}},"required":["hasDebug","hasFeedback","hasLogsAndMetrics","hasPerformance","hasReplay"]},"useCase":{"type":"string"}},"required":["browserSdk","browserSdkVersion","dateCreated","dsn","dynamicSdkLoaderOptions","id","isActive","label","name","projectId","public","rateLimit","secret"]}},"examples":{"ListClientKeysForAProject":{"value":[{"id":"60120449b6b1d5e45f75561e6dabd80b","name":"Liked Pegasus","label":"Liked Pegasus","public":"60120449b6b1d5e45f75561e6dabd80b","secret":"189485c3b8ccf582bf5e12c530ef8858","projectId":4505281256090153,"isActive":true,"rateLimit":{"window":7200,"count":1000},"dsn":{"secret":"https://a785682ddda742d7a8a4088810e67701:bcd99b3790b3441c85ce4b1eaa854f66@o4504765715316736.ingest.sentry.io/4505281256090153","public":"https://a785682ddda742d7a8a4088810e67791@o4504765715316736.ingest.sentry.io/4505281256090153","csp":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/csp-report/?sentry_key=a785682ddda719b7a8a4011110d75598","security":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/security/?sentry_key=a785682ddda719b7a8a4011110d75598","minidump":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/minidump/?sentry_key=a785682ddda719b7a8a4011110d75598","playstation":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/playstation/?sentry_key=a785682ddda719b7a8a4011110d75598","integration":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/integration/","otlp_traces":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/integration/otlp/v1/traces","otlp_logs":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/integration/otlp/v1/logs","nel":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/nel/?sentry_key=a785682ddda719b7a8a4011110d75598","unreal":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/unreal/a785682ddda719b7a8a4011110d75598/","cdn":"https://js.sentry-cdn.com/a785682ddda719b7a8a4011110d75598.min.js","crons":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/crons/___MONITOR_SLUG___/a785682ddda719b7a8a4011110d75598/"},"browserSdkVersion":"7.x","browserSdk":{"choices":[["latest","latest"],["7.x","7.x"]]},"dateCreated":"2023-06-21T19:50:26.036254Z","dynamicSdkLoaderOptions":{"hasReplay":true,"hasPerformance":true,"hasDebug":true,"hasFeedback":false,"hasLogsAndMetrics":false}},{"id":"da8d69cb17e80677b76e08fde4656b93","name":"Bold Oarfish","label":"Bold Oarfish","public":"da8d69cb17e80677b76e08fde4656b93","secret":"5c241ebc42ccfbec281cbefbedc7ab96","projectId":4505281256090153,"isActive":true,"rateLimit":null,"dsn":{"secret":"https://a785682ddda742d7a8a4088810e67701:bcd99b3790b3441c85ce4b1eaa854f66@o4504765715316736.ingest.sentry.io/4505281256090153","public":"https://a785682ddda742d7a8a4088810e67791@o4504765715316736.ingest.sentry.io/4505281256090153","csp":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/csp-report/?sentry_key=a785682ddda719b7a8a4011110d75598","security":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/security/?sentry_key=a785682ddda719b7a8a4011110d75598","minidump":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/minidump/?sentry_key=a785682ddda719b7a8a4011110d75598","playstation":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/playstation/?sentry_key=a785682ddda719b7a8a4011110d75598","integration":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/integration/","otlp_traces":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/integration/otlp/v1/traces","otlp_logs":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/integration/otlp/v1/logs","nel":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/nel/?sentry_key=a785682ddda719b7a8a4011110d75598","unreal":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/unreal/a785682ddda719b7a8a4011110d75598/","cdn":"https://js.sentry-cdn.com/a785682ddda719b7a8a4011110d75598.min.js","crons":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/crons/___MONITOR_SLUG___/a785682ddda719b7a8a4011110d75598/"},"browserSdkVersion":"7.x","browserSdk":{"choices":[["latest","latest"],["7.x","7.x"]]},"dateCreated":"2023-06-21T19:50:26.036254Z","dynamicSdkLoaderOptions":{"hasReplay":true,"hasPerformance":true,"hasDebug":true,"hasFeedback":false,"hasLogsAndMetrics":false}}],"summary":"List Client Keys for a Project"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"post":{"operationId":"createProjectKey","description":"Create a new client key bound to a project. The key's secret and public key\nare generated by the server.","summary":"Create a New Client Key","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Projects"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","nullable":true,"description":"The optional name of the key. If not provided it will be automatically generated.","maxLength":64},"rateLimit":{"type":"object","description":"Applies a rate limit to cap the number of errors accepted during a given time window. To\ndisable entirely set `rateLimit` to null.\n```json\n{\n \"rateLimit\": {\n \"window\": 7200, // time in seconds\n \"count\": 1000 // error cap\n }\n}\n```","properties":{"count":{"type":"integer","minimum":0,"nullable":true},"window":{"type":"integer","maximum":86400,"minimum":0,"nullable":true}}},"useCase":{"enum":["user","profiling","tempest","demo"],"type":"string","description":"* `user`\n* `profiling`\n* `tempest`\n* `demo`","default":"user"}}}}}},"security":[{"auth_token":["project:admin","project:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","description":"This represents a Sentry Project Client Key.","properties":{"id":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"public":{"type":"string","nullable":true},"secret":{"type":"string","nullable":true},"projectId":{"type":"integer"},"isActive":{"type":"boolean"},"rateLimit":{"type":"object","properties":{"window":{"type":"integer"},"count":{"type":"integer"}},"required":["count","window"],"nullable":true},"dsn":{"type":"object","properties":{"secret":{"type":"string"},"public":{"type":"string"},"csp":{"type":"string"},"security":{"type":"string"},"minidump":{"type":"string"},"nel":{"type":"string"},"unreal":{"type":"string"},"crons":{"type":"string"},"cdn":{"type":"string"},"playstation":{"type":"string"},"integration":{"type":"string"},"otlp_traces":{"type":"string"},"otlp_logs":{"type":"string"}},"required":["cdn","crons","csp","integration","minidump","nel","otlp_logs","otlp_traces","playstation","public","secret","security","unreal"]},"browserSdkVersion":{"type":"string"},"browserSdk":{"type":"object","properties":{"choices":{"type":"array","items":{"type":"array","items":{"type":"string"}}}},"required":["choices"]},"dateCreated":{"type":"string","format":"date-time","nullable":true},"dynamicSdkLoaderOptions":{"type":"object","properties":{"hasReplay":{"type":"boolean"},"hasPerformance":{"type":"boolean"},"hasDebug":{"type":"boolean"},"hasFeedback":{"type":"boolean"},"hasLogsAndMetrics":{"type":"boolean"}},"required":["hasDebug","hasFeedback","hasLogsAndMetrics","hasPerformance","hasReplay"]},"useCase":{"type":"string"}},"required":["browserSdk","browserSdkVersion","dateCreated","dsn","dynamicSdkLoaderOptions","id","isActive","label","name","projectId","public","rateLimit","secret"]},"examples":{"ClientKeyWithRateLimiting":{"value":{"id":"60120449b6b1d5e45f75561e6dabd80b","name":"Liked Pegasus","label":"Liked Pegasus","public":"60120449b6b1d5e45f75561e6dabd80b","secret":"189485c3b8ccf582bf5e12c530ef8858","projectId":4505281256090153,"isActive":true,"rateLimit":{"window":7200,"count":1000},"dsn":{"secret":"https://a785682ddda742d7a8a4088810e67701:bcd99b3790b3441c85ce4b1eaa854f66@o4504765715316736.ingest.sentry.io/4505281256090153","public":"https://a785682ddda742d7a8a4088810e67791@o4504765715316736.ingest.sentry.io/4505281256090153","csp":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/csp-report/?sentry_key=a785682ddda719b7a8a4011110d75598","security":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/security/?sentry_key=a785682ddda719b7a8a4011110d75598","minidump":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/minidump/?sentry_key=a785682ddda719b7a8a4011110d75598","playstation":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/playstation/?sentry_key=a785682ddda719b7a8a4011110d75598","integration":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/integration/","otlp_traces":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/integration/otlp/v1/traces","otlp_logs":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/integration/otlp/v1/logs","nel":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/nel/?sentry_key=a785682ddda719b7a8a4011110d75598","unreal":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/unreal/a785682ddda719b7a8a4011110d75598/","cdn":"https://js.sentry-cdn.com/a785682ddda719b7a8a4011110d75598.min.js","crons":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/crons/___MONITOR_SLUG___/a785682ddda719b7a8a4011110d75598/"},"browserSdkVersion":"7.x","browserSdk":{"choices":[["latest","latest"],["7.x","7.x"]]},"dateCreated":"2023-06-21T19:50:26.036254Z","dynamicSdkLoaderOptions":{"hasReplay":true,"hasPerformance":true,"hasDebug":true,"hasFeedback":false,"hasLogsAndMetrics":false}},"summary":"Client key with rate limiting"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/keys/{key_id}/":{"get":{"operationId":"getProjectKey","description":"Return a client key bound to a project.","summary":"Retrieve a Client Key","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"key_id","schema":{"type":"string"},"description":"The ID of the client key","required":true}],"tags":["Projects"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","description":"This represents a Sentry Project Client Key.","properties":{"id":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"public":{"type":"string","nullable":true},"secret":{"type":"string","nullable":true},"projectId":{"type":"integer"},"isActive":{"type":"boolean"},"rateLimit":{"type":"object","properties":{"window":{"type":"integer"},"count":{"type":"integer"}},"required":["count","window"],"nullable":true},"dsn":{"type":"object","properties":{"secret":{"type":"string"},"public":{"type":"string"},"csp":{"type":"string"},"security":{"type":"string"},"minidump":{"type":"string"},"nel":{"type":"string"},"unreal":{"type":"string"},"crons":{"type":"string"},"cdn":{"type":"string"},"playstation":{"type":"string"},"integration":{"type":"string"},"otlp_traces":{"type":"string"},"otlp_logs":{"type":"string"}},"required":["cdn","crons","csp","integration","minidump","nel","otlp_logs","otlp_traces","playstation","public","secret","security","unreal"]},"browserSdkVersion":{"type":"string"},"browserSdk":{"type":"object","properties":{"choices":{"type":"array","items":{"type":"array","items":{"type":"string"}}}},"required":["choices"]},"dateCreated":{"type":"string","format":"date-time","nullable":true},"dynamicSdkLoaderOptions":{"type":"object","properties":{"hasReplay":{"type":"boolean"},"hasPerformance":{"type":"boolean"},"hasDebug":{"type":"boolean"},"hasFeedback":{"type":"boolean"},"hasLogsAndMetrics":{"type":"boolean"}},"required":["hasDebug","hasFeedback","hasLogsAndMetrics","hasPerformance","hasReplay"]},"useCase":{"type":"string"}},"required":["browserSdk","browserSdkVersion","dateCreated","dsn","dynamicSdkLoaderOptions","id","isActive","label","name","projectId","public","rateLimit","secret"]},"examples":{"ClientKeyWithRateLimiting":{"value":{"id":"60120449b6b1d5e45f75561e6dabd80b","name":"Liked Pegasus","label":"Liked Pegasus","public":"60120449b6b1d5e45f75561e6dabd80b","secret":"189485c3b8ccf582bf5e12c530ef8858","projectId":4505281256090153,"isActive":true,"rateLimit":{"window":7200,"count":1000},"dsn":{"secret":"https://a785682ddda742d7a8a4088810e67701:bcd99b3790b3441c85ce4b1eaa854f66@o4504765715316736.ingest.sentry.io/4505281256090153","public":"https://a785682ddda742d7a8a4088810e67791@o4504765715316736.ingest.sentry.io/4505281256090153","csp":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/csp-report/?sentry_key=a785682ddda719b7a8a4011110d75598","security":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/security/?sentry_key=a785682ddda719b7a8a4011110d75598","minidump":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/minidump/?sentry_key=a785682ddda719b7a8a4011110d75598","playstation":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/playstation/?sentry_key=a785682ddda719b7a8a4011110d75598","integration":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/integration/","otlp_traces":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/integration/otlp/v1/traces","otlp_logs":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/integration/otlp/v1/logs","nel":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/nel/?sentry_key=a785682ddda719b7a8a4011110d75598","unreal":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/unreal/a785682ddda719b7a8a4011110d75598/","cdn":"https://js.sentry-cdn.com/a785682ddda719b7a8a4011110d75598.min.js","crons":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/crons/___MONITOR_SLUG___/a785682ddda719b7a8a4011110d75598/"},"browserSdkVersion":"7.x","browserSdk":{"choices":[["latest","latest"],["7.x","7.x"]]},"dateCreated":"2023-06-21T19:50:26.036254Z","dynamicSdkLoaderOptions":{"hasReplay":true,"hasPerformance":true,"hasDebug":true,"hasFeedback":false,"hasLogsAndMetrics":false}},"summary":"Client key with rate limiting"}}}},"description":""},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"updateProjectKey","description":"Update various settings for a client key.","summary":"Update a Client Key","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"key_id","schema":{"type":"string"},"description":"The ID of the key to update.","required":true}],"tags":["Projects"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name for the client key"},"isActive":{"type":"boolean","description":"Activate or deactivate the client key."},"rateLimit":{"type":"object","description":"Applies a rate limit to cap the number of errors accepted during a given time window. To\ndisable entirely set `rateLimit` to null.\n```json\n{\n \"rateLimit\": {\n \"window\": 7200, // time in seconds\n \"count\": 1000 // error cap\n }\n}\n```","properties":{"count":{"type":"integer","minimum":0,"nullable":true},"window":{"type":"integer","maximum":86400,"minimum":0,"nullable":true}}},"browserSdkVersion":{"enum":["latest","7.x"],"type":"string","description":"The Sentry Javascript SDK version to use. The currently supported options are:\n\n* `latest` - Most recent version\n* `7.x` - Version 7 releases"},"dynamicSdkLoaderOptions":{"type":"object","description":"Configures multiple options for the Javascript Loader Script.\n- `Performance Monitoring`\n- `Debug Bundles & Logging`\n- `Session Replay` - Note that the loader will load the ES6 bundle instead of the ES5 bundle.\n- `User Feedback` - Note that the loader will load the ES6 bundle instead of the ES5 bundle.\n- `Logs and Metrics` - Note that the loader will load the ES6 bundle instead of the ES5 bundle. Requires SDK >= 10.0.0.\n```json\n{\n \"dynamicSdkLoaderOptions\": {\n \"hasReplay\": true,\n \"hasPerformance\": true,\n \"hasDebug\": true,\n \"hasFeedback\": true,\n \"hasLogsAndMetrics\": true\n }\n}\n```","properties":{"hasReplay":{"type":"boolean"},"hasPerformance":{"type":"boolean"},"hasDebug":{"type":"boolean"},"hasFeedback":{"type":"boolean"},"hasLogsAndMetrics":{"type":"boolean"}}}}}}}},"security":[{"auth_token":["project:admin","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","description":"This represents a Sentry Project Client Key.","properties":{"id":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"public":{"type":"string","nullable":true},"secret":{"type":"string","nullable":true},"projectId":{"type":"integer"},"isActive":{"type":"boolean"},"rateLimit":{"type":"object","properties":{"window":{"type":"integer"},"count":{"type":"integer"}},"required":["count","window"],"nullable":true},"dsn":{"type":"object","properties":{"secret":{"type":"string"},"public":{"type":"string"},"csp":{"type":"string"},"security":{"type":"string"},"minidump":{"type":"string"},"nel":{"type":"string"},"unreal":{"type":"string"},"crons":{"type":"string"},"cdn":{"type":"string"},"playstation":{"type":"string"},"integration":{"type":"string"},"otlp_traces":{"type":"string"},"otlp_logs":{"type":"string"}},"required":["cdn","crons","csp","integration","minidump","nel","otlp_logs","otlp_traces","playstation","public","secret","security","unreal"]},"browserSdkVersion":{"type":"string"},"browserSdk":{"type":"object","properties":{"choices":{"type":"array","items":{"type":"array","items":{"type":"string"}}}},"required":["choices"]},"dateCreated":{"type":"string","format":"date-time","nullable":true},"dynamicSdkLoaderOptions":{"type":"object","properties":{"hasReplay":{"type":"boolean"},"hasPerformance":{"type":"boolean"},"hasDebug":{"type":"boolean"},"hasFeedback":{"type":"boolean"},"hasLogsAndMetrics":{"type":"boolean"}},"required":["hasDebug","hasFeedback","hasLogsAndMetrics","hasPerformance","hasReplay"]},"useCase":{"type":"string"}},"required":["browserSdk","browserSdkVersion","dateCreated","dsn","dynamicSdkLoaderOptions","id","isActive","label","name","projectId","public","rateLimit","secret"]},"examples":{"ClientKeyWithRateLimiting":{"value":{"id":"60120449b6b1d5e45f75561e6dabd80b","name":"Liked Pegasus","label":"Liked Pegasus","public":"60120449b6b1d5e45f75561e6dabd80b","secret":"189485c3b8ccf582bf5e12c530ef8858","projectId":4505281256090153,"isActive":true,"rateLimit":{"window":7200,"count":1000},"dsn":{"secret":"https://a785682ddda742d7a8a4088810e67701:bcd99b3790b3441c85ce4b1eaa854f66@o4504765715316736.ingest.sentry.io/4505281256090153","public":"https://a785682ddda742d7a8a4088810e67791@o4504765715316736.ingest.sentry.io/4505281256090153","csp":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/csp-report/?sentry_key=a785682ddda719b7a8a4011110d75598","security":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/security/?sentry_key=a785682ddda719b7a8a4011110d75598","minidump":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/minidump/?sentry_key=a785682ddda719b7a8a4011110d75598","playstation":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/playstation/?sentry_key=a785682ddda719b7a8a4011110d75598","integration":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/integration/","otlp_traces":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/integration/otlp/v1/traces","otlp_logs":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/integration/otlp/v1/logs","nel":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/nel/?sentry_key=a785682ddda719b7a8a4011110d75598","unreal":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/unreal/a785682ddda719b7a8a4011110d75598/","cdn":"https://js.sentry-cdn.com/a785682ddda719b7a8a4011110d75598.min.js","crons":"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/crons/___MONITOR_SLUG___/a785682ddda719b7a8a4011110d75598/"},"browserSdkVersion":"7.x","browserSdk":{"choices":[["latest","latest"],["7.x","7.x"]]},"dateCreated":"2023-06-21T19:50:26.036254Z","dynamicSdkLoaderOptions":{"hasReplay":true,"hasPerformance":true,"hasDebug":true,"hasFeedback":false,"hasLogsAndMetrics":false}},"summary":"Client key with rate limiting"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteProjectKey","description":"Delete a client key for a given project.","summary":"Delete a Client Key","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"key_id","schema":{"type":"string"},"description":"The ID of the key to delete.","required":true}],"tags":["Projects"],"security":[{"auth_token":["project:admin"]}],"responses":{"204":{"description":"No Content"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/members/":{"get":{"operationId":"listProjectMembers","description":"Returns a list of active organization members that belong to any team assigned to the project.","summary":"List a Project's Organization Members","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Projects"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"externalUsers":{"type":"array","items":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]}},"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"user":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"],"nullable":true},"orgRole":{"type":"string"},"pending":{"type":"boolean"},"expired":{"type":"boolean"},"flags":{"type":"object","properties":{"idp:provisioned":{"type":"boolean"},"idp:role-restricted":{"type":"boolean"},"sso:linked":{"type":"boolean"},"sso:invalid":{"type":"boolean"},"member-limit:restricted":{"type":"boolean"},"partnership:restricted":{"type":"boolean"}},"required":["idp:provisioned","idp:role-restricted","member-limit:restricted","partnership:restricted","sso:invalid","sso:linked"]},"dateCreated":{"type":"string","format":"date-time"},"inviteStatus":{"type":"string"},"inviterName":{"type":"string","nullable":true}},"required":["dateCreated","email","expired","flags","id","inviteStatus","inviterName","name","orgRole","pending","user"]}},"examples":{"ListOrganizationMembers":{"value":[{"id":"57377908164","email":"sirpenguin@antarcticarocks.com","name":"Sir Penguin","user":{"id":"280094367316","name":"Sir Penguin","username":"sirpenguin@antarcticarocks.com","email":"sirpenguin@antarcticarocks.com","avatarUrl":"https://secure.gravatar.com/avatar/16aeb26c5fdba335c7078e9e9ddb5149?s=32&d=mm","isActive":true,"isSuspended":false,"hasPasswordAuth":true,"isManaged":false,"dateJoined":"2021-07-06T21:13:58.375239Z","lastLogin":"2021-08-02T18:25:00.051182Z","has2fa":false,"lastActive":"2021-08-02T21:32:18.836829Z","isSuperuser":false,"isStaff":false,"experiments":{},"emails":[{"id":"2153450836","email":"sirpenguin@antarcticarocks.com","is_verified":true}],"avatar":{"avatarType":"letter_avatar","avatarUuid":null},"canReset2fa":true},"orgRole":"member","pending":false,"expired":false,"flags":{"idp:provisioned":false,"idp:role-restricted":false,"sso:linked":false,"sso:invalid":false,"member-limit:restricted":false,"partnership:restricted":false},"dateCreated":"2021-07-06T21:13:01.120263Z","inviteStatus":"approved","inviterName":"maininviter@antarcticarocks.com"},{"id":"57377908165","email":"rockhopper@antarcticarocks.com","name":"Rockhopper","user":null,"orgRole":"member","pending":true,"expired":false,"flags":{"idp:provisioned":false,"idp:role-restricted":false,"sso:linked":false,"sso:invalid":false,"member-limit:restricted":false,"partnership:restricted":false},"dateCreated":"2021-07-07T21:13:01.120263Z","inviteStatus":"pending","inviterName":"maininviter@antarcticarocks.com"}],"summary":"List organization members"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/monitors/{monitor_id_or_slug}/":{"get":{"operationId":"getProjectMonitor","description":"Retrieves details for a monitor.","summary":"Retrieve a Monitor for a Project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"monitor_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the monitor.","required":true}],"tags":["Crons"],"security":[{"auth_token":["alerts:read","alerts:write","project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"status":{"type":"string"},"isMuted":{"type":"boolean"},"isUpserting":{"type":"boolean"},"config":{"type":"object","properties":{"schedule_type":{"enum":["crontab","interval"],"type":"string"},"schedule":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"integer"},"minLength":2,"maxLength":2}]},"checkin_margin":{"type":"integer","nullable":true},"max_runtime":{"type":"integer","nullable":true},"timezone":{"type":"string","nullable":true},"failure_issue_threshold":{"type":"integer","nullable":true},"recovery_threshold":{"type":"integer","nullable":true},"alert_rule_id":{"type":"integer","nullable":true}},"required":["alert_rule_id","checkin_margin","failure_issue_threshold","max_runtime","recovery_threshold","schedule","schedule_type","timezone"]},"dateCreated":{"type":"string","format":"date-time"},"project":{"type":"object","properties":{"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"isInternal":{"type":"boolean"},"isPublic":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"color":{"type":"string"},"status":{"type":"string"}},"required":["access","avatar","color","dateCreated","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","id","isBookmarked","isInternal","isMember","isPublic","name","platform","slug","status"]},"environments":{"type":"object","properties":{"name":{"type":"string"},"status":{"type":"string"},"isMuted":{"type":"boolean"},"dateCreated":{"type":"string","format":"date-time"},"lastCheckIn":{"type":"string","format":"date-time"},"nextCheckIn":{"type":"string","format":"date-time"},"nextCheckInLatest":{"type":"string","format":"date-time"},"activeIncident":{"type":"object","properties":{"startingTimestamp":{"type":"string","format":"date-time"},"resolvingTimestamp":{"type":"string","format":"date-time"},"brokenNotice":{"type":"object","properties":{"userNotifiedTimestamp":{"type":"string","format":"date-time"},"environmentMutedTimestamp":{"type":"string","format":"date-time"}},"required":["environmentMutedTimestamp","userNotifiedTimestamp"],"nullable":true}},"required":["brokenNotice","resolvingTimestamp","startingTimestamp"],"nullable":true}},"required":["activeIncident","dateCreated","isMuted","lastCheckIn","name","nextCheckIn","nextCheckInLatest","status"]},"owner":{"type":"object","properties":{"type":{"enum":["user","team"],"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["id","name","type"]}},"required":["config","dateCreated","environments","id","isMuted","isUpserting","name","owner","project","slug","status"]}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"updateProjectMonitor","description":"Update a monitor.","summary":"Update a Monitor for a Project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"monitor_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the monitor.","required":true}],"tags":["Crons"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"project":{"type":"string","description":"The project ID or slug to associate the monitor to."},"name":{"type":"string","description":"Name of the monitor. Used for notifications. If not set the slug will be derived from your monitor name.","maxLength":128},"config":{"allOf":[{"type":"object","properties":{"schedule_type":{"enum":["crontab","interval"],"type":"string","description":"Currently supports \"crontab\" or \"interval\"\n\n* `crontab`\n* `interval`"},"schedule":{"description":"Varies depending on the schedule_type. Is either a crontab string, or a 2 element tuple for intervals (e.g. [1, 'day'])"},"checkin_margin":{"type":"integer","maximum":40320,"minimum":1,"nullable":true,"description":"How long (in minutes) after the expected checkin time will we wait until we consider the checkin to have been missed."},"max_runtime":{"type":"integer","maximum":10080,"minimum":1,"nullable":true,"description":"How long (in minutes) is the checkin allowed to run for in CheckInStatus.IN_PROGRESS before it is considered failed. Maximum 10080 (7 days)."},"timezone":{"enum":["Africa/Abidjan","Africa/Accra","Africa/Addis_Ababa","Africa/Algiers","Africa/Asmara","Africa/Asmera","Africa/Bamako","Africa/Bangui","Africa/Banjul","Africa/Bissau","Africa/Blantyre","Africa/Brazzaville","Africa/Bujumbura","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/Conakry","Africa/Dakar","Africa/Dar_es_Salaam","Africa/Djibouti","Africa/Douala","Africa/El_Aaiun","Africa/Freetown","Africa/Gaborone","Africa/Harare","Africa/Johannesburg","Africa/Juba","Africa/Kampala","Africa/Khartoum","Africa/Kigali","Africa/Kinshasa","Africa/Lagos","Africa/Libreville","Africa/Lome","Africa/Luanda","Africa/Lubumbashi","Africa/Lusaka","Africa/Malabo","Africa/Maputo","Africa/Maseru","Africa/Mbabane","Africa/Mogadishu","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Niamey","Africa/Nouakchott","Africa/Ouagadougou","Africa/Porto-Novo","Africa/Sao_Tome","Africa/Timbuktu","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Anguilla","America/Antigua","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/ComodRivadavia","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Aruba","America/Asuncion","America/Atikokan","America/Atka","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Buenos_Aires","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Catamarca","America/Cayenne","America/Cayman","America/Chicago","America/Chihuahua","America/Ciudad_Juarez","America/Coral_Harbour","America/Cordoba","America/Costa_Rica","America/Coyhaique","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Dominica","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Ensenada","America/Fort_Nelson","America/Fort_Wayne","America/Fortaleza","America/Glace_Bay","America/Godthab","America/Goose_Bay","America/Grand_Turk","America/Grenada","America/Guadeloupe","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Indianapolis","America/Inuvik","America/Iqaluit","America/Jamaica","America/Jujuy","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/Knox_IN","America/Kralendijk","America/La_Paz","America/Lima","America/Los_Angeles","America/Louisville","America/Lower_Princes","America/Maceio","America/Managua","America/Manaus","America/Marigot","America/Martinique","America/Matamoros","America/Mazatlan","America/Mendoza","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Montreal","America/Montserrat","America/Nassau","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Nuuk","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Acre","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Rosario","America/Santa_Isabel","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Shiprock","America/Sitka","America/St_Barthelemy","America/St_Johns","America/St_Kitts","America/St_Lucia","America/St_Thomas","America/St_Vincent","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Tortola","America/Vancouver","America/Virgin","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer","Antarctica/Rothera","Antarctica/South_Pole","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen","Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Ashkhabad","Asia/Atyrau","Asia/Baghdad","Asia/Bahrain","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Calcutta","Asia/Chita","Asia/Choibalsan","Asia/Chongqing","Asia/Chungking","Asia/Colombo","Asia/Dacca","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Harbin","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Istanbul","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kashgar","Asia/Kathmandu","Asia/Katmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macao","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Rangoon","Asia/Riyadh","Asia/Saigon","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Tel_Aviv","Asia/Thimbu","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ujung_Pandang","Asia/Ulaanbaatar","Asia/Ulan_Bator","Asia/Urumqi","Asia/Ust-Nera","Asia/Vientiane","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faeroe","Atlantic/Faroe","Atlantic/Jan_Mayen","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena","Atlantic/Stanley","Australia/ACT","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Canberra","Australia/Currie","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/LHI","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/NSW","Australia/North","Australia/Perth","Australia/Queensland","Australia/South","Australia/Sydney","Australia/Tasmania","Australia/Victoria","Australia/West","Australia/Yancowinna","Brazil/Acre","Brazil/DeNoronha","Brazil/East","Brazil/West","CET","CST6CDT","Canada/Atlantic","Canada/Central","Canada/Eastern","Canada/Mountain","Canada/Newfoundland","Canada/Pacific","Canada/Saskatchewan","Canada/Yukon","Chile/Continental","Chile/EasterIsland","Cuba","EET","EST","EST5EDT","Egypt","Eire","Etc/GMT","Etc/GMT+0","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11","Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5","Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/GMT-0","Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12","Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3","Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8","Etc/GMT-9","Etc/GMT0","Etc/Greenwich","Etc/UCT","Etc/UTC","Etc/Universal","Etc/Zulu","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belfast","Europe/Belgrade","Europe/Berlin","Europe/Bratislava","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Busingen","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man","Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Kyiv","Europe/Lisbon","Europe/Ljubljana","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Mariehamn","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Nicosia","Europe/Oslo","Europe/Paris","Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/San_Marino","Europe/Sarajevo","Europe/Saratov","Europe/Simferopol","Europe/Skopje","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Tiraspol","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vaduz","Europe/Vatican","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zagreb","Europe/Zaporozhye","Europe/Zurich","GB","GB-Eire","GMT","GMT+0","GMT-0","GMT0","Greenwich","HST","Hongkong","Iceland","Indian/Antananarivo","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Mayotte","Indian/Reunion","Iran","Israel","Jamaica","Japan","Kwajalein","Libya","MET","MST","MST7MDT","Mexico/BajaNorte","Mexico/BajaSur","Mexico/General","NZ","NZ-CHAT","Navajo","PRC","PST8PDT","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Johnston","Pacific/Kanton","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Midway","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Ponape","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Saipan","Pacific/Samoa","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Truk","Pacific/Wake","Pacific/Wallis","Pacific/Yap","Poland","Portugal","ROC","ROK","Singapore","Turkey","UCT","US/Alaska","US/Aleutian","US/Arizona","US/Central","US/East-Indiana","US/Eastern","US/Hawaii","US/Indiana-Starke","US/Michigan","US/Mountain","US/Pacific","US/Samoa","UTC","Universal","W-SU","WET","Zulu","localtime",""],"type":"string","description":"tz database style timezone string\n\n* `Africa/Abidjan`\n* `Africa/Accra`\n* `Africa/Addis_Ababa`\n* `Africa/Algiers`\n* `Africa/Asmara`\n* `Africa/Asmera`\n* `Africa/Bamako`\n* `Africa/Bangui`\n* `Africa/Banjul`\n* `Africa/Bissau`\n* `Africa/Blantyre`\n* `Africa/Brazzaville`\n* `Africa/Bujumbura`\n* `Africa/Cairo`\n* `Africa/Casablanca`\n* `Africa/Ceuta`\n* `Africa/Conakry`\n* `Africa/Dakar`\n* `Africa/Dar_es_Salaam`\n* `Africa/Djibouti`\n* `Africa/Douala`\n* `Africa/El_Aaiun`\n* `Africa/Freetown`\n* `Africa/Gaborone`\n* `Africa/Harare`\n* `Africa/Johannesburg`\n* `Africa/Juba`\n* `Africa/Kampala`\n* `Africa/Khartoum`\n* `Africa/Kigali`\n* `Africa/Kinshasa`\n* `Africa/Lagos`\n* `Africa/Libreville`\n* `Africa/Lome`\n* `Africa/Luanda`\n* `Africa/Lubumbashi`\n* `Africa/Lusaka`\n* `Africa/Malabo`\n* `Africa/Maputo`\n* `Africa/Maseru`\n* `Africa/Mbabane`\n* `Africa/Mogadishu`\n* `Africa/Monrovia`\n* `Africa/Nairobi`\n* `Africa/Ndjamena`\n* `Africa/Niamey`\n* `Africa/Nouakchott`\n* `Africa/Ouagadougou`\n* `Africa/Porto-Novo`\n* `Africa/Sao_Tome`\n* `Africa/Timbuktu`\n* `Africa/Tripoli`\n* `Africa/Tunis`\n* `Africa/Windhoek`\n* `America/Adak`\n* `America/Anchorage`\n* `America/Anguilla`\n* `America/Antigua`\n* `America/Araguaina`\n* `America/Argentina/Buenos_Aires`\n* `America/Argentina/Catamarca`\n* `America/Argentina/ComodRivadavia`\n* `America/Argentina/Cordoba`\n* `America/Argentina/Jujuy`\n* `America/Argentina/La_Rioja`\n* `America/Argentina/Mendoza`\n* `America/Argentina/Rio_Gallegos`\n* `America/Argentina/Salta`\n* `America/Argentina/San_Juan`\n* `America/Argentina/San_Luis`\n* `America/Argentina/Tucuman`\n* `America/Argentina/Ushuaia`\n* `America/Aruba`\n* `America/Asuncion`\n* `America/Atikokan`\n* `America/Atka`\n* `America/Bahia`\n* `America/Bahia_Banderas`\n* `America/Barbados`\n* `America/Belem`\n* `America/Belize`\n* `America/Blanc-Sablon`\n* `America/Boa_Vista`\n* `America/Bogota`\n* `America/Boise`\n* `America/Buenos_Aires`\n* `America/Cambridge_Bay`\n* `America/Campo_Grande`\n* `America/Cancun`\n* `America/Caracas`\n* `America/Catamarca`\n* `America/Cayenne`\n* `America/Cayman`\n* `America/Chicago`\n* `America/Chihuahua`\n* `America/Ciudad_Juarez`\n* `America/Coral_Harbour`\n* `America/Cordoba`\n* `America/Costa_Rica`\n* `America/Coyhaique`\n* `America/Creston`\n* `America/Cuiaba`\n* `America/Curacao`\n* `America/Danmarkshavn`\n* `America/Dawson`\n* `America/Dawson_Creek`\n* `America/Denver`\n* `America/Detroit`\n* `America/Dominica`\n* `America/Edmonton`\n* `America/Eirunepe`\n* `America/El_Salvador`\n* `America/Ensenada`\n* `America/Fort_Nelson`\n* `America/Fort_Wayne`\n* `America/Fortaleza`\n* `America/Glace_Bay`\n* `America/Godthab`\n* `America/Goose_Bay`\n* `America/Grand_Turk`\n* `America/Grenada`\n* `America/Guadeloupe`\n* `America/Guatemala`\n* `America/Guayaquil`\n* `America/Guyana`\n* `America/Halifax`\n* `America/Havana`\n* `America/Hermosillo`\n* `America/Indiana/Indianapolis`\n* `America/Indiana/Knox`\n* `America/Indiana/Marengo`\n* `America/Indiana/Petersburg`\n* `America/Indiana/Tell_City`\n* `America/Indiana/Vevay`\n* `America/Indiana/Vincennes`\n* `America/Indiana/Winamac`\n* `America/Indianapolis`\n* `America/Inuvik`\n* `America/Iqaluit`\n* `America/Jamaica`\n* `America/Jujuy`\n* `America/Juneau`\n* `America/Kentucky/Louisville`\n* `America/Kentucky/Monticello`\n* `America/Knox_IN`\n* `America/Kralendijk`\n* `America/La_Paz`\n* `America/Lima`\n* `America/Los_Angeles`\n* `America/Louisville`\n* `America/Lower_Princes`\n* `America/Maceio`\n* `America/Managua`\n* `America/Manaus`\n* `America/Marigot`\n* `America/Martinique`\n* `America/Matamoros`\n* `America/Mazatlan`\n* `America/Mendoza`\n* `America/Menominee`\n* `America/Merida`\n* `America/Metlakatla`\n* `America/Mexico_City`\n* `America/Miquelon`\n* `America/Moncton`\n* `America/Monterrey`\n* `America/Montevideo`\n* `America/Montreal`\n* `America/Montserrat`\n* `America/Nassau`\n* `America/New_York`\n* `America/Nipigon`\n* `America/Nome`\n* `America/Noronha`\n* `America/North_Dakota/Beulah`\n* `America/North_Dakota/Center`\n* `America/North_Dakota/New_Salem`\n* `America/Nuuk`\n* `America/Ojinaga`\n* `America/Panama`\n* `America/Pangnirtung`\n* `America/Paramaribo`\n* `America/Phoenix`\n* `America/Port-au-Prince`\n* `America/Port_of_Spain`\n* `America/Porto_Acre`\n* `America/Porto_Velho`\n* `America/Puerto_Rico`\n* `America/Punta_Arenas`\n* `America/Rainy_River`\n* `America/Rankin_Inlet`\n* `America/Recife`\n* `America/Regina`\n* `America/Resolute`\n* `America/Rio_Branco`\n* `America/Rosario`\n* `America/Santa_Isabel`\n* `America/Santarem`\n* `America/Santiago`\n* `America/Santo_Domingo`\n* `America/Sao_Paulo`\n* `America/Scoresbysund`\n* `America/Shiprock`\n* `America/Sitka`\n* `America/St_Barthelemy`\n* `America/St_Johns`\n* `America/St_Kitts`\n* `America/St_Lucia`\n* `America/St_Thomas`\n* `America/St_Vincent`\n* `America/Swift_Current`\n* `America/Tegucigalpa`\n* `America/Thule`\n* `America/Thunder_Bay`\n* `America/Tijuana`\n* `America/Toronto`\n* `America/Tortola`\n* `America/Vancouver`\n* `America/Virgin`\n* `America/Whitehorse`\n* `America/Winnipeg`\n* `America/Yakutat`\n* `America/Yellowknife`\n* `Antarctica/Casey`\n* `Antarctica/Davis`\n* `Antarctica/DumontDUrville`\n* `Antarctica/Macquarie`\n* `Antarctica/Mawson`\n* `Antarctica/McMurdo`\n* `Antarctica/Palmer`\n* `Antarctica/Rothera`\n* `Antarctica/South_Pole`\n* `Antarctica/Syowa`\n* `Antarctica/Troll`\n* `Antarctica/Vostok`\n* `Arctic/Longyearbyen`\n* `Asia/Aden`\n* `Asia/Almaty`\n* `Asia/Amman`\n* `Asia/Anadyr`\n* `Asia/Aqtau`\n* `Asia/Aqtobe`\n* `Asia/Ashgabat`\n* `Asia/Ashkhabad`\n* `Asia/Atyrau`\n* `Asia/Baghdad`\n* `Asia/Bahrain`\n* `Asia/Baku`\n* `Asia/Bangkok`\n* `Asia/Barnaul`\n* `Asia/Beirut`\n* `Asia/Bishkek`\n* `Asia/Brunei`\n* `Asia/Calcutta`\n* `Asia/Chita`\n* `Asia/Choibalsan`\n* `Asia/Chongqing`\n* `Asia/Chungking`\n* `Asia/Colombo`\n* `Asia/Dacca`\n* `Asia/Damascus`\n* `Asia/Dhaka`\n* `Asia/Dili`\n* `Asia/Dubai`\n* `Asia/Dushanbe`\n* `Asia/Famagusta`\n* `Asia/Gaza`\n* `Asia/Harbin`\n* `Asia/Hebron`\n* `Asia/Ho_Chi_Minh`\n* `Asia/Hong_Kong`\n* `Asia/Hovd`\n* `Asia/Irkutsk`\n* `Asia/Istanbul`\n* `Asia/Jakarta`\n* `Asia/Jayapura`\n* `Asia/Jerusalem`\n* `Asia/Kabul`\n* `Asia/Kamchatka`\n* `Asia/Karachi`\n* `Asia/Kashgar`\n* `Asia/Kathmandu`\n* `Asia/Katmandu`\n* `Asia/Khandyga`\n* `Asia/Kolkata`\n* `Asia/Krasnoyarsk`\n* `Asia/Kuala_Lumpur`\n* `Asia/Kuching`\n* `Asia/Kuwait`\n* `Asia/Macao`\n* `Asia/Macau`\n* `Asia/Magadan`\n* `Asia/Makassar`\n* `Asia/Manila`\n* `Asia/Muscat`\n* `Asia/Nicosia`\n* `Asia/Novokuznetsk`\n* `Asia/Novosibirsk`\n* `Asia/Omsk`\n* `Asia/Oral`\n* `Asia/Phnom_Penh`\n* `Asia/Pontianak`\n* `Asia/Pyongyang`\n* `Asia/Qatar`\n* `Asia/Qostanay`\n* `Asia/Qyzylorda`\n* `Asia/Rangoon`\n* `Asia/Riyadh`\n* `Asia/Saigon`\n* `Asia/Sakhalin`\n* `Asia/Samarkand`\n* `Asia/Seoul`\n* `Asia/Shanghai`\n* `Asia/Singapore`\n* `Asia/Srednekolymsk`\n* `Asia/Taipei`\n* `Asia/Tashkent`\n* `Asia/Tbilisi`\n* `Asia/Tehran`\n* `Asia/Tel_Aviv`\n* `Asia/Thimbu`\n* `Asia/Thimphu`\n* `Asia/Tokyo`\n* `Asia/Tomsk`\n* `Asia/Ujung_Pandang`\n* `Asia/Ulaanbaatar`\n* `Asia/Ulan_Bator`\n* `Asia/Urumqi`\n* `Asia/Ust-Nera`\n* `Asia/Vientiane`\n* `Asia/Vladivostok`\n* `Asia/Yakutsk`\n* `Asia/Yangon`\n* `Asia/Yekaterinburg`\n* `Asia/Yerevan`\n* `Atlantic/Azores`\n* `Atlantic/Bermuda`\n* `Atlantic/Canary`\n* `Atlantic/Cape_Verde`\n* `Atlantic/Faeroe`\n* `Atlantic/Faroe`\n* `Atlantic/Jan_Mayen`\n* `Atlantic/Madeira`\n* `Atlantic/Reykjavik`\n* `Atlantic/South_Georgia`\n* `Atlantic/St_Helena`\n* `Atlantic/Stanley`\n* `Australia/ACT`\n* `Australia/Adelaide`\n* `Australia/Brisbane`\n* `Australia/Broken_Hill`\n* `Australia/Canberra`\n* `Australia/Currie`\n* `Australia/Darwin`\n* `Australia/Eucla`\n* `Australia/Hobart`\n* `Australia/LHI`\n* `Australia/Lindeman`\n* `Australia/Lord_Howe`\n* `Australia/Melbourne`\n* `Australia/NSW`\n* `Australia/North`\n* `Australia/Perth`\n* `Australia/Queensland`\n* `Australia/South`\n* `Australia/Sydney`\n* `Australia/Tasmania`\n* `Australia/Victoria`\n* `Australia/West`\n* `Australia/Yancowinna`\n* `Brazil/Acre`\n* `Brazil/DeNoronha`\n* `Brazil/East`\n* `Brazil/West`\n* `CET`\n* `CST6CDT`\n* `Canada/Atlantic`\n* `Canada/Central`\n* `Canada/Eastern`\n* `Canada/Mountain`\n* `Canada/Newfoundland`\n* `Canada/Pacific`\n* `Canada/Saskatchewan`\n* `Canada/Yukon`\n* `Chile/Continental`\n* `Chile/EasterIsland`\n* `Cuba`\n* `EET`\n* `EST`\n* `EST5EDT`\n* `Egypt`\n* `Eire`\n* `Etc/GMT`\n* `Etc/GMT+0`\n* `Etc/GMT+1`\n* `Etc/GMT+10`\n* `Etc/GMT+11`\n* `Etc/GMT+12`\n* `Etc/GMT+2`\n* `Etc/GMT+3`\n* `Etc/GMT+4`\n* `Etc/GMT+5`\n* `Etc/GMT+6`\n* `Etc/GMT+7`\n* `Etc/GMT+8`\n* `Etc/GMT+9`\n* `Etc/GMT-0`\n* `Etc/GMT-1`\n* `Etc/GMT-10`\n* `Etc/GMT-11`\n* `Etc/GMT-12`\n* `Etc/GMT-13`\n* `Etc/GMT-14`\n* `Etc/GMT-2`\n* `Etc/GMT-3`\n* `Etc/GMT-4`\n* `Etc/GMT-5`\n* `Etc/GMT-6`\n* `Etc/GMT-7`\n* `Etc/GMT-8`\n* `Etc/GMT-9`\n* `Etc/GMT0`\n* `Etc/Greenwich`\n* `Etc/UCT`\n* `Etc/UTC`\n* `Etc/Universal`\n* `Etc/Zulu`\n* `Europe/Amsterdam`\n* `Europe/Andorra`\n* `Europe/Astrakhan`\n* `Europe/Athens`\n* `Europe/Belfast`\n* `Europe/Belgrade`\n* `Europe/Berlin`\n* `Europe/Bratislava`\n* `Europe/Brussels`\n* `Europe/Bucharest`\n* `Europe/Budapest`\n* `Europe/Busingen`\n* `Europe/Chisinau`\n* `Europe/Copenhagen`\n* `Europe/Dublin`\n* `Europe/Gibraltar`\n* `Europe/Guernsey`\n* `Europe/Helsinki`\n* `Europe/Isle_of_Man`\n* `Europe/Istanbul`\n* `Europe/Jersey`\n* `Europe/Kaliningrad`\n* `Europe/Kiev`\n* `Europe/Kirov`\n* `Europe/Kyiv`\n* `Europe/Lisbon`\n* `Europe/Ljubljana`\n* `Europe/London`\n* `Europe/Luxembourg`\n* `Europe/Madrid`\n* `Europe/Malta`\n* `Europe/Mariehamn`\n* `Europe/Minsk`\n* `Europe/Monaco`\n* `Europe/Moscow`\n* `Europe/Nicosia`\n* `Europe/Oslo`\n* `Europe/Paris`\n* `Europe/Podgorica`\n* `Europe/Prague`\n* `Europe/Riga`\n* `Europe/Rome`\n* `Europe/Samara`\n* `Europe/San_Marino`\n* `Europe/Sarajevo`\n* `Europe/Saratov`\n* `Europe/Simferopol`\n* `Europe/Skopje`\n* `Europe/Sofia`\n* `Europe/Stockholm`\n* `Europe/Tallinn`\n* `Europe/Tirane`\n* `Europe/Tiraspol`\n* `Europe/Ulyanovsk`\n* `Europe/Uzhgorod`\n* `Europe/Vaduz`\n* `Europe/Vatican`\n* `Europe/Vienna`\n* `Europe/Vilnius`\n* `Europe/Volgograd`\n* `Europe/Warsaw`\n* `Europe/Zagreb`\n* `Europe/Zaporozhye`\n* `Europe/Zurich`\n* `GB`\n* `GB-Eire`\n* `GMT`\n* `GMT+0`\n* `GMT-0`\n* `GMT0`\n* `Greenwich`\n* `HST`\n* `Hongkong`\n* `Iceland`\n* `Indian/Antananarivo`\n* `Indian/Chagos`\n* `Indian/Christmas`\n* `Indian/Cocos`\n* `Indian/Comoro`\n* `Indian/Kerguelen`\n* `Indian/Mahe`\n* `Indian/Maldives`\n* `Indian/Mauritius`\n* `Indian/Mayotte`\n* `Indian/Reunion`\n* `Iran`\n* `Israel`\n* `Jamaica`\n* `Japan`\n* `Kwajalein`\n* `Libya`\n* `MET`\n* `MST`\n* `MST7MDT`\n* `Mexico/BajaNorte`\n* `Mexico/BajaSur`\n* `Mexico/General`\n* `NZ`\n* `NZ-CHAT`\n* `Navajo`\n* `PRC`\n* `PST8PDT`\n* `Pacific/Apia`\n* `Pacific/Auckland`\n* `Pacific/Bougainville`\n* `Pacific/Chatham`\n* `Pacific/Chuuk`\n* `Pacific/Easter`\n* `Pacific/Efate`\n* `Pacific/Enderbury`\n* `Pacific/Fakaofo`\n* `Pacific/Fiji`\n* `Pacific/Funafuti`\n* `Pacific/Galapagos`\n* `Pacific/Gambier`\n* `Pacific/Guadalcanal`\n* `Pacific/Guam`\n* `Pacific/Honolulu`\n* `Pacific/Johnston`\n* `Pacific/Kanton`\n* `Pacific/Kiritimati`\n* `Pacific/Kosrae`\n* `Pacific/Kwajalein`\n* `Pacific/Majuro`\n* `Pacific/Marquesas`\n* `Pacific/Midway`\n* `Pacific/Nauru`\n* `Pacific/Niue`\n* `Pacific/Norfolk`\n* `Pacific/Noumea`\n* `Pacific/Pago_Pago`\n* `Pacific/Palau`\n* `Pacific/Pitcairn`\n* `Pacific/Pohnpei`\n* `Pacific/Ponape`\n* `Pacific/Port_Moresby`\n* `Pacific/Rarotonga`\n* `Pacific/Saipan`\n* `Pacific/Samoa`\n* `Pacific/Tahiti`\n* `Pacific/Tarawa`\n* `Pacific/Tongatapu`\n* `Pacific/Truk`\n* `Pacific/Wake`\n* `Pacific/Wallis`\n* `Pacific/Yap`\n* `Poland`\n* `Portugal`\n* `ROC`\n* `ROK`\n* `Singapore`\n* `Turkey`\n* `UCT`\n* `US/Alaska`\n* `US/Aleutian`\n* `US/Arizona`\n* `US/Central`\n* `US/East-Indiana`\n* `US/Eastern`\n* `US/Hawaii`\n* `US/Indiana-Starke`\n* `US/Michigan`\n* `US/Mountain`\n* `US/Pacific`\n* `US/Samoa`\n* `UTC`\n* `Universal`\n* `W-SU`\n* `WET`\n* `Zulu`\n* `localtime`"},"failure_issue_threshold":{"type":"integer","maximum":720,"minimum":1,"nullable":true,"description":"How many consecutive missed or failed check-ins in a row before creating a new issue."},"recovery_threshold":{"type":"integer","maximum":720,"minimum":1,"nullable":true,"description":"How many successful check-ins in a row before resolving an issue."}},"required":["schedule"]}],"description":"The configuration for the monitor."},"slug":{"type":"string","description":"Uniquely identifies your monitor within your organization. Changing this slug will require updates to any instrumented check-in calls.","maxLength":50,"pattern":"^(?![0-9]+$)[a-z0-9_\\-]+$"},"status":{"enum":["active","disabled"],"type":"string","default":"active","description":"Status of the monitor. Disabled monitors will not accept events and will not count towards the monitor quota.\n\n* `active`\n* `disabled`"},"owner":{"type":"string","nullable":true,"description":"The ID of the team or user that owns the monitor. (eg. user:51 or team:6)"},"is_muted":{"type":"boolean","description":"Disable creation of monitor incidents"}},"required":["config","name","project"]}}},"required":true},"security":[{"auth_token":["alerts:write","project:admin","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"status":{"type":"string"},"isMuted":{"type":"boolean"},"isUpserting":{"type":"boolean"},"config":{"type":"object","properties":{"schedule_type":{"enum":["crontab","interval"],"type":"string"},"schedule":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"integer"},"minLength":2,"maxLength":2}]},"checkin_margin":{"type":"integer","nullable":true},"max_runtime":{"type":"integer","nullable":true},"timezone":{"type":"string","nullable":true},"failure_issue_threshold":{"type":"integer","nullable":true},"recovery_threshold":{"type":"integer","nullable":true},"alert_rule_id":{"type":"integer","nullable":true}},"required":["alert_rule_id","checkin_margin","failure_issue_threshold","max_runtime","recovery_threshold","schedule","schedule_type","timezone"]},"dateCreated":{"type":"string","format":"date-time"},"project":{"type":"object","properties":{"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"isInternal":{"type":"boolean"},"isPublic":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"color":{"type":"string"},"status":{"type":"string"}},"required":["access","avatar","color","dateCreated","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","id","isBookmarked","isInternal","isMember","isPublic","name","platform","slug","status"]},"environments":{"type":"object","properties":{"name":{"type":"string"},"status":{"type":"string"},"isMuted":{"type":"boolean"},"dateCreated":{"type":"string","format":"date-time"},"lastCheckIn":{"type":"string","format":"date-time"},"nextCheckIn":{"type":"string","format":"date-time"},"nextCheckInLatest":{"type":"string","format":"date-time"},"activeIncident":{"type":"object","properties":{"startingTimestamp":{"type":"string","format":"date-time"},"resolvingTimestamp":{"type":"string","format":"date-time"},"brokenNotice":{"type":"object","properties":{"userNotifiedTimestamp":{"type":"string","format":"date-time"},"environmentMutedTimestamp":{"type":"string","format":"date-time"}},"required":["environmentMutedTimestamp","userNotifiedTimestamp"],"nullable":true}},"required":["brokenNotice","resolvingTimestamp","startingTimestamp"],"nullable":true}},"required":["activeIncident","dateCreated","isMuted","lastCheckIn","name","nextCheckIn","nextCheckInLatest","status"]},"owner":{"type":"object","properties":{"type":{"enum":["user","team"],"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["id","name","type"]}},"required":["config","dateCreated","environments","id","isMuted","isUpserting","name","owner","project","slug","status"]}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteProjectMonitor","description":"Delete a monitor or monitor environments.","summary":"Delete a Monitor or Monitor Environments for a Project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"monitor_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the monitor.","required":true},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."}],"tags":["Crons"],"security":[{"auth_token":["alerts:write","project:admin","project:write"]}],"responses":{"202":{"description":"Accepted"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/monitors/{monitor_id_or_slug}/checkins/":{"get":{"operationId":"listProjectMonitorCheckins","description":"Retrieve a list of check-ins for a monitor","summary":"Retrieve Check-Ins for a Monitor by Project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"monitor_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the monitor.","required":true}],"tags":["Crons"],"security":[{"auth_token":["alerts:read","alerts:write","project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"groups":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"environment":{"type":"string"},"status":{"type":"string"},"duration":{"type":"integer","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"dateAdded":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"dateInProgress":{"type":"string","format":"date-time","nullable":true},"dateClock":{"type":"string","format":"date-time"},"expectedTime":{"type":"string","format":"date-time"},"monitorConfig":{"type":"object","properties":{"schedule_type":{"enum":["crontab","interval"],"type":"string"},"schedule":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"integer"},"minLength":2,"maxLength":2}]},"checkin_margin":{"type":"integer","nullable":true},"max_runtime":{"type":"integer","nullable":true},"timezone":{"type":"string","nullable":true},"failure_issue_threshold":{"type":"integer","nullable":true},"recovery_threshold":{"type":"integer","nullable":true},"alert_rule_id":{"type":"integer","nullable":true}},"required":["alert_rule_id","checkin_margin","failure_issue_threshold","max_runtime","recovery_threshold","schedule","schedule_type","timezone"]}},"required":["dateAdded","dateClock","dateCreated","dateInProgress","dateUpdated","duration","environment","expectedTime","id","monitorConfig","status"]}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/ownership/":{"get":{"operationId":"getProjectOwnership","description":"Returns details on a project's ownership configuration.","summary":"Retrieve Ownership Configuration for a Project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Projects"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"schema":{"type":"object","properties":{"$version":{"type":"integer"},"rules":{"type":"array","items":{"type":"object","properties":{"matcher":{"type":"object","properties":{"type":{"type":"string"},"pattern":{"type":"string"}},"required":["pattern","type"]},"owners":{"type":"array","items":{"type":"object","description":"Owner as it appears in the API response (after identifier->name rename).","properties":{"type":{"type":"string"},"name":{"type":"string"},"id":{"type":"string"}},"required":["name","type"]}}},"required":["matcher","owners"]}}},"required":["$version","rules"],"nullable":true},"raw":{"type":"string"},"fallthrough":{"type":"boolean"},"dateCreated":{"type":"string","format":"date-time"},"lastUpdated":{"type":"string","format":"date-time"},"isActive":{"type":"boolean"},"autoAssignment":{"type":"string"},"codeownersAutoSync":{"type":"boolean"}},"required":["autoAssignment","codeownersAutoSync","dateCreated","fallthrough","isActive","lastUpdated","raw"]},"examples":{"GetOwnershipConfigurationForAProject":{"value":{"raw":"path:src/views/checkout jane.smith@org.com \nurl:https://example.com/checkout jane.smith@org.com\ntags.transaction:/checkout/:page jane.smith@org.com","fallthrough":true,"dateCreated":"2023-10-03T20:25:18.539823Z","lastUpdated":"2023-10-03T22:49:12.294741Z","isActive":true,"autoAssignment":"Auto Assign to Issue Owner","codeownersAutoSync":true,"schema":{"$version":1,"rules":[{"matcher":{"type":"path","pattern":"src/views/checkout"},"owners":[{"type":"user","id":"2621754","name":"jane.smith@org.com"}]},{"matcher":{"type":"url","pattern":"https://example.com/checkout"},"owners":[{"type":"user","id":"2621754","name":"jane.smith@org.com"}]},{"matcher":{"type":"tags.transaction","pattern":"/checkout/:page"},"owners":[{"type":"user","id":"2621754","name":"jane.smith@org.com"}]}]}},"summary":"Get ownership configuration for a project"}}}},"description":""}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"updateProjectOwnership","description":"Updates ownership configurations for a project. Note that only the\nattributes submitted are modified.","summary":"Update Ownership Configuration for a Project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Projects"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"raw":{"type":"string","description":"Raw input for ownership configuration. See the [Ownership Rules Documentation](/product/issues/ownership-rules/) to learn more."},"fallthrough":{"type":"boolean","description":"A boolean determining who to assign ownership to when an ownership rule has no match. If set to `True`, all project members are made owners. Otherwise, no owners are set."},"autoAssignment":{"type":"string","description":"Auto-assignment settings. The available options are:\n- Auto Assign to Issue Owner\n- Auto Assign to Suspect Commits\n- Turn off Auto-Assignment"},"codeownersAutoSync":{"type":"boolean","default":true,"description":"Set to `True` to sync issue owners with CODEOWNERS updates in a release."}}}}}},"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"202":{"content":{"application/json":{"schema":{"type":"object","properties":{"schema":{"type":"object","properties":{"$version":{"type":"integer"},"rules":{"type":"array","items":{"type":"object","properties":{"matcher":{"type":"object","properties":{"type":{"type":"string"},"pattern":{"type":"string"}},"required":["pattern","type"]},"owners":{"type":"array","items":{"type":"object","description":"Owner as it appears in the API response (after identifier->name rename).","properties":{"type":{"type":"string"},"name":{"type":"string"},"id":{"type":"string"}},"required":["name","type"]}}},"required":["matcher","owners"]}}},"required":["$version","rules"],"nullable":true},"raw":{"type":"string"},"fallthrough":{"type":"boolean"},"dateCreated":{"type":"string","format":"date-time"},"lastUpdated":{"type":"string","format":"date-time"},"isActive":{"type":"boolean"},"autoAssignment":{"type":"string"},"codeownersAutoSync":{"type":"boolean"}},"required":["autoAssignment","codeownersAutoSync","dateCreated","fallthrough","isActive","lastUpdated","raw"]},"examples":{"UpdateOwnershipConfigurationForAProject":{"value":{"raw":"path:src/views/checkout jane.smith@org.com \nurl:https://example.com/checkout jane.smith@org.com\ntags.transaction:/checkout/:page jane.smith@org.com","fallthrough":true,"dateCreated":"2023-10-03T20:25:18.539823Z","lastUpdated":"2023-10-03T22:49:12.294741Z","isActive":true,"autoAssignment":"Auto Assign to Issue Owner","codeownersAutoSync":true,"schema":{"$version":1,"rules":[{"matcher":{"type":"path","pattern":"src/views/checkout"},"owners":[{"type":"user","id":"2621754","name":"jane.smith@org.com"}]},{"matcher":{"type":"url","pattern":"https://example.com/checkout"},"owners":[{"type":"user","id":"2621754","name":"jane.smith@org.com"}]},{"matcher":{"type":"tags.transaction","pattern":"/checkout/:page"},"owners":[{"type":"user","id":"2621754","name":"jane.smith@org.com"}]}]}},"summary":"Update ownership configuration for a project"}}}},"description":""},"400":{"description":"Bad Request"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/preprod/size-analysis/status-check-rules/":{"get":{"operationId":"getProjectPreprodSizeAnalysisStatusCheckRules","description":"Retrieve the current Size Analysis status check rules configured for a project.\n\nUse this endpoint after receiving a `size_analysis.completed` webhook when you\nwant external CI to evaluate the same Size Analysis status check thresholds that\nSentry uses. The endpoint returns the current project configuration, not a\nhistorical snapshot from when the webhook was emitted.\n\nThe response includes whether status check enforcement is enabled and the\nnormalized rule list Sentry uses when evaluating Size Analysis thresholds.\n\nThis endpoint requires a bearer token with `project:read` access. Project\ndistribution tokens are not supported.\n\nResponse notes:\n\n- `enabled: false` means status-check enforcement is disabled for the project.\n- `rules: []` means there are no configured thresholds to evaluate.\n- `value` is returned as a string. For `absolute` and `absolute_diff`\n measurements it is a byte value; for `relative_diff` it is a percentage.\n- `filterQuery` is the original configured filter string.\n- `filters` is the machine-readable version of `filterQuery`.\n- `filters: []` means the rule has no filters and applies to all builds.\n- `filters: null` means the saved filter query could not be parsed; Sentry's\n status check trigger treats that rule as non-matching.\n\nRule evaluation semantics:\n\n- Threshold comparisons are strict: a rule triggers only when the computed value\n is greater than the configured threshold, not greater than or equal to it.\n- `absolute_diff` and `relative_diff` require a matching base metric/build.\n- `relative_diff` does not trigger when the base size is zero.\n- `artifactType` identifies the artifact scope the rule evaluates.\n `main_artifact`, `watch_artifact`, `android_dynamic_feature_artifact`,\n and `app_clip_artifact` target their matching artifact metric.\n `all_artifacts` evaluates all available artifact metrics.\n- Rule filters support the keys `app_id`, `git_head_ref`,\n `build_configuration_name`, and `platform_name`.\n- Filter objects are combined with AND. Multiple `conditions` inside one\n filter object are combined with OR.\n- Each condition uses `values`; single-value operators still return a\n one-item array.\n- Values in `filters` are decoded literal values for exact/simple operators,\n not query syntax. For example, `app_id:\\*com` in `filterQuery` becomes\n `values: [\"*com\"]` with `operator: \"equals\"`.\n- The same key can appear in more than one filter object when positive and\n negative conditions both exist; those filter objects are still combined with\n AND.\n- Supported filter operators are `equals`, `notEquals`, `in`, `notIn`,\n `contains`, `notContains`, `startsWith`, `notStartsWith`, `endsWith`,\n `notEndsWith`, `matches`, and `notMatches`.\n- `matches` and `notMatches` values use Sentry wildcard pattern syntax, not\n regular expressions. `*` matches zero or more characters, escaped `\\*`\n matches a literal asterisk, and a pattern without `*` is an exact match.\n- `in` and `notIn` are evaluated as one condition against all values, matching\n Sentry's status check trigger behavior.\n- A rule applies only when the build metadata matches all filters. If a\n referenced metadata key is missing, the filter does not match, even for\n negated operators.","summary":"Retrieve Size Analysis status check rules for a project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Mobile Builds"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"metric":{"enum":["install_size","download_size"],"type":"string"},"measurement":{"enum":["absolute","absolute_diff","relative_diff"],"type":"string"},"value":{"type":"string"},"filterQuery":{"type":"string"},"filters":{"type":"array","items":{"type":"object","properties":{"key":{"enum":["app_id","build_configuration_name","git_head_ref","platform_name"],"type":"string"},"conditions":{"type":"array","items":{"type":"object","properties":{"operator":{"enum":["contains","endsWith","equals","in","matches","notContains","notEndsWith","notEquals","notIn","notMatches","notStartsWith","startsWith"],"type":"string"},"values":{"type":"array","items":{"type":"string"}}},"required":["operator","values"]}}},"required":["conditions","key"]},"nullable":true},"artifactType":{"enum":["main_artifact","watch_artifact","android_dynamic_feature_artifact","app_clip_artifact","all_artifacts"],"type":"string"}},"required":["artifactType","filterQuery","filters","id","measurement","metric","value"]}}},"required":["enabled","rules"]},"examples":{"ConfiguredSizeAnalysisStatusCheckRules":{"value":{"enabled":true,"rules":[{"id":"rule-1","metric":"install_size","measurement":"absolute_diff","value":"5000000","filterQuery":"app_id:com.example.app platform_name:apple build_configuration_name:Release","filters":[{"key":"app_id","conditions":[{"operator":"equals","values":["com.example.app"]}]},{"key":"platform_name","conditions":[{"operator":"equals","values":["apple"]}]},{"key":"build_configuration_name","conditions":[{"operator":"equals","values":["Release"]}]}],"artifactType":"main_artifact"}]},"summary":"Configured Size Analysis Status Check Rules"}}}},"description":""},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/preprod/size-analysis/status-checks/skip/":{"post":{"operationId":"createProjectPreprodSizeAnalysisSkippedStatusCheck","description":"Create a neutral status check for a commit that intentionally skips an artifact upload.\n\nThe repository must be connected to the project's organization through an active repository\nintegration.\nThe same Sentry auth token configured for build uploads can also be used for this endpoint.","summary":"Create a skipped Size Analysis status check","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Mobile Builds"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"sha":{"type":"string","description":"The full 40-character lowercase commit SHA.","maxLength":40,"pattern":"^[0-9a-f]{40}$"},"repository":{"type":"string","description":"The repository name in `owner/name` format.","maxLength":255},"provider":{"enum":["github","github_enterprise"],"type":"string","description":"The repository integration provider.\n\n* `github`\n* `github_enterprise`"}},"required":["provider","repository","sha"]}}},"required":true},"security":[{"auth_token":["org:ci","project:admin","project:releases","project:write"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"429":{"description":"Too Many Requests"},"502":{"description":"Bad Gateway"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/preprod/snapshots/status-check-rules/":{"get":{"operationId":"getProjectPreprodSnapshotStatusCheckRules","description":"Retrieve the current Snapshot status check rules configured for a project.\n\nUse this endpoint when external CI needs to evaluate the same Snapshot\nchange-type rules that Sentry uses. The endpoint returns the current\nproject configuration, not a historical snapshot from when a build was\nprocessed.\n\nThe response includes whether status check enforcement is enabled and the\nSnapshot change types that fail the status check.\n\nThis endpoint requires a bearer token with `project:read` access. Project\ndistribution tokens are not supported.\n\nResponse notes:\n\n- `enabled: false` means status-check enforcement is disabled for the project.\n- `rules` contains one boolean per Snapshot change type.\n- `failOnAdded`, `failOnRemoved`, `failOnChanged`, and `failOnRenamed`\n indicate which unapproved change types fail the status check.","summary":"Retrieve Snapshot status check rules for a project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Snapshots"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"rules":{"type":"object","properties":{"failOnAdded":{"type":"boolean"},"failOnRemoved":{"type":"boolean"},"failOnChanged":{"type":"boolean"},"failOnRenamed":{"type":"boolean"}},"required":["failOnAdded","failOnChanged","failOnRemoved","failOnRenamed"]}},"required":["enabled","rules"]},"examples":{"ConfiguredSnapshotStatusCheckRules":{"value":{"enabled":true,"rules":{"failOnAdded":false,"failOnRemoved":true,"failOnChanged":true,"failOnRenamed":false}},"summary":"Configured Snapshot Status Check Rules"}}}},"description":""},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/preprod/snapshots/status-checks/skip/":{"post":{"operationId":"createProjectPreprodSnapshotSkippedStatusCheck","description":"Create a neutral status check for a commit that intentionally skips an artifact upload.\n\nThe repository must be connected to the project's organization through an active repository\nintegration.\nThe same Sentry auth token configured for build uploads can also be used for this endpoint.","summary":"Create a skipped Snapshot status check","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Snapshots"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"sha":{"type":"string","description":"The full 40-character lowercase commit SHA.","maxLength":40,"pattern":"^[0-9a-f]{40}$"},"repository":{"type":"string","description":"The repository name in `owner/name` format.","maxLength":255},"provider":{"enum":["github","github_enterprise"],"type":"string","description":"The repository integration provider.\n\n* `github`\n* `github_enterprise`"}},"required":["provider","repository","sha"]}}},"required":true},"security":[{"auth_token":["org:ci","project:admin","project:releases","project:write"]}],"responses":{"200":{"description":"Success"},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"429":{"description":"Too Many Requests"},"502":{"description":"Bad Gateway"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/preprodartifacts/build-distribution/latest/":{"get":{"operationId":"getProjectInstallableBuildLatest","description":"Get the latest installable build for a project.\n\nReturns the latest installable build matching filter criteria.\nWhen buildVersion is provided, also returns the current build and\nwhether an update is available.","summary":"Get the latest installable build for a project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"query","name":"appId","schema":{"type":"string"},"description":"App identifier (exact match).","required":true},{"in":"query","name":"platform","schema":{"type":"string"},"description":"Platform: \"apple\" or \"android\".","required":true},{"in":"query","name":"buildVersion","schema":{"type":"string"},"description":"Current build version. When provided, enables check-for-updates mode."},{"in":"query","name":"buildNumber","schema":{"oneOf":[{"type":"integer"},{"type":"string"}]},"description":"Current build number. Accepts a plain integer (e.g. 42) or a version string of two or more period-separated integers (e.g. 1.2.3), each up to 6 digits. Groups beyond the third are dropped. Either this or mainBinaryIdentifier must be provided when buildVersion is set."},{"in":"query","name":"mainBinaryIdentifier","schema":{"type":"string"},"description":"UUID of the main binary (e.g. Mach-O UUID for Apple builds). Either this or buildNumber must be provided when buildVersion is set."},{"in":"query","name":"buildConfiguration","schema":{"type":"string"},"description":"Filter by build configuration name (exact match)."},{"in":"query","name":"codesigningType","schema":{"type":"string"},"description":"Filter by code signing type."},{"in":"query","name":"installGroups","schema":{"type":"array","items":{"type":"string"}},"description":"Filter by install group name (repeatable for multiple groups)."}],"tags":["Mobile Builds"],"security":[{"auth_token":["project:admin","project:distribution","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"latestArtifact":{"type":"object","properties":{"buildId":{"type":"string"},"state":{"type":"string"},"appInfo":{"type":"object","properties":{"appId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true},"buildNumber":{"type":"integer","nullable":true},"artifactType":{"type":"string","nullable":true},"dateAdded":{"type":"string","nullable":true},"dateBuilt":{"type":"string","nullable":true}},"required":["appId","artifactType","buildNumber","dateAdded","dateBuilt","name","version"]},"gitInfo":{"type":"object","properties":{"headSha":{"type":"string","nullable":true},"baseSha":{"type":"string","nullable":true},"provider":{"type":"string","nullable":true},"headRepoName":{"type":"string","nullable":true},"baseRepoName":{"type":"string","nullable":true},"headRef":{"type":"string","nullable":true},"baseRef":{"type":"string","nullable":true},"prNumber":{"type":"integer","nullable":true}},"required":["baseRef","baseRepoName","baseSha","headRef","headRepoName","headSha","prNumber","provider"],"nullable":true},"platform":{"type":"string","nullable":true},"projectId":{"type":"string"},"projectSlug":{"type":"string"},"buildConfiguration":{"type":"string","nullable":true},"isInstallable":{"type":"boolean"},"installUrl":{"type":"string","nullable":true},"installUrlExpiresAt":{"type":"string","nullable":true},"downloadCount":{"type":"integer"},"releaseNotes":{"type":"string","nullable":true},"installGroups":{"type":"array","items":{"type":"string"},"nullable":true},"isCodeSignatureValid":{"type":"boolean","nullable":true},"profileName":{"type":"string","nullable":true},"codesigningType":{"type":"string","nullable":true}},"required":["appInfo","buildConfiguration","buildId","codesigningType","downloadCount","gitInfo","installGroups","installUrl","installUrlExpiresAt","isCodeSignatureValid","isInstallable","platform","profileName","projectId","projectSlug","releaseNotes","state"],"nullable":true},"currentArtifact":{"type":"object","properties":{"buildId":{"type":"string"},"state":{"type":"string"},"appInfo":{"type":"object","properties":{"appId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true},"buildNumber":{"type":"integer","nullable":true},"artifactType":{"type":"string","nullable":true},"dateAdded":{"type":"string","nullable":true},"dateBuilt":{"type":"string","nullable":true}},"required":["appId","artifactType","buildNumber","dateAdded","dateBuilt","name","version"]},"gitInfo":{"type":"object","properties":{"headSha":{"type":"string","nullable":true},"baseSha":{"type":"string","nullable":true},"provider":{"type":"string","nullable":true},"headRepoName":{"type":"string","nullable":true},"baseRepoName":{"type":"string","nullable":true},"headRef":{"type":"string","nullable":true},"baseRef":{"type":"string","nullable":true},"prNumber":{"type":"integer","nullable":true}},"required":["baseRef","baseRepoName","baseSha","headRef","headRepoName","headSha","prNumber","provider"],"nullable":true},"platform":{"type":"string","nullable":true},"projectId":{"type":"string"},"projectSlug":{"type":"string"},"buildConfiguration":{"type":"string","nullable":true},"isInstallable":{"type":"boolean"},"installUrl":{"type":"string","nullable":true},"installUrlExpiresAt":{"type":"string","nullable":true},"downloadCount":{"type":"integer"},"releaseNotes":{"type":"string","nullable":true},"installGroups":{"type":"array","items":{"type":"string"},"nullable":true},"isCodeSignatureValid":{"type":"boolean","nullable":true},"profileName":{"type":"string","nullable":true},"codesigningType":{"type":"string","nullable":true}},"required":["appInfo","buildConfiguration","buildId","codesigningType","downloadCount","gitInfo","installGroups","installUrl","installUrlExpiresAt","isCodeSignatureValid","isInstallable","platform","profileName","projectId","projectSlug","releaseNotes","state"],"nullable":true}},"required":["currentArtifact","latestArtifact"]},"examples":{"LatestBuildOnly":{"value":{"latestArtifact":{"buildId":"12345","state":"PROCESSED","appInfo":{"appId":"com.example.app","name":"Example App","version":"1.2.0","buildNumber":42,"artifactType":"AAB","dateAdded":"2025-01-15T10:30:00+00:00","dateBuilt":"2025-01-15T10:00:00+00:00"},"gitInfo":{"headSha":"abc123def456","baseSha":"789xyz000111","provider":"github","headRepoName":"org/repo","baseRepoName":"org/repo","headRef":"feature-branch","baseRef":"main","prNumber":42},"platform":"ANDROID","projectId":"1","projectSlug":"my-project","buildConfiguration":"release","isInstallable":true,"installUrl":"https://sentry.io/api/0/projects/org/project/files/installablepreprodartifact/abc123/?response_format=apk","installUrlExpiresAt":"2025-01-15T22:30:00+00:00","downloadCount":5,"releaseNotes":"Bug fixes and performance improvements.","installGroups":["beta-testers"],"isCodeSignatureValid":null,"profileName":null,"codesigningType":null},"currentArtifact":null},"summary":"Latest Build Only"},"UpdateAvailable":{"value":{"latestArtifact":{"buildId":"12346","state":"PROCESSED","appInfo":{"appId":"com.example.app","name":"Example App","version":"1.3.0","buildNumber":50,"artifactType":"AAB","dateAdded":"2025-01-15T10:30:00+00:00","dateBuilt":"2025-01-15T10:00:00+00:00"},"gitInfo":{"headSha":"abc123def456","baseSha":"789xyz000111","provider":"github","headRepoName":"org/repo","baseRepoName":"org/repo","headRef":"feature-branch","baseRef":"main","prNumber":42},"platform":"ANDROID","projectId":"1","projectSlug":"my-project","buildConfiguration":"release","isInstallable":true,"installUrl":"https://sentry.io/api/0/projects/org/project/files/installablepreprodartifact/abc123/?response_format=apk","installUrlExpiresAt":"2025-01-15T22:30:00+00:00","downloadCount":5,"releaseNotes":"Bug fixes and performance improvements.","installGroups":["beta-testers"],"isCodeSignatureValid":null,"profileName":null,"codesigningType":null},"currentArtifact":{"buildId":"12345","state":"PROCESSED","appInfo":{"appId":"com.example.app","name":"Example App","version":"1.2.0","buildNumber":42,"artifactType":"AAB","dateAdded":"2025-01-15T10:30:00+00:00","dateBuilt":"2025-01-15T10:00:00+00:00"},"gitInfo":{"headSha":"abc123def456","baseSha":"789xyz000111","provider":"github","headRepoName":"org/repo","baseRepoName":"org/repo","headRef":"feature-branch","baseRef":"main","prNumber":42},"platform":"ANDROID","projectId":"1","projectSlug":"my-project","buildConfiguration":"release","isInstallable":true,"installUrl":"https://sentry.io/api/0/projects/org/project/files/installablepreprodartifact/abc123/?response_format=apk","installUrlExpiresAt":"2025-01-15T22:30:00+00:00","downloadCount":5,"releaseNotes":"Bug fixes and performance improvements.","installGroups":["beta-testers"],"isCodeSignatureValid":null,"profileName":null,"codesigningType":null}},"summary":"Update Available"},"NoUpdateAvailable":{"value":{"latestArtifact":{"buildId":"12345","state":"PROCESSED","appInfo":{"appId":"com.example.app","name":"Example App","version":"1.2.0","buildNumber":42,"artifactType":"AAB","dateAdded":"2025-01-15T10:30:00+00:00","dateBuilt":"2025-01-15T10:00:00+00:00"},"gitInfo":{"headSha":"abc123def456","baseSha":"789xyz000111","provider":"github","headRepoName":"org/repo","baseRepoName":"org/repo","headRef":"feature-branch","baseRef":"main","prNumber":42},"platform":"ANDROID","projectId":"1","projectSlug":"my-project","buildConfiguration":"release","isInstallable":true,"installUrl":"https://sentry.io/api/0/projects/org/project/files/installablepreprodartifact/abc123/?response_format=apk","installUrlExpiresAt":"2025-01-15T22:30:00+00:00","downloadCount":5,"releaseNotes":"Bug fixes and performance improvements.","installGroups":["beta-testers"],"isCodeSignatureValid":null,"profileName":null,"codesigningType":null},"currentArtifact":{"buildId":"12345","state":"PROCESSED","appInfo":{"appId":"com.example.app","name":"Example App","version":"1.2.0","buildNumber":42,"artifactType":"AAB","dateAdded":"2025-01-15T10:30:00+00:00","dateBuilt":"2025-01-15T10:00:00+00:00"},"gitInfo":{"headSha":"abc123def456","baseSha":"789xyz000111","provider":"github","headRepoName":"org/repo","baseRepoName":"org/repo","headRef":"feature-branch","baseRef":"main","prNumber":42},"platform":"ANDROID","projectId":"1","projectSlug":"my-project","buildConfiguration":"release","isInstallable":true,"installUrl":"https://sentry.io/api/0/projects/org/project/files/installablepreprodartifact/abc123/?response_format=apk","installUrlExpiresAt":"2025-01-15T22:30:00+00:00","downloadCount":5,"releaseNotes":"Bug fixes and performance improvements.","installGroups":["beta-testers"],"isCodeSignatureValid":null,"profileName":null,"codesigningType":null}},"summary":"No Update Available"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/preprodartifacts/snapshots/":{"post":{"operationId":"uploadProjectPreprodArtifactSnapshot","description":"Upload a new snapshot with image metadata.\n\nThe request body is a JSON object containing `app_id` (required),\n`images` (required, a mapping of filenames to image metadata objects),\nand optional VCS fields (`head_sha`, `base_sha`, `provider`,\n`head_repo_name`, `head_ref`, `base_repo_name`, `base_ref`, `pr_number`).\n\nWhen VCS info with a `base_sha` is provided and a matching base snapshot\nexists, a comparison is automatically triggered.\n\nThis endpoint requires a bearer token with `project:write` access.","summary":"Upload a Snapshot","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Snapshots"],"security":[{"auth_token":["org:ci","project:admin","project:releases","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"artifactId":{"type":"string"},"snapshotMetricsId":{"type":"string"},"imageCount":{"type":"integer"},"snapshotUrl":{"type":"string"}},"required":["artifactId","imageCount","snapshotMetricsId","snapshotUrl"]},"examples":{"SnapshotCreated":{"value":{"artifactId":"100","snapshotMetricsId":"200","imageCount":5,"snapshotUrl":"https://sentry.io/organizations/org/preprod/snapshots/100/"},"summary":"Snapshot Created"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/profiling/profiles/{profile_id}/":{"get":{"operationId":"getProjectProfilingProfile","description":"Retrieve a single profile by its ID.\n\nThe response includes the profile's metadata, its sampled stack data, and the\nassociated release, when one is found.\n\nRequires profiling to be enabled for the organization.","summary":"Retrieve a Profile","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"profile_id","schema":{"type":"string"},"description":"The ID of the profile. Either a numeric ID or a 32-character hexadecimal string.","required":true}],"tags":["Profiling"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{}},"examples":{"ReturnASingleProfileByID":{"value":{"event_id":"9b29bbe17e9d4ee3a6d0fe9b2e8a3b1c","project_id":1,"version":"2","platform":"python","environment":"production","received":"2026-04-15T18:22:31.000Z","timestamp":"2026-04-15T18:22:31.000Z","release":{"id":123456,"version":"1.0.0","status":"open","shortVersion":"1.0.0","versionInfo":{"package":null,"version":{"raw":"1.0.0"},"description":"1.0.0","buildHash":null},"ref":null,"url":null,"dateReleased":"2026-04-15T18:00:00Z","dateCreated":"2026-04-15T18:00:00Z","data":{},"newGroups":0,"owner":null,"commitCount":0,"lastCommit":null,"deployCount":0,"lastDeploy":null,"authors":[],"projects":[{"id":1,"slug":"my-project","name":"my-project","platform":"python"}],"firstEvent":"2026-04-15T18:05:00Z","lastEvent":"2026-04-15T18:30:00Z","currentProjectMeta":{}},"os":{"name":"Linux","version":"5.15.0","build_number":""},"device":{"architecture":"x86_64"},"runtime":{"name":"CPython","version":"3.13.0"},"profile":{"samples":[{"stack_id":0,"thread_id":1,"elapsed_since_start_ns":1000000}],"stacks":[[0,1]],"frames":[{"function":"main","module":"app.main","in_app":true,"lineno":10},{"function":"do_work","module":"app.worker","in_app":true,"lineno":42}],"thread_metadata":{"1":{"name":"MainThread"}}},"transaction":{"name":"GET /api/0/projects/{org}/{proj}/files/dsyms/","trace_id":"0123456789abcdef0123456789abcdef","id":"9b29bbe17e9d4ee3a6d0fe9b2e8a3b1c","active_thread_id":1}},"summary":"Return a single profile by ID"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/releases/":{"get":{"operationId":"listProjectReleases","description":"Retrieve a list of releases for a given project.","summary":"List a Project's Releases","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."},{"in":"query","name":"query","schema":{"type":"string"},"description":"Case-insensitive substring match against the release version."},{"in":"query","name":"per_page","schema":{"type":"integer"},"description":"Limit the number of rows to return in the result. Default and maximum allowed is 100."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Releases"],"security":[{"auth_token":["org:ci","project:admin","project:read","project:releases","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"dateReleased":{"type":"string","format":"date-time","nullable":true},"dateCreated":{"type":"string","format":"date-time","nullable":true},"dateStarted":{"type":"string","format":"date-time","nullable":true},"owner":{"type":"object","additionalProperties":{},"nullable":true},"lastCommit":{"type":"object","additionalProperties":{},"nullable":true},"lastDeploy":{"type":"object","properties":{"dateStarted":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"id":{"type":"string"},"environment":{"type":"string"},"dateFinished":{"type":"string"},"name":{"type":"string"}},"required":["dateFinished","environment","id","name"],"nullable":true},"firstEvent":{"type":"string","format":"date-time","nullable":true},"lastEvent":{"type":"string","format":"date-time","nullable":true},"currentProjectMeta":{"type":"object","additionalProperties":{},"nullable":true},"userAgent":{"type":"string","nullable":true},"adoptionStages":{"type":"object","additionalProperties":{},"nullable":true},"id":{"type":"integer"},"version":{"type":"string"},"newGroups":{"type":"integer"},"status":{"type":"string"},"shortVersion":{"type":"string"},"versionInfo":{"type":"object","properties":{"description":{"type":"string"},"package":{"type":"string","nullable":true},"version":{"type":"object","additionalProperties":{}},"buildHash":{"type":"string","nullable":true}},"required":["buildHash","package","version"],"nullable":true},"data":{"type":"object","additionalProperties":{}},"commitCount":{"type":"integer"},"deployCount":{"type":"integer"},"authors":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string"}},"required":["email","name"]}]}},"projects":{"type":"array","items":{"type":"object","properties":{"healthData":{"type":"object","properties":{"durationP50":{"type":"number","format":"double","nullable":true},"durationP90":{"type":"number","format":"double","nullable":true},"crashFreeUsers":{"type":"number","format":"double","nullable":true},"crashFreeSessions":{"type":"number","format":"double","nullable":true},"totalUsers":{"type":"integer","nullable":true},"totalUsers24h":{"type":"integer","nullable":true},"totalProjectUsers24h":{"type":"integer","nullable":true},"totalSessions":{"type":"integer","nullable":true},"totalSessions24h":{"type":"integer","nullable":true},"totalProjectSessions24h":{"type":"integer","nullable":true},"adoption":{"type":"number","format":"double","nullable":true},"sessionsAdoption":{"type":"number","format":"double","nullable":true},"sessionsCrashed":{"type":"integer"},"sessionsErrored":{"type":"integer"},"hasHealthData":{"type":"boolean"},"stats":{"type":"object","additionalProperties":{}}},"required":["hasHealthData","sessionsCrashed","sessionsErrored","stats"],"nullable":true},"dateReleased":{"type":"string","format":"date-time","nullable":true},"dateCreated":{"type":"string","format":"date-time","nullable":true},"dateStarted":{"type":"string","format":"date-time","nullable":true},"id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"platforms":{"type":"array","items":{"type":"string"},"nullable":true},"hasHealthData":{"type":"boolean"},"newGroups":{"type":"integer"}},"required":["hasHealthData","id","name","newGroups","platform","platforms","slug"]}}},"required":["authors","commitCount","data","deployCount","id","newGroups","projects","shortVersion","status","version","versionInfo"]}},"examples":{"ReturnAListOfReleasesForAProject":{"value":[{"id":1,"version":"frontend@1.0.0","shortVersion":"frontend@1.0.0","status":"open","versionInfo":{"package":"frontend","version":{"raw":"1.0.0","major":1,"minor":0,"patch":0,"pre":null,"buildCode":null,"components":3},"description":"1.0.0","buildHash":null},"ref":null,"url":null,"dateReleased":null,"dateCreated":"2024-01-01T00:00:00Z","data":{},"newGroups":0,"owner":null,"commitCount":0,"lastCommit":null,"deployCount":0,"lastDeploy":null,"authors":[],"projects":[{"id":1,"slug":"sentry","name":"sentry","newGroups":0,"platform":"javascript","platforms":["javascript"],"hasHealthData":false}],"firstEvent":null,"lastEvent":null,"currentProjectMeta":{},"userAgent":null}],"summary":"Return a list of releases for a project"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/releases/{version}/commits/":{"get":{"operationId":"listProjectReleaseCommits","description":"Retrieve a list of commits for a given release.","summary":"List a Project Release's Commits","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"version","schema":{"type":"string"},"description":"The version identifier of the release","required":true},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Releases"],"security":[{"auth_token":["org:ci","project:admin","project:read","project:releases","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"message":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"pullRequest":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string","nullable":true},"message":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"mergedAt":{"type":"string","format":"date-time","nullable":true},"status":{"enum":["merged","open","closed","draft","unknown",null],"type":"string","nullable":true},"repository":{"type":"object","properties":{"url":{"type":"string","nullable":true},"provider":{"type":"object","additionalProperties":{"type":"string"}},"status":{"type":"string"},"integrationId":{"type":"string","nullable":true},"externalSlug":{"type":"string","nullable":true},"externalId":{"type":"string","nullable":true},"settings":{"type":"object","properties":{"enabledCodeReview":{"type":"boolean"},"codeReviewTriggers":{"type":"array","items":{"type":"string"}}},"required":["codeReviewTriggers","enabledCodeReview"],"nullable":true},"id":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","id","name"]},"author":{"anyOf":[{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string"}},"required":["email","name"]}]},"externalUrl":{"type":"string"}},"required":["author","dateCreated","externalUrl","id","mergedAt","message","repository","status","title"],"nullable":true},"suspectCommitType":{"type":"string"},"repository":{"type":"object","properties":{"url":{"type":"string","nullable":true},"provider":{"type":"object","additionalProperties":{"type":"string"}},"status":{"type":"string"},"integrationId":{"type":"string","nullable":true},"externalSlug":{"type":"string","nullable":true},"externalId":{"type":"string","nullable":true},"settings":{"type":"object","properties":{"enabledCodeReview":{"type":"boolean"},"codeReviewTriggers":{"type":"array","items":{"type":"string"}}},"required":["codeReviewTriggers","enabledCodeReview"],"nullable":true},"id":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","id","name"]},"author":{"anyOf":[{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string"}},"required":["email","name"]},{"type":"object","description":"The commit serializer emits ``{}`` for ``author`` when the commit has no\nmapped author, so the published schema must allow an empty object alongside a\npopulated ``Author``."}]},"releases":{"type":"array","items":{"type":"object","properties":{"version":{"type":"string"},"shortVersion":{"type":"string"},"ref":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"dateReleased":{"type":"string","format":"date-time","nullable":true},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","dateReleased","ref","shortVersion","url","version"]}}},"required":["dateCreated","id","message","pullRequest","releases","suspectCommitType"]}},"examples":{"ReturnAListOfCommitsForARelease":{"value":[{"id":"a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2","message":"fix: handle empty release version","dateCreated":"2024-01-01T00:00:00Z","pullRequest":null,"suspectCommitType":"","releases":[{"version":"frontend@1.0.0","shortVersion":"1.0.0","ref":null,"url":null,"dateReleased":null,"dateCreated":"2024-01-01T00:00:00Z"}]}],"summary":"Return a list of commits for a release"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/releases/{version}/files/":{"get":{"operationId":"listProjectReleaseFiles","description":"Retrieve a list of files for a given release.","summary":"List a Project's Release Files","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"version","schema":{"type":"string"},"description":"The version identifier of the release","required":true},{"in":"query","name":"query","schema":{"type":"array","items":{"type":"string"}},"description":"If set, only files with these partial names will be returned."},{"in":"query","name":"checksum","schema":{"type":"array","items":{"type":"string"}},"description":"If set, only files with these exact checksums will be returned."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Releases"],"security":[{"auth_token":["org:ci","project:admin","project:read","project:releases","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"dist":{"type":"string","nullable":true},"headers":{"type":"object","additionalProperties":{}},"size":{"type":"integer"},"sha1":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","dist","headers","id","name","sha1","size"]}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"post":{"operationId":"uploadProjectReleaseFile","description":"Upload a new file for the given release.\n\nFiles must be uploaded using the `multipart/form-data` content type, against the\nregion-specific domain (e.g. `us.sentry.io` or `de.sentry.io`).","summary":"Upload a New Project Release File","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"version","schema":{"type":"string"},"description":"The version identifier of the release","required":true}],"tags":["Releases"],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","description":"Documents the multipart/form-data body of the release file upload endpoints.\n\nThe endpoints read the upload directly off ``request.data``; this serializer\nexists to describe the request body in the OpenAPI schema.","properties":{"file":{"type":"string","format":"uri","description":"The multipart-encoded file contents to upload."},"name":{"type":"string","description":"The name (full path) the file will be referenced as, e.g. the full web URI of a JavaScript file. Defaults to the uploaded file's name."},"dist":{"type":"string","description":"The name of the distribution to associate the file with."},"header":{"type":"array","items":{"type":"string"},"description":"Headers to attach to the file, each formatted as a `\"key:value\"` string (for example, to define a content type). May be supplied multiple times."}},"required":["file"]}}},"required":true},"security":[{"auth_token":["org:ci","project:admin","project:releases","project:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"dist":{"type":"string","nullable":true},"headers":{"type":"object","additionalProperties":{}},"size":{"type":"integer"},"sha1":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","dist","headers","id","name","sha1","size"]}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"409":{"description":"Conflict"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/releases/{version}/files/{file_id}/":{"get":{"operationId":"getProjectReleaseFile","description":"Return metadata for an individual file within a release. Does not return the file\ncontents unless `download` is set.","summary":"Retrieve a Project Release's File","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"version","schema":{"type":"string"},"description":"The version identifier of the release","required":true},{"in":"path","name":"file_id","schema":{"type":"string"},"description":"The ID of the release file.","required":true},{"in":"query","name":"download","schema":{"type":"string"},"description":"If set, download the file contents instead of returning metadata."}],"tags":["Releases"],"security":[{"auth_token":["org:ci","project:admin","project:read","project:releases","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"dist":{"type":"string","nullable":true},"headers":{"type":"object","additionalProperties":{}},"size":{"type":"integer"},"sha1":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","dist","headers","id","name","sha1","size"]}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"updateProjectReleaseFile","description":"Update metadata of an existing release file. Currently only the name of the file\ncan be changed.","summary":"Update a Project Release File","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"version","schema":{"type":"string"},"description":"The version identifier of the release","required":true},{"in":"path","name":"file_id","schema":{"type":"string"},"description":"The ID of the release file.","required":true}],"tags":["Releases"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The new name (full path) of the file.","maxLength":200}},"required":["name"]}}},"required":true},"security":[{"auth_token":["org:ci","project:admin","project:releases","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"dist":{"type":"string","nullable":true},"headers":{"type":"object","additionalProperties":{}},"size":{"type":"integer"},"sha1":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","dist","headers","id","name","sha1","size"]}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteProjectReleaseFile","description":"Permanently remove a file from a release. Also removes the physical file from\nstorage, unless it is stored as part of an artifact bundle.","summary":"Delete a Project Release's File","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"version","schema":{"type":"string"},"description":"The version identifier of the release","required":true},{"in":"path","name":"file_id","schema":{"type":"string"},"description":"The ID of the release file.","required":true}],"tags":["Releases"],"security":[{"auth_token":["project:admin","project:releases"]}],"responses":{"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/releases/completion/":{"get":{"operationId":"getProjectReleaseSetupCompletion","description":"Return the project's release-setup progress for these steps:\n\n- `tag`: The project has an issue with a recorded first release.\n- `repo`: The organization has at least one repository.\n- `commit`: At least one of the project's 1,000 most recent releases (by release ID) has an associated commit.\n- `deploy`: At least one of the project's releases has a deploy.\n\nResults are cached for one hour when a step is complete and one minute otherwise.","summary":"Retrieve a Project's Release Setup Progress","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Releases"],"security":[{"auth_token":["org:ci","project:admin","project:read","project:releases","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"step":{"enum":["tag","repo","commit","deploy"],"type":"string"},"complete":{"type":"boolean"}},"required":["complete","step"]}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/replays/{replay_id}/":{"delete":{"operationId":"deleteProjectReplay","description":"Delete a replay.","summary":"Delete a Replay Instance","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"replay_id","schema":{"type":"string","pattern":"^[0-9a-f]{32}$"},"description":"The ID of the replay you'd like to retrieve. It is a 32-character hexadecimal string.","required":true}],"tags":["Replays"],"security":[{"auth_token":["project:admin","project:write"]}],"responses":{"204":{"description":"No Content"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/replays/{replay_id}/clicks/":{"get":{"operationId":"listProjectReplayClicks","description":"Retrieve a collection of RRWeb DOM node-ids and the timestamp they were clicked.","summary":"List Clicked Nodes","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"replay_id","schema":{"type":"string","pattern":"^[0-9a-f]{32}$"},"description":"The ID of the replay you'd like to retrieve. It is a 32-character hexadecimal string.","required":true},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."},{"in":"query","name":"per_page","schema":{"type":"integer"},"description":"Limit the number of rows to return in the result. Default and maximum allowed is 100."},{"in":"query","name":"query","schema":{"type":"string"},"description":"Filters results by using [query syntax](/product/sentry-basics/search/).\n\nExample: `query=(transaction:foo AND release:abc) OR (transaction:[bar,baz] AND release:def)`\n"}],"tags":["Replays"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"node_id":{"type":"integer"},"timestamp":{"type":"string","format":"date-time"}},"required":["node_id","timestamp"]}}},"required":["data"]},"examples":{"RetrieveACollectionOfRRWebDOMNode-idsAndTheTimestampTheyWereClicked.":{"value":{"data":[{"node_id":1,"timestamp":"2024-02-08T15:52:25+00:00"}]},"summary":"Retrieve a collection of RRWeb DOM node-ids and the timestamp they were clicked."}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/replays/{replay_id}/recording-segments/":{"get":{"operationId":"listProjectReplayRecordingSegments","description":"Return a collection of replay recording segments.","summary":"List Recording Segments","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"replay_id","schema":{"type":"string","pattern":"^[0-9a-f]{32}$"},"description":"The ID of the replay you'd like to retrieve. It is a 32-character hexadecimal string.","required":true},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"},{"in":"query","name":"per_page","schema":{"type":"integer"},"description":"Limit the number of rows to return in the result. Default and maximum allowed is 100."}],"tags":["Replays"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"examples":{"RetrieveACollectionOfReplaySegments":{"value":[[{"type":5,"timestamp":1658770772.902,"data":{"tag":"performanceSpan","payload":{"op":"memory","description":"","startTimestamp":1658770772.902,"endTimestamp":1658770772.902,"data":{"memory":{"jsHeapSizeLimit":4294705152,"totalJSHeapSize":10204109,"usedJSHeapSize":9131621}}}}}],[{"type":5,"timestamp":1665063926.125,"data":{"tag":"performanceSpan","payload":{"op":"navigation.navigate","description":"https://sentry.io","startTimestamp":1665063926.125,"endTimestamp":1665063926.833,"data":{"size":9538,"duration":710}}}}]],"summary":"Retrieve a collection of replay segments"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"429":{"description":"Too Many Requests"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/replays/{replay_id}/recording-segments/{segment_id}/":{"get":{"operationId":"getProjectReplayRecordingSegment","description":"Return a replay recording segment.","summary":"Retrieve a Recording Segment","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"replay_id","schema":{"type":"string","pattern":"^[0-9a-f]{32}$"},"description":"The ID of the replay you'd like to retrieve. It is a 32-character hexadecimal string.","required":true},{"in":"path","name":"segment_id","schema":{"type":"integer"},"description":"The ID of the segment you'd like to retrieve.","required":true}],"tags":["Replays"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"replayId":{"type":"string"},"segmentId":{"type":"integer"},"projectId":{"type":"string"},"dateAdded":{"type":"string","nullable":true}},"required":["dateAdded","projectId","replayId","segmentId"]}},"required":["data"]},"examples":{"RetrieveAReplaySegment":{"value":{"data":{"replayId":"7e07485f6c25420c87f5a0ec3a8db3a3","segmentId":0,"projectId":"4505321021243392","dateAdded":"2024-01-15T22:23:15+00:00"}},"summary":"Retrieve a replay segment"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/replays/{replay_id}/viewed-by/":{"get":{"operationId":"listProjectReplayViewedBy","description":"Return a list of users who have viewed a replay.","summary":"List Users Who Have Viewed a Replay","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"replay_id","schema":{"type":"string","pattern":"^[0-9a-f]{32}$"},"description":"The ID of the replay you'd like to retrieve. It is a 32-character hexadecimal string.","required":true}],"tags":["Replays"],"security":[{"auth_token":["event:admin","event:read","event:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"viewed_by":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["viewed_by"]}},"required":["data"]},"examples":{"GetListOfUsersWhoHaveViewedAReplay":{"value":{"data":{"viewed_by":[{"id":"884411","name":"some.body@sentry.io","username":"d93522a35cb64c13991104bd73d44519","email":"some.body@sentry.io","avatarUrl":"https://gravatar.com/avatar/d93522a35cb64c13991104bd73d44519d93522a35cb64c13991104bd73d44519?s=32&d=mm","isActive":true,"hasPasswordAuth":false,"isManaged":false,"dateJoined":"2022-07-25T23:36:29.593212Z","lastLogin":"2024-03-14T18:11:28.740309Z","has2fa":true,"lastActive":"2024-03-15T22:22:06.925934Z","isSuperuser":true,"isStaff":false,"experiments":{},"emails":[{"id":"2231333","email":"some.body@sentry.io","is_verified":true}],"avatar":{"avatarType":"upload","avatarUuid":"499dcd0764da42a589654a2224086e67","avatarUrl":"https://sentry.io/avatar/499dcd0764da42a589654a2224086e67/"},"type":"user"}]}},"summary":"Get list of users who have viewed a replay"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/replays/jobs/delete/":{"get":{"operationId":"listProjectReplayDeletionJobs","description":"Retrieve a collection of replay delete jobs.","summary":"List Replay Batch-Deletion Jobs","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Replays"],"security":[{"auth_token":["project:admin","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"dateCreated":{"type":"string"},"dateUpdated":{"type":"string"},"rangeStart":{"type":"string"},"rangeEnd":{"type":"string"},"environments":{"type":"array","items":{"type":"string"}},"status":{"type":"string"},"query":{"type":"string"},"countDeleted":{"type":"integer"}},"required":["countDeleted","dateCreated","dateUpdated","environments","id","query","rangeEnd","rangeStart","status"]}}},"required":["data"]},"examples":{"ListReplayBatchDeletionJobs":{"value":{"data":[{"id":1,"dateCreated":"2024-01-01T00:00:00Z","dateUpdated":"2024-01-01T00:05:00Z","rangeStart":"2023-12-01T00:00:00Z","rangeEnd":"2024-01-01T00:00:00Z","environments":["production"],"status":"pending","query":"user.email:test@example.com","countDeleted":0}]},"summary":"List replay batch deletion jobs"}}}},"description":""},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"post":{"operationId":"createProjectReplayDeletionJob","description":"Create a new replay deletion job.","summary":"Create Replay Batch Deletion Job","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Replays"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"rangeStart":{"type":"string","format":"date-time"},"rangeEnd":{"type":"string","format":"date-time"},"environments":{"type":"array","items":{"type":"string"}},"query":{"type":"string","nullable":true}},"required":["environments","query","rangeEnd","rangeStart"]}},"required":["data"]}}},"required":true},"security":[{"auth_token":["project:admin","project:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"dateCreated":{"type":"string"},"dateUpdated":{"type":"string"},"rangeStart":{"type":"string"},"rangeEnd":{"type":"string"},"environments":{"type":"array","items":{"type":"string"}},"status":{"type":"string"},"query":{"type":"string"},"countDeleted":{"type":"integer"}},"required":["countDeleted","dateCreated","dateUpdated","environments","id","query","rangeEnd","rangeStart","status"]}},"required":["data"]},"examples":{"CreateAnAsyncJobToBatchDeleteReplayInstances":{"value":{"data":{"id":1,"dateCreated":"2024-01-01T00:00:00Z","dateUpdated":"2024-01-01T00:05:00Z","rangeStart":"2023-12-01T00:00:00Z","rangeEnd":"2024-01-01T00:00:00Z","environments":["production"],"status":"pending","query":"user.email:test@example.com","countDeleted":0}},"summary":"Create an async job to batch delete replay instances"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/replays/jobs/delete/{job_id}/":{"get":{"operationId":"getProjectReplayDeletionJob","description":"Fetch a replay delete job instance.","summary":"Retrieve a Replay Batch-Deletion Job","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"job_id","schema":{"type":"integer"},"description":"The ID of the replay deletion job you'd like to retrieve.","required":true}],"tags":["Replays"],"security":[{"auth_token":["project:admin","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"dateCreated":{"type":"string"},"dateUpdated":{"type":"string"},"rangeStart":{"type":"string"},"rangeEnd":{"type":"string"},"environments":{"type":"array","items":{"type":"string"}},"status":{"type":"string"},"query":{"type":"string"},"countDeleted":{"type":"integer"}},"required":["countDeleted","dateCreated","dateUpdated","environments","id","query","rangeEnd","rangeStart","status"]}},"required":["data"]},"examples":{"GetAReplayBatchDeletionJob":{"value":{"data":{"id":1,"dateCreated":"2024-01-01T00:00:00Z","dateUpdated":"2024-01-01T00:05:00Z","rangeStart":"2023-12-01T00:00:00Z","rangeEnd":"2024-01-01T00:00:00Z","environments":["production"],"status":"pending","query":"user.email:test@example.com","countDeleted":0}},"summary":"Get a replay batch deletion job"}}}},"description":""},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/repo/":{"get":{"operationId":"listProjectRepositories","description":"List all repositories linked to a project.\n\nPass `?includeMappingCount=1` to include the number of code path mappings\nper repository. Omitting it keeps the query cheaper for callers that\nonly need the list of connections.","summary":"List Repositories Linked to a Project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"query","name":"includeMappingCount","schema":{"type":"string"},"description":"When set to `1`, each row includes a `mappingCount` field with the number of code path mappings for that repository. Omitted by default to keep the response lightweight."}],"tags":["Projects"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"integrationId":{"type":"string","nullable":true},"externalId":{"type":"string","nullable":true},"projectId":{"type":"string"},"repositoryId":{"type":"string"},"repoName":{"type":"string"},"source":{"type":"string"},"providerKey":{"type":"string","nullable":true},"mappingCount":{"type":"integer"}},"required":["externalId","id","integrationId","projectId","providerKey","repoName","repositoryId","source"]}}}},"description":""}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"post":{"operationId":"linkProjectRepository","description":"Link a repository to a project. The repository must already exist\nin the organization (connected via a VCS integration). Idempotent:\nreturns 200 if the link already exists, 201 if created.","summary":"Link a Repository to a Project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Projects"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"repositoryId":{"type":"integer","description":"The ID of the repository to link."}},"required":["repositoryId"]}}},"required":true},"security":[{"auth_token":["project:admin","project:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"repositoryId":{"type":"string"},"source":{"type":"string"},"created":{"type":"boolean"}},"required":["created","id","projectId","repositoryId","source"]}}},"description":""},"400":{"description":"Bad Request"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/seer/repos/":{"get":{"operationId":"listProjectSeerRepositories","description":"**Experimental:** This API is under active development and may change.\n\nList repositories connected to Seer for the project.","summary":"List Repositories Configured for Seer","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"query","name":"query","schema":{"type":"string"},"description":"Filter repositories using Sentry search syntax. `name` supports substring matching and is also the free-text key. `provider` supports `=`, `!=`, `IN`, and `NOT IN` operators, and matches with or without the `integrations:` prefix."},{"in":"query","name":"sortBy","schema":{"type":"string","enum":["-name","-provider","name","provider"]},"description":"Sort by repository name or provider. Defaults to `name`."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"},{"in":"query","name":"per_page","schema":{"type":"integer"},"description":"The maximum number of results per page."}],"tags":["Projects"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"repositoryId":{"type":"string"},"organizationId":{"type":"string"},"provider":{"type":"string"},"owner":{"type":"string"},"name":{"type":"string"},"externalId":{"type":"string"},"integrationId":{"type":"string","nullable":true},"branchName":{"type":"string","nullable":true},"branchOverrides":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"tagName":{"type":"string"},"tagValue":{"type":"string"},"branchName":{"type":"string"}},"required":["branchName","id","tagName","tagValue"]}},"instructions":{"type":"string","nullable":true}},"required":["branchName","branchOverrides","externalId","id","instructions","integrationId","name","organizationId","owner","provider","repositoryId"]}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"},"x-sentry-experimental":true},"post":{"operationId":"addProjectSeerRepositories","description":"**Experimental:** This API is under active development and may change.\n\nAdd the specified repositories to Seer without removing other repositories. At least one repository is required. Re-submitting a repository replaces its branchName, instructions, and branchOverrides; omitted values are cleared.","summary":"Add Repositories to Seer for a Project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Projects"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"repos":{"type":"array","items":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"repository_id":{"type":"integer","description":"The ID of an active, supported repository in the organization."},"branch_name":{"type":"string","nullable":true,"description":"The branch Seer works from in this repository. Leave empty to use the repository's default branch."},"instructions":{"type":"string","nullable":true,"description":"Extra context Seer should use when working with this repository."},"branch_overrides":{"type":"array","items":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"tag_name":{"type":"string","description":"Event tag key to match."},"tag_value":{"type":"string","description":"Event tag value to match."},"branch_name":{"type":"string","description":"The repository branch Seer uses for issues whose events have this tag value."}},"required":["branch_name","tag_name","tag_value"]},"description":"Deprecated. Branch overrides selected by matching tags.","deprecated":true}},"required":["repository_id"]},"description":"Repositories to link and configure for Seer in this project."}},"required":["repos"]}}},"required":true},"security":[{"auth_token":["project:admin","project:write"]}],"responses":{"204":{"description":"No Content"},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"},"x-sentry-experimental":true},"put":{"operationId":"replaceProjectSeerRepositories","description":"**Experimental:** This API is under active development and may change.\n\nReplace the project's active Seer repository configurations with the submitted repositories. An empty `repos` list removes all active Seer repository configurations. Inactive repository configurations are retained and become available again if the repositories are reactivated.","summary":"Replace Repositories Configured for Seer","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Projects"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"repos":{"type":"array","items":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"repository_id":{"type":"integer","description":"The ID of an active, supported repository in the organization."},"branch_name":{"type":"string","nullable":true,"description":"The branch Seer works from in this repository. Leave empty to use the repository's default branch."},"instructions":{"type":"string","nullable":true,"description":"Extra context Seer should use when working with this repository."},"branch_overrides":{"type":"array","items":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"tag_name":{"type":"string","description":"Event tag key to match."},"tag_value":{"type":"string","description":"Event tag value to match."},"branch_name":{"type":"string","description":"The repository branch Seer uses for issues whose events have this tag value."}},"required":["branch_name","tag_name","tag_value"]},"description":"Deprecated. Branch overrides selected by matching tags.","deprecated":true}},"required":["repository_id"]},"description":"Repositories to link and configure for Seer in this project."}},"required":["repos"]}}},"required":true},"security":[{"auth_token":["project:admin","project:write"]}],"responses":{"204":{"description":"No Content"},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"},"x-sentry-experimental":true}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/stacktrace-link/":{"get":{"operationId":"getProjectStacktraceLink","description":"Resolve a stack trace filename to its linked source file using the project's code mappings and connected source code integrations.","summary":"Get a Source Code Link for a Stack Trace Frame","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"query","name":"file","schema":{"type":"string"},"description":"The file path from the stack trace frame.","required":true},{"in":"query","name":"platform","schema":{"type":"string"},"description":"The platform associated with the frame."},{"in":"query","name":"absPath","schema":{"type":"string"},"description":"The absolute path of the stack frame, if known."},{"in":"query","name":"commitId","schema":{"type":"string"},"description":"The commit ID associated with the event."},{"in":"query","name":"sdkName","schema":{"type":"string"},"description":"The SDK name associated with the event."},{"in":"query","name":"module","schema":{"type":"string"},"description":"The module name, if known."},{"in":"query","name":"package","schema":{"type":"string"},"description":"The package name, if known."},{"in":"query","name":"lineNo","schema":{"type":"string"},"description":"The source line number, if known."},{"in":"query","name":"groupId","schema":{"type":"string"},"description":"The issue ID, if known."}],"tags":["Integrations"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"sourcePath":{"type":"string","nullable":true},"attemptedUrl":{"type":"string","nullable":true},"error":{"type":"string","nullable":true},"config":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"projectSlug":{"type":"string"},"repoId":{"type":"string"},"repoName":{"type":"string"},"integrationId":{"type":"string","nullable":true},"provider":{"type":"object","properties":{"key":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"canAdd":{"type":"boolean"},"canDisable":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"aspects":{"type":"object","additionalProperties":{}}},"required":["aspects","canAdd","canDisable","features","key","name","slug"],"nullable":true},"stackRoot":{"type":"string"},"sourceRoot":{"type":"string"},"defaultBranch":{"type":"string","nullable":true},"automaticallyGenerated":{"type":"boolean"},"hasCodeOwner":{"type":"boolean"}},"required":["automaticallyGenerated","defaultBranch","hasCodeOwner","id","integrationId","projectId","projectSlug","provider","repoId","repoName","sourceRoot","stackRoot"],"nullable":true},"sourceUrl":{"type":"string","nullable":true},"integrations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string","nullable":true},"domainName":{"type":"string","nullable":true},"accountType":{"type":"string","nullable":true},"scopes":{"type":"array","items":{"type":"string"},"nullable":true},"outOfDate":{"type":"boolean","nullable":true},"missingFeatures":{"type":"array","items":{"type":"object","description":"A feature the installation can no longer support, named by the permission\ntier it falls short of, so the update-permissions modal can list them.","properties":{"key":{"type":"string"},"description":{"type":"string"}},"required":["description","key"]},"nullable":true},"status":{"type":"string"},"provider":{"type":"object","properties":{"key":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"canAdd":{"type":"boolean"},"canDisable":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"aspects":{"type":"object","additionalProperties":{}}},"required":["aspects","canAdd","canDisable","features","key","name","slug"]}},"required":["accountType","domainName","icon","id","missingFeatures","name","outOfDate","provider","scopes","status"]}}},"required":["config","error","integrations","sourceUrl"]}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/stats/":{"get":{"operationId":"listProjectStats","description":"Return a set of points representing a normalized timestamp and the number of\nevents seen in the period.\n\nQuery ranges are limited to Sentry's configured time-series resolutions.\nThis endpoint may change in the future without notice.","summary":"Retrieve Event Counts for a Project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"query","name":"stat","schema":{"type":"string","enum":["blacklisted","generated","received","rejected"]},"description":"The name of the stat to query. Defaults to `received`."},{"in":"query","name":"since","schema":{"type":"number","format":"double"},"description":"A UNIX timestamp (in seconds) that sets the start of the query range."},{"in":"query","name":"until","schema":{"type":"number","format":"double"},"description":"A UNIX timestamp (in seconds) that sets the end of the query range."},{"in":"query","name":"resolution","schema":{"type":"string","enum":["10s","1d","1h"]},"description":"An explicit time series resolution."}],"tags":["Projects"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"array","items":{"type":"integer"},"minLength":2,"maxLength":2}},"examples":{"ProjectEventCounts":{"value":[[1541455200,1184],[1541458800,1410],[1541462400,1440],[1541466000,1682],[1541469600,1203],[1541473200,497],[1541476800,661],[1541480400,1481],[1541484000,678],[1541487600,1857],[1541491200,819],[1541494800,1013],[1541498400,1883],[1541502000,1450],[1541505600,1102],[1541509200,1317],[1541512800,1017],[1541516400,813],[1541520000,1189],[1541523600,496],[1541527200,1936],[1541530800,1405],[1541534400,617],[1541538000,1533]],"summary":"Project event counts"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/symbol-sources/":{"get":{"operationId":"listProjectSymbolSources","description":"List custom symbol sources configured for a project.","summary":"Retrieve a Project's Symbol Sources","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"query","name":"id","schema":{"type":"string"},"description":"The ID of the source to look up. If this is not provided, all sources are returned."}],"tags":["Projects"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["http"]},"url":{"type":"string"},"username":{"type":"string"},"password":{"type":"object","properties":{"hidden-secret":{"type":"boolean","enum":[true]}}},"id":{"type":"string","minLength":1},"name":{"type":"string"},"layout":{"type":"object","properties":{"type":{"type":"string","enum":["native","symstore","symstore_index2","ssqp","unified","debuginfod","slashsymbols","nxsymstore"]},"casing":{"type":"string","enum":["lowercase","uppercase","default"]}},"required":["type"],"additionalProperties":false},"filters":{"type":"object","properties":{"filetypes":{"type":"array","items":{"type":"string","enum":["pe","pdb","portablepdb","mach_debug","mach_code","elf_debug","elf_code","wasm_debug","wasm_code","breakpad","sourcebundle","uuidmap","bcsymbolmap","il2cpp","proguard","dartsymbolmap"]}},"path_patterns":{"type":"array","items":{"type":"string"}},"requires_checksum":{"type":"boolean"}},"additionalProperties":false},"is_public":{"type":"boolean"},"has_index":{"type":"boolean"},"platforms":{"type":"array","items":{"type":"string"}}},"required":["type","id","url","layout"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["s3"]},"bucket":{"type":"string"},"region":{"type":"string"},"access_key":{"type":"string"},"secret_key":{"type":"object","properties":{"hidden-secret":{"type":"boolean","enum":[true]}}},"prefix":{"type":"string"},"id":{"type":"string","minLength":1},"name":{"type":"string"},"layout":{"type":"object","properties":{"type":{"type":"string","enum":["native","symstore","symstore_index2","ssqp","unified","debuginfod","slashsymbols","nxsymstore"]},"casing":{"type":"string","enum":["lowercase","uppercase","default"]}},"required":["type"],"additionalProperties":false},"filters":{"type":"object","properties":{"filetypes":{"type":"array","items":{"type":"string","enum":["pe","pdb","portablepdb","mach_debug","mach_code","elf_debug","elf_code","wasm_debug","wasm_code","breakpad","sourcebundle","uuidmap","bcsymbolmap","il2cpp","proguard","dartsymbolmap"]}},"path_patterns":{"type":"array","items":{"type":"string"}},"requires_checksum":{"type":"boolean"}},"additionalProperties":false},"is_public":{"type":"boolean"},"has_index":{"type":"boolean"},"platforms":{"type":"array","items":{"type":"string"}}},"required":["type","id","bucket","region","access_key","secret_key","layout"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["gcs"]},"bucket":{"type":"string"},"client_email":{"type":"string"},"private_key":{"type":"object","properties":{"hidden-secret":{"type":"boolean","enum":[true]}}},"prefix":{"type":"string"},"id":{"type":"string","minLength":1},"name":{"type":"string"},"layout":{"type":"object","properties":{"type":{"type":"string","enum":["native","symstore","symstore_index2","ssqp","unified","debuginfod","slashsymbols","nxsymstore"]},"casing":{"type":"string","enum":["lowercase","uppercase","default"]}},"required":["type"],"additionalProperties":false},"filters":{"type":"object","properties":{"filetypes":{"type":"array","items":{"type":"string","enum":["pe","pdb","portablepdb","mach_debug","mach_code","elf_debug","elf_code","wasm_debug","wasm_code","breakpad","sourcebundle","uuidmap","bcsymbolmap","il2cpp","proguard","dartsymbolmap"]}},"path_patterns":{"type":"array","items":{"type":"string"}},"requires_checksum":{"type":"boolean"}},"additionalProperties":false},"is_public":{"type":"boolean"},"has_index":{"type":"boolean"},"platforms":{"type":"array","items":{"type":"string"}}},"required":["type","id","bucket","client_email","private_key","layout"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["azure"]},"account":{"type":"string","pattern":"^[a-z0-9]{3,24}$"},"container":{"type":"string"},"tenant_id":{"type":"string"},"client_id":{"type":"string"},"client_secret":{"type":"object","properties":{"hidden-secret":{"type":"boolean","enum":[true]}}},"prefix":{"type":"string"},"id":{"type":"string","minLength":1},"name":{"type":"string"},"layout":{"type":"object","properties":{"type":{"type":"string","enum":["native","symstore","symstore_index2","ssqp","unified","debuginfod","slashsymbols","nxsymstore"]},"casing":{"type":"string","enum":["lowercase","uppercase","default"]}},"required":["type"],"additionalProperties":false},"filters":{"type":"object","properties":{"filetypes":{"type":"array","items":{"type":"string","enum":["pe","pdb","portablepdb","mach_debug","mach_code","elf_debug","elf_code","wasm_debug","wasm_code","breakpad","sourcebundle","uuidmap","bcsymbolmap","il2cpp","proguard","dartsymbolmap"]}},"path_patterns":{"type":"array","items":{"type":"string"}},"requires_checksum":{"type":"boolean"}},"additionalProperties":false},"is_public":{"type":"boolean"},"has_index":{"type":"boolean"},"platforms":{"type":"array","items":{"type":"string"}}},"required":["type","id","account","container","tenant_id","client_id","client_secret","layout"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["appStoreConnect"]},"id":{"type":"string","minLength":1},"name":{"type":"string"},"appconnectIssuer":{"type":"string","minLength":36,"maxLength":36},"appconnectKey":{"type":"string","minLength":2,"maxLength":20},"appconnectPrivateKey":{"type":"string"},"appName":{"type":"string","minLength":1,"maxLength":512},"appId":{"type":"string","minLength":1},"bundleId":{"type":"string","minLength":1}},"required":["type","id","name","appconnectIssuer","appconnectKey","appconnectPrivateKey","appName","appId","bundleId"],"additionalProperties":false}]}},"examples":{"ListCustomSymbolSourcesConfiguredForAProject.":{"value":[{"id":"honk","name":"honk source","layout":{"type":"native"},"type":"http","url":"http://honk.beep","username":"honkhonk","password":{"hidden-secret":true}},{"id":"beep","name":"beep source","layout":{"type":"native"},"type":"gcs","bucket":"mybucket","client_email":"honk@beep.com","private_key":{"hidden-secret":true}}],"summary":"List custom symbol sources configured for a project."}}}},"description":""},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"post":{"operationId":"addProjectSymbolSource","description":"Add a custom symbol source to a project.","summary":"Add a Symbol Source to a Project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true}],"tags":["Projects"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"enum":["http","gcs","s3","azure"],"type":"string","description":"The type of the source.\n\n* `http` - SymbolServer (HTTP)\n* `gcs` - Google Cloud Storage\n* `s3` - Amazon S3\n* `azure` - Azure Blob Storage"},"name":{"type":"string","description":"The human-readable name of the source."},"id":{"type":"string","description":"The internal ID of the source. Must be distinct from all other source IDs and cannot start with '`sentry:`'. If this is not provided, a new UUID will be generated."},"layout":{"type":"object","description":"Layout settings for the source. This is required for HTTP, GCS, and S3 sources.\n\n**`type`** ***(string)*** - The layout of the folder structure. The options are:\n- `native` - Platform-Specific (SymStore / GDB / LLVM)\n- `symstore` - Microsoft SymStore\n- `symstore_index2` - Microsoft SymStore (with index2.txt)\n- `ssqp` - Microsoft SSQP\n- `unified` - Unified Symbol Server Layout\n- `debuginfod` - debuginfod\n- `nxsymstore` - Nintendo NXSymStore\n\n**`casing`** ***(string)*** - The layout of the folder structure. The options are:\n- `default` - Default (mixed case)\n- `uppercase` - Uppercase\n- `lowercase` - Lowercase\n\n```json\n{\n \"layout\": {\n \"type\": \"native\"\n \"casing\": \"default\"\n }\n}\n```","properties":{"type":{"enum":["native","symstore","symstore_index2","ssqp","unified","debuginfod","slashsymbols","nxsymstore"],"type":"string","description":"The source's layout type.\n\n* `native`\n* `symstore`\n* `symstore_index2`\n* `ssqp`\n* `unified`\n* `debuginfod`\n* `slashsymbols`\n* `nxsymstore`"},"casing":{"enum":["lowercase","uppercase","default"],"type":"string","description":"The source's casing rules.\n\n* `lowercase`\n* `uppercase`\n* `default`"}},"required":["casing","type"]},"filters":{"type":"object","description":"Filter settings for the source. This is optional for all sources.\n\n**`filetypes`** ***(list)*** - A list of file types that can be found on this source. If this is left empty, all file types will be enabled. The options are:\n- `pe` - Windows executable files\n- `pdb` - Windows debug files\n- `portablepdb` - .NET portable debug files\n- `mach_code` - MacOS executable files\n- `mach_debug` - MacOS debug files\n- `elf_code` - ELF executable files\n- `elf_debug` - ELF debug files\n- `wasm_code` - WASM executable files\n- `wasm_debug` - WASM debug files\n- `breakpad` - Breakpad symbol files\n- `sourcebundle` - Source code bundles\n- `uuidmap` - Apple UUID mapping files\n- `bcsymbolmap` - Apple bitcode symbol maps\n- `il2cpp` - Unity IL2CPP mapping files\n- `proguard` - ProGuard mapping files\n\n**`path_patterns`** ***(list)*** - A list of glob patterns to check against the debug and code file paths of debug files. Only files that match one of these patterns will be requested from the source. If this is left empty, no path-based filtering takes place.\n\n**`requires_checksum`** ***(boolean)*** - Whether this source requires a debug checksum to be sent with each request. Defaults to `false`.\n\n```json\n{\n \"filters\": {\n \"filetypes\": [\"pe\", \"pdb\", \"portablepdb\"],\n \"path_patterns\": [\"*ffmpeg*\"]\n }\n}\n```","properties":{"filetypes":{"type":"array","items":{"enum":["pe","pdb","portablepdb","mach_debug","mach_code","elf_debug","elf_code","wasm_debug","wasm_code","breakpad","sourcebundle","uuidmap","bcsymbolmap","il2cpp","proguard","dartsymbolmap"],"type":"string","description":"* `pe`\n* `pdb`\n* `portablepdb`\n* `mach_debug`\n* `mach_code`\n* `elf_debug`\n* `elf_code`\n* `wasm_debug`\n* `wasm_code`\n* `breakpad`\n* `sourcebundle`\n* `uuidmap`\n* `bcsymbolmap`\n* `il2cpp`\n* `proguard`\n* `dartsymbolmap`"},"description":"The file types enabled for the source."},"path_patterns":{"type":"array","items":{"type":"string"},"description":"The debug and code file paths enabled for the source."},"requires_checksum":{"type":"boolean","description":"Whether the source requires debug checksums."}}},"url":{"type":"string","description":"The source's URL. Optional for HTTP sources, invalid for all others."},"username":{"type":"string","description":"The user name for accessing the source. Optional for HTTP sources, invalid for all others."},"password":{"type":"string","description":"The password for accessing the source. Optional for HTTP sources, invalid for all others."},"bucket":{"type":"string","description":"The GCS or S3 bucket where the source resides. Required for GCS and S3 source, invalid for HTTP sources."},"region":{"enum":["us-east-2","us-east-1","us-west-1","us-west-2","ap-east-1","ap-south-1","ap-northeast-2","ap-southeast-1","ap-southeast-2","ap-northeast-1","ca-central-1","cn-north-1","cn-northwest-1","eu-central-1","eu-west-1","eu-west-2","eu-west-3","eu-north-1","sa-east-1","us-gov-east-1","us-gov-west-1"],"type":"string","description":"The source's [S3 region](https://docs.aws.amazon.com/general/latest/gr/s3.html). Required for S3 sources, invalid for all others.\n\n* `us-east-2` - US East (Ohio)\n* `us-east-1` - US East (N. Virginia)\n* `us-west-1` - US West (N. California)\n* `us-west-2` - US West (Oregon)\n* `ap-east-1` - Asia Pacific (Hong Kong)\n* `ap-south-1` - Asia Pacific (Mumbai)\n* `ap-northeast-2` - Asia Pacific (Seoul)\n* `ap-southeast-1` - Asia Pacific (Singapore)\n* `ap-southeast-2` - Asia Pacific (Sydney)\n* `ap-northeast-1` - Asia Pacific (Tokyo)\n* `ca-central-1` - Canada (Central)\n* `cn-north-1` - China (Beijing)\n* `cn-northwest-1` - China (Ningxia)\n* `eu-central-1` - EU (Frankfurt)\n* `eu-west-1` - EU (Ireland)\n* `eu-west-2` - EU (London)\n* `eu-west-3` - EU (Paris)\n* `eu-north-1` - EU (Stockholm)\n* `sa-east-1` - South America (S\u00e3o Paulo)\n* `us-gov-east-1` - AWS GovCloud (US-East)\n* `us-gov-west-1` - AWS GovCloud (US)"},"access_key":{"type":"string","description":"The [AWS Access Key](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html#access-keys-and-secret-access-keys).Required for S3 sources, invalid for all others."},"secret_key":{"type":"string","description":"The [AWS Secret Access Key](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html#access-keys-and-secret-access-keys).Required for S3 sources, invalid for all others."},"prefix":{"type":"string","description":"The GCS, Azure or [S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html) prefix. Optional for GCS, Azure and S3 sources, invalid for HTTP."},"client_email":{"type":"string","description":"The GCS email address for authentication. Required for GCS sources, invalid for all others."},"private_key":{"type":"string","description":"The GCS private key. Required for GCS sources if not using impersonated tokens. Invalid for all others."},"account":{"type":"string","description":"The Azure storage account name. Required for Azure sources, invalid for all others."},"container":{"type":"string","description":"The Azure blob container name. Required for Azure sources, invalid for all others."},"tenant_id":{"type":"string","description":"The Microsoft Entra tenant ID. Required for Azure sources, invalid for all others."},"client_id":{"type":"string","description":"The Microsoft Entra application (client) ID. Required for Azure sources, invalid for all others."},"client_secret":{"type":"string","description":"The Microsoft Entra client secret. Required for Azure sources, invalid for all others."}},"required":["name","type"]}}},"required":true},"security":[{"auth_token":["project:admin","project:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["http"]},"url":{"type":"string"},"username":{"type":"string"},"password":{"type":"object","properties":{"hidden-secret":{"type":"boolean","enum":[true]}}},"id":{"type":"string","minLength":1},"name":{"type":"string"},"layout":{"type":"object","properties":{"type":{"type":"string","enum":["native","symstore","symstore_index2","ssqp","unified","debuginfod","slashsymbols","nxsymstore"]},"casing":{"type":"string","enum":["lowercase","uppercase","default"]}},"required":["type"],"additionalProperties":false},"filters":{"type":"object","properties":{"filetypes":{"type":"array","items":{"type":"string","enum":["pe","pdb","portablepdb","mach_debug","mach_code","elf_debug","elf_code","wasm_debug","wasm_code","breakpad","sourcebundle","uuidmap","bcsymbolmap","il2cpp","proguard","dartsymbolmap"]}},"path_patterns":{"type":"array","items":{"type":"string"}},"requires_checksum":{"type":"boolean"}},"additionalProperties":false},"is_public":{"type":"boolean"},"has_index":{"type":"boolean"},"platforms":{"type":"array","items":{"type":"string"}}},"required":["type","id","url","layout"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["s3"]},"bucket":{"type":"string"},"region":{"type":"string"},"access_key":{"type":"string"},"secret_key":{"type":"object","properties":{"hidden-secret":{"type":"boolean","enum":[true]}}},"prefix":{"type":"string"},"id":{"type":"string","minLength":1},"name":{"type":"string"},"layout":{"type":"object","properties":{"type":{"type":"string","enum":["native","symstore","symstore_index2","ssqp","unified","debuginfod","slashsymbols","nxsymstore"]},"casing":{"type":"string","enum":["lowercase","uppercase","default"]}},"required":["type"],"additionalProperties":false},"filters":{"type":"object","properties":{"filetypes":{"type":"array","items":{"type":"string","enum":["pe","pdb","portablepdb","mach_debug","mach_code","elf_debug","elf_code","wasm_debug","wasm_code","breakpad","sourcebundle","uuidmap","bcsymbolmap","il2cpp","proguard","dartsymbolmap"]}},"path_patterns":{"type":"array","items":{"type":"string"}},"requires_checksum":{"type":"boolean"}},"additionalProperties":false},"is_public":{"type":"boolean"},"has_index":{"type":"boolean"},"platforms":{"type":"array","items":{"type":"string"}}},"required":["type","id","bucket","region","access_key","secret_key","layout"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["gcs"]},"bucket":{"type":"string"},"client_email":{"type":"string"},"private_key":{"type":"object","properties":{"hidden-secret":{"type":"boolean","enum":[true]}}},"prefix":{"type":"string"},"id":{"type":"string","minLength":1},"name":{"type":"string"},"layout":{"type":"object","properties":{"type":{"type":"string","enum":["native","symstore","symstore_index2","ssqp","unified","debuginfod","slashsymbols","nxsymstore"]},"casing":{"type":"string","enum":["lowercase","uppercase","default"]}},"required":["type"],"additionalProperties":false},"filters":{"type":"object","properties":{"filetypes":{"type":"array","items":{"type":"string","enum":["pe","pdb","portablepdb","mach_debug","mach_code","elf_debug","elf_code","wasm_debug","wasm_code","breakpad","sourcebundle","uuidmap","bcsymbolmap","il2cpp","proguard","dartsymbolmap"]}},"path_patterns":{"type":"array","items":{"type":"string"}},"requires_checksum":{"type":"boolean"}},"additionalProperties":false},"is_public":{"type":"boolean"},"has_index":{"type":"boolean"},"platforms":{"type":"array","items":{"type":"string"}}},"required":["type","id","bucket","client_email","private_key","layout"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["azure"]},"account":{"type":"string","pattern":"^[a-z0-9]{3,24}$"},"container":{"type":"string"},"tenant_id":{"type":"string"},"client_id":{"type":"string"},"client_secret":{"type":"object","properties":{"hidden-secret":{"type":"boolean","enum":[true]}}},"prefix":{"type":"string"},"id":{"type":"string","minLength":1},"name":{"type":"string"},"layout":{"type":"object","properties":{"type":{"type":"string","enum":["native","symstore","symstore_index2","ssqp","unified","debuginfod","slashsymbols","nxsymstore"]},"casing":{"type":"string","enum":["lowercase","uppercase","default"]}},"required":["type"],"additionalProperties":false},"filters":{"type":"object","properties":{"filetypes":{"type":"array","items":{"type":"string","enum":["pe","pdb","portablepdb","mach_debug","mach_code","elf_debug","elf_code","wasm_debug","wasm_code","breakpad","sourcebundle","uuidmap","bcsymbolmap","il2cpp","proguard","dartsymbolmap"]}},"path_patterns":{"type":"array","items":{"type":"string"}},"requires_checksum":{"type":"boolean"}},"additionalProperties":false},"is_public":{"type":"boolean"},"has_index":{"type":"boolean"},"platforms":{"type":"array","items":{"type":"string"}}},"required":["type","id","account","container","tenant_id","client_id","client_secret","layout"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["appStoreConnect"]},"id":{"type":"string","minLength":1},"name":{"type":"string"},"appconnectIssuer":{"type":"string","minLength":36,"maxLength":36},"appconnectKey":{"type":"string","minLength":2,"maxLength":20},"appconnectPrivateKey":{"type":"string"},"appName":{"type":"string","minLength":1,"maxLength":512},"appId":{"type":"string","minLength":1},"bundleId":{"type":"string","minLength":1}},"required":["type","id","name","appconnectIssuer","appconnectKey","appconnectPrivateKey","appName","appId","bundleId"],"additionalProperties":false}]},"examples":{"AddACustomSymbolSourceToAProject.":{"value":{"id":"honk","name":"honk source","layout":{"type":"native"},"type":"http","url":"http://honk.beep","username":"honkhonk","password":{"hidden-secret":true}},"summary":"Add a custom symbol source to a project."}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"updateProjectSymbolSource","description":"Update a custom symbol source in a project.","summary":"Update a Project's Symbol Source","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"query","name":"id","schema":{"type":"string"},"description":"The ID of the source to update.","required":true}],"tags":["Projects"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"enum":["http","gcs","s3","azure"],"type":"string","description":"The type of the source.\n\n* `http` - SymbolServer (HTTP)\n* `gcs` - Google Cloud Storage\n* `s3` - Amazon S3\n* `azure` - Azure Blob Storage"},"name":{"type":"string","description":"The human-readable name of the source."},"id":{"type":"string","description":"The internal ID of the source. Must be distinct from all other source IDs and cannot start with '`sentry:`'. If this is not provided, a new UUID will be generated."},"layout":{"type":"object","description":"Layout settings for the source. This is required for HTTP, GCS, and S3 sources.\n\n**`type`** ***(string)*** - The layout of the folder structure. The options are:\n- `native` - Platform-Specific (SymStore / GDB / LLVM)\n- `symstore` - Microsoft SymStore\n- `symstore_index2` - Microsoft SymStore (with index2.txt)\n- `ssqp` - Microsoft SSQP\n- `unified` - Unified Symbol Server Layout\n- `debuginfod` - debuginfod\n- `nxsymstore` - Nintendo NXSymStore\n\n**`casing`** ***(string)*** - The layout of the folder structure. The options are:\n- `default` - Default (mixed case)\n- `uppercase` - Uppercase\n- `lowercase` - Lowercase\n\n```json\n{\n \"layout\": {\n \"type\": \"native\"\n \"casing\": \"default\"\n }\n}\n```","properties":{"type":{"enum":["native","symstore","symstore_index2","ssqp","unified","debuginfod","slashsymbols","nxsymstore"],"type":"string","description":"The source's layout type.\n\n* `native`\n* `symstore`\n* `symstore_index2`\n* `ssqp`\n* `unified`\n* `debuginfod`\n* `slashsymbols`\n* `nxsymstore`"},"casing":{"enum":["lowercase","uppercase","default"],"type":"string","description":"The source's casing rules.\n\n* `lowercase`\n* `uppercase`\n* `default`"}},"required":["casing","type"]},"filters":{"type":"object","description":"Filter settings for the source. This is optional for all sources.\n\n**`filetypes`** ***(list)*** - A list of file types that can be found on this source. If this is left empty, all file types will be enabled. The options are:\n- `pe` - Windows executable files\n- `pdb` - Windows debug files\n- `portablepdb` - .NET portable debug files\n- `mach_code` - MacOS executable files\n- `mach_debug` - MacOS debug files\n- `elf_code` - ELF executable files\n- `elf_debug` - ELF debug files\n- `wasm_code` - WASM executable files\n- `wasm_debug` - WASM debug files\n- `breakpad` - Breakpad symbol files\n- `sourcebundle` - Source code bundles\n- `uuidmap` - Apple UUID mapping files\n- `bcsymbolmap` - Apple bitcode symbol maps\n- `il2cpp` - Unity IL2CPP mapping files\n- `proguard` - ProGuard mapping files\n\n**`path_patterns`** ***(list)*** - A list of glob patterns to check against the debug and code file paths of debug files. Only files that match one of these patterns will be requested from the source. If this is left empty, no path-based filtering takes place.\n\n**`requires_checksum`** ***(boolean)*** - Whether this source requires a debug checksum to be sent with each request. Defaults to `false`.\n\n```json\n{\n \"filters\": {\n \"filetypes\": [\"pe\", \"pdb\", \"portablepdb\"],\n \"path_patterns\": [\"*ffmpeg*\"]\n }\n}\n```","properties":{"filetypes":{"type":"array","items":{"enum":["pe","pdb","portablepdb","mach_debug","mach_code","elf_debug","elf_code","wasm_debug","wasm_code","breakpad","sourcebundle","uuidmap","bcsymbolmap","il2cpp","proguard","dartsymbolmap"],"type":"string","description":"* `pe`\n* `pdb`\n* `portablepdb`\n* `mach_debug`\n* `mach_code`\n* `elf_debug`\n* `elf_code`\n* `wasm_debug`\n* `wasm_code`\n* `breakpad`\n* `sourcebundle`\n* `uuidmap`\n* `bcsymbolmap`\n* `il2cpp`\n* `proguard`\n* `dartsymbolmap`"},"description":"The file types enabled for the source."},"path_patterns":{"type":"array","items":{"type":"string"},"description":"The debug and code file paths enabled for the source."},"requires_checksum":{"type":"boolean","description":"Whether the source requires debug checksums."}}},"url":{"type":"string","description":"The source's URL. Optional for HTTP sources, invalid for all others."},"username":{"type":"string","description":"The user name for accessing the source. Optional for HTTP sources, invalid for all others."},"password":{"type":"string","description":"The password for accessing the source. Optional for HTTP sources, invalid for all others."},"bucket":{"type":"string","description":"The GCS or S3 bucket where the source resides. Required for GCS and S3 source, invalid for HTTP sources."},"region":{"enum":["us-east-2","us-east-1","us-west-1","us-west-2","ap-east-1","ap-south-1","ap-northeast-2","ap-southeast-1","ap-southeast-2","ap-northeast-1","ca-central-1","cn-north-1","cn-northwest-1","eu-central-1","eu-west-1","eu-west-2","eu-west-3","eu-north-1","sa-east-1","us-gov-east-1","us-gov-west-1"],"type":"string","description":"The source's [S3 region](https://docs.aws.amazon.com/general/latest/gr/s3.html). Required for S3 sources, invalid for all others.\n\n* `us-east-2` - US East (Ohio)\n* `us-east-1` - US East (N. Virginia)\n* `us-west-1` - US West (N. California)\n* `us-west-2` - US West (Oregon)\n* `ap-east-1` - Asia Pacific (Hong Kong)\n* `ap-south-1` - Asia Pacific (Mumbai)\n* `ap-northeast-2` - Asia Pacific (Seoul)\n* `ap-southeast-1` - Asia Pacific (Singapore)\n* `ap-southeast-2` - Asia Pacific (Sydney)\n* `ap-northeast-1` - Asia Pacific (Tokyo)\n* `ca-central-1` - Canada (Central)\n* `cn-north-1` - China (Beijing)\n* `cn-northwest-1` - China (Ningxia)\n* `eu-central-1` - EU (Frankfurt)\n* `eu-west-1` - EU (Ireland)\n* `eu-west-2` - EU (London)\n* `eu-west-3` - EU (Paris)\n* `eu-north-1` - EU (Stockholm)\n* `sa-east-1` - South America (S\u00e3o Paulo)\n* `us-gov-east-1` - AWS GovCloud (US-East)\n* `us-gov-west-1` - AWS GovCloud (US)"},"access_key":{"type":"string","description":"The [AWS Access Key](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html#access-keys-and-secret-access-keys).Required for S3 sources, invalid for all others."},"secret_key":{"type":"string","description":"The [AWS Secret Access Key](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html#access-keys-and-secret-access-keys).Required for S3 sources, invalid for all others."},"prefix":{"type":"string","description":"The GCS, Azure or [S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html) prefix. Optional for GCS, Azure and S3 sources, invalid for HTTP."},"client_email":{"type":"string","description":"The GCS email address for authentication. Required for GCS sources, invalid for all others."},"private_key":{"type":"string","description":"The GCS private key. Required for GCS sources if not using impersonated tokens. Invalid for all others."},"account":{"type":"string","description":"The Azure storage account name. Required for Azure sources, invalid for all others."},"container":{"type":"string","description":"The Azure blob container name. Required for Azure sources, invalid for all others."},"tenant_id":{"type":"string","description":"The Microsoft Entra tenant ID. Required for Azure sources, invalid for all others."},"client_id":{"type":"string","description":"The Microsoft Entra application (client) ID. Required for Azure sources, invalid for all others."},"client_secret":{"type":"string","description":"The Microsoft Entra client secret. Required for Azure sources, invalid for all others."}},"required":["name","type"]}}},"required":true},"security":[{"auth_token":["project:admin","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["http"]},"url":{"type":"string"},"username":{"type":"string"},"password":{"type":"object","properties":{"hidden-secret":{"type":"boolean","enum":[true]}}},"id":{"type":"string","minLength":1},"name":{"type":"string"},"layout":{"type":"object","properties":{"type":{"type":"string","enum":["native","symstore","symstore_index2","ssqp","unified","debuginfod","slashsymbols","nxsymstore"]},"casing":{"type":"string","enum":["lowercase","uppercase","default"]}},"required":["type"],"additionalProperties":false},"filters":{"type":"object","properties":{"filetypes":{"type":"array","items":{"type":"string","enum":["pe","pdb","portablepdb","mach_debug","mach_code","elf_debug","elf_code","wasm_debug","wasm_code","breakpad","sourcebundle","uuidmap","bcsymbolmap","il2cpp","proguard","dartsymbolmap"]}},"path_patterns":{"type":"array","items":{"type":"string"}},"requires_checksum":{"type":"boolean"}},"additionalProperties":false},"is_public":{"type":"boolean"},"has_index":{"type":"boolean"},"platforms":{"type":"array","items":{"type":"string"}}},"required":["type","id","url","layout"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["s3"]},"bucket":{"type":"string"},"region":{"type":"string"},"access_key":{"type":"string"},"secret_key":{"type":"object","properties":{"hidden-secret":{"type":"boolean","enum":[true]}}},"prefix":{"type":"string"},"id":{"type":"string","minLength":1},"name":{"type":"string"},"layout":{"type":"object","properties":{"type":{"type":"string","enum":["native","symstore","symstore_index2","ssqp","unified","debuginfod","slashsymbols","nxsymstore"]},"casing":{"type":"string","enum":["lowercase","uppercase","default"]}},"required":["type"],"additionalProperties":false},"filters":{"type":"object","properties":{"filetypes":{"type":"array","items":{"type":"string","enum":["pe","pdb","portablepdb","mach_debug","mach_code","elf_debug","elf_code","wasm_debug","wasm_code","breakpad","sourcebundle","uuidmap","bcsymbolmap","il2cpp","proguard","dartsymbolmap"]}},"path_patterns":{"type":"array","items":{"type":"string"}},"requires_checksum":{"type":"boolean"}},"additionalProperties":false},"is_public":{"type":"boolean"},"has_index":{"type":"boolean"},"platforms":{"type":"array","items":{"type":"string"}}},"required":["type","id","bucket","region","access_key","secret_key","layout"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["gcs"]},"bucket":{"type":"string"},"client_email":{"type":"string"},"private_key":{"type":"object","properties":{"hidden-secret":{"type":"boolean","enum":[true]}}},"prefix":{"type":"string"},"id":{"type":"string","minLength":1},"name":{"type":"string"},"layout":{"type":"object","properties":{"type":{"type":"string","enum":["native","symstore","symstore_index2","ssqp","unified","debuginfod","slashsymbols","nxsymstore"]},"casing":{"type":"string","enum":["lowercase","uppercase","default"]}},"required":["type"],"additionalProperties":false},"filters":{"type":"object","properties":{"filetypes":{"type":"array","items":{"type":"string","enum":["pe","pdb","portablepdb","mach_debug","mach_code","elf_debug","elf_code","wasm_debug","wasm_code","breakpad","sourcebundle","uuidmap","bcsymbolmap","il2cpp","proguard","dartsymbolmap"]}},"path_patterns":{"type":"array","items":{"type":"string"}},"requires_checksum":{"type":"boolean"}},"additionalProperties":false},"is_public":{"type":"boolean"},"has_index":{"type":"boolean"},"platforms":{"type":"array","items":{"type":"string"}}},"required":["type","id","bucket","client_email","private_key","layout"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["azure"]},"account":{"type":"string","pattern":"^[a-z0-9]{3,24}$"},"container":{"type":"string"},"tenant_id":{"type":"string"},"client_id":{"type":"string"},"client_secret":{"type":"object","properties":{"hidden-secret":{"type":"boolean","enum":[true]}}},"prefix":{"type":"string"},"id":{"type":"string","minLength":1},"name":{"type":"string"},"layout":{"type":"object","properties":{"type":{"type":"string","enum":["native","symstore","symstore_index2","ssqp","unified","debuginfod","slashsymbols","nxsymstore"]},"casing":{"type":"string","enum":["lowercase","uppercase","default"]}},"required":["type"],"additionalProperties":false},"filters":{"type":"object","properties":{"filetypes":{"type":"array","items":{"type":"string","enum":["pe","pdb","portablepdb","mach_debug","mach_code","elf_debug","elf_code","wasm_debug","wasm_code","breakpad","sourcebundle","uuidmap","bcsymbolmap","il2cpp","proguard","dartsymbolmap"]}},"path_patterns":{"type":"array","items":{"type":"string"}},"requires_checksum":{"type":"boolean"}},"additionalProperties":false},"is_public":{"type":"boolean"},"has_index":{"type":"boolean"},"platforms":{"type":"array","items":{"type":"string"}}},"required":["type","id","account","container","tenant_id","client_id","client_secret","layout"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["appStoreConnect"]},"id":{"type":"string","minLength":1},"name":{"type":"string"},"appconnectIssuer":{"type":"string","minLength":36,"maxLength":36},"appconnectKey":{"type":"string","minLength":2,"maxLength":20},"appconnectPrivateKey":{"type":"string"},"appName":{"type":"string","minLength":1,"maxLength":512},"appId":{"type":"string","minLength":1},"bundleId":{"type":"string","minLength":1}},"required":["type","id","name","appconnectIssuer","appconnectKey","appconnectPrivateKey","appName","appId","bundleId"],"additionalProperties":false}]},"examples":{"UpdateACustomSymbolSourceInAProject.":{"value":{"id":"honk","name":"honk source","layout":{"type":"native"},"type":"http","url":"http://honk.beep","username":"honkhonk","password":{"hidden-secret":true}},"summary":"Update a custom symbol source in a project."}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteProjectSymbolSource","description":"Delete a custom symbol source from a project.","summary":"Delete a Symbol Source from a Project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"query","name":"id","schema":{"type":"string"},"description":"The ID of the source to delete.","required":true}],"tags":["Projects"],"security":[{"auth_token":["project:admin"]}],"responses":{"204":{"description":"No Content"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/teams/":{"get":{"operationId":"listProjectTeams","description":"Return a list of teams that have access to this project.","summary":"List a Project's Teams","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Teams"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time","nullable":true},"isMember":{"type":"boolean"},"teamRole":{"type":"string","nullable":true},"flags":{"type":"object","additionalProperties":{}},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"isPending":{"type":"boolean"},"memberCount":{"type":"integer"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}}},"required":["access","avatar","dateCreated","flags","hasAccess","id","isMember","isPending","memberCount","name","slug","teamRole"]}},"examples":{"ListAProject'sTeams":{"value":[{"id":"4502349234123","slug":"ancient-gabelers","name":"Ancient Gabelers","dateCreated":"2023-05-31T19:47:53.621181Z","isMember":true,"teamRole":"contributor","flags":{"idp:provisioned":false},"access":["alerts:read","event:write","project:read","team:read","member:read","project:releases","event:read","org:read"],"hasAccess":true,"isPending":false,"memberCount":3,"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":null}},{"id":"4502349234125","slug":"squeaky-minnows","name":"Squeaky Minnows","dateCreated":"2023-07-27T11:23:34.621181Z","isMember":true,"teamRole":"contributor","flags":{"idp:provisioned":false},"access":["alerts:read","event:write","project:read","team:read","member:read","project:releases","event:read","org:read"],"hasAccess":true,"isPending":false,"memberCount":5,"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":null}}],"summary":"List a project's teams"}}}},"description":""},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/teams/{team_id_or_slug}/":{"post":{"operationId":"addProjectTeam","description":"Give a team access to a project.","summary":"Add a Team to a Project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"team_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the team the resource belongs to.","required":true}],"tags":["Projects"],"security":[{"auth_token":["project:admin","project:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"isInternal":{"type":"boolean"},"isPublic":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"color":{"type":"string"},"status":{"type":"string"},"team":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]}}},"required":["access","avatar","color","dateCreated","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","id","isBookmarked","isInternal","isMember","isPublic","name","platform","slug","status","teams"]},"examples":{"GiveATeamAccessToAProject":{"value":{"id":"6758470122493650","slug":"the-spoiled-yoghurt","name":"The Spoiled Yoghurt","platform":"javascript","dateCreated":"2023-03-29T15:25:21.344565Z","isBookmarked":false,"isMember":true,"features":["custom-inbound-filters","discard-groups","minidump","rate-limits","servicehooks","similarity-indexing","similarity-indexing-v2","similarity-view","similarity-view-v2"],"firstEvent":null,"firstTransactionEvent":false,"access":["member:read","event:read","project:admin","team:write","project:write","team:admin","project:read","org:integrations","org:read","project:releases","team:read","alerts:write","event:admin","event:write","alerts:read"],"hasAccess":true,"hasMinifiedStackTrace":false,"hasFeedbacks":false,"hasMonitors":false,"hasNewFeedbacks":false,"hasProfiles":false,"hasReplays":false,"hasFlags":false,"hasSessions":false,"hasInsightsHttp":true,"hasInsightsDb":false,"hasInsightsAssets":true,"hasInsightsAppStart":false,"hasInsightsScreenLoad":false,"hasInsightsVitals":false,"hasInsightsCaches":false,"hasInsightsQueues":false,"hasInsightsAgentMonitoring":false,"hasInsightsMCP":false,"hasLogs":false,"hasTraceMetrics":false,"isInternal":false,"isPublic":false,"avatar":{"avatarType":"letter_avatar","avatarUuid":null},"color":"#5cbf3f","status":"active","team":{"id":"2349234102","name":"Prime Mover","slug":"prime-mover"},"teams":[{"id":"2349234102","name":"Prime Mover","slug":"prime-mover"},{"id":"47584447","name":"Powerful Abolitionist","slug":"powerful-abolitionist"}]},"summary":"Give a Team Access to a Project"}}}},"description":""},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteProjectTeam","description":"Revoke a team's access to a project.\n\nNote that Team Admins can only revoke access to teams they are admins of.","summary":"Delete a Team from a Project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"path","name":"team_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the team the resource belongs to.","required":true}],"tags":["Projects"],"security":[{"auth_token":["project:admin","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"isInternal":{"type":"boolean"},"isPublic":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"color":{"type":"string"},"status":{"type":"string"},"team":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]}}},"required":["access","avatar","color","dateCreated","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","id","isBookmarked","isInternal","isMember","isPublic","name","platform","slug","status","teams"]},"examples":{"RevokeATeam'sAccessToAProject":{"value":{"id":"6758470122493650","slug":"the-spoiled-yoghurt","name":"The Spoiled Yoghurt","platform":"javascript","dateCreated":"2023-03-29T15:25:21.344565Z","isBookmarked":false,"isMember":true,"features":["custom-inbound-filters","discard-groups","minidump","rate-limits","servicehooks","similarity-indexing","similarity-indexing-v2","similarity-view","similarity-view-v2"],"firstEvent":null,"firstTransactionEvent":false,"access":["member:read","event:read","project:admin","team:write","project:write","team:admin","project:read","org:integrations","org:read","project:releases","team:read","alerts:write","event:admin","event:write","alerts:read"],"hasAccess":true,"hasMinifiedStackTrace":false,"hasFeedbacks":false,"hasMonitors":false,"hasNewFeedbacks":false,"hasProfiles":false,"hasReplays":false,"hasFlags":false,"hasSessions":false,"hasInsightsHttp":true,"hasInsightsDb":false,"hasInsightsAssets":true,"hasInsightsAppStart":false,"hasInsightsScreenLoad":false,"hasInsightsVitals":false,"hasInsightsCaches":false,"hasInsightsQueues":false,"hasInsightsAgentMonitoring":false,"hasInsightsMCP":false,"hasLogs":false,"hasTraceMetrics":false,"isInternal":false,"isPublic":false,"avatar":{"avatarType":"letter_avatar","avatarUuid":null},"color":"#5cbf3f","status":"active","team":{"id":"2349234102","name":"Prime Mover","slug":"prime-mover"},"teams":[{"id":"2349234102","name":"Prime Mover","slug":"prime-mover"}]},"summary":"Revoke a Team's Access to a Project"}}}},"description":""},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/users/":{"get":{"operationId":"listProjectUsers","description":"Return a list of users seen within this project.","summary":"List a Project's Users","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"project_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.","required":true},{"in":"query","name":"query","schema":{"type":"string"},"description":"Limit results to users matching the given query. Prefixes should be used to suggest the field to match on: `id`, `email`, `username`, `ip`. For example, `query=email:foo@example.com`."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Projects"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","nullable":true},"tagValue":{"type":"string"},"identifier":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"ipAddress":{"type":"string"},"avatarUrl":{"type":"string"},"hash":{"type":"string"},"dateCreated":{"type":"string","format":"date-time","nullable":true}},"required":["avatarUrl","dateCreated","email","hash","id","identifier","ipAddress","name","tagValue","username"]}},"examples":{"ProjectUsers":{"value":[{"id":"1","tagValue":"email:sentry@example.com","identifier":"1","username":"sentry","email":"sentry@example.com","name":"Sentry","ipAddress":"127.0.0.1","avatarUrl":"https://secure.gravatar.com/avatar/7ddf6ed64b36a1a28182f2c9af87c910?s=32","hash":"7ddf6ed64b36a1a28182f2c9af87c910","dateCreated":null}],"summary":"Project users"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/seer/models/":{"get":{"operationId":"listSeerModels","description":"Get list of actively used LLM model names from Seer.\n\nReturns the list of AI models that are currently used in production in Seer.\nThis endpoint does not require authentication and can be used to discover which models Seer uses.\n\nRequests to this endpoint should use the region-specific domain\neg. `us.sentry.io` or `de.sentry.io`","summary":"List Seer AI Models","tags":["Seer"],"security":[{"auth_token":[]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","description":"Response containing list of actively used LLM model names from Seer.","properties":{"models":{"type":"array","items":{"type":"string"}}},"required":["models"]}}},"description":""}},"x-sentry-routing":{"silo":"cell"},"servers":[{"url":"https://{region}.sentry.io"}]}},"/api/0/sentry-app-installations/{uuid}/external-issue-actions/":{"post":{"operationId":"executeSentryAppInstallationExternalIssueAction","description":"**Experimental:** This API is under active development and may change.\n\nInvoke the installed app's issue-link callback and store the returned association.\nSubmit the app-specific form fields alongside `groupId`, `action`, and `uri`.\nThe installation UUID, form fields, and `uri` come from the organization's\n`issue-link` Sentry App components.\n\nFor `action=link`, the optional `expectedExternalIssueUrl` query parameter\nrequires an exact canonical `webUrl` match. An existing matching link is\nreturned with HTTP 200 without calling the App; a different link\nreturns 409. The callback must also return this URL before a new link is\nsaved. Callback effects cannot be rolled back if its response conflicts.\nA new association returns HTTP 201. Omitting the parameter preserves the\nApp's existing replacement behavior and HTTP 200 response.","summary":"Create or Link an External Issue Through a Sentry App","parameters":[{"in":"path","name":"uuid","schema":{"type":"string"},"description":"The UUID of the Sentry App installation.","required":true},{"in":"query","name":"expectedExternalIssueUrl","schema":{"type":"string","format":"uri","minLength":1},"description":"The exact canonical webUrl of the external issue to link. Only supported for action=link. An existing matching association is a no-op; a different association or callback URL returns 409 without replacing the link."}],"tags":["Integration"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"groupId":{"type":"string","description":"The numeric Sentry issue ID."},"action":{"type":"string","description":"The action to perform: `link` or `create`.","enum":["link","create"]},"uri":{"type":"string","description":"The relative callback URI from the app's issue-link form."}},"required":["action","groupId","uri"],"additionalProperties":true}}},"required":true},"security":[{"auth_token":["event:admin","event:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"issueId":{"type":"string"},"serviceType":{"type":"string"},"displayName":{"type":"string"},"webUrl":{"type":"string"}},"required":["displayName","id","issueId","serviceType","webUrl"]}}},"description":""},"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"issueId":{"type":"string"},"serviceType":{"type":"string"},"displayName":{"type":"string"},"webUrl":{"type":"string"}},"required":["displayName","id","issueId","serviceType","webUrl"]}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"409":{"description":"Conflict"}},"x-sentry-routing":{"silo":"control"},"x-sentry-experimental":true}},"/api/0/sentry-app-installations/{uuid}/external-requests/":{"get":{"operationId":"getSentryAppInstallationExternalRequestOptions","description":"**Experimental:** This API is under active development and may change.\n\nRequest select options from the installed app. Each choice contains its value followed by its label.","summary":"Retrieve a Sentry App's Select Field Options","parameters":[{"in":"path","name":"uuid","schema":{"type":"string"},"description":"The UUID of the Sentry App installation.","required":true},{"in":"query","name":"uri","schema":{"type":"string","minLength":1},"description":"The relative URI of the select field's options callback.","required":true},{"in":"query","name":"projectId","schema":{"type":"integer"},"description":"The Sentry project ID to include in the options request."},{"in":"query","name":"query","schema":{"type":"string","minLength":1},"description":"The search text for select options."},{"in":"query","name":"dependentData","schema":{"type":"string","minLength":1},"description":"A JSON-encoded object containing the values of fields this select depends on."}],"tags":["Integration"],"security":[{"auth_token":["org:admin","org:integrations","org:read","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"choices":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"defaultValue":{"type":"string"}},"required":["choices"]}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"control"},"x-sentry-experimental":true}},"/api/0/sentry-apps/{sentry_app_id_or_slug}/":{"get":{"operationId":"getSentryApp","description":"Retrieve a custom integration.","summary":"Retrieve a custom integration by ID or slug.","parameters":[{"in":"path","name":"sentry_app_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the custom integration.","required":true}],"tags":["Integration"],"security":[{"auth_token":["event:admin","event:read","event:write","member:read","org:read","project:read","project:releases","team:read"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"allowedOrigins":{"type":"array","items":{"type":"string"}},"avatars":{"type":"array","items":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string"},"avatarUrl":{"type":"string"},"color":{"type":"boolean"},"photoType":{"type":"string"}},"required":["avatarType","avatarUrl","avatarUuid","color","photoType"]}},"events":{"type":"array","items":{"type":"string"}},"webhookEvents":{"type":"array","items":{"type":"string"}},"featureData":{"type":"array","items":{"type":"string"}},"isAlertable":{"type":"boolean"},"metadata":{"type":"string"},"name":{"type":"string"},"schema":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"slug":{"type":"string"},"status":{"type":"string"},"uuid":{"type":"string"},"verifyInstall":{"type":"boolean"},"webhookHeaders":{"type":"array","items":{"type":"string"}},"isDisabled":{"type":"boolean"},"author":{"type":"string","nullable":true},"overview":{"type":"string","nullable":true},"popularity":{"type":"integer","nullable":true},"redirectUrl":{"type":"string","nullable":true},"webhookUrl":{"type":"string","nullable":true},"clientSecret":{"type":"string","nullable":true},"datePublished":{"type":"string","format":"date-time"},"clientId":{"type":"string"},"owner":{"type":"object","properties":{"id":{"type":"integer"},"slug":{"type":"string"}},"required":["id","slug"]}},"required":["allowedOrigins","avatars","events","featureData","isAlertable","metadata","name","schema","scopes","slug","status","uuid","verifyInstall","webhookEvents","webhookHeaders"]},"examples":{"RetrieveACustomIntegration":{"value":{"allowedOrigins":[],"author":"ACME Corp","avatars":[{"avatarType":"avatar","avatarUuid":"6c25b771-a576-4c18-a1c3-ab059c1d42ba","avatarUrl":"https://example.com/avatar.png","color":false,"photoType":"icon"}],"events":["issue"],"webhookEvents":["issue.assigned","issue.created","issue.ignored","issue.resolved","issue.unresolved"],"isAlertable":false,"isDisabled":false,"metadata":"","name":"ACME Corp Integration","overview":null,"popularity":27,"redirectUrl":null,"featureData":[],"schema":"","scopes":["event:read","org:read"],"slug":"acme-corp-integration","status":"unpublished","uuid":"77cebea3-019e-484d-8673-6c3969698827","verifyInstall":true,"webhookUrl":"https://example.com/webhook","webhookHeaders":["X-Custom-Header: value"],"clientId":"ed06141686bb60102d878c607eff449fa9907fa7a8cb70f0d337a8fb0b6566c3","clientSecret":"**********","owner":{"id":42,"slug":"acme-corp"}},"summary":"Retrieve a custom integration"}}}},"description":""}},"x-sentry-routing":{"silo":"control"}},"put":{"operationId":"updateSentryApp","description":"Update an existing custom integration.","summary":"Update an existing custom integration.","parameters":[{"in":"path","name":"sentry_app_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the custom integration.","required":true}],"tags":["Integration"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the custom integration."},"scopes":{"type":"array","items":{"type":"string"},"nullable":true,"description":"The custom integration's permission scopes for API access."},"author":{"type":"string","nullable":true,"description":"The custom integration's author."},"events":{"type":"array","items":{"type":"string"},"nullable":true,"description":"Webhook events the custom integration is subscribed to."},"features":{"type":"array","items":{"enum":[0,1,2,3,4,5,6,7,8,9,11,12,"",null],"type":"integer","description":"* `0` - integrations-api\n* `1` - integrations-issue-link\n* `2` - integrations-stacktrace-link\n* `3` - integrations-event-hooks\n* `4` - integrations-project-management\n* `5` - integrations-incident-management\n* `6` - integrations-feature-flag\n* `7` - integrations-alert-rule\n* `8` - integrations-release-management\n* `9` - integrations-visualization\n* `11` - integrations-chat\n* `12` - integrations-session-replay"},"nullable":true,"description":"The list of features that the custom integration supports."},"schema":{"type":"object","additionalProperties":{},"nullable":true,"description":"The UI components schema, used to render the custom integration's configuration UI elements. See our [schema docs](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/) for more information."},"webhookUrl":{"type":"string","format":"uri","nullable":true,"description":"The webhook destination URL."},"redirectUrl":{"type":"string","format":"uri","nullable":true,"description":"The post-installation redirect URL."},"isInternal":{"type":"boolean","default":false,"description":"Whether or not the integration is internal only. False means the integration is public."},"isAlertable":{"type":"boolean","default":false,"description":"Marks whether or not the custom integration can be used in an alert rule."},"overview":{"type":"string","nullable":true,"description":"The custom integration's description."},"verifyInstall":{"type":"boolean","default":true,"description":"Whether or not an installation of the custom integration should be verified."},"allowedOrigins":{"type":"array","items":{"type":"string","maxLength":255},"description":"The list of allowed origins for CORS."},"webhookHeaders":{"type":"array","items":{"type":"string","maxLength":1024},"description":"Custom headers sent with every webhook request. Each entry is a single 'Header-Name: value' pair."}},"required":["name","scopes"]}}},"required":true},"security":[{"auth_token":["org:admin","org:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"allowedOrigins":{"type":"array","items":{"type":"string"}},"avatars":{"type":"array","items":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string"},"avatarUrl":{"type":"string"},"color":{"type":"boolean"},"photoType":{"type":"string"}},"required":["avatarType","avatarUrl","avatarUuid","color","photoType"]}},"events":{"type":"array","items":{"type":"string"}},"webhookEvents":{"type":"array","items":{"type":"string"}},"featureData":{"type":"array","items":{"type":"string"}},"isAlertable":{"type":"boolean"},"metadata":{"type":"string"},"name":{"type":"string"},"schema":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"slug":{"type":"string"},"status":{"type":"string"},"uuid":{"type":"string"},"verifyInstall":{"type":"boolean"},"webhookHeaders":{"type":"array","items":{"type":"string"}},"isDisabled":{"type":"boolean"},"author":{"type":"string","nullable":true},"overview":{"type":"string","nullable":true},"popularity":{"type":"integer","nullable":true},"redirectUrl":{"type":"string","nullable":true},"webhookUrl":{"type":"string","nullable":true},"clientSecret":{"type":"string","nullable":true},"datePublished":{"type":"string","format":"date-time"},"clientId":{"type":"string"},"owner":{"type":"object","properties":{"id":{"type":"integer"},"slug":{"type":"string"}},"required":["id","slug"]}},"required":["allowedOrigins","avatars","events","featureData","isAlertable","metadata","name","schema","scopes","slug","status","uuid","verifyInstall","webhookEvents","webhookHeaders"]},"examples":{"UpdateACustomIntegration":{"value":{"allowedOrigins":[],"author":"ACME Corp","avatars":[{"avatarType":"avatar","avatarUuid":"6c25b771-a576-4c18-a1c3-ab059c1d42ba","avatarUrl":"https://example.com/avatar.png","color":false,"photoType":"icon"}],"events":["issue"],"webhookEvents":["issue.assigned","issue.created","issue.ignored","issue.resolved","issue.unresolved"],"isAlertable":false,"isDisabled":false,"metadata":"","name":"ACME Corp Integration","overview":null,"popularity":27,"redirectUrl":null,"featureData":[],"schema":"","scopes":["event:read","org:read"],"slug":"acme-corp-integration","status":"unpublished","uuid":"77cebea3-019e-484d-8673-6c3969698827","verifyInstall":true,"webhookUrl":"https://example.com/webhook","webhookHeaders":["X-Custom-Header: value"],"clientId":"ed06141686bb60102d878c607eff449fa9907fa7a8cb70f0d337a8fb0b6566c3","clientSecret":"**********","owner":{"id":42,"slug":"acme-corp"}},"summary":"Update a custom integration"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"control"}},"delete":{"operationId":"deleteSentryApp","description":"Delete a custom integration.","summary":"Delete a custom integration.","parameters":[{"in":"path","name":"sentry_app_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the custom integration.","required":true}],"tags":["Integration"],"security":[{"auth_token":["org:admin"]}],"responses":{"204":{"description":"No Content"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"control"}}},"/api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/":{"get":{"operationId":"getTeam","description":"Return details on an individual team.","summary":"Retrieve a Team","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"team_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the team the resource belongs to.","required":true},{"in":"query","name":"expand","schema":{"type":"string"},"description":"\nList of strings to opt in to additional data. Supports `projects`, `externalTeams`.\n"},{"in":"query","name":"collapse","schema":{"type":"string"},"description":"\nList of strings to opt out of certain pieces of data. Supports `organization`.\n"}],"tags":["Teams"],"security":[{"auth_token":["team:admin","team:read","team:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time","nullable":true},"isMember":{"type":"boolean"},"teamRole":{"type":"string","nullable":true},"flags":{"type":"object","additionalProperties":{}},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"isPending":{"type":"boolean"},"memberCount":{"type":"integer"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"externalTeams":{"type":"array","items":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]}},"organization":{"type":"object","properties":{"features":{"type":"array","items":{"type":"string"}},"extraOptions":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{}}},"access":{"type":"array","items":{"type":"string"}},"onboardingTasks":{"type":"array","items":{"type":"object","properties":{"task":{"type":"string","nullable":true},"status":{"type":"string"},"completionSeen":{"type":"string","format":"date-time","nullable":true},"dateCompleted":{"type":"string","format":"date-time"},"data":{}},"required":["completionSeen","data","dateCompleted","status","task"]}},"id":{"type":"string"},"slug":{"type":"string"},"status":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"isEarlyAdopter":{"type":"boolean"},"require2FA":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"links":{"type":"object","properties":{"organizationUrl":{"type":"string"},"regionUrl":{"type":"string"}},"required":["organizationUrl","regionUrl"]},"hasAuthProvider":{"type":"boolean"},"allowMemberInvite":{"type":"boolean"},"allowMemberProjectCreation":{"type":"boolean"},"allowSuperuserAccess":{"type":"boolean"}},"required":["allowMemberInvite","allowMemberProjectCreation","allowSuperuserAccess","avatar","dateCreated","hasAuthProvider","id","isEarlyAdopter","links","name","require2FA","slug","status"]},"projects":{"type":"array","items":{"type":"object","properties":{"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"isInternal":{"type":"boolean"},"isPublic":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"color":{"type":"string"},"status":{"type":"string"}},"required":["access","avatar","color","dateCreated","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","id","isBookmarked","isInternal","isMember","isPublic","name","platform","slug","status"]}}},"required":["access","avatar","dateCreated","flags","hasAccess","id","isMember","isPending","memberCount","name","slug","teamRole"]},"examples":{"RetrieveATeam":{"value":{"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":null},"dateCreated":"2018-11-06T21:19:55.114Z","hasAccess":true,"id":"2","isMember":true,"isPending":false,"memberCount":1,"name":"Powerful Abolitionist","organization":{"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":null},"dateCreated":"2018-11-06T21:19:55.101Z","id":"2","isEarlyAdopter":false,"allowMemberInvite":true,"allowMemberProjectCreation":true,"allowSuperuserAccess":false,"name":"The Interstellar Jurisdiction","require2FA":false,"slug":"the-interstellar-jurisdiction","status":{"id":"active","name":"active"},"features":["session-replay-videos"],"hasAuthProvider":true,"links":{"organizationUrl":"https://philosophers.sentry.io","regionUrl":"https://us.sentry.io"}},"slug":"powerful-abolitionist","access":["event:read","event:write","team:read","org:read","project:read","member:read","project:releases","alerts:read"],"flags":{"idp:provisioned":false},"teamRole":"contributor"},"summary":"Retrieve a Team"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"updateTeam","description":"Update various attributes and configurable settings for the given\nteam.","summary":"Update a Team","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"team_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the team the resource belongs to.","required":true}],"tags":["Teams"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"slug":{"type":"string","description":"Uniquely identifies a team. This is must be available.","maxLength":50,"pattern":"^(?![0-9]+$)[a-z0-9_\\-]+$"},"name":{"type":"string","description":"The name of the team.","maxLength":64}},"required":["slug"]}}},"required":true},"security":[{"auth_token":["team:admin","team:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time","nullable":true},"isMember":{"type":"boolean"},"teamRole":{"type":"string","nullable":true},"flags":{"type":"object","additionalProperties":{}},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"isPending":{"type":"boolean"},"memberCount":{"type":"integer"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"externalTeams":{"type":"array","items":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]}},"organization":{"type":"object","properties":{"features":{"type":"array","items":{"type":"string"}},"extraOptions":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{}}},"access":{"type":"array","items":{"type":"string"}},"onboardingTasks":{"type":"array","items":{"type":"object","properties":{"task":{"type":"string","nullable":true},"status":{"type":"string"},"completionSeen":{"type":"string","format":"date-time","nullable":true},"dateCompleted":{"type":"string","format":"date-time"},"data":{}},"required":["completionSeen","data","dateCompleted","status","task"]}},"id":{"type":"string"},"slug":{"type":"string"},"status":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"isEarlyAdopter":{"type":"boolean"},"require2FA":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"links":{"type":"object","properties":{"organizationUrl":{"type":"string"},"regionUrl":{"type":"string"}},"required":["organizationUrl","regionUrl"]},"hasAuthProvider":{"type":"boolean"},"allowMemberInvite":{"type":"boolean"},"allowMemberProjectCreation":{"type":"boolean"},"allowSuperuserAccess":{"type":"boolean"}},"required":["allowMemberInvite","allowMemberProjectCreation","allowSuperuserAccess","avatar","dateCreated","hasAuthProvider","id","isEarlyAdopter","links","name","require2FA","slug","status"]},"projects":{"type":"array","items":{"type":"object","properties":{"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"isInternal":{"type":"boolean"},"isPublic":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"color":{"type":"string"},"status":{"type":"string"}},"required":["access","avatar","color","dateCreated","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","id","isBookmarked","isInternal","isMember","isPublic","name","platform","slug","status"]}}},"required":["access","avatar","dateCreated","flags","hasAccess","id","isMember","isPending","memberCount","name","slug","teamRole"]},"examples":{"UpdateATeam":{"value":{"avatar":{"avatarType":"letter_avatar","avatarUuid":null,"avatarUrl":null},"dateCreated":"2018-11-06T21:20:08.115Z","hasAccess":true,"id":"3","isMember":false,"isPending":false,"memberCount":1,"name":"The Inflated Philosophers","slug":"the-inflated-philosophers","access":["event:read","event:write","team:read","org:read","project:read","member:read","project:releases","alerts:read"],"flags":{"idp:provisioned":false},"teamRole":"contributor"},"summary":"Update a Team"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteTeam","description":"Schedules a team for deletion.\n\n**Note:** Deletion happens asynchronously and therefore is not\nimmediate. Teams will have their slug released while waiting for deletion.","summary":"Delete a Team","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"team_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the team the resource belongs to.","required":true}],"tags":["Teams"],"security":[{"auth_token":["team:admin"]}],"responses":{"204":{"description":"No Content"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/external-teams/":{"post":{"operationId":"createTeamExternalTeam","description":"Link a team from an external provider to a Sentry team.","summary":"Create an External Team","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"team_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the team the resource belongs to.","required":true}],"tags":["Integrations"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"team_id":{"type":"integer","description":"ID of the Sentry team to link to the external team."},"external_name":{"type":"string","description":"The associated name for the provider."},"provider":{"enum":["github","github_enterprise","jira_server","slack","slack_staging","perforce","gitlab","cursor_origin","msteams","custom_scm"],"type":"string","description":"The provider of the external actor.\n\n* `github`\n* `github_enterprise`\n* `jira_server`\n* `slack`\n* `slack_staging`\n* `perforce`\n* `gitlab`\n* `cursor_origin`\n* `msteams`\n* `custom_scm`"},"integration_id":{"type":"integer","description":"The Integration ID."},"external_id":{"type":"string","nullable":true,"description":"The associated user ID for provider."}},"required":["external_name","integration_id","provider","team_id"]}}},"required":true},"security":[{"auth_token":["team:admin","team:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]},"examples":{"CreateAnExternalTeam":{"value":{"externalId":"asdf","externalName":"@team-foo","provider":"slack","integrationId":"1","id":"1","teamId":"2"},"summary":"Create an external team"}}}},"description":""},"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]},"examples":{"CreateAnExternalTeam":{"value":{"externalId":"asdf","externalName":"@team-foo","provider":"slack","integrationId":"1","id":"1","teamId":"2"},"summary":"Create an external team"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/external-teams/{external_team_id}/":{"put":{"operationId":"updateTeamExternalTeam","description":"Update a team in an external provider that is currently linked to a Sentry team.","summary":"Update an External Team","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"team_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the team the resource belongs to.","required":true},{"in":"path","name":"external_team_id","schema":{"type":"integer"},"description":"The ID of the external team object. This is returned when creating an external team.","required":true}],"tags":["Integrations"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"team_id":{"type":"integer","description":"ID of the Sentry team to link to the external team."},"external_name":{"type":"string","description":"The associated name for the provider."},"provider":{"enum":["github","github_enterprise","jira_server","slack","slack_staging","perforce","gitlab","cursor_origin","msteams","custom_scm"],"type":"string","description":"The provider of the external actor.\n\n* `github`\n* `github_enterprise`\n* `jira_server`\n* `slack`\n* `slack_staging`\n* `perforce`\n* `gitlab`\n* `cursor_origin`\n* `msteams`\n* `custom_scm`"},"integration_id":{"type":"integer","description":"The Integration ID."},"external_id":{"type":"string","nullable":true,"description":"The associated user ID for provider."}},"required":["external_name","integration_id","provider","team_id"]}}},"required":true},"security":[{"auth_token":["team:admin","team:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]},"examples":{"CreateAnExternalTeam":{"value":{"externalId":"asdf","externalName":"@team-foo","provider":"slack","integrationId":"1","id":"1","teamId":"2"},"summary":"Create an external team"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteTeamExternalTeam","description":"Delete the link between a team from an external provider and a Sentry team.","summary":"Delete an External Team","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"team_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the team the resource belongs to.","required":true},{"in":"path","name":"external_team_id","schema":{"type":"integer"},"description":"The ID of the external team object. This is returned when creating an external team.","required":true}],"tags":["Integrations"],"security":[{"auth_token":["team:admin"]}],"responses":{"204":{"description":"No Content"},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/members/":{"get":{"operationId":"listTeamMembers","description":"List all members on a team.\n\nThe response will not include members with pending invites.","summary":"List a Team's Members","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"team_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the team the resource belongs to.","required":true},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Teams"],"security":[{"auth_token":["team:admin","team:read","team:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"externalUsers":{"type":"array","items":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]}},"role":{"type":"string"},"roleName":{"type":"string"},"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"user":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},"orgRole":{"type":"string"},"pending":{"type":"boolean"},"expired":{"type":"boolean"},"flags":{"type":"object","properties":{"idp:provisioned":{"type":"boolean"},"idp:role-restricted":{"type":"boolean"},"sso:linked":{"type":"boolean"},"sso:invalid":{"type":"boolean"},"member-limit:restricted":{"type":"boolean"},"partnership:restricted":{"type":"boolean"}},"required":["idp:provisioned","idp:role-restricted","member-limit:restricted","partnership:restricted","sso:invalid","sso:linked"]},"dateCreated":{"type":"string","format":"date-time"},"inviteStatus":{"type":"string"},"inviterName":{"type":"string","nullable":true},"teamRole":{"type":"string","nullable":true},"teamSlug":{"type":"string"}},"required":["dateCreated","email","expired","flags","id","inviteStatus","inviterName","name","orgRole","pending","teamRole","teamSlug","user"]}},"examples":{"ListTeamMembers":{"value":[{"id":"57377908164","email":"sirpenguin@antarcticarocks.com","name":"Sir Penguin","user":{"id":"280094367316","name":"Sir Penguin","username":"sirpenguin@antarcticarocks.com","email":"sirpenguin@antarcticarocks.com","avatarUrl":"https://secure.gravatar.com/avatar/16aeb26c5fdba335c7078e9e9ddb5149?s=32&d=mm","isActive":true,"isSuspended":false,"hasPasswordAuth":true,"isManaged":false,"dateJoined":"2021-07-06T21:13:58.375239Z","lastLogin":"2021-08-02T18:25:00.051182Z","has2fa":false,"lastActive":"2021-08-02T21:32:18.836829Z","isSuperuser":false,"isStaff":false,"experiments":{},"emails":[{"id":"2153450836","email":"sirpenguin@antarcticarocks.com","is_verified":true}],"avatar":{"avatarType":"letter_avatar","avatarUuid":null},"canReset2fa":true},"orgRole":"member","pending":false,"expired":false,"flags":{"idp:provisioned":false,"idp:role-restricted":false,"sso:linked":false,"sso:invalid":false,"member-limit:restricted":false,"partnership:restricted":false},"dateCreated":"2021-07-06T21:13:01.120263Z","inviteStatus":"approved","inviterName":"maininviter@antarcticarocks.com","teamRole":"member","teamSlug":"powerful-abolitionist"}],"summary":"List Team Members"}}}},"description":""},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/projects/":{"get":{"operationId":"listTeamProjects","description":"Return a list of projects bound to a team.","summary":"List a Team's Projects","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"team_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the team the resource belongs to.","required":true},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Teams"],"security":[{"auth_token":["project:admin","project:read","project:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"latestDeploys":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"string"}},"nullable":true},"options":{"type":"object","additionalProperties":{}},"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"team":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"],"nullable":true},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]}},"platforms":{"type":"array","items":{"type":"string"}},"hasUserReports":{"type":"boolean"},"environments":{"type":"array","items":{"type":"string"}},"latestRelease":{"type":"object","properties":{"version":{"type":"string"}},"required":["version"],"nullable":true}},"required":["access","dateCreated","environments","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","hasUserReports","id","isBookmarked","isMember","latestRelease","name","platform","platforms","slug","team","teams"]}},"examples":{"GetListOfTeam'sProjects":{"value":[{"team":{"id":"2349234102","name":"Prime Mover","slug":"prime-mover"},"teams":[{"id":"2349234102","name":"Prime Mover","slug":"prime-mover"},{"id":"47584447","name":"Powerful Abolitionist","slug":"powerful-abolitionist"}],"id":"6758470122493650","slug":"the-spoiled-yoghurt","name":"The Spoiled Yoghurt","isBookmarked":false,"isMember":true,"access":["project:read","event:read","team:read","alerts:read","org:read","event:write","project:releases","member:read"],"hasAccess":true,"dateCreated":"2023-03-29T15:25:21.344565Z","environments":["production"],"features":["custom-inbound-filters","discard-groups","minidump","rate-limits","servicehooks","similarity-indexing","similarity-indexing-v2","similarity-view","similarity-view-v2"],"firstEvent":null,"firstTransactionEvent":true,"hasSessions":false,"hasProfiles":false,"hasReplays":false,"hasFlags":false,"hasMonitors":false,"hasFeedbacks":false,"hasNewFeedbacks":false,"hasMinifiedStackTrace":false,"hasInsightsHttp":true,"hasInsightsDb":false,"hasInsightsAssets":false,"hasInsightsAppStart":false,"hasInsightsScreenLoad":false,"hasInsightsVitals":false,"hasInsightsCaches":true,"hasInsightsQueues":true,"hasInsightsAgentMonitoring":false,"hasInsightsMCP":false,"hasLogs":false,"hasTraceMetrics":false,"platform":"node-express","platforms":[],"latestRelease":null,"hasUserReports":false,"latestDeploys":null}],"summary":"Get list of team's projects"}}}},"description":""},"403":{"description":"Forbidden"},"404":{"description":"Team not found."}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"post":{"operationId":"createTeamProject","description":"Create a new project bound to a team.\n\n Note: If your organization has disabled member project creation, the `org:write` scope or the Team Admin role on the team is required.\n ","summary":"Create a New Project","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"team_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the team the resource belongs to.","required":true}],"tags":["Projects"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name for the project.","maxLength":50},"slug":{"type":"string","nullable":true,"description":"Uniquely identifies a project and is used for the interface.\n If not provided, it is automatically generated from the name.","maxLength":100,"pattern":"^(?![0-9]+$)[a-z0-9_\\-]+$"},"platform":{"type":"string","nullable":true,"description":"The platform for the project."},"default_rules":{"type":"boolean","description":"\nDefaults to true where the behavior is to alert the user on every new\nissue. Setting this to false will turn this off and the user must create\ntheir own alerts to be notified of new issues.\n "}},"required":["name"]}}},"required":true},"security":[{"auth_token":["project:admin","project:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"latestDeploys":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"string"}},"nullable":true},"options":{"type":"object","additionalProperties":{}},"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"team":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"],"nullable":true},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]}},"platforms":{"type":"array","items":{"type":"string"}},"hasUserReports":{"type":"boolean"},"environments":{"type":"array","items":{"type":"string"}},"latestRelease":{"type":"object","properties":{"version":{"type":"string"}},"required":["version"],"nullable":true}},"required":["access","dateCreated","environments","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","hasUserReports","id","isBookmarked","isMember","latestRelease","name","platform","platforms","slug","team","teams"]},"examples":{"ProjectSuccessfullyCreated":{"value":{"team":{"id":"2349234102","name":"Prime Mover","slug":"prime-mover"},"teams":[{"id":"2349234102","name":"Prime Mover","slug":"prime-mover"},{"id":"47584447","name":"Powerful Abolitionist","slug":"powerful-abolitionist"}],"id":"6758470122493650","slug":"the-spoiled-yoghurt","name":"The Spoiled Yoghurt","isBookmarked":false,"isMember":true,"access":["project:read","event:read","team:read","alerts:read","org:read","event:write","project:releases","member:read"],"hasAccess":true,"dateCreated":"2023-03-29T15:25:21.344565Z","environments":["production"],"features":["custom-inbound-filters","discard-groups","minidump","rate-limits","servicehooks","similarity-indexing","similarity-indexing-v2","similarity-view","similarity-view-v2"],"firstEvent":null,"firstTransactionEvent":true,"hasSessions":false,"hasProfiles":false,"hasReplays":false,"hasFlags":false,"hasMonitors":false,"hasFeedbacks":false,"hasNewFeedbacks":false,"hasMinifiedStackTrace":false,"hasInsightsHttp":true,"hasInsightsDb":false,"hasInsightsAssets":false,"hasInsightsAppStart":false,"hasInsightsScreenLoad":false,"hasInsightsVitals":false,"hasInsightsCaches":true,"hasInsightsQueues":true,"hasInsightsAgentMonitoring":false,"hasInsightsMCP":false,"hasLogs":false,"hasTraceMetrics":false,"platform":"node-express","platforms":[],"latestRelease":null,"hasUserReports":false,"latestDeploys":null},"summary":"Project successfully created"}}}},"description":""},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Team not found."},"409":{"description":"A project with this slug already exists."}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/tags/{key}/values/":{"get":{"tags":["Projects"],"description":"Return a list of values associated with this key. The `query`\nparameter can be used to to perform a \"contains\" match on\nvalues. \n\nWhen [paginated](/api/pagination) can return at most 1000 values.","operationId":"List a Tag's Values","parameters":[{"name":"organization_id_or_slug","in":"path","description":"The ID or slug of the organization.","required":true,"schema":{"type":"string"}},{"name":"project_id_or_slug","in":"path","description":"The ID or slug of the project.","required":true,"schema":{"type":"string"}},{"name":"key","in":"path","description":"The tag key to look up.","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string"}}}},"example":[{"name":"mint_choco"}]}}},"403":{"description":"Forbidden"}},"security":[{"auth_token":["project:read"]}],"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/user-feedback/":{"get":{"tags":["Projects"],"description":"Return a list of user feedback items within this project.\n\n*This list does not include submissions from the [User Feedback Widget](https://docs.sentry.io/product/user-feedback/#user-feedback-widget). This is because it is based on an older format called User Reports - read more [here](https://develop.sentry.dev/application/feedback-architecture/#user-reports). To return a list of user feedback items from the widget, please use the [issue API](https://docs.sentry.io/api/events/list-a-projects-issues/) with the filter `issue.category:feedback`.*","operationId":"List a Project's User Feedback","parameters":[{"name":"organization_id_or_slug","in":"path","description":"The ID or slug of the organization.","required":true,"schema":{"type":"string"}},{"name":"project_id_or_slug","in":"path","description":"The ID or slug of the project.","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","required":["comments","dateCreated","email","event","eventID","id","issue","name","user"],"properties":{"comments":{"type":"string"},"dateCreated":{"type":"string"},"email":{"type":"string"},"event":{"type":"object","properties":{"eventID":{"type":"string"},"id":{"type":"string","nullable":true}}},"eventID":{"type":"string"},"id":{"type":"string"},"issue":{"type":"object","nullable":true},"name":{"type":"string"},"user":{"type":"object","nullable":true}}}},"example":[{"comments":"It broke!","dateCreated":"2018-11-06T21:20:11.468Z","email":"jane@example.com","event":{"eventID":"14bad9a2e3774046977a21440ddb39b2","id":null},"eventID":"14bad9a2e3774046977a21440ddb39b2","id":"1","issue":null,"name":"Jane Smith","user":null}]}}},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"auth_token":["project:read"]}],"x-sentry-routing":{"silo":"unknown","organizationParameter":"organization_id_or_slug"}},"post":{"tags":["Projects"],"description":"*This endpoint is DEPRECATED. We document it here for older SDKs and users who are still migrating to the [User Feedback Widget](https://docs.sentry.io/product/user-feedback/#user-feedback-widget) or [API](https://docs.sentry.io/platforms/javascript/user-feedback/#user-feedback-api)(multi-platform). If you are a new user, do not use this endpoint - unless you don't have a JS frontend, and your platform's SDK does not offer a feedback API.*\n\nFeedback must be received by the server no more than 30 minutes after the event was saved.\n\nAdditionally, within 5 minutes of submitting feedback it may also be overwritten. This is useful in situations where you may need to retry sending a request due to network failures.\n\nIf feedback is rejected due to a mutability threshold, a 409 status code will be returned.\n\nNote: Feedback may be submitted with DSN authentication (see auth documentation).","operationId":"Submit User Feedback","deprecated":true,"parameters":[{"name":"organization_id_or_slug","in":"path","description":"The ID or slug of the organization.","required":true,"schema":{"type":"string"}},{"name":"project_id_or_slug","in":"path","description":"The ID or slug of the project.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"required":["event_id","name","email","comments"],"type":"object","properties":{"event_id":{"type":"string","description":"The event ID. This can be retrieved from the [beforeSend callback](https://docs.sentry.io/platforms/javascript/configuration/filtering/#using-beforesend)."},"name":{"type":"string","description":"User's name."},"email":{"type":"string","description":"User's email address."},"comments":{"type":"string","description":"Comments supplied by user."}}},"example":{"event_id":"14bad9a2e3774046977a21440ddb39b2","name":"Jane Schmidt","email":"jane@empowerplant.io","comments":"It broke!"}}},"required":false},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["comments","dateCreated","email","event","eventID","id","issue","name","user"],"properties":{"comments":{"type":"string"},"dateCreated":{"type":"string"},"email":{"type":"string"},"event":{"type":"object","properties":{"eventID":{"type":"string"},"id":{"type":"string","nullable":true}}},"eventID":{"type":"string"},"id":{"type":"string"},"issue":{"type":"object","nullable":true},"name":{"type":"string"},"user":{"type":"object","nullable":true}}},"example":{"comments":"It broke!","dateCreated":"2018-11-06T21:20:11.468Z","email":"jane@example.com","event":{"eventID":"14bad9a2e3774046977a21440ddb39b2","id":null},"eventID":"14bad9a2e3774046977a21440ddb39b2","id":"1","issue":null,"name":"Jane Smith","user":null}}}},"400":{"description":"Bad Input"},"403":{"description":"Forbidden"},"404":{"description":"The requested resource does not exist"},"409":{"description":"Conflict"}},"security":[{"auth_token":["project:write"]},{"dsn":[]}],"x-sentry-routing":{"silo":"unknown","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/hooks/":{"get":{"tags":["Projects"],"description":"Return a list of service hooks bound to a project.","operationId":"List a Project's Service Hooks","parameters":[{"name":"organization_id_or_slug","in":"path","description":"The ID or slug of the organization the client keys belong to.","required":true,"schema":{"type":"string"}},{"name":"project_id_or_slug","in":"path","description":"The ID or slug of the project the client keys belong to.","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","required":["dateCreated","events","id","secret","status","url"],"properties":{"dateCreated":{"type":"string"},"events":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"secret":{"type":"string"},"status":{"type":"string"},"url":{"type":"string"}}}},"example":[{"dateCreated":"2018-11-06T21:20:08.143Z","events":["event.alert","event.created"],"id":"4f9d73e63b7144ecb8944c41620a090b","secret":"8fcac28aaa4c4f5fa572b61d40a8e084364db25fd37449c299e5a41c0504cbc2","status":"active","url":"https://empowerplant.io/sentry-hook"}]}}},"403":{"description":"You do not have that feature enabled"}},"security":[{"auth_token":["project:read"]}],"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"post":{"tags":["Projects"],"description":"Register a new service hook on a project.\n\nEvents include:\n\n- event.alert: An alert is generated for an event (via rules).\n- event.created: A new event has been processed.\n\nThis endpoint requires the 'servicehooks' feature to be enabled for your project.","operationId":"Register a New Service Hook","parameters":[{"name":"organization_id_or_slug","in":"path","description":"The ID or slug of the organization the client keys belong to.","required":true,"schema":{"type":"string"}},{"name":"project_id_or_slug","in":"path","description":"The ID or slug of the project the client keys belong to.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"required":["url","events"],"type":"object","properties":{"url":{"type":"string","description":"The URL for the webhook."},"events":{"type":"array","description":"The events to subscribe to.","items":{"type":"string"}}}},"example":{"url":"https://empowerplant.io/sentry-hook","events":["event.alert","event.created"]}}},"required":true},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["dateCreated","events","id","secret","status","url"],"properties":{"dateCreated":{"type":"string"},"events":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"secret":{"type":"string"},"status":{"type":"string"},"url":{"type":"string"}}},"example":{"dateCreated":"2018-11-06T21:20:08.143Z","events":["event.alert","event.created"],"id":"4f9d73e63b7144ecb8944c41620a090b","secret":"8fcac28aaa4c4f5fa572b61d40a8e084364db25fd37449c299e5a41c0504cbc2","status":"active","url":"https://empowerplant.io/sentry-hook"}}}},"403":{"description":"You do not have that feature enabled"},"404":{"description":"The requested resource does not exist"}},"security":[{"auth_token":["project:write"]}],"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/hooks/{hook_id}/":{"get":{"tags":["Projects"],"description":"Return a service hook bound to a project.","operationId":"Retrieve a Service Hook","parameters":[{"name":"organization_id_or_slug","in":"path","description":"The ID or slug of the organization the client keys belong to.","required":true,"schema":{"type":"string"}},{"name":"project_id_or_slug","in":"path","description":"The ID or slug of the project the client keys belong to.","required":true,"schema":{"type":"string"}},{"name":"hook_id","in":"path","description":"The GUID of the service hook.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["dateCreated","events","id","secret","status","url"],"properties":{"dateCreated":{"type":"string"},"events":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"secret":{"type":"string"},"status":{"type":"string"},"url":{"type":"string"}}},"example":{"dateCreated":"2018-11-06T21:20:08.143Z","events":["event.alert","event.created"],"id":"4f9d73e63b7144ecb8944c41620a090b","secret":"8fcac28aaa4c4f5fa572b61d40a8e084364db25fd37449c299e5a41c0504cbc2","status":"active","url":"https://empowerplant.io/sentry-hook"}}}},"403":{"description":"Forbidden"},"404":{"description":"The requested resource does not exist"}},"security":[{"auth_token":["project:read"]}],"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"tags":["Projects"],"description":"Update a service hook.","operationId":"Update a Service Hook","parameters":[{"name":"organization_id_or_slug","in":"path","description":"The ID or slug of the organization the client keys belong to.","required":true,"schema":{"type":"string"}},{"name":"project_id_or_slug","in":"path","description":"The ID or slug of the project the client keys belong to.","required":true,"schema":{"type":"string"}},{"name":"hook_id","in":"path","description":"The GUID of the service hook.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"required":["url","events"],"type":"object","properties":{"url":{"type":"string","description":"The URL for the webhook."},"events":{"type":"array","description":"The events to subscribe to.","items":{"type":"string"}}}},"example":{"url":"https://empowerplant.io/sentry-hook","events":["event.alert","event.created"]}}},"required":false},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["dateCreated","events","id","secret","status","url"],"properties":{"dateCreated":{"type":"string"},"events":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"secret":{"type":"string"},"status":{"type":"string"},"url":{"type":"string"}}},"example":{"dateCreated":"2018-11-06T21:20:08.143Z","events":["event.alert","event.created"],"id":"4f9d73e63b7144ecb8944c41620a090b","secret":"8fcac28aaa4c4f5fa572b61d40a8e084364db25fd37449c299e5a41c0504cbc2","status":"active","url":"https://empowerplant.io/sentry-hook"}}}},"400":{"description":"Bad Input"},"403":{"description":"Forbidden"},"404":{"description":"The requested resource does not exist"}},"security":[{"auth_token":["project:write"]}],"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"tags":["Projects"],"description":"Remove a service hook.","operationId":"Remove a Service Hook","parameters":[{"name":"organization_id_or_slug","in":"path","description":"The ID or slug of the organization the client keys belong to.","required":true,"schema":{"type":"string"}},{"name":"project_id_or_slug","in":"path","description":"The ID or slug of the project the client keys belong to.","required":true,"schema":{"type":"string"}},{"name":"hook_id","in":"path","description":"The GUID of the service hook.","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Success"},"403":{"description":"Forbidden"},"404":{"description":"The requested resource does not exist"}},"security":[{"auth_token":["project:admin"]}],"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/issues/":{"get":{"tags":["Events"],"description":"**Deprecated**: This endpoint has been replaced with the [Organization Issues endpoint](/api/events/list-an-organizations-issues/) which\nsupports filtering on project and additional functionality.\n\nReturn a list of issues (groups) bound to a project. All parameters are supplied as query string parameters. \n\n A default query of ``is:unresolved`` is applied. To return results with other statuses send an new query value (i.e. ``?query=`` for all results).\n\nThe ``statsPeriod`` parameter can be used to select the timeline stats which should be present. Possible values are: ``\"\"`` (disable),``\"24h\"`` (default), ``\"14d\"``\n\nUser feedback items from the [User Feedback Widget](https://docs.sentry.io/product/user-feedback/#user-feedback-widget) are built off the issue platform, so to return a list of user feedback items for a specific project, filter for `issue.category:feedback`.","operationId":"List a Project's Issues","deprecated":true,"parameters":[{"name":"organization_id_or_slug","in":"path","description":"The ID or slug of the organization the issues belong to.","required":true,"schema":{"type":"string"}},{"name":"project_id_or_slug","in":"path","description":"The ID or slug of the project the issues belong to.","required":true,"schema":{"type":"string"}},{"name":"statsPeriod","in":"query","description":"An optional stat period (can be one of `\"24h\"`, `\"14d\"`, and `\"\"`), defaults to \"24h\" if not provided.","schema":{"type":"string"}},{"name":"shortIdLookup","in":"query","description":"If this is set to true then short IDs are looked up by this function as well. This can cause the return value of the function to return an event issue of a different project which is why this is an opt-in. Set to 1 to enable.","schema":{"type":"boolean"}},{"name":"query","in":"query","description":"An optional Sentry structured search query. If not provided an implied `\"is:unresolved\"` is assumed.","schema":{"type":"string"}},{"name":"hashes","in":"query","description":"A list of hashes of groups to return. Is not compatible with 'query' parameter. The maximum number of hashes that can be sent is 100. If more are sent, only the first 100 will be used.","schema":{"type":"string"}},{"name":"sort","in":"query","description":"The sort order of the issues. Options include 'Last Seen' (`date`), 'First Seen' (`new`), 'Trends' (`trends`), 'Events' (`freq`), 'Users' (`user`), and 'Recommended' (`recommended`).","schema":{"type":"string","default":"date","enum":["date","new","trends","freq","user","recommended"]}},{"name":"limit","in":"query","description":"The maximum number of issues to return. The maximum is 100.","schema":{"type":"integer","default":100}},{"name":"cursor","in":"query","required":false,"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","required":["lastSeen","numComments","userCount","culprit","title","id","assignedTo","logger","stats","type","annotations","metadata","status","subscriptionDetails","isPublic","hasSeen","shortId","shareId","firstSeen","count","permalink","level","isSubscribed","isBookmarked","project","statusDetails"],"properties":{"annotations":{"type":"array","items":{"type":"string"}},"assignedTo":{"type":"object","nullable":true},"count":{"type":"string"},"culprit":{"type":"string"},"firstSeen":{"type":"string"},"hasSeen":{"type":"boolean"},"id":{"type":"string"},"isBookmarked":{"type":"boolean"},"isPublic":{"type":"boolean"},"isSubscribed":{"type":"boolean"},"lastSeen":{"type":"string"},"level":{"type":"string"},"logger":{"type":"string","nullable":true},"metadata":{"oneOf":[{"type":"object","required":["filename","type","value"],"properties":{"filename":{"type":"string"},"type":{"type":"string"},"value":{"type":"string"}}},{"type":"object","required":["title"],"properties":{"title":{"type":"string"}}}]},"numComments":{"type":"integer"},"permalink":{"type":"string"},"project":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}}},"shareId":{"type":"string","nullable":true},"shortId":{"type":"string"},"stats":{"type":"object","properties":{"24h":{"type":"array","items":{"type":"array","items":{"type":"number"}}}}},"status":{"type":"string","enum":["resolved","unresolved","ignored"]},"statusDetails":{"type":"object"},"subscriptionDetails":{"type":"object","nullable":true},"title":{"type":"string"},"type":{"type":"string"},"userCount":{"type":"integer"}}}},"example":[{"annotations":[],"assignedTo":null,"count":"1","culprit":"raven.scripts.runner in main","firstSeen":"2018-11-06T21:19:55Z","hasSeen":false,"id":"1","isBookmarked":false,"isPublic":false,"isSubscribed":true,"lastSeen":"2018-11-06T21:19:55Z","level":"error","logger":null,"metadata":{"title":"This is an example Python exception"},"numComments":0,"permalink":"https://sentry.io/the-interstellar-jurisdiction/pump-station/issues/1/","project":{"id":"2","name":"Pump Station","slug":"pump-station"},"shareId":null,"shortId":"PUMP-STATION-1","stats":{"24h":[[1541455200,473],[1541458800,914],[1541462400,991],[1541466000,925],[1541469600,881],[1541473200,182],[1541476800,490],[1541480400,820],[1541484000,322],[1541487600,836],[1541491200,565],[1541494800,758],[1541498400,880],[1541502000,677],[1541505600,381],[1541509200,814],[1541512800,329],[1541516400,446],[1541520000,731],[1541523600,111],[1541527200,926],[1541530800,772],[1541534400,400],[1541538000,943]]},"status":"unresolved","statusDetails":{},"subscriptionDetails":null,"title":"This is an example Python exception","type":"default","userCount":0}]}}},"403":{"description":"Forbidden"}},"security":[{"auth_token":["event:read"]}],"x-sentry-routing":{"silo":"unknown","organizationParameter":"organization_id_or_slug"}},"put":{"tags":["Events"],"description":"Bulk mutate various attributes on issues. The list of issues to modify is given through the `id` query parameter. It is repeated for each issue that should be modified.\n\n- For non-status updates, the `id` query parameter is required.\n- For status updates, the `id` query parameter may be omitted\nfor a batch \"update all\" query.\n- An optional `status` query parameter may be used to restrict\nmutations to only events with the given status.\n\nThe following attributes can be modified and are supplied as JSON object in the body:\n\nIf any IDs are out of scope this operation will succeed without any data mutation.","operationId":"Bulk Mutate a List of Issues","parameters":[{"name":"organization_id_or_slug","in":"path","description":"The ID or slug of the organization the issues belong to.","required":true,"schema":{"type":"string"}},{"name":"project_id_or_slug","in":"path","description":"The ID or slug of the project the issues belong to.","required":true,"schema":{"type":"string"}},{"name":"id","in":"query","description":"A list of IDs of the issues to be mutated. This parameter shall be repeated for each issue. It is optional only if a status is mutated in which case an implicit update all is assumed.","required":false,"schema":{"type":"integer"}},{"name":"status","in":"query","description":"Optionally limits the query to issues of the specified status. Valid values are `\"resolved\"`, `\"reprocessing\"`, `\"unresolved\"`, and `\"ignored\"`.","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","description":"The new status for the issues. Valid values are `\"resolved\"`, `\"resolvedInNextRelease\"`, `\"unresolved\"`, and `\"ignored\"`."},"statusDetails":{"type":"object","properties":{"inRelease":{"type":"string"},"inNextRelease":{"type":"boolean"},"inCommit":{"type":"string"},"ignoreDuration":{"type":"integer"},"ignoreCount":{"type":"integer"},"ignoreWindow":{"type":"integer"},"ignoreUserCount":{"type":"integer"},"ignoreUserWindow":{"type":"integer"}},"description":"Additional details about the resolution. Valid values are `\"inRelease\"`, `\"inNextRelease\"`, `\"inCommit\"`, `\"ignoreDuration\"`, `\"ignoreCount\"`, `\"ignoreWindow\"`, `\"ignoreUserCount\"`, and `\"ignoreUserWindow\"`."},"ignoreDuration":{"type":"integer","description":"The number of minutes to ignore this issue."},"isPublic":{"type":"boolean","description":"Sets the issue to public or private."},"merge":{"type":"boolean","description":"Allows to merge or unmerge different issues."},"assignedTo":{"type":"string","description":"The actor ID (or username) of the user or team that should be assigned to this issue."},"hasSeen":{"type":"boolean","description":"In case this API call is invoked with a user context this allows changing of the flag that indicates if the user has seen the event."},"isBookmarked":{"type":"boolean","description":"In case this API call is invoked with a user context this allows changing of the bookmark flag."}}},"example":{"isPublic":false,"status":"unresolved"}}},"required":true},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["isPublic","status","statusDetails"],"properties":{"isPublic":{"type":"boolean"},"status":{"type":"string","enum":["resolved","unresolved","ignored"]},"statusDetails":{"type":"object"}}},"example":{"isPublic":false,"status":"unresolved","statusDetails":{}}}}},"400":{"description":"Bad Input"},"403":{"description":"Forbidden"},"404":{"description":"The requested resource does not exist"}},"security":[{"auth_token":["event:write"]}],"x-sentry-routing":{"silo":"unknown","organizationParameter":"organization_id_or_slug"}},"delete":{"tags":["Events"],"description":"Permanently remove the given issues. The list of issues to modify is given through the `id` query parameter. It is repeated for each issue that should be removed.\n\nOnly queries by 'id' are accepted.\n\nIf any IDs are out of scope this operation will succeed without any data mutation.","operationId":"Bulk Remove a List of Issues","parameters":[{"name":"organization_id_or_slug","in":"path","description":"The ID or slug of the organization the issues belong to.","required":true,"schema":{"type":"string"}},{"name":"project_id_or_slug","in":"path","description":"The ID or slug of the project the issues belong to.","required":true,"schema":{"type":"string"}},{"name":"id","in":"query","description":"A list of IDs of the issues to be removed. This parameter shall be repeated for each issue, e.g. `?id=1&id=2&id=3`. If this parameter is not provided, it will attempt to remove the first 1000 issues.","schema":{"type":"integer"}}],"responses":{"204":{"description":"Success"},"403":{"description":"Forbidden"},"404":{"description":"Project not found"}},"security":[{"auth_token":["event:admin"]}],"x-sentry-routing":{"silo":"unknown","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/tags/{key}/values/":{"get":{"operationId":"listOrganizationIssueTagValues","description":"Returns a list of values associated with this key for an issue.\nReturns at most 1000 values when paginated.","summary":"List a Tag's Values for an Issue","parameters":[{"in":"path","name":"issue_id","schema":{"type":"string"},"description":"The ID of the issue you'd like to query.","required":true},{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"key","schema":{"type":"string"},"description":"The tag key to look the values up for.","required":true},{"in":"query","name":"sort","schema":{"type":"string","enum":["age","count","date","id"]},"description":"Sort order of the resulting tag values. Default is `id`."},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."}],"tags":["Events"],"security":[{"auth_token":["event:admin","event:read","event:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"query":{"type":"string","nullable":true},"key":{"type":"string"},"name":{"type":"string"},"value":{"type":"string","nullable":true},"count":{"type":"integer","nullable":true},"lastSeen":{"type":"string","nullable":true},"firstSeen":{"type":"string","nullable":true}},"required":["count","firstSeen","key","lastSeen","name","value"]}},"examples":{"ReturnAllTagValuesForASpecificTag":{"value":[{"key":"strawberry","name":"Strawberry","value":"strawberry","count":2,"lastSeen":"2024-01-01T00:00:00Z","firstSeen":"2024-01-01T00:00:00Z"},{"key":"vanilla","name":"Vanilla","value":"vanilla","count":1,"lastSeen":"2024-01-01T00:00:00Z","firstSeen":"2024-01-01T00:00:00Z"},{"key":"chocolate","name":"Chocolate","value":"chocolate","count":1,"lastSeen":"2024-01-01T00:00:00Z","firstSeen":"2024-01-01T00:00:00Z"},{"key":"Neopolitan","name":"Neopolitan","value":"neopolitan","count":1,"lastSeen":"2024-01-01T00:00:00Z","firstSeen":"2024-01-01T00:00:00Z"}],"summary":"Return all tag values for a specific tag"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/releases/{version}/commitfiles/":{"get":{"tags":["Releases"],"description":"Retrieve files changed in a release's commits","operationId":"Retrieve Files Changed in a Release's Commits","parameters":[{"name":"organization_id_or_slug","in":"path","description":"The ID or slug of the organization the release belongs to.","required":true,"schema":{"type":"string"}},{"name":"version","in":"path","description":"The version identifier of the release.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"auth_token":["project:releases"]}],"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/sentry-app-installations/":{"get":{"tags":["Integration"],"description":"Return a list of integration platform installations for a given organization.","operationId":"List an Organization's Integration Platform Installations","parameters":[{"name":"organization_id_or_slug","in":"path","description":"The organization short name.","required":true,"schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","required":["app","organization","uuid","status"],"properties":{"app":{"type":"object","required":["uuid","slug","sentryAppId"],"properties":{"uuid":{"type":"string"},"slug":{"type":"string"},"sentryAppId":{"type":"integer"}}},"organization":{"type":"object","required":["slug"],"properties":{"slug":{"type":"string"}}},"uuid":{"type":"string"},"status":{"type":"string"}}}},"example":[{"app":{"uuid":"a9988ad6-meow-4905-bb93-f7cbf4c96bbb","slug":"cat-75c19a","sentryAppId":1},"organization":{"slug":"sentry"},"uuid":"01635075-m30w-4f96-8fc8-ff9680780a13","status":"installed"}]}}},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"auth_token":["org:read","org:integrations"]}],"x-sentry-routing":{"silo":"control","organizationParameter":"organization_id_or_slug"}}},"/api/0/sentry-app-installations/{uuid}/external-issues/":{"post":{"tags":["Integration"],"description":"Create or update an external issue from an integration platform integration.","operationId":"Create or update an External Issue","parameters":[{"name":"uuid","in":"path","description":"The uuid of the integration platform integration.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"required":["issueId","webUrl","project","identifier"],"type":"object","properties":{"issueId":{"type":"integer","description":"The ID of the Sentry issue to link the external issue to."},"webUrl":{"type":"string","description":"The URL of the external service to link the issue to."},"project":{"type":"string","description":"The external service's project."},"identifier":{"type":"string","description":"A unique identifier of the external issue."}}},"example":{"issueId":1,"webUrl":"https://somerandom.io/project/issue-id","project":"ExternalProj","identifier":"issue-1"}}},"required":true},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["id","issueId","serviceType","displayName","webUrl"],"properties":{"id":{"type":"string"},"issueId":{"type":"string"},"serviceType":{"type":"string"},"displayName":{"type":"string"},"webUrl":{"type":"string"}}},"example":{"id":"1","issueId":"1","serviceType":"testing","displayName":"ExternalProj#issue-1","webUrl":"https://somerandom.io/project/issue-id"}}}},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"security":[{"auth_token":["event:write"]}],"x-sentry-routing":{"silo":"control"}}},"/api/0/sentry-app-installations/{uuid}/external-issues/{external_issue_id}/":{"delete":{"tags":["Integration"],"description":"Delete an external issue.","operationId":"Delete an External Issue","parameters":[{"name":"uuid","in":"path","description":"The uuid of the integration platform integration.","required":true,"schema":{"type":"string"}},{"name":"external_issue_id","in":"path","description":"The ID of the external issue.","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Success"},"403":{"description":"Forbidden"},"404":{"description":"External issue not found"},"409":{"description":"This issue link is being updated. Try again."}},"security":[{"auth_token":["event:write","event:admin"]}],"x-sentry-routing":{"silo":"control"}}},"/api/0/organizations/{organization_id_or_slug}/spike-protections/":{"post":{"tags":["Projects"],"description":"Enables Spike Protection feature for some of the projects within the organization.","operationId":"Enable Spike Protection","parameters":[{"name":"organization_id_or_slug","in":"path","description":"The ID or slug of the organization the projects belong to","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Django Rest Framework serializer for incoming Spike Protection API payloads","properties":{"projects":{"description":"Slugs of projects to enable Spike Protection for. Set to `$all` to enable Spike Protection for all the projects in the organization.","type":"array","items":{"type":"string"}}},"required":["projects"]}}},"required":true},"responses":{"201":{"description":"Success"},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"security":[{"auth_token":["project:read","project:write","project:admin"]}],"x-sentry-routing":{"silo":"unknown","organizationParameter":"organization_id_or_slug"}},"delete":{"tags":["Projects"],"description":"Disables Spike Protection feature for some of the projects within the organization.","operationId":"Disable Spike Protection","parameters":[{"name":"organization_id_or_slug","in":"path","description":"The ID or slug of the organization the projects belong to","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Django Rest Framework serializer for incoming Spike Protection API payloads","properties":{"projects":{"description":"Slugs of projects to disable Spike Protection for. Set to `$all` to disable Spike Protection for all the projects in the organization.","type":"array","items":{"type":"string"}}},"required":["projects"]}}},"required":true},"responses":{"200":{"description":"Success"},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"}},"security":[{"auth_token":["project:read","project:write","project:admin"]}],"x-sentry-routing":{"silo":"unknown","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/":{"get":{"operationId":"getOrganizationIssue","description":"Return details on an individual issue, including its basic stats, comment\nand user-report counts, and a summary of the latest event.","summary":"Retrieve an Issue","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"issue_id","schema":{"type":"string"},"description":"The ID of the issue you'd like to query.","required":true},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."},{"in":"query","name":"expand","schema":{"type":"array","items":{"type":"string","enum":["forecast","inbox","integrationIssues","latestEventHasAttachments","owners","sentryAppIssues"]}},"description":"Additional data to include in the response."},{"in":"query","name":"collapse","schema":{"type":"array","items":{"type":"string","enum":["release","stats","tags"]}},"description":"Fields to remove from the response to improve query performance."}],"tags":["Events"],"security":[{"auth_token":["event:admin","event:read","event:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"isUnhandled":{"type":"boolean"},"count":{"type":"string"},"userCount":{"type":"integer"},"firstSeen":{"type":"string","format":"date-time","nullable":true},"lastSeen":{"type":"string","format":"date-time","nullable":true},"derivedData":{"type":"object","properties":{"blocker":{"type":"string"},"progress":{"type":"string"},"status":{"type":"string"},"viewCount":{"type":"integer"},"hasOpenFixPr":{"type":"boolean"},"isAssigned":{"type":"boolean"},"hasRootCause":{"type":"boolean"},"lastCompletedAutofixStep":{"type":"string"},"lastProgressedAt":{"type":"string","format":"date-time","nullable":true}},"required":["blocker","hasOpenFixPr","hasRootCause","isAssigned","lastCompletedAutofixStep","lastProgressedAt","progress","status","viewCount"]},"id":{"type":"string"},"shareId":{"type":"string","nullable":true},"shortId":{"type":"string"},"title":{"type":"string"},"culprit":{"type":"string","nullable":true},"permalink":{"type":"string"},"logger":{"type":"string","nullable":true},"level":{"enum":["sample","debug","info","warning","error","fatal","unknown"],"type":"string"},"status":{"enum":["resolved","ignored","pending_deletion","pending_merge","reprocessing","unresolved"],"type":"string"},"statusDetails":{"type":"object","properties":{"ignoreCount":{"type":"integer"},"ignoreUntil":{"type":"string","format":"date-time"},"ignoreUserCount":{"type":"integer"},"ignoreUserWindow":{"type":"integer"},"ignoreWindow":{"type":"integer"},"actor":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},"inNextRelease":{"type":"boolean"},"inRelease":{"type":"string"},"inCommit":{"type":"string"},"pendingEvents":{"type":"integer"},"info":{"type":"object","properties":{"dateCreated":{"type":"string"},"syncCount":{"type":"integer"},"totalEvents":{"type":"integer"}},"required":["dateCreated","syncCount","totalEvents"],"nullable":true}}},"substatus":{"enum":["archived_until_escalating","archived_until_condition_met","archived_forever","escalating","ongoing","regressed","new",null],"type":"string","nullable":true},"isPublic":{"type":"boolean"},"platform":{"type":"string","nullable":true},"priority":{"enum":["low","medium","high",null],"type":"string","nullable":true},"priorityLockedAt":{"type":"string","format":"date-time","nullable":true},"seerFixabilityScore":{"type":"number","format":"double","nullable":true},"seerAutofixLastTriggered":{"type":"string","format":"date-time","nullable":true},"seerExplorerAutofixLastTriggered":{"type":"string","format":"date-time","nullable":true},"project":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"platform":{"type":"string","nullable":true}},"required":["id","name","platform","slug"]},"type":{"enum":["default","error","csp","nel","hpkp","expectct","expectstaple","transaction","generic","feedback"],"type":"string"},"issueType":{"type":"string"},"issueCategory":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"numComments":{"type":"integer"},"assignedTo":{"type":"object","properties":{"type":{"enum":["user","team"],"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["id","name","type"],"nullable":true},"isBookmarked":{"type":"boolean"},"isSubscribed":{"type":"boolean"},"subscriptionDetails":{"type":"object","properties":{"disabled":{"type":"boolean"},"reason":{"type":"string"}},"nullable":true},"hasSeen":{"type":"boolean"},"annotations":{"type":"array","items":{"type":"object","properties":{"displayName":{"type":"string"},"url":{"type":"string"}},"required":["displayName","url"]}},"firstRelease":{"type":"object","additionalProperties":{},"nullable":true},"lastRelease":{"type":"object","additionalProperties":{},"nullable":true},"tags":{"type":"array","items":{"type":"object","additionalProperties":{}}},"stats":{"type":"object","additionalProperties":{"type":"array","items":{"type":"array","items":{"type":"number","format":"double"}}}},"inbox":{"type":"object","properties":{"reason":{"type":"integer"},"reason_details":{"type":"object","properties":{"until":{"type":"string","nullable":true},"count":{"type":"integer","nullable":true},"window":{"type":"integer","nullable":true},"user_count":{"type":"integer","nullable":true},"user_window":{"type":"integer","nullable":true}},"required":["count","until","user_count","user_window","window"],"nullable":true},"date_added":{"type":"string","format":"date-time"}},"required":["date_added","reason","reason_details"],"nullable":true},"owners":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"owner":{"type":"string"},"date_added":{"type":"string","format":"date-time"}},"required":["date_added","owner","type"]},"nullable":true},"forecast":{"type":"object","additionalProperties":{}},"integrationIssues":{"type":"array","items":{"type":"object","additionalProperties":{}}},"sentryAppIssues":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"issueId":{"type":"string"},"serviceType":{"type":"string"},"displayName":{"type":"string"},"webUrl":{"type":"string"}},"required":["displayName","id","issueId","serviceType","webUrl"]}},"latestEventHasAttachments":{"type":"boolean"},"activity":{"type":"array","items":{"type":"object","additionalProperties":{}}},"seenBy":{"type":"array","items":{"type":"object","additionalProperties":{}}},"userReportCount":{"type":"integer"},"participants":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["activity","annotations","assignedTo","culprit","hasSeen","id","isBookmarked","isPublic","isSubscribed","issueCategory","issueType","level","logger","metadata","numComments","participants","permalink","platform","priority","priorityLockedAt","project","seenBy","seerAutofixLastTriggered","seerExplorerAutofixLastTriggered","seerFixabilityScore","shareId","shortId","status","statusDetails","subscriptionDetails","substatus","title","type","userReportCount"]},"examples":{"ReturnAnIssue":{"value":{"id":"1","shareId":"123def456abc","shortId":"PUMP-STATION-1","title":"This is an example Python exception","culprit":"raven.scripts.runner in main","permalink":"https://sentry.io/the-interstellar-jurisdiction/pump-station/issues/1/","logger":null,"level":"error","status":"unresolved","statusDetails":{},"substatus":"ongoing","isPublic":false,"platform":"python","priority":"medium","priorityLockedAt":null,"seerFixabilityScore":null,"seerAutofixLastTriggered":null,"seerExplorerAutofixLastTriggered":null,"project":{"id":"2","name":"Pump Station","slug":"pump-station","platform":"python"},"type":"default","issueType":"error","issueCategory":"error","metadata":{"title":"This is an example Python exception"},"numComments":0,"assignedTo":{"type":"user","id":"1","name":"John Doe","email":"john.doe@example.com"},"isBookmarked":false,"isSubscribed":true,"subscriptionDetails":null,"hasSeen":false,"annotations":[],"count":"150","userCount":12,"firstSeen":"2018-11-06T21:19:55Z","lastSeen":"2018-12-06T21:19:55Z","activity":[{"data":{},"dateCreated":"2018-11-06T21:19:55Z","id":"0","type":"first_seen","user":null}],"seenBy":[],"userReportCount":0,"participants":[],"firstRelease":{"version":"17642328ead24b51867165985996d04b29310337","shortVersion":"1764232","dateCreated":"2018-11-06T21:19:55.146Z","dateReleased":null,"ref":null,"url":null},"lastRelease":null,"tags":[{"key":"browser","name":"Browser","totalValues":150},{"key":"level","name":"Level","totalValues":150}],"stats":{"24h":[[1541451600,557],[1541455200,473]],"30d":[[1538870400,565],[1538956800,12862]]}},"summary":"Return an issue"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"updateOrganizationIssue","description":"Update an individual issue's attributes. Only the attributes submitted\nare modified.","summary":"Update an Issue","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"issue_id","schema":{"type":"string"},"description":"The ID of the issue you'd like to query.","required":true}],"tags":["Events"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"inbox":{"type":"boolean","description":"If true, marks the issue as reviewed by the requestor."},"status":{"enum":["resolved","unresolved","ignored","resolvedInNextRelease","muted"],"type":"string","description":"Limit mutations to only issues with the given status.\n\n* `resolved`\n* `unresolved`\n* `ignored`\n* `resolvedInNextRelease`\n* `muted`"},"statusDetails":{"allOf":[{"type":"object","properties":{"inNextRelease":{"type":"boolean","description":"If true, marks the issue as resolved in the next release."},"inRelease":{"type":"string","description":"The version of the release that the issue should be resolved in.If set to `latest`, the latest release will be used."},"inCommit":{"allOf":[{"type":"object","properties":{"commit":{"type":"string","description":"The SHA of the resolving commit."},"repository":{"type":"string","description":"The name of the repository (as it appears in Sentry)."}},"required":["commit","repository"]}],"description":"The commit data that the issue should use for resolution."},"ignoreDuration":{"type":"integer","minimum":0,"description":"Ignore the issue until for this many minutes."},"ignoreCount":{"type":"integer","minimum":0,"description":"Ignore the issue until it has occurred this many times in `ignoreWindow` minutes."},"ignoreWindow":{"type":"integer","maximum":10080,"minimum":0,"description":"Ignore the issue until it has occurred `ignoreCount` times in this many minutes. (Max: 1 week)"},"ignoreUserCount":{"type":"integer","minimum":0,"description":"Ignore the issue until it has affected this many users in `ignoreUserWindow` minutes."},"ignoreUserWindow":{"type":"integer","maximum":10080,"minimum":0,"description":"Ignore the issue until it has affected `ignoreUserCount` users in this many minutes. (Max: 1 week)"}},"required":["ignoreCount","ignoreDuration","ignoreUserCount","ignoreUserWindow","ignoreWindow","inNextRelease","inRelease"]}],"description":"Additional details about the resolution. Status detail updates that include release data are only allowed for issues within a single project."},"substatus":{"enum":["archived_until_escalating","archived_until_condition_met","archived_forever","escalating","ongoing","regressed","new",null],"type":"string","nullable":true,"description":"The new substatus of the issue.\n\n* `archived_until_escalating`\n* `archived_until_condition_met`\n* `archived_forever`\n* `escalating`\n* `ongoing`\n* `regressed`\n* `new`"},"hasSeen":{"type":"boolean","description":"If true, marks the issue as seen by the requestor."},"isBookmarked":{"type":"boolean","description":"If true, bookmarks the issue for the requestor."},"isPublic":{"type":"boolean","description":"If true, publishes the issue."},"isSubscribed":{"type":"boolean","description":"If true, subscribes the requestor to the issue."},"merge":{"type":"boolean","description":"If true, merges the issues together."},"discard":{"type":"boolean","description":"If true, discards the issues instead of updating them."},"assignedTo":{"type":"string","description":"The user or team that should be assigned to the issues. Values take the form of ``, `user:`, ``, ``, or `team:`."},"priority":{"enum":["low","medium","high"],"type":"string","description":"The priority that should be set for the issues\n\n* `low`\n* `medium`\n* `high`"},"ignoreDuration":{"type":"integer","minimum":0,"description":"Ignore the issue for this many minutes."},"ignoreCount":{"type":"integer","minimum":0,"description":"Ignore the issue until it is seen this many more times."},"ignoreWindow":{"type":"integer","maximum":10080,"minimum":0,"description":"Window in minutes over which `ignoreCount` is measured. Maximum is 7 days."},"ignoreUserCount":{"type":"integer","minimum":0,"description":"Ignore the issue until it affects this many more users."},"ignoreUserWindow":{"type":"integer","maximum":10080,"minimum":0,"description":"Window in minutes over which `ignoreUserCount` is measured. Maximum is 7 days."},"snoozeDuration":{"type":"integer","minimum":0,"nullable":true,"description":"Snooze the issue for this many minutes."}},"required":["assignedTo","discard","hasSeen","ignoreCount","ignoreDuration","ignoreUserCount","ignoreUserWindow","ignoreWindow","inbox","isBookmarked","isPublic","isSubscribed","merge","priority","snoozeDuration","status","statusDetails","substatus"]}}},"required":true},"security":[{"auth_token":["event:admin","event:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"isUnhandled":{"type":"boolean"},"count":{"type":"string"},"userCount":{"type":"integer"},"firstSeen":{"type":"string","format":"date-time","nullable":true},"lastSeen":{"type":"string","format":"date-time","nullable":true},"derivedData":{"type":"object","properties":{"blocker":{"type":"string"},"progress":{"type":"string"},"status":{"type":"string"},"viewCount":{"type":"integer"},"hasOpenFixPr":{"type":"boolean"},"isAssigned":{"type":"boolean"},"hasRootCause":{"type":"boolean"},"lastCompletedAutofixStep":{"type":"string"},"lastProgressedAt":{"type":"string","format":"date-time","nullable":true}},"required":["blocker","hasOpenFixPr","hasRootCause","isAssigned","lastCompletedAutofixStep","lastProgressedAt","progress","status","viewCount"]},"id":{"type":"string"},"shareId":{"type":"string","nullable":true},"shortId":{"type":"string"},"title":{"type":"string"},"culprit":{"type":"string","nullable":true},"permalink":{"type":"string"},"logger":{"type":"string","nullable":true},"level":{"enum":["sample","debug","info","warning","error","fatal","unknown"],"type":"string"},"status":{"enum":["resolved","ignored","pending_deletion","pending_merge","reprocessing","unresolved"],"type":"string"},"statusDetails":{"type":"object","properties":{"ignoreCount":{"type":"integer"},"ignoreUntil":{"type":"string","format":"date-time"},"ignoreUserCount":{"type":"integer"},"ignoreUserWindow":{"type":"integer"},"ignoreWindow":{"type":"integer"},"actor":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},"inNextRelease":{"type":"boolean"},"inRelease":{"type":"string"},"inCommit":{"type":"string"},"pendingEvents":{"type":"integer"},"info":{"type":"object","properties":{"dateCreated":{"type":"string"},"syncCount":{"type":"integer"},"totalEvents":{"type":"integer"}},"required":["dateCreated","syncCount","totalEvents"],"nullable":true}}},"substatus":{"enum":["archived_until_escalating","archived_until_condition_met","archived_forever","escalating","ongoing","regressed","new",null],"type":"string","nullable":true},"isPublic":{"type":"boolean"},"platform":{"type":"string","nullable":true},"priority":{"enum":["low","medium","high",null],"type":"string","nullable":true},"priorityLockedAt":{"type":"string","format":"date-time","nullable":true},"seerFixabilityScore":{"type":"number","format":"double","nullable":true},"seerAutofixLastTriggered":{"type":"string","format":"date-time","nullable":true},"seerExplorerAutofixLastTriggered":{"type":"string","format":"date-time","nullable":true},"project":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"platform":{"type":"string","nullable":true}},"required":["id","name","platform","slug"]},"type":{"enum":["default","error","csp","nel","hpkp","expectct","expectstaple","transaction","generic","feedback"],"type":"string"},"issueType":{"type":"string"},"issueCategory":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"numComments":{"type":"integer"},"assignedTo":{"type":"object","properties":{"type":{"enum":["user","team"],"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["id","name","type"],"nullable":true},"isBookmarked":{"type":"boolean"},"isSubscribed":{"type":"boolean"},"subscriptionDetails":{"type":"object","properties":{"disabled":{"type":"boolean"},"reason":{"type":"string"}},"nullable":true},"hasSeen":{"type":"boolean"},"annotations":{"type":"array","items":{"type":"object","properties":{"displayName":{"type":"string"},"url":{"type":"string"}},"required":["displayName","url"]}}},"required":["annotations","assignedTo","culprit","hasSeen","id","isBookmarked","isPublic","isSubscribed","issueCategory","issueType","level","logger","metadata","numComments","permalink","platform","priority","priorityLockedAt","project","seerAutofixLastTriggered","seerExplorerAutofixLastTriggered","seerFixabilityScore","shareId","shortId","status","statusDetails","subscriptionDetails","substatus","title","type"]}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"deleteOrganizationIssue","description":"Asynchronously queue an individual issue for deletion.","summary":"Remove an Issue","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"issue_id","schema":{"type":"string"},"description":"The ID of the issue you'd like to query.","required":true}],"tags":["Events"],"security":[{"auth_token":["event:admin"]}],"responses":{"202":{"description":"Accepted"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/autofix/":{"get":{"operationId":"getOrganizationIssueAutofixState","description":"**Experimental:** This API is under active development and may change.\n\nRetrieve the current detailed state of an issue fix process for a specific issue including:\n\n- Current status\n- Steps performed and their outcomes\n- Repository information and permissions\n- Root Cause Analysis\n- Proposed Solution\n- Generated code changes","summary":"Retrieve Seer Issue Fix State","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"issue_id","schema":{"type":"string"},"description":"The ID of the issue you'd like to query.","required":true},{"in":"query","name":"llmFormat","schema":{"type":"string","enum":["json","markdown","xml"]},"description":"If set, adds a `formatted` field to the response with the autofix rendered as the requested format for LLM consumption."}],"tags":["Seer"],"security":[{"auth_token":["event:admin","event:read","event:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","description":"Response type for the GET endpoint","properties":{"formatted":{"type":"object","description":"The ``formatted`` field the mixin adds to a response when ``?llmFormat`` is requested.\n\n``content`` is text for the text formats and a serialized JSON object for ``json``, so the\nresponse shape is the same whichever format a caller asks for.","properties":{"format":{"enum":["markdown","xml","json"],"type":"string"},"content":{"type":"string"}},"required":["content","format"]},"autofix":{"type":"object","additionalProperties":{},"nullable":true}},"required":["autofix"]},"examples":{"AutofixInProgress":{"value":{"autofix":{"run_id":12345,"request":{"organization_id":1,"project_id":2,"repos":[{"integration_id":"12345","provider":"github","owner":"getsentry","name":"seer","external_id":"439438299","branch_name":"main","base_commit_sha":"4ebb4f342e308fda87d6ccb3cced25f2701bd60c"}],"tags_overview":{"tags_overview":[{"key":"environment","name":"Environment","top_values":[{"count":1,"percentage":"100%","value":"production"}]},{"key":"run_id","name":"Run Id","top_values":[{"count":1,"percentage":"100%","value":"1372444"}]}]},"options":{"auto_run_source":"issue_summary_on_post_process_fixability"}},"updated_at":"2025-09-23T21:02:18.160885","status":"COMPLETED","codebases":{"439438299":{"repo_external_id":"439438299","file_changes":[],"is_readable":true,"is_writeable":true}},"steps":[{"active_comment_thread":null,"agent_comment_thread":null,"completedMessage":null,"id":"0872381c-7d71-46cd-a62b-fbc196846965","index":0,"initial_memory_length":1,"insights":[],"key":"root_cause_analysis_processing","output_confidence_score":null,"output_stream":null,"proceed_confidence_score":null,"progress":[{"data":null,"message":"Figuring out the root cause...","timestamp":"2025-09-12T23:20:31.304114","type":"INFO"},{"data":null,"message":"Looking at `src/seer/automation/autofix/tools/tools.py` in `getsentry/seer`...","timestamp":"2025-09-12T23:20:49.671212","type":"INFO"},{"data":null,"message":"Simulating profound thought...","timestamp":"2025-09-12T23:20:58.229135","type":"INFO"},{"data":null,"message":"Arranging data in a way that looks intentional...","timestamp":"2025-09-12T23:21:22.696531","type":"INFO"}],"queued_user_messages":[],"status":"COMPLETED","title":"Analyzing the Issue","type":"default"},{"active_comment_thread":null,"agent_comment_thread":null,"causes":[{"description":"`BaseTools.run_ripgrep` called without required `query` argument, causing `TypeError`.","id":0,"relevant_repos":["getsentry/seer"],"reproduction_urls":[],"root_cause_reproduction":[{"code_snippet_and_analysis":"The process begins with an HTTP request to the `autofix_start_endpoint`. This is the entry point for the autofix workflow.","is_most_important_event":false,"relevant_code_file":{"file_path":"seer/app.py","repo_name":"getsentry/seer"},"timeline_item_type":"internal_code","title":"Autofix process initiated via API endpoint."}]}],"completedMessage":null,"id":"e6ae64b6-e4d4-44f5-bac7-6ecf6780a6dc","index":1,"key":"root_cause_analysis","output_stream":null,"progress":[{"data":null,"message":"Here is Autofix's proposed root cause.","timestamp":"2025-09-12T23:21:30.662818","type":"INFO"}],"queued_user_messages":[],"selection":{"cause_id":0,"instruction":null},"status":"COMPLETED","termination_reason":null,"title":"Root Cause Analysis","type":"root_cause_analysis"}],"coding_agents":{},"last_triggered_at":"2025-09-23T21:00:46.696678","completed_at":null,"repositories":[{"integration_id":2933,"url":"https://github.com/getsentry/seer","external_id":"439438299","name":"getsentry/seer","provider":"integrations:github","default_branch":"main","is_readable":true,"is_writeable":true}]}},"summary":"Autofix in Progress"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"},"x-sentry-experimental":true},"post":{"operationId":"startOrganizationIssueAutofix","description":"Trigger a Seer Issue Fix run for a specific issue.\n\nThe issue fix process can:\n- Identify the root cause of the issue\n- Propose a solution\n- Generate code changes\n- Create a pull request with the fix\n\nThe process runs asynchronously, and you can get the state using the GET endpoint.","summary":"Start Seer Issue Fix","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"issue_id","schema":{"type":"string"},"description":"The ID of the issue you'd like to query.","required":true}],"tags":["Seer"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","description":"Serializer for the agent-based autofix requests.","properties":{"step":{"enum":["root_cause","solution","code_changes","pr_iteration","open_pr","coding_agent_handoff"],"type":"string","default":"root_cause","description":"Which autofix step to run.\n\n* `root_cause`\n* `solution`\n* `code_changes`\n* `pr_iteration`\n* `open_pr`\n* `coding_agent_handoff`"},"stopping_point":{"enum":["root_cause","solution","code_changes","open_pr"],"type":"string","description":"Where the issue fix process should stop. If not provided, will run to root cause.\n\n* `root_cause`\n* `solution`\n* `code_changes`\n* `open_pr`"},"run_id":{"type":"integer","description":"**Deprecated** in favor of sentry_run_id; retained for backward compatibility. The existing run's numeric Seer id to continue. If neither run_id nor sentry_run_id is provided, starts a new run."},"sentry_run_id":{"type":"string","format":"uuid","description":"Existing run's UUID to continue. Preferred over run_id, and takes precedence when both are given."},"integration_id":{"type":"integer","description":"Coding agent integration ID. Required for coding_agent_handoff step (unless provider is specified)."},"provider":{"type":"string","description":"Coding agent provider (e.g., 'github_copilot'). Alternative to integration_id for user-authenticated providers."},"user_context":{"type":"string","description":"Optional user context to append to the step prompt.","maxLength":10000},"repo_name":{"type":"string","description":"Optional repository name for which to create the pull request. Do not pass a repository name to create pull requests in all relevant repositories."},"insert_index":{"type":"integer","description":"Block index to insert at. When provided, truncates blocks after this point for retry-from-step."},"referrer":{"type":"string","description":"Referrer identifying where the issue fix was triggered from."},"enable_bash_mode":{"type":"boolean","default":false,"description":"Override bash mode tools."}}}}}},"security":[{"auth_token":["event:admin","event:write","seer:write"]}],"responses":{"202":{"content":{"application/json":{"schema":{"type":"object","description":"Response type for the POST endpoint (default kickoff and step paths).","properties":{"run_id":{"type":"integer"},"sentry_run_id":{"type":"string","nullable":true}},"required":["run_id","sentry_run_id"]},"examples":{"SuccessfulAutofixCreation":{"value":{"run_id":12345,"sentry_run_id":"f47ac10b-58cc-4372-a567-0e02b2c3d479"},"summary":"Successful Autofix Creation"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/events/":{"get":{"operationId":"listOrganizationIssueEvents","description":"Return a list of error events bound to an issue","summary":"List an Issue's Events","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"issue_id","schema":{"type":"string"},"description":"The ID of the issue you'd like to query.","required":true},{"in":"query","name":"start","schema":{"type":"string","format":"date-time"},"description":"The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"end","schema":{"type":"string","format":"date-time"},"description":"The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`."},{"in":"query","name":"statsPeriod","schema":{"type":"string"},"description":"The period of time for the query, will override the start & end parameters, a number followed by one of:\n- `d` for days\n- `h` for hours\n- `m` for minutes\n- `s` for seconds\n- `w` for weeks\n\nFor example, `24h`, to mean query data starting from 24 hours ago to now."},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."},{"in":"query","name":"full","schema":{"type":"boolean","default":false},"description":"Specify true to include the full event body, including the stacktrace, in the event payload. When true, the page size is capped at 10."},{"in":"query","name":"sample","schema":{"type":"boolean","default":false},"description":"Return events in pseudo-random order. This is deterministic so an identical query will always return the same events in the same order."},{"in":"query","name":"query","schema":{"type":"string"},"description":"An optional search query for filtering events. See [search syntax](https://docs.sentry.io/concepts/search/) and queryable event properties at [Sentry Search Documentation](https://docs.sentry.io/concepts/search/searchable-properties/events/) for more information. An example query might be `query=transaction:foo AND release:abc`"},{"in":"query","name":"per_page","schema":{"type":"integer"},"description":"Limit the number of rows to return in the result. Default and maximum allowed is 100."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Events"],"security":[{"auth_token":["event:admin","event:read","event:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"event.type":{"type":"string"},"groupID":{"type":"string","nullable":true},"eventID":{"type":"string"},"projectID":{"type":"string"},"message":{"type":"string"},"title":{"type":"string"},"location":{"type":"string","nullable":true},"culprit":{"type":"string","nullable":true},"user":{"type":"object","properties":{"id":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"username":{"type":"string","nullable":true},"ip_address":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"geo":{"type":"object","additionalProperties":{"type":"string"},"nullable":true},"data":{"type":"object","additionalProperties":{},"nullable":true}},"nullable":true},"tags":{"type":"array","items":{"type":"object","properties":{"query":{"type":"string"},"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"crashFile":{"type":"string","nullable":true},"metadata":{"type":"object","additionalProperties":{}}},"required":["crashFile","culprit","dateCreated","event.type","eventID","groupID","id","location","message","metadata","platform","projectID","tags","title","user"]}},"examples":{"ReturnAListOfErrorEventsBoundToAnIssue":{"value":[{"eventID":"9fac2ceed9344f2bbfdd1fdacb0ed9b1","tags":[{"key":"browser","value":"Chrome 60.0"},{"key":"device","value":"Other"},{"key":"environment","value":"production"},{"value":"fatal","key":"level"},{"key":"os","value":"Mac OS X 10.12.6"},{"value":"CPython 2.7.16","key":"runtime"},{"key":"release","value":"17642328ead24b51867165985996d04b29310337"},{"key":"server_name","value":"web1.example.com"}],"dateCreated":"2020-09-11T17:46:36Z","user":null,"message":"","title":"This is an example Python exception","id":"dfb1a2d057194e76a4186cc8a5271553","platform":"python","event.type":"error","groupID":"1889724436","crashFile":null,"location":"example.py:123","culprit":"/books/new/","projectID":"49271","metadata":{"type":"ExampleException","value":"This is an example Python exception"}}],"summary":"Return a list of error events bound to an issue"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/events/{event_id}/":{"get":{"operationId":"getOrganizationIssueEvent","description":"Retrieves the details of an issue event.","summary":"Retrieve an Issue Event","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"issue_id","schema":{"type":"string"},"description":"The ID of the issue you'd like to query.","required":true},{"in":"path","name":"event_id","schema":{"type":"string","enum":["latest","oldest","recommended"]},"description":"The ID of the event to retrieve, or 'latest', 'oldest', or 'recommended'.","required":true},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."},{"in":"query","name":"collapse","schema":{"type":"array","items":{"type":"string","enum":["adjacentEvents"]}},"description":"Parts of the response to skip computing. Specify `adjacentEvents` to skip looking up the neighboring events in the issue; `nextEventID` and `previousEventID` are then always `null`. Unknown values are ignored."},{"in":"query","name":"llmFormat","schema":{"type":"string","enum":["json","markdown","xml"]},"description":"If set, adds a `formatted` field to the response with the event rendered as the requested format for LLM consumption."}],"tags":["Events"],"security":[{"auth_token":["event:admin","event:read","event:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"groupID":{"type":"string","nullable":true},"eventID":{"type":"string"},"projectID":{"type":"string"},"message":{"type":"string","nullable":true},"title":{"type":"string"},"location":{"type":"string","nullable":true},"user":{"type":"object","properties":{"id":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"username":{"type":"string","nullable":true},"ip_address":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"geo":{"type":"object","additionalProperties":{"type":"string"},"nullable":true},"data":{"type":"object","additionalProperties":{},"nullable":true}},"nullable":true},"tags":{"type":"array","items":{"type":"object","properties":{"query":{"type":"string"},"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}},"platform":{"type":"string"},"dateReceived":{"type":"string","format":"date-time","nullable":true},"contexts":{"type":"object","additionalProperties":{},"nullable":true},"size":{"type":"integer","nullable":true},"entries":{"type":"array","items":{}},"dist":{"type":"string","nullable":true},"sdk":{"type":"object","properties":{"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true}},"required":["name","version"],"nullable":true},"context":{"type":"object","additionalProperties":{},"nullable":true},"packages":{"type":"object","additionalProperties":{}},"type":{"enum":["default","error","csp","nel","hpkp","expectct","expectstaple","transaction","generic","feedback"],"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"errors":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"data":{"type":"object","additionalProperties":{}}},"required":["data","message","type"]}},"occurrence":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"integer"},"eventId":{"type":"string"},"fingerprint":{"type":"array","items":{"type":"string"}},"issueTitle":{"type":"string"},"subtitle":{"type":"string"},"resourceId":{"type":"string","nullable":true},"evidenceData":{"type":"object","additionalProperties":{}},"evidenceDisplay":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"important":{"type":"boolean"}},"required":["important","name","value"]}},"type":{"type":"integer"},"detectionTime":{"type":"number","format":"double"},"level":{"type":"string","nullable":true},"culprit":{"type":"string","nullable":true},"assignee":{"type":"string","nullable":true},"priority":{"type":"integer","nullable":true}},"required":["assignee","culprit","detectionTime","eventId","evidenceData","evidenceDisplay","fingerprint","id","issueTitle","level","priority","projectId","resourceId","subtitle","type"],"nullable":true},"_meta":{"type":"object","additionalProperties":{}},"crashFile":{"type":"string","nullable":true},"culprit":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"fingerprints":{"type":"array","items":{"type":"string"}},"groupingConfig":{"type":"object","properties":{"id":{"type":"string"},"enhancements":{"type":"string"}},"required":["enhancements","id"]},"startTimestamp":{"type":"number","format":"double"},"endTimestamp":{"type":"number","format":"double"},"measurements":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"type":"number","format":"double"},"unit":{"type":"string","nullable":true}},"required":["unit","value"]},"nullable":true},"breakdowns":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"type":"number","format":"double"},"unit":{"type":"string","nullable":true}},"required":["unit","value"]}},"nullable":true},"release":{"type":"object","properties":{"id":{"type":"integer"},"commitCount":{"type":"integer"},"data":{"type":"object","additionalProperties":{}},"dateCreated":{"type":"string","format":"date-time"},"dateReleased":{"type":"string","format":"date-time","nullable":true},"deployCount":{"type":"integer"},"ref":{"type":"string","nullable":true},"lastCommit":{"type":"object","additionalProperties":{},"nullable":true},"lastDeploy":{"type":"object","properties":{"dateStarted":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"id":{"type":"string"},"environment":{"type":"string"},"dateFinished":{"type":"string"},"name":{"type":"string"}},"required":["dateFinished","environment","id","name"],"nullable":true},"status":{"type":"string"},"url":{"type":"string","nullable":true},"userAgent":{"type":"string","nullable":true},"version":{"type":"string","nullable":true},"versionInfo":{"type":"object","properties":{"description":{"type":"string"},"package":{"type":"string","nullable":true},"version":{"type":"object","additionalProperties":{}},"buildHash":{"type":"string","nullable":true}},"required":["buildHash","package","version"],"nullable":true}},"nullable":true},"userReport":{"type":"object","properties":{"id":{"type":"string"},"eventID":{"type":"string"},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"comments":{"type":"string"},"dateCreated":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"username":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"ipAddress":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}},"required":["avatarUrl","email","id","ipAddress","name","username"],"nullable":true},"event":{"type":"object","properties":{"id":{"type":"string"},"eventID":{"type":"string"}},"required":["eventID","id"]}},"required":["comments","dateCreated","email","event","eventID","id","name","user"],"nullable":true},"sdkUpdates":{"type":"array","items":{"type":"object","additionalProperties":{}}},"resolvedWith":{"type":"array","items":{"type":"string"}},"nextEventID":{"type":"string","nullable":true},"previousEventID":{"type":"string","nullable":true},"formatted":{"type":"object","description":"The ``formatted`` field the mixin adds to a response when ``?llmFormat`` is requested.\n\n``content`` is text for the text formats and a serialized JSON object for ``json``, so the\nresponse shape is the same whichever format a caller asks for.","properties":{"format":{"enum":["markdown","xml","json"],"type":"string"},"content":{"type":"string"}},"required":["content","format"]}},"required":["_meta","context","contexts","dateReceived","dist","entries","errors","eventID","groupID","id","location","message","metadata","nextEventID","occurrence","packages","platform","previousEventID","projectID","release","resolvedWith","sdk","sdkUpdates","size","tags","title","type","user","userReport"]},"examples":{"ReturnAnIssueEvent":{"value":{"groupID":"1341191803","eventID":"9999aaaaca8b46d797c23c6077c6ff01","dist":null,"userReport":null,"previousEventID":null,"message":"","title":"This is an example Python exception","id":"9999aaafcc8b46d797c23c6077c6ff01","size":107762,"errors":[{"data":{"column":8,"source":"https://s1.sentry-cdn.com/_static/bloopbloop/sentry/dist/app.js.map","row":15},"message":"Invalid location in sourcemap","type":"js_invalid_sourcemap_location"}],"platform":"javascript","nextEventID":"99f9e199e9a74a14bfef6196ad741619","type":"error","metadata":{"type":"ForbiddenError","value":"GET /organizations/hellboy-meowmeow/users/ 403"},"tags":[{"value":"Chrome 83.0.4103","key":"browser"},{"value":"Chrome","key":"browser.name"},{"value":"prod","key":"environment"},{"value":"yes","key":"handled"},{"value":"error","key":"level"},{"value":"generic","key":"mechanism"}],"dateCreated":"2020-06-17T22:26:56.098086Z","dateReceived":"2020-06-17T22:26:56.428721Z","user":{"username":null,"name":"Hell Boy","ip_address":"192.168.1.1","email":"hell@boy.cat","data":{"isStaff":false},"id":"550747"},"entries":[{"type":"exception","data":{"values":[{"stacktrace":{"frames":[{"function":"ignoreOnError","errors":null,"colNo":23,"vars":null,"package":null,"absPath":"webpack:////usr/src/getsentry/src/sentry/node_modules/@sentry/browser/esm/helpers.js","inApp":false,"lineNo":71,"module":"usr/src/getsentry/src/sentry/node_modules/@sentry/browser/esm/helpers","filename":"/usr/src/getsentry/src/sentry/node_modules/@sentry/browser/esm/helpers.js","platform":null,"instructionAddr":null,"context":[[66," }"],[67," // Attempt to invoke user-land function"],[68," // NOTE: If you are a Sentry user, and you are seeing this stack frame, it"],[69," // means the sentry.javascript SDK caught an error invoking your application code. This"],[70," // is expected behavior and NOT indicative of a bug with sentry.javascript."],[71," return fn.apply(this, wrappedArguments);"],[72," // tslint:enable:no-unsafe-any"],[73," }"],[74," catch (ex) {"],[75," ignoreNextOnError();"],[76," withScope(function (scope) {"]],"symbolAddr":null,"trust":null,"symbol":null},{"function":"apply","errors":null,"colNo":24,"vars":null,"package":null,"absPath":"webpack:////usr/src/getsentry/src/sentry/node_modules/reflux-core/lib/PublisherMethods.js","inApp":false,"lineNo":74,"module":"usr/src/getsentry/src/sentry/node_modules/reflux-core/lib/PublisherMethods","filename":"/usr/src/getsentry/src/sentry/node_modules/reflux-core/lib/PublisherMethods.js","platform":null,"instructionAddr":null,"context":[[69," */"],[70," triggerAsync: function triggerAsync() {"],[71," var args = arguments,"],[72," me = this;"],[73," _.nextTick(function () {"],[74," me.trigger.apply(me, args);"],[75," });"],[76," },"],[77,""],[78," /**"],[79," * Wraps the trigger mechanism with a deferral function."]],"symbolAddr":null,"trust":null,"symbol":null}],"framesOmitted":null,"registers":null,"hasSystemFrames":true},"module":null,"rawStacktrace":{"frames":[{"function":"a","errors":null,"colNo":88800,"vars":null,"package":null,"absPath":"https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js","inApp":false,"lineNo":81,"module":null,"filename":"/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js","platform":null,"instructionAddr":null,"context":[[76,"/*!"],[77," Copyright (c) 2018 Jed Watson."],[78," Licensed under the MIT License (MIT), see"],[79," http://jedwatson.github.io/react-select"],[80,"*/"],[81,"{snip} e,t)}));return e.handleEvent?e.handleEvent.apply(this,s):e.apply(this,s)}catch(e){throw c(),Object(o.m)((function(n){n.addEventProcessor((fu {snip}"],[82,"/*!"],[83," * JavaScript Cookie v2.2.1"],[84," * https://github.com/js-cookie/js-cookie"],[85," *"],[86," * Copyright 2006, 2015 Klaus Hartl & Fagner Brack"]],"symbolAddr":null,"trust":null,"symbol":null},{"function":null,"errors":null,"colNo":149484,"vars":null,"package":null,"absPath":"https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js","inApp":false,"lineNo":119,"module":null,"filename":"/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js","platform":null,"instructionAddr":null,"context":[[114,"/* @license"],[115,"Papa Parse"],[116,"v5.2.0"],[117,"https://github.com/mholt/PapaParse"],[118,"License: MIT"],[119,"{snip} (){var e=arguments,t=this;r.nextTick((function(){t.trigger.apply(t,e)}))},deferWith:function(e){var t=this.trigger,n=this,r=function(){t.app {snip}"],[120,"/**!"],[121," * @fileOverview Kickass library to create and place poppers near their reference elements."],[122," * @version 1.16.1"],[123," * @license"],[124," * Copyright (c) 2016 Federico Zivolo and contributors"]],"symbolAddr":null,"trust":null,"symbol":null}],"framesOmitted":null,"registers":null,"hasSystemFrames":true},"mechanism":{"type":"generic","handled":true},"threadId":null,"value":"GET /organizations/hellboy-meowmeow/users/ 403","type":"ForbiddenError"}],"excOmitted":null,"hasSystemFrames":true}},{"type":"breadcrumbs","data":{"values":[{"category":"tracing","level":"debug","event_id":null,"timestamp":"2020-06-17T22:26:55.266586Z","data":null,"message":"[Tracing] pushActivity: idleTransactionStarted#1","type":"debug"},{"category":"xhr","level":"info","event_id":null,"timestamp":"2020-06-17T22:26:55.619446Z","data":{"url":"/api/0/internal/health/","status_code":200,"method":"GET"},"message":null,"type":"http"},{"category":"sentry.transaction","level":"info","event_id":null,"timestamp":"2020-06-17T22:26:55.945016Z","data":null,"message":"7787a027f3fb46c985aaa2287b3f4d09","type":"default"}]}},{"type":"request","data":{"fragment":null,"cookies":[],"inferredContentType":null,"env":null,"headers":[["User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"]],"url":"https://sentry.io/organizations/hellboy-meowmeow/issues/","query":[["project","5236886"]],"data":null,"method":null}}],"packages":{},"sdk":{"version":"5.17.0","name":"sentry.javascript.browser"},"_meta":{"user":null,"context":null,"entries":{},"contexts":null,"message":null,"packages":null,"tags":{},"sdk":null},"contexts":{"ForbiddenError":{"status":403,"statusText":"Forbidden","responseJSON":{"detail":"You do not have permission to perform this action."},"type":"default"},"browser":{"version":"83.0.4103","type":"browser","name":"Chrome"},"os":{"version":"10","type":"os","name":"Windows"},"trace":{"span_id":"83db1ad17e67dfe7","type":"trace","trace_id":"da6caabcd90e45fdb81f6655824a5f88","op":"navigation"},"organization":{"type":"default","id":"323938","slug":"hellboy-meowmeow"}},"fingerprints":["fbe908cc63d63ea9763fd84cb6bad177"],"context":{"resp":{"status":403,"responseJSON":{"detail":"You do not have permission to perform this action."},"name":"ForbiddenError","statusText":"Forbidden","message":"GET /organizations/hellboy-meowmeow/users/ 403","stack":"Error\n at https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/app.js:1:480441\n at u (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:165:51006)\n at Generator._invoke (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:165:50794)\n at Generator.A.forEach.e. [as next] (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:165:51429)\n at n (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:16:68684)\n at s (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:16:68895)\n at https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:16:68954\n at new Promise ()\n at https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:16:68835\n at v (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/app.js:1:480924)\n at m (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/app.js:1:480152)\n at t.fetchMemberList (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/app.js:1:902983)\n at t.componentDidMount (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/app.js:1:900527)\n at t.componentDidMount (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:189:15597)\n at Pc (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:181:101023)\n at t.unstable_runWithPriority (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:189:3462)\n at Ko (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:181:45529)\n at Rc (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:181:97371)\n at Oc (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:181:87690)\n at https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:181:45820\n at t.unstable_runWithPriority (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:189:3462)\n at Ko (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:181:45529)\n at Zo (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:181:45765)\n at Jo (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:181:45700)\n at gc (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:181:84256)\n at Object.enqueueSetState (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:181:50481)\n at t.M.setState (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:173:1439)\n at t.onUpdate (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/app.js:1:543076)\n at a.n (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:119:149090)\n at a.emit (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:189:6550)\n at p.trigger (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:119:149379)\n at p.onInitializeUrlState (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/app.js:1:541711)\n at a.n (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:119:149090)\n at a.emit (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:189:6550)\n at Function.trigger (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:119:149379)\n at https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:119:149484\n at a (https://s1.sentry-cdn.com/_static/dde778f9f93a48e2b6e58ecb0c5eb8f2/sentry/dist/vendor.js:81:88800)"}},"release":{"dateReleased":"2020-06-17T19:21:02.186004Z","commitCount":11,"url":"https://freight.getsentry.net/deploys/getsentry/production/8868/","data":{},"lastDeploy":{"name":"b65bc521378269d3eaefdc964f8ef56621414943 to prod","url":null,"environment":"prod","dateStarted":null,"dateFinished":"2020-06-17T19:20:55.641748Z","id":"6883490"},"deployCount":1,"dateCreated":"2020-06-17T18:45:31.042157Z","version":"b65bc521378269d3eaefdc964f8ef56621414943","lastCommit":{"repository":{"status":"active","integrationId":"2933","externalSlug":"getsentry/getsentry","name":"getsentry/getsentry","provider":{"id":"integrations:github","name":"GitHub"},"url":"https://github.com/getsentry/getsentry","id":"2","dateCreated":"2016-10-10T21:36:45.373994Z"},"releases":[{"dateReleased":"2020-06-23T13:26:18.427090Z","url":"https://freight.getsentry.net/deploys/getsentry/staging/2077/","dateCreated":"2020-06-23T13:22:50.420265Z","version":"f3783e5fe710758724f14267439fd46cc2bf5918","shortVersion":"f3783e5fe710758724f14267439fd46cc2bf5918","ref":"perf/source-maps-test"},{"dateReleased":"2020-06-17T19:21:02.186004Z","url":"https://freight.getsentry.net/deploys/getsentry/production/8868/","dateCreated":"2020-06-17T18:45:31.042157Z","version":"b65bc521378269d3eaefdc964f8ef56621414943","shortVersion":"b65bc521378269d3eaefdc964f8ef56621414943","ref":"master"}],"dateCreated":"2020-06-17T18:43:37Z","message":"feat(billing): Get a lot of money","id":"b65bc521378269d3eaefdc964f8ef56621414943"},"ref":"master"},"crashFile":null,"location":"example.py:123","culprit":"/books/new/","groupingConfig":{"enhancements":"abc","id":"2359823092345612392"},"occurrence":null,"projectID":"5236886","resolvedWith":[],"sdkUpdates":[]},"summary":"Return an issue event"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/external-issues/":{"get":{"operationId":"listOrganizationIssueExternalIssues","description":"Retrieve custom integration issue links for the given Sentry issue","summary":"Retrieve custom integration issue links for the given Sentry issue","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"issue_id","schema":{"type":"string"},"description":"The ID of the issue you'd like to query.","required":true},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Integration"],"security":[{"auth_token":["event:admin","event:read","event:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"issueId":{"type":"string"},"serviceType":{"type":"string"},"displayName":{"type":"string"},"webUrl":{"type":"string"}},"required":["displayName","id","issueId","serviceType","webUrl"]}},"examples":{"RetrieveTheCustomIntegrationsAssociatedWithAnIssueId":{"value":[{"id":"123456","issueId":"1234567890","serviceType":"example-app","displayName":"example-issue#2","webUrl":"https://example.com/my-test-project/issue/example-issue-2/this-is-an-example-python-exception"}],"summary":"Retrieve the custom integrations associated with an issue id"}}}},"description":""}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/external-issues/{external_issue_id}/":{"delete":{"operationId":"deleteOrganizationIssueExternalIssue","description":"**Experimental:** This API is under active development and may change.\n\nRemove a custom integration's association with a Sentry issue. The external issue is not deleted.","summary":"Unlink a Custom Integration's External Issue","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"issue_id","schema":{"type":"string"},"description":"The ID of the issue you'd like to query.","required":true},{"in":"path","name":"external_issue_id","schema":{"type":"string"},"description":"The ID of the custom integration issue link to remove.","required":true}],"tags":["Integration"],"security":[{"auth_token":["event:admin","event:write"]}],"responses":{"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"409":{"description":"Conflict"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"},"x-sentry-experimental":true}},"/api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/hashes/":{"get":{"operationId":"listOrganizationIssueHashes","description":"List the hashes that make up an issue. Each hash represents a grouping\nsignature used to aggregate individual events into this issue.","summary":"List an Issue's Hashes","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"issue_id","schema":{"type":"string"},"description":"The ID of the issue you'd like to query.","required":true},{"in":"query","name":"full","schema":{"type":"boolean","default":true},"description":"Specify true to include the full event body, including the stacktrace, in the event payload. When true, the page size is capped at 10."},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"}],"tags":["Events"],"security":[{"auth_token":["event:admin","event:read","event:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"latestEvent":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"groupID":{"type":"string","nullable":true},"eventID":{"type":"string"},"projectID":{"type":"string"},"message":{"type":"string","nullable":true},"title":{"type":"string"},"location":{"type":"string","nullable":true},"user":{"type":"object","properties":{"id":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"username":{"type":"string","nullable":true},"ip_address":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"geo":{"type":"object","additionalProperties":{"type":"string"},"nullable":true},"data":{"type":"object","additionalProperties":{},"nullable":true}},"nullable":true},"tags":{"type":"array","items":{"type":"object","properties":{"query":{"type":"string"},"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}},"platform":{"type":"string"},"dateReceived":{"type":"string","format":"date-time","nullable":true},"contexts":{"type":"object","additionalProperties":{},"nullable":true},"size":{"type":"integer","nullable":true},"entries":{"type":"array","items":{}},"dist":{"type":"string","nullable":true},"sdk":{"type":"object","properties":{"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true}},"required":["name","version"],"nullable":true},"context":{"type":"object","additionalProperties":{},"nullable":true},"packages":{"type":"object","additionalProperties":{}},"type":{"enum":["default","error","csp","nel","hpkp","expectct","expectstaple","transaction","generic","feedback"],"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"errors":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"data":{"type":"object","additionalProperties":{}}},"required":["data","message","type"]}},"occurrence":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"integer"},"eventId":{"type":"string"},"fingerprint":{"type":"array","items":{"type":"string"}},"issueTitle":{"type":"string"},"subtitle":{"type":"string"},"resourceId":{"type":"string","nullable":true},"evidenceData":{"type":"object","additionalProperties":{}},"evidenceDisplay":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"important":{"type":"boolean"}},"required":["important","name","value"]}},"type":{"type":"integer"},"detectionTime":{"type":"number","format":"double"},"level":{"type":"string","nullable":true},"culprit":{"type":"string","nullable":true},"assignee":{"type":"string","nullable":true},"priority":{"type":"integer","nullable":true}},"required":["assignee","culprit","detectionTime","eventId","evidenceData","evidenceDisplay","fingerprint","id","issueTitle","level","priority","projectId","resourceId","subtitle","type"],"nullable":true},"_meta":{"type":"object","additionalProperties":{}},"crashFile":{"type":"string","nullable":true},"culprit":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"fingerprints":{"type":"array","items":{"type":"string"}},"groupingConfig":{"type":"object","properties":{"id":{"type":"string"},"enhancements":{"type":"string"}},"required":["enhancements","id"]},"startTimestamp":{"type":"number","format":"double"},"endTimestamp":{"type":"number","format":"double"},"measurements":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"type":"number","format":"double"},"unit":{"type":"string","nullable":true}},"required":["unit","value"]},"nullable":true},"breakdowns":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"type":"number","format":"double"},"unit":{"type":"string","nullable":true}},"required":["unit","value"]}},"nullable":true}},"required":["_meta","context","contexts","dateReceived","dist","entries","errors","eventID","groupID","id","location","message","metadata","occurrence","packages","platform","projectID","sdk","size","tags","title","type","user"]},{"type":"object","properties":{"id":{"type":"string"},"event.type":{"type":"string"},"groupID":{"type":"string","nullable":true},"eventID":{"type":"string"},"projectID":{"type":"string"},"message":{"type":"string"},"title":{"type":"string"},"location":{"type":"string","nullable":true},"culprit":{"type":"string","nullable":true},"user":{"type":"object","properties":{"id":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"username":{"type":"string","nullable":true},"ip_address":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"geo":{"type":"object","additionalProperties":{"type":"string"},"nullable":true},"data":{"type":"object","additionalProperties":{},"nullable":true}},"nullable":true},"tags":{"type":"array","items":{"type":"object","properties":{"query":{"type":"string"},"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"crashFile":{"type":"string","nullable":true},"metadata":{"type":"object","additionalProperties":{}}},"required":["crashFile","culprit","dateCreated","event.type","eventID","groupID","id","location","message","metadata","platform","projectID","tags","title","user"]},{"type":"object","nullable":true}]},"mergedBySeer":{"type":"boolean"},"seerMatchDistance":{"type":"number","format":"double","nullable":true}},"required":["id","latestEvent","mergedBySeer","seerMatchDistance"]}},"examples":{"ReturnAnIssue'sHashes":{"value":[{"id":"53aa54ab27474eaab1fc1d0f7f86d2f1","latestEvent":{"id":"9999aaafcc8b46d797c23c6077c6ff01","groupID":"1341191803","eventID":"9999aaaaca8b46d797c23c6077c6ff01","projectID":"5236886","message":"","title":"This is an example Python exception","location":"example.py:123","user":{"username":null,"name":"Hell Boy","ip_address":"192.168.1.1","email":"hell@boy.cat","data":{"isStaff":false},"id":"550747"},"tags":[{"value":"Chrome 83.0.4103","key":"browser"},{"value":"Chrome","key":"browser.name"},{"value":"prod","key":"environment"},{"value":"yes","key":"handled"},{"value":"error","key":"level"},{"value":"generic","key":"mechanism"}],"platform":"javascript","dateReceived":"2020-06-17T22:26:56.428721Z","contexts":{"browser":{"version":"83.0.4103","type":"browser","name":"Chrome"},"os":{"version":"10","type":"os","name":"Windows"},"trace":{"span_id":"83db1ad17e67dfe7","type":"trace","trace_id":"da6caabcd90e45fdb81f6655824a5f88","op":"navigation"},"organization":{"type":"default","id":"323938","slug":"hellboy-meowmeow"}},"size":107762,"entries":[{"type":"exception","data":{"values":[{"stacktrace":{"frames":[{"function":"ignoreOnError","errors":null,"colNo":23,"vars":null,"package":null,"absPath":"webpack:////usr/src/getsentry/src/sentry/node_modules/@sentry/browser/esm/helpers.js","inApp":false,"lineNo":71,"module":"usr/src/getsentry/src/sentry/node_modules/@sentry/browser/esm/helpers","filename":"/usr/src/getsentry/src/sentry/node_modules/@sentry/browser/esm/helpers.js","platform":null,"instructionAddr":null,"context":[[70," // is expected behavior and NOT indicative of a bug with sentry.javascript."],[71," return fn.apply(this, wrappedArguments);"],[72," // tslint:enable:no-unsafe-any"]],"symbolAddr":null,"trust":null,"symbol":null}],"framesOmitted":null,"registers":null,"hasSystemFrames":true},"module":null,"rawStacktrace":null,"mechanism":{"type":"generic","handled":true},"threadId":null,"value":"GET /organizations/hellboy-meowmeow/users/ 403","type":"ForbiddenError"}],"excOmitted":null,"hasSystemFrames":true}},{"type":"breadcrumbs","data":{"values":[{"category":"xhr","level":"info","event_id":null,"timestamp":"2020-06-17T22:26:55.619446Z","data":{"url":"/api/0/internal/health/","status_code":200,"method":"GET"},"message":null,"type":"http"}]}},{"type":"request","data":{"fragment":null,"cookies":[],"inferredContentType":null,"env":null,"headers":[["User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"]],"url":"https://sentry.io/organizations/hellboy-meowmeow/issues/","query":[["project","5236886"]],"data":null,"method":null}}],"dist":null,"sdk":{"version":"5.17.0","name":"sentry.javascript.browser"},"context":{"resp":{"status":403,"responseJSON":{"detail":"You do not have permission to perform this action."},"name":"ForbiddenError","statusText":"Forbidden","message":"GET /organizations/hellboy-meowmeow/users/ 403"}},"packages":{},"type":"error","metadata":{"type":"ForbiddenError","value":"GET /organizations/hellboy-meowmeow/users/ 403"},"errors":[{"data":{"column":8,"source":"https://s1.sentry-cdn.com/_static/bloopbloop/sentry/dist/app.js.map","row":15},"message":"Invalid location in sourcemap","type":"js_invalid_sourcemap_location"}],"occurrence":null,"_meta":{"user":null,"context":null,"entries":{},"contexts":null,"message":null,"packages":null,"tags":{},"sdk":null},"crashFile":null,"culprit":"/books/new/","dateCreated":"2020-06-17T22:26:56.098086Z","fingerprints":["fbe908cc63d63ea9763fd84cb6bad177"],"groupingConfig":{"enhancements":"abc","id":"2359823092345612392"}},"mergedBySeer":true,"seerMatchDistance":0.01}],"summary":"Return an issue's hashes"}}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/integrations/":{"get":{"operationId":"listOrganizationIssueIntegrations","description":"**Experimental:** This API is under active development and may change.\n\nList the organization's issue-tracker integrations and the external issues\nlinked to this Sentry issue through each integration. The external issue's\n`id` is the Sentry link identifier used by the unlink endpoint.","summary":"List an Issue's Tracker Integrations and Links","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"issue_id","schema":{"type":"string"},"description":"The ID of the issue you'd like to query.","required":true},{"in":"query","name":"cursor","schema":{"type":"string","minLength":1},"description":"A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.","x-learn-more":"https://docs.sentry.io/api/pagination/"},{"in":"query","name":"per_page","schema":{"type":"integer"},"description":"The maximum number of integrations to return per page (1\u2013100)."}],"tags":["Integration"],"security":[{"auth_token":["event:admin","event:read","event:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string","nullable":true},"domainName":{"type":"string","nullable":true},"accountType":{"type":"string","nullable":true},"scopes":{"type":"array","items":{"type":"string"},"nullable":true},"outOfDate":{"type":"boolean","nullable":true},"missingFeatures":{"type":"array","items":{"type":"object","description":"A feature the installation can no longer support, named by the permission\ntier it falls short of, so the update-permissions modal can list them.","properties":{"key":{"type":"string"},"description":{"type":"string"}},"required":["description","key"]},"nullable":true},"status":{"type":"string"},"provider":{"type":"object","properties":{"key":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"canAdd":{"type":"boolean"},"canDisable":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"aspects":{"type":"object","additionalProperties":{}}},"required":["aspects","canAdd","canDisable","features","key","name","slug"]},"externalIssues":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"url":{"type":"string"},"title":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"displayName":{"type":"string"}},"required":["description","displayName","id","key","title","url"]}}},"required":["accountType","domainName","externalIssues","icon","id","missingFeatures","name","outOfDate","provider","scopes","status"]}}}},"description":""}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"},"x-sentry-experimental":true}},"/api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/integrations/{integration_id}/":{"get":{"operationId":"Retrieve an Integration's Issue Config for an Issue","description":"Retrieve the form fields needed to either link an existing external issue\n(such as a Jira ticket or GitHub issue) to a Sentry issue, or create a new\none. The returned `linkIssueConfig`/`createIssueConfig` describes the fields\nto submit back to this endpoint via `PUT`/`POST` respectively.","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"issue_id","schema":{"type":"string"},"description":"The ID of the issue you'd like to query.","required":true},{"in":"path","name":"integration_id","schema":{"type":"string"},"description":"The ID of the integration installed on the organization.","required":true},{"in":"query","name":"action","schema":{"type":"string","enum":["create","link"]},"description":"Whether to fetch the config for linking an existing external issue (`link`) or creating a new one (`create`).","required":true}],"tags":["Integration"],"security":[{"auth_token":["event:admin","event:read","event:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string","nullable":true},"domainName":{"type":"string","nullable":true},"accountType":{"type":"string","nullable":true},"scopes":{"type":"array","items":{"type":"string"},"nullable":true},"outOfDate":{"type":"boolean","nullable":true},"missingFeatures":{"type":"array","items":{"type":"object","description":"A feature the installation can no longer support, named by the permission\ntier it falls short of, so the update-permissions modal can list them.","properties":{"key":{"type":"string"},"description":{"type":"string"}},"required":["description","key"]},"nullable":true},"status":{"type":"string"},"provider":{"type":"object","properties":{"key":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"canAdd":{"type":"boolean"},"canDisable":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"aspects":{"type":"object","additionalProperties":{}}},"required":["aspects","canAdd","canDisable","features","key","name","slug"]},"linkIssueConfig":{"type":"array","items":{"type":"object","additionalProperties":{}}},"createIssueConfig":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["accountType","domainName","icon","id","missingFeatures","name","outOfDate","provider","scopes","status"]},"examples":{"ConfigForCreatingANewExternalIssue":{"value":{"id":"123456","name":"Example Jira","icon":"https://example.atlassian.net/icon.png","domainName":"example.atlassian.net","accountType":null,"scopes":null,"outOfDate":null,"missingFeatures":null,"status":"active","provider":{"key":"jira","slug":"jira","name":"Jira","canAdd":false,"canDisable":false,"features":["issue-basic","issue-sync","ticket-rules"],"aspects":{}},"createIssueConfig":[{"name":"title","label":"Title","default":"TypeError: Cannot read property \"foo\" of undefined","type":"string","required":true},{"name":"description","label":"Description","default":"Sentry Issue: PROJECT-1\nhttps://example.sentry.io/issues/1/","type":"textarea","autosize":true,"maxRows":10}]},"summary":"Config for creating a new external issue"},"ConfigForLinkingAnExistingExternalIssue":{"value":{"id":"123456","name":"Example Jira","icon":"https://example.atlassian.net/icon.png","domainName":"example.atlassian.net","accountType":null,"scopes":null,"outOfDate":null,"missingFeatures":null,"status":"active","provider":{"key":"jira","slug":"jira","name":"Jira","canAdd":false,"canDisable":false,"features":["issue-basic","issue-sync","ticket-rules"],"aspects":{}},"linkIssueConfig":[{"name":"externalIssue","label":"Issue","default":"","type":"string"}]},"summary":"Config for linking an existing external issue"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"post":{"operationId":"Create an External Issue and Link It to an Issue","description":"Create a new issue in the external provider (such as a Jira ticket or GitHub\nissue) and link it to the given Sentry issue. The accepted fields are\nintegration-specific; fetch them from the `createIssueConfig` returned by the\n`GET` endpoint with `?action=create`.","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"issue_id","schema":{"type":"string"},"description":"The ID of the issue you'd like to query.","required":true},{"in":"path","name":"integration_id","schema":{"type":"string"},"description":"The ID of the integration installed on the organization.","required":true}],"tags":["Integration"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","description":"The title of the external issue to create."},"description":{"type":"string","description":"The description (body) of the external issue to create."}},"required":["title"]}}},"required":true},"security":[{"auth_token":["event:admin","event:write"]}],"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"key":{"type":"string"},"url":{"type":"string"},"integrationId":{"type":"integer"},"displayName":{"type":"string"}},"required":["displayName","id","integrationId","key","url"]},"examples":{"CreateOrLinkAnExternalIssue":{"value":{"id":5,"key":"PROJECT-123","url":"https://example.atlassian.net/browse/PROJECT-123","integrationId":123456,"displayName":"PROJECT-123"},"summary":"Create or link an external issue"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"put":{"operationId":"Link an Existing External Issue to an Issue","description":"Link an issue that already exists in the external provider (such as a Jira\nticket or GitHub issue) to the given Sentry issue. Additional accepted fields\nare integration-specific; fetch them from the `linkIssueConfig` returned by\nthe `GET` endpoint with `?action=link`. Linking the same issue again returns\nthe existing link with HTTP 200, without repeating provider comments. A new\nlink returns HTTP 201.","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"issue_id","schema":{"type":"string"},"description":"The ID of the issue you'd like to query.","required":true},{"in":"path","name":"integration_id","schema":{"type":"string"},"description":"The ID of the integration installed on the organization.","required":true}],"tags":["Integration"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"externalIssue":{"type":"string","description":"The identifier or full URL of the existing external issue to link. URL support depends on the selected integration."},"repo":{"type":"string","description":"The repository containing the external issue, in owner/name format. Required by GitHub, GitHub Enterprise, and Bitbucket integrations."},"comment":{"type":"string","description":"An optional comment to post to the external issue when linking, if supported by the integration."}},"required":["externalIssue"]}}},"required":true},"security":[{"auth_token":["event:admin","event:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"key":{"type":"string"},"url":{"type":"string"},"integrationId":{"type":"integer"},"displayName":{"type":"string"}},"required":["displayName","id","integrationId","key","url"]}}},"description":""},"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"key":{"type":"string"},"url":{"type":"string"},"integrationId":{"type":"integer"},"displayName":{"type":"string"}},"required":["displayName","id","integrationId","key","url"]},"examples":{"CreateOrLinkAnExternalIssue":{"value":{"id":5,"key":"PROJECT-123","url":"https://example.atlassian.net/browse/PROJECT-123","integrationId":123456,"displayName":"PROJECT-123"},"summary":"Create or link an external issue"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"type":"object","description":"DRF's standard error-body shape: `{\"detail\": str}`.\n\nUse in `Response[T] | Response[DetailResponse]` annotations on endpoints\nwhose inline error returns are exactly `Response({\"detail\": \"...\"}, status=4xx)`.\nEndpoints whose error bodies have richer or different shapes should\ndeclare their own local TypedDicts instead.","properties":{"detail":{"type":"string"}},"required":["detail"]}}},"description":""}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}},"delete":{"operationId":"Unlink an External Issue from an Issue","description":"Remove the link between a Sentry issue and an external issue. If no other\nSentry issues reference the external issue, the link record is deleted\nentirely. An absent link also returns 204. This does not delete the issue\nin the external provider.","parameters":[{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"issue_id","schema":{"type":"string"},"description":"The ID of the issue you'd like to query.","required":true},{"in":"path","name":"integration_id","schema":{"type":"string"},"description":"The ID of the integration installed on the organization.","required":true},{"in":"query","name":"externalIssue","schema":{"type":"integer"},"description":"The ID of the `ExternalIssue` link to remove.","required":true}],"tags":["Integration"],"security":[{"auth_token":["event:admin","event:write"]}],"responses":{"204":{"description":"No Content"},"400":{"description":"Bad Request"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"type":"object","description":"DRF's standard error-body shape: `{\"detail\": str}`.\n\nUse in `Response[T] | Response[DetailResponse]` annotations on endpoints\nwhose inline error returns are exactly `Response({\"detail\": \"...\"}, status=4xx)`.\nEndpoints whose error bodies have richer or different shapes should\ndeclare their own local TypedDicts instead.","properties":{"detail":{"type":"string"}},"required":["detail"]}}},"description":""}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}},"/api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/tags/{key}/":{"get":{"operationId":"getOrganizationIssueTag","description":"Return a list of values associated with this key for an issue. When paginated can return at most 1000 values.","summary":"Retrieve Tag Details","parameters":[{"in":"path","name":"issue_id","schema":{"type":"string"},"description":"The ID of the issue you'd like to query.","required":true},{"in":"path","name":"organization_id_or_slug","schema":{"type":"string"},"description":"The ID or slug of the organization the resource belongs to.","required":true},{"in":"path","name":"key","schema":{"type":"string"},"description":"The tag key to look the values up for.","required":true},{"in":"query","name":"environment","schema":{"type":"array","items":{"type":"string"}},"description":"The name of environments to filter by."}],"tags":["Events"],"security":[{"auth_token":["event:admin","event:read","event:write"]}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"uniqueValues":{"type":"integer","nullable":true},"totalValues":{"type":"integer","nullable":true},"topValues":{"type":"array","items":{"type":"object","properties":{"query":{"type":"string","nullable":true},"key":{"type":"string"},"name":{"type":"string"},"value":{"type":"string","nullable":true},"count":{"type":"integer","nullable":true},"lastSeen":{"type":"string","nullable":true},"firstSeen":{"type":"string","nullable":true}},"required":["count","firstSeen","key","lastSeen","name","value"]},"nullable":true},"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"]},"examples":{"ReturnASpecificTag'sDetails":{"value":{"key":"flavors","name":"Flavors","uniqueValues":2,"totalValues":3,"topValues":[{"key":"strawberry","name":"Strawberry","value":"strawberry","count":2,"lastSeen":"2024-01-01T00:00:00Z","firstSeen":"2024-01-01T00:00:00Z"},{"key":"vanilla","name":"Vanilla","value":"vanilla","count":1,"lastSeen":"2024-01-01T00:00:00Z","firstSeen":"2024-01-01T00:00:00Z"}]},"summary":"Return a specific tag's details"}}}},"description":""},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"x-sentry-routing":{"silo":"cell","organizationParameter":"organization_id_or_slug"}}}},"components":{"schemas":{"ActionFilterValidator":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"id":{"type":"integer"},"logic_type":{"enum":["any","any-short","all","none"],"type":"string","description":"* `any`\n* `any-short`\n* `all`\n* `none`"},"conditions":{"type":"array","items":{}},"actions":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["actions","logic_type"]},"ArtifactBundleAssembleResponse":{"type":"object","properties":{"state":{"type":"string"},"missingChunks":{"type":"array","items":{"type":"string"}},"detail":{"type":"string","nullable":true}},"required":["missingChunks","state"]},"AssembleProjectDebugFilesResponse":{"type":"object","additionalProperties":{"type":"object","properties":{"state":{"type":"string"},"missingChunks":{"type":"array","items":{"type":"string"}},"detail":{"type":"string","nullable":true},"dif":{"type":"object","properties":{"id":{"type":"string"},"uuid":{"type":"string"},"debugId":{"type":"string"},"codeId":{"type":"string","nullable":true},"cpuName":{"type":"string"},"objectName":{"type":"string"},"symbolType":{"type":"string"},"headers":{"type":"object","additionalProperties":{"type":"string"}},"size":{"type":"integer"},"sha1":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"data":{"type":"object","additionalProperties":{}}},"required":["codeId","cpuName","data","dateCreated","debugId","headers","id","objectName","sha1","size","symbolType","uuid"]}},"required":["missingChunks","state"]}},"AutofixPostResponse":{"type":"object","description":"Response type for the POST endpoint (default kickoff and step paths).","properties":{"run_id":{"type":"integer"},"sentry_run_id":{"type":"string","nullable":true}},"required":["run_id","sentry_run_id"]},"AutofixStateResponse":{"type":"object","description":"Response type for the GET endpoint","properties":{"formatted":{"type":"object","description":"The ``formatted`` field the mixin adds to a response when ``?llmFormat`` is requested.\n\n``content`` is text for the text formats and a serialized JSON object for ``json``, so the\nresponse shape is the same whichever format a caller asks for.","properties":{"format":{"enum":["markdown","xml","json"],"type":"string"},"content":{"type":"string"}},"required":["content","format"]},"autofix":{"type":"object","additionalProperties":{},"nullable":true}},"required":["autofix"]},"BaseDataConditionGroupValidator":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"id":{"type":"integer"},"logic_type":{"enum":["any","any-short","all","none"],"type":"string","description":"* `any`\n* `any-short`\n* `all`\n* `none`"},"conditions":{"type":"array","items":{}}},"required":["logic_type"]},"BaseDetectorTypeValidator":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"name":{"type":"string","description":"Name of the monitor.","maxLength":200},"type":{"type":"string","description":"The type of monitor - `metric_issue`."},"workflow_ids":{"type":"array","items":{"type":"integer"},"description":"The IDs of the alerts to connect this monitor to. Use the 'Fetch Alerts' endpoint to find the IDs."},"data_sources":{"type":"array","items":{},"description":"\n The data sources for the metric monitor to use based on what you want to measure.\n\n `timeWindow` is measured in seconds. Cron Monitors use schedules instead of this field.\n Legacy metric alert rules expressed this value in minutes, so multiply a legacy value\n by 60 when migrating it to a monitor. For example, a legacy 5-minute window becomes\n `\"timeWindow\": 300`.\n\n **Number of Errors Metric Monitor**\n - `eventTypes`: Any of `error` or `default`.\n ```json\n [\n {\n \"aggregate\": \"count()\",\n \"dataset\" : \"events\",\n \"environment\": \"prod\",\n \"eventTypes\": [\"default\", \"error\"],\n \"query\": \"is:unresolved\",\n \"queryType\": 0,\n \"timeWindow\": 3600\n }\n ]\n ```\n\n **Users Experiencing Errors Metric Monitor**\n - `eventTypes`: Any of `error` or `default`.\n ```json\n [\n {\n \"aggregate\": \"count_unique(tags[sentry:user])\",\n \"dataset\" : \"events\",\n \"environment\": \"prod\",\n \"eventTypes\": [\"default\", \"error\"],\n \"query\": \"is:unresolved\",\n \"queryType\": 0,\n \"timeWindow\": 3600\n }\n ]\n ```\n\n\n **Throughput Metric Monitor**\n ```json\n [\n {\n \"aggregate\":\"count(span.duration)\",\n \"dataset\":\"events_analytics_platform\",\n \"environment\":\"prod\",\n \"eventTypes\":[\"trace_item_span\"],\n \"query\":\"\",\n \"queryType\":1,\n \"timeWindow\":3600,\n \"extrapolationMode\":\"unknown\"\n }\n ]\n ```\n\n **Duration Metric Monitor**\n ```json\n [\n {\n \"aggregate\":\"p95(span.duration)\",\n \"dataset\":\"events_analytics_platform\",\n \"environment\":\"prod\",\n \"eventTypes\":[\"trace_item_span\"],\n \"query\":\"\",\n \"queryType\":1,\n \"timeWindow\":3600,\n \"extrapolationMode\":\"unknown\"\n }\n ]\n ```\n\n **Failure Rate Metric Monitor**\n ```json\n [\n {\n \"aggregate\":\"failure_rate()\",\n \"dataset\":\"events_analytics_platform\",\n \"environment\":\"prod\",\n \"eventTypes\":[\"trace_item_span\"],\n \"query\":\"\",\n \"queryType\":1,\n \"timeWindow\":3600,\n \"extrapolationMode\":\"unknown\"\n }\n ]\n ```\n\n **Largest Contentful Paint Metric Monitor**\n - `dataset`: Use `events_analytics_platform`. To query transaction spans, add `is_transaction:true` to `query`.\n - `aggregate`: Valid values are `avg(measurements.lcp)`, `p50(measurements.lcp)`, `p75(measurements.lcp)`, `p95(measurements.lcp)`, `p99(measurements.lcp)`, `p100(measurements.lcp)`, and `percentile(measurements.lcp,x)`, where `x` is your custom percentile.\n\n ```json\n [\n {\n \"aggregate\":\"p95(measurements.lcp)\",\n \"dataset\":\"events_analytics_platform\",\n \"environment\":\"prod\",\n \"eventTypes\":[\"trace_item_span\"],\n \"query\":\"is_transaction:true\",\n \"queryType\":1,\n \"timeWindow\":3600,\n \"extrapolationMode\":\"unknown\"\n }\n ]\n ```\n\n **Custom Metric Monitor**\n - `dataset`: Use `events_analytics_platform`. To query transaction spans, add `is_transaction:true` to `query`.\n - `aggregate`: Valid values are:\n `avg(x)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.\n `p50(x)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.\n `p75(x)`, where x is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.\n `p95(x)`, where x is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.\n `p99(x)`, where x is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.\n `p100(x)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.\n `percentile(x,y)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`, and `y` is the custom percentile.\n `failure_rate()`\n `apdex(x)`, where `x` is the value of the Apdex score.\n `count()`\n\n ```json\n [\n {\n \"aggregate\": \"p75(measurements.ttfb)\",\n \"dataset\": \"events_analytics_platform\",\n \"environment\": \"prod\",\n \"queryType\": 1,\n \"eventTypes\": [\"trace_item_span\"],\n \"query\": \"is_transaction:true\",\n \"timeWindow\": 3600,\n \"extrapolationMode\": \"unknown\"\n }\n ]\n ```\n"},"config":{"type":"object","additionalProperties":{},"description":"\n The issue detection type configuration.\n\n\n - `detectionType`\n - `static`: Threshold based monitor\n - `percent`: Change based monitor\n - `dynamic`: Dynamic monitor\n - `comparisonDelta`: If selecting a **change** detection type, the comparison delta is the time period, in seconds, at which to compare against historical data.\n For example, a value of 3600 compares the metric tracked against data 1 hour ago.\n - `300`: 5 minutes\n - `900`: 15 minutes\n - `3600`: 1 hour\n - `86400`: 1 day\n - `604800`: 1 week\n - `2592000`: 1 month\n\n **Threshold**\n ```json\n {\n \"detectionType\": \"static\"\n }\n ```\n **Change**\n ```json\n {\n \"detectionType\": \"percent\",\n \"comparisonDelta\": 3600\n }\n ```\n **Dynamic**\n ```json\n {\n \"detectionType\": \"dynamic\"\n }\n ```\n "},"condition_group":{"allOf":[{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"id":{"type":"integer"},"logic_type":{"enum":["any","any-short","all","none"],"type":"string","description":"* `any`\n* `any-short`\n* `all`\n* `none`"},"conditions":{"type":"array","items":{}}},"required":["logic_type"]}],"description":"\n Issue detection configuration for when to create an issue and at what priority level.\n\n\n - `logicType`: `any`\n - `type`: Any of `gt` (greater than), `lte` (less than or equal), or `anomaly_detection` (dynamic)\n - `comparison`: Any positive integer. This is threshold that must be crossed for the monitor to create an issue, e.g. \"Create a metric issue when there are more than 5 unresolved error events\".\n - If creating a **dynamic** monitor, see the options below.\n - `seasonality`: `auto`\n - `sensitivity`: Level of responsiveness. Options are one of `low`, `medium`, or `high`\n - `thresholdType`: If you want to be alerted to anomalies that are moving above, below, or in both directions in relation to your threshold.\n - `0`: Above\n - `1`: Below\n - `2`: Above and below\n\n - `conditionResult`: The issue state change when the threshold is crossed.\n - `75`: High priority\n - `50`: Low priority\n - `0`: Resolved\n\n\n **Threshold and Change Monitor**\n ```json\n \"logicType\": \"any\",\n \"conditions\": [\n {\n \"type\": \"gt\",\n \"comparison\": 10,\n \"conditionResult\": 75\n },\n {\n \"type\": \"lte\",\n \"comparison\": 10,\n \"conditionResult\": 0\n }\n ],\n \"actions\": []\n ```\n\n **Threshold Monitor with Medium Priority**\n ```json\n \"logicType\": \"any\",\n \"conditions\": [\n {\n type: \"gt\",\n comparison: 5,\n conditionResult: 75\n },\n {\n type: \"gt\",\n comparison: 2,\n conditionResult: 50\n },\n {\n type: \"lte\",\n comparison: 2,\n conditionResult: 0\n }\n ],\n \"actions\": []\n ```\n\n **Dynamic Monitor**\n ```json\n \"logicType\": \"any\",\n \"conditions\": [\n {\n \"type\": \"anomaly_detection\",\n \"comparison\": {\n \"seasonality\": \"auto\",\n \"sensitivity\": \"medium\",\n \"thresholdType\": 2\n },\n \"conditionResult\": 75\n }\n ],\n \"actions\": []\n ```\n "},"owner":{"type":"string","nullable":true,"description":"\n The ID user or team who owns the monitor or alert prefaced by the string 'user' or 'team'.\n\n **User**\n ```json\n \"user:123456\"\n ```\n\n **Team**\n ```json\n \"team:456789\"\n ```\n "},"description":{"type":"string","nullable":true,"description":"A description of the monitor. Will be used in the resulting issue."},"enabled":{"type":"boolean","description":"Set to False if you want to disable the monitor."}},"required":["name","type"]},"BaseTeam":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time","nullable":true},"isMember":{"type":"boolean"},"teamRole":{"type":"string","nullable":true},"flags":{"type":"object","additionalProperties":{}},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"isPending":{"type":"boolean"},"memberCount":{"type":"integer"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}}},"required":["access","avatar","dateCreated","flags","hasAccess","id","isMember","isPending","memberCount","name","slug","teamRole"]},"BranchOverride":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"tag_name":{"type":"string","description":"Event tag key to match."},"tag_value":{"type":"string","description":"Event tag value to match."},"branch_name":{"type":"string","description":"The repository branch Seer uses for issues whose events have this tag value."}},"required":["branch_name","tag_name","tag_value"]},"BulkCodeMappingsPartialResponse":{"type":"object","properties":{"created":{"type":"integer"},"updated":{"type":"integer"},"errors":{"type":"integer"},"mappings":{"type":"array","items":{"type":"object","properties":{"stackRoot":{"type":"string"},"sourceRoot":{"type":"string"},"status":{"enum":["created","updated","error"],"type":"string"},"detail":{"type":"string"}},"required":["sourceRoot","stackRoot","status"]}}},"required":["created","errors","mappings","updated"]},"BulkCodeMappingsRequest":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"project":{"anyOf":[{"type":"integer"},{"type":"string"}],"description":"The ID or slug of the project to configure."},"repository":{"type":"string","description":"The repository name as it appears in Sentry."},"mappings":{"type":"array","items":{"type":"object","properties":{"stack_root":{"type":"string","description":"The path prefix to strip from matching stack frame filenames before adding sourceRoot.","pattern":"^[^\\s'\\\"]+$"},"source_root":{"type":"string","description":"The repository path prefix that replaces stackRoot. For example, /app/pkg/file.py with stackRoot=/app/ and sourceRoot=src/ resolves to src/pkg/file.py.","pattern":"^[^\\s'\\\"]+$"}},"required":["source_root","stack_root"]},"description":"One or more stack-root and source-root mappings (maximum 300)."},"provider":{"type":"string","nullable":true,"description":"Optional repository provider used to disambiguate or find the repository. If no matching Sentry repository exists, the repository is created after the provider confirms it exists."},"default_branch":{"type":"string","description":"The repository branch to use; inferred from the integration when omitted.","pattern":"^(^(?![\\/]))([\\w\\.\\/-]+)(?= 0), w (1-6), h (>= 1), and x + w <= 6.","properties":{"x":{"type":"integer","maximum":5,"minimum":0,"description":"Column position (0-indexed)."},"y":{"type":"integer","minimum":0,"description":"Row position (0-indexed)."},"w":{"type":"integer","maximum":6,"minimum":1,"description":"Width in grid columns (1-6)."},"h":{"type":"integer","minimum":1,"description":"Height in grid rows."}},"required":["h","w","x","y"]}],"nullable":true},"axis_range":{"enum":["auto","dataMin",null],"type":"string","description":"* `auto`\n* `dataMin`","nullable":true},"legend_type":{"enum":["default","breakdown",null],"type":"string","description":"* `default`\n* `breakdown`","nullable":true}}},"description":"A json list of widgets saved in this dashboard."},"projects":{"type":"array","items":{"type":"integer"},"description":"The saved projects filter for this dashboard."},"environment":{"type":"array","items":{"type":"string"},"nullable":true,"description":"The saved environment filter for this dashboard."},"period":{"type":"string","nullable":true,"description":"The saved time range period for this dashboard."},"start":{"type":"string","format":"date-time","nullable":true,"description":"The saved start time for this dashboard."},"end":{"type":"string","format":"date-time","nullable":true,"description":"The saved end time for this dashboard."},"filters":{"type":"object","additionalProperties":{},"description":"The saved filters for this dashboard."},"utc":{"type":"boolean","description":"Setting that lets you display saved time range for this dashboard in UTC."},"permissions":{"allOf":[{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"is_editable_by_everyone":{"type":"boolean","description":"Whether the dashboard is editable by everyone."},"teams_with_edit_access":{"type":"array","items":{"type":"integer"},"description":"List of team IDs that have edit access to a dashboard."}},"required":["is_editable_by_everyone"]}],"nullable":true,"description":"Permissions that restrict users from editing dashboards"},"is_favorited":{"type":"boolean","default":false,"description":"Favorite the dashboard automatically for the request user"}},"required":["title"]},"DashboardCreateWidget":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"id":{"type":"string"},"title":{"type":"string","maxLength":255},"description":{"type":"string","nullable":true},"thresholds":{"type":"object","additionalProperties":{},"nullable":true},"display_type":{"enum":["line","area","bar","table","big_number","details","categorical_bar","wheel","rage_and_dead_clicks","server_tree","text","agents_traces_table","heatmap"],"type":"string","description":"* `line`\n* `area`\n* `bar`\n* `table`\n* `big_number`\n* `details`\n* `categorical_bar`\n* `wheel`\n* `rage_and_dead_clicks`\n* `server_tree`\n* `text`\n* `agents_traces_table`\n* `heatmap`"},"interval":{"type":"string","maxLength":10},"queries":{"type":"array","items":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"id":{"type":"string"},"fields":{"type":"array","items":{"type":"string"}},"aggregates":{"type":"array","items":{"type":"string"},"nullable":true},"transformations":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"columns":{"type":"array","items":{"type":"string"},"nullable":true},"field_aliases":{"type":"array","items":{"type":"string"},"nullable":true},"name":{"type":"string"},"conditions":{"type":"string"},"orderby":{"type":"string"},"is_hidden":{"type":"boolean"},"on_demand_extraction":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"extraction_state":{"type":"string"},"enabled":{"type":"boolean"}}},"on_demand_extraction_disabled":{"type":"boolean"},"selected_aggregate":{"type":"integer","nullable":true},"linked_dashboards":{"type":"array","items":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"field":{"type":"string"},"dashboard_id":{"type":"string"}},"required":["dashboard_id","field"]},"nullable":true}}}},"widget_type":{"enum":["discover","issue","metrics","error-events","transaction-like","spans","logs","tracemetrics","preprod-app-size",null],"type":"string","description":"* `discover`\n* `issue`\n* `metrics`\n* `error-events`\n* `transaction-like`\n* `spans`\n* `logs`\n* `tracemetrics`\n* `preprod-app-size`","nullable":true},"limit":{"type":"integer","minimum":1,"nullable":true},"layout":{"allOf":[{"type":"object","description":"Widget grid layout position and dimensions for dashboard creation.\n\nThe dashboard uses a 6-column grid. Required keys: x, y, w, h.\nConstraints: x (0-5), y (>= 0), w (1-6), h (>= 1), and x + w <= 6.","properties":{"x":{"type":"integer","maximum":5,"minimum":0,"description":"Column position (0-indexed)."},"y":{"type":"integer","minimum":0,"description":"Row position (0-indexed)."},"w":{"type":"integer","maximum":6,"minimum":1,"description":"Width in grid columns (1-6)."},"h":{"type":"integer","minimum":1,"description":"Height in grid rows."}},"required":["h","w","x","y"]}],"nullable":true},"axis_range":{"enum":["auto","dataMin",null],"type":"string","description":"* `auto`\n* `dataMin`","nullable":true},"legend_type":{"enum":["default","breakdown",null],"type":"string","description":"* `default`\n* `breakdown`","nullable":true}}},"DashboardCreateWidgetLayout":{"type":"object","description":"Widget grid layout position and dimensions for dashboard creation.\n\nThe dashboard uses a 6-column grid. Required keys: x, y, w, h.\nConstraints: x (0-5), y (>= 0), w (1-6), h (>= 1), and x + w <= 6.","properties":{"x":{"type":"integer","maximum":5,"minimum":0,"description":"Column position (0-indexed)."},"y":{"type":"integer","minimum":0,"description":"Row position (0-indexed)."},"w":{"type":"integer","maximum":6,"minimum":1,"description":"Width in grid columns (1-6)."},"h":{"type":"integer","minimum":1,"description":"Height in grid rows."}},"required":["h","w","x","y"]},"DashboardDetails":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"id":{"type":"string","description":"A dashboard's unique id."},"title":{"type":"string","description":"The user-defined dashboard title.","maxLength":255},"widgets":{"type":"array","items":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"id":{"type":"string"},"title":{"type":"string","maxLength":255},"description":{"type":"string","nullable":true},"thresholds":{"type":"object","additionalProperties":{},"nullable":true},"display_type":{"enum":["line","area","bar","table","big_number","details","categorical_bar","wheel","rage_and_dead_clicks","server_tree","text","agents_traces_table","heatmap"],"type":"string","description":"* `line`\n* `area`\n* `bar`\n* `table`\n* `big_number`\n* `details`\n* `categorical_bar`\n* `wheel`\n* `rage_and_dead_clicks`\n* `server_tree`\n* `text`\n* `agents_traces_table`\n* `heatmap`"},"interval":{"type":"string","maxLength":10},"queries":{"type":"array","items":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"id":{"type":"string"},"fields":{"type":"array","items":{"type":"string"}},"aggregates":{"type":"array","items":{"type":"string"},"nullable":true},"transformations":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"columns":{"type":"array","items":{"type":"string"},"nullable":true},"field_aliases":{"type":"array","items":{"type":"string"},"nullable":true},"name":{"type":"string"},"conditions":{"type":"string"},"orderby":{"type":"string"},"is_hidden":{"type":"boolean"},"on_demand_extraction":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"extraction_state":{"type":"string"},"enabled":{"type":"boolean"}}},"on_demand_extraction_disabled":{"type":"boolean"},"selected_aggregate":{"type":"integer","nullable":true},"linked_dashboards":{"type":"array","items":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"field":{"type":"string"},"dashboard_id":{"type":"string"}},"required":["dashboard_id","field"]},"nullable":true}}}},"widget_type":{"enum":["discover","issue","metrics","error-events","transaction-like","spans","logs","tracemetrics","preprod-app-size",null],"type":"string","description":"* `discover`\n* `issue`\n* `metrics`\n* `error-events`\n* `transaction-like`\n* `spans`\n* `logs`\n* `tracemetrics`\n* `preprod-app-size`","nullable":true},"limit":{"type":"integer","minimum":1,"nullable":true},"layout":{"allOf":[{"type":"object","description":"Widget grid layout position and dimensions.\n\nThe dashboard uses a 6-column grid. Required keys: x, y, w, h, minH.\nConstraints: x (0-5), y (>= 0), w (1-6), h (>= 1), minH (>= 1), and x + w <= 6.","properties":{"x":{"type":"integer","maximum":5,"minimum":0,"description":"Column position (0-indexed)."},"y":{"type":"integer","minimum":0,"description":"Row position (0-indexed)."},"w":{"type":"integer","maximum":6,"minimum":1,"description":"Width in grid columns (1-6)."},"h":{"type":"integer","minimum":1,"description":"Height in grid rows."},"min_h":{"type":"integer","minimum":1,"description":"Minimum height in grid rows."}},"required":["h","min_h","w","x","y"]}],"nullable":true},"axis_range":{"enum":["auto","dataMin",null],"type":"string","description":"* `auto`\n* `dataMin`","nullable":true},"legend_type":{"enum":["default","breakdown",null],"type":"string","description":"* `default`\n* `breakdown`","nullable":true}}},"description":"A json list of widgets saved in this dashboard."},"projects":{"type":"array","items":{"type":"integer"},"description":"The saved projects filter for this dashboard."},"environment":{"type":"array","items":{"type":"string"},"nullable":true,"description":"The saved environment filter for this dashboard."},"period":{"type":"string","nullable":true,"description":"The saved time range period for this dashboard."},"start":{"type":"string","format":"date-time","nullable":true,"description":"The saved start time for this dashboard."},"end":{"type":"string","format":"date-time","nullable":true,"description":"The saved end time for this dashboard."},"filters":{"type":"object","additionalProperties":{},"description":"The saved filters for this dashboard."},"utc":{"type":"boolean","description":"Setting that lets you display saved time range for this dashboard in UTC."},"permissions":{"allOf":[{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"is_editable_by_everyone":{"type":"boolean","description":"Whether the dashboard is editable by everyone."},"teams_with_edit_access":{"type":"array","items":{"type":"integer"},"description":"List of team IDs that have edit access to a dashboard."}},"required":["is_editable_by_everyone"]}],"nullable":true,"description":"Permissions that restrict users from editing dashboards"}}},"DashboardDetailsModel":{"type":"object","properties":{"environment":{"type":"array","items":{"type":"string"}},"period":{"type":"string"},"utc":{"type":"string"},"expired":{"type":"boolean"},"start":{"type":"string","format":"date-time"},"end":{"type":"string","format":"date-time"},"id":{"type":"string"},"title":{"type":"string"},"dateCreated":{"type":"string"},"createdBy":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"],"nullable":true},"widgets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string","nullable":true},"displayType":{"type":"string"},"thresholds":{"type":"object","properties":{"preferredPolarity":{"type":"string"},"timeWindow":{"type":"string"},"max_values":{"type":"object","additionalProperties":{"type":"integer"}},"unit":{"type":"string"}},"required":["max_values","unit"],"nullable":true},"interval":{"type":"string"},"dateCreated":{"type":"string"},"dashboardId":{"type":"string"},"queries":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"fields":{"type":"array","items":{"type":"string"}},"aggregates":{"type":"array","items":{"type":"string"}},"transformations":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"columns":{"type":"array","items":{"type":"string"}},"fieldAliases":{"type":"array","items":{"type":"string"}},"conditions":{"type":"string"},"orderby":{"type":"string"},"widgetId":{"type":"string"},"onDemand":{"type":"array","items":{"type":"object","properties":{"enabled":{"type":"boolean"},"extractionState":{"type":"string"},"dashboardWidgetQueryId":{"type":"integer"}},"required":["dashboardWidgetQueryId","enabled","extractionState"]}},"isHidden":{"type":"boolean"},"selectedAggregate":{"type":"integer","nullable":true},"linkedDashboards":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"dashboardId":{"type":"integer"}},"required":["dashboardId","field"]}}},"required":["aggregates","columns","conditions","fieldAliases","fields","id","isHidden","linkedDashboards","name","onDemand","orderby","selectedAggregate","transformations","widgetId"]}},"limit":{"type":"integer","nullable":true},"widgetType":{"type":"string","nullable":true},"layout":{"type":"object","additionalProperties":{"type":"integer"},"nullable":true},"axisRange":{"type":"string","nullable":true},"legendType":{"enum":["default","breakdown",null],"type":"string","nullable":true},"datasetSource":{"type":"string","nullable":true},"exploreUrls":{"type":"array","items":{"type":"string"},"nullable":true},"changedReason":{"type":"array","items":{"type":"object","properties":{"orderby":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string"}},"nullable":true},"equations":{"type":"array","items":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},"nullable":true},"selected_columns":{"type":"array","items":{"type":"string"}}},"required":["equations","orderby","selected_columns"]},"nullable":true}},"required":["axisRange","changedReason","dashboardId","datasetSource","dateCreated","description","displayType","exploreUrls","id","interval","layout","legendType","limit","queries","thresholds","title","widgetType"]}},"projects":{"type":"array","items":{"type":"integer"}},"filters":{"type":"object","properties":{"release":{"type":"array","items":{"type":"string"}},"releaseId":{"type":"array","items":{"type":"string"}},"globalFilter":{"type":"array","items":{"type":"object","additionalProperties":{}}}}},"permissions":{"type":"object","properties":{"isEditableByEveryone":{"type":"boolean"},"teamsWithEditAccess":{"type":"array","items":{"type":"integer"}}},"required":["isEditableByEveryone","teamsWithEditAccess"],"nullable":true},"isFavorited":{"type":"boolean"},"prebuiltId":{"type":"integer","nullable":true}},"required":["createdBy","dateCreated","filters","id","isFavorited","permissions","prebuiltId","projects","title","widgets"]},"DashboardListResponse":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"dateCreated":{"type":"string"},"createdBy":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},"environment":{"type":"array","items":{"type":"string"}},"filters":{"type":"object","properties":{"release":{"type":"array","items":{"type":"string"}},"releaseId":{"type":"array","items":{"type":"string"}},"globalFilter":{"type":"array","items":{"type":"object","additionalProperties":{}}}}},"lastVisited":{"type":"string","nullable":true},"widgetDisplay":{"type":"array","items":{"type":"string"}},"widgetPreview":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string"}}},"permissions":{"type":"object","properties":{"isEditableByEveryone":{"type":"boolean"},"teamsWithEditAccess":{"type":"array","items":{"type":"integer"}}},"required":["isEditableByEveryone","teamsWithEditAccess"],"nullable":true},"isFavorited":{"type":"boolean"},"projects":{"type":"array","items":{"type":"integer"}},"prebuiltId":{"type":"integer","nullable":true}},"required":["createdBy","dateCreated","environment","filters","id","isFavorited","lastVisited","permissions","prebuiltId","projects","title","widgetDisplay","widgetPreview"]}},"DashboardPermissions":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"is_editable_by_everyone":{"type":"boolean","description":"Whether the dashboard is editable by everyone."},"teams_with_edit_access":{"type":"array","items":{"type":"integer"},"description":"List of team IDs that have edit access to a dashboard."}},"required":["is_editable_by_everyone"]},"DashboardWidget":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"id":{"type":"string"},"title":{"type":"string","maxLength":255},"description":{"type":"string","nullable":true},"thresholds":{"type":"object","additionalProperties":{},"nullable":true},"display_type":{"enum":["line","area","bar","table","big_number","details","categorical_bar","wheel","rage_and_dead_clicks","server_tree","text","agents_traces_table","heatmap"],"type":"string","description":"* `line`\n* `area`\n* `bar`\n* `table`\n* `big_number`\n* `details`\n* `categorical_bar`\n* `wheel`\n* `rage_and_dead_clicks`\n* `server_tree`\n* `text`\n* `agents_traces_table`\n* `heatmap`"},"interval":{"type":"string","maxLength":10},"queries":{"type":"array","items":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"id":{"type":"string"},"fields":{"type":"array","items":{"type":"string"}},"aggregates":{"type":"array","items":{"type":"string"},"nullable":true},"transformations":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"columns":{"type":"array","items":{"type":"string"},"nullable":true},"field_aliases":{"type":"array","items":{"type":"string"},"nullable":true},"name":{"type":"string"},"conditions":{"type":"string"},"orderby":{"type":"string"},"is_hidden":{"type":"boolean"},"on_demand_extraction":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"extraction_state":{"type":"string"},"enabled":{"type":"boolean"}}},"on_demand_extraction_disabled":{"type":"boolean"},"selected_aggregate":{"type":"integer","nullable":true},"linked_dashboards":{"type":"array","items":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"field":{"type":"string"},"dashboard_id":{"type":"string"}},"required":["dashboard_id","field"]},"nullable":true}}}},"widget_type":{"enum":["discover","issue","metrics","error-events","transaction-like","spans","logs","tracemetrics","preprod-app-size",null],"type":"string","description":"* `discover`\n* `issue`\n* `metrics`\n* `error-events`\n* `transaction-like`\n* `spans`\n* `logs`\n* `tracemetrics`\n* `preprod-app-size`","nullable":true},"limit":{"type":"integer","minimum":1,"nullable":true},"layout":{"allOf":[{"type":"object","description":"Widget grid layout position and dimensions.\n\nThe dashboard uses a 6-column grid. Required keys: x, y, w, h, minH.\nConstraints: x (0-5), y (>= 0), w (1-6), h (>= 1), minH (>= 1), and x + w <= 6.","properties":{"x":{"type":"integer","maximum":5,"minimum":0,"description":"Column position (0-indexed)."},"y":{"type":"integer","minimum":0,"description":"Row position (0-indexed)."},"w":{"type":"integer","maximum":6,"minimum":1,"description":"Width in grid columns (1-6)."},"h":{"type":"integer","minimum":1,"description":"Height in grid rows."},"min_h":{"type":"integer","minimum":1,"description":"Minimum height in grid rows."}},"required":["h","min_h","w","x","y"]}],"nullable":true},"axis_range":{"enum":["auto","dataMin",null],"type":"string","description":"* `auto`\n* `dataMin`","nullable":true},"legend_type":{"enum":["default","breakdown",null],"type":"string","description":"* `default`\n* `breakdown`","nullable":true}}},"DashboardWidgetQuery":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"id":{"type":"string"},"fields":{"type":"array","items":{"type":"string"}},"aggregates":{"type":"array","items":{"type":"string"},"nullable":true},"transformations":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"columns":{"type":"array","items":{"type":"string"},"nullable":true},"field_aliases":{"type":"array","items":{"type":"string"},"nullable":true},"name":{"type":"string"},"conditions":{"type":"string"},"orderby":{"type":"string"},"is_hidden":{"type":"boolean"},"on_demand_extraction":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"extraction_state":{"type":"string"},"enabled":{"type":"boolean"}}},"on_demand_extraction_disabled":{"type":"boolean"},"selected_aggregate":{"type":"integer","nullable":true},"linked_dashboards":{"type":"array","items":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"field":{"type":"string"},"dashboard_id":{"type":"string"}},"required":["dashboard_id","field"]},"nullable":true}}},"DashboardWidgetQueryOnDemand":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"extraction_state":{"type":"string"},"enabled":{"type":"boolean"}}},"DataForwarder":{"type":"object","properties":{"organization_id":{"type":"integer","description":"The ID of the organization related to the data forwarder."},"provider":{"enum":["segment","sqs","splunk"],"type":"string","description":"The provider of the data forwarder. One of \"segment\", \"sqs\", or \"splunk\".\n\n* `segment` - Segment\n* `sqs` - Amazon SQS\n* `splunk` - Splunk"},"is_enabled":{"type":"boolean","default":true,"description":"Whether the data forwarder is enabled."},"enroll_new_projects":{"type":"boolean","default":false,"description":"Whether to enroll new projects automatically, after they're created."},"config":{"type":"object","additionalProperties":{"type":"string"},"description":"The configuration for the data forwarder, specific to the provider type. \nFor a 'sqs' provider, the required keys are queue_url, region, access_key, secret_key. If using a FIFO queue, you must also provide a message_group_id, though s3_bucket is optional. \nFor a 'segment' provider, the required keys are write_key. \nFor a 'splunk' provider, the required keys are instance_url, index, source, token."},"project_ids":{"type":"array","items":{"type":"integer"},"description":"The IDs of the projects connected to the data forwarder. Missing project IDs will be unenrolled if previously enrolled."}},"required":["organization_id","provider"]},"DataForwarderResponse":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"isEnabled":{"type":"boolean"},"enrollNewProjects":{"type":"boolean"},"enrolledProjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"platform":{"type":"string","nullable":true}},"required":["id","platform","slug"]}},"provider":{"type":"string"},"config":{"type":"object","additionalProperties":{"type":"string"},"nullable":true},"projectConfigs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"isEnabled":{"type":"boolean"},"dataForwarderId":{"type":"string"},"project":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"platform":{"type":"string","nullable":true}},"required":["id","platform","slug"]},"overrides":{"type":"object","additionalProperties":{"type":"string"}},"effectiveConfig":{"type":"object","additionalProperties":{"type":"string"}},"dateAdded":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"}},"required":["dataForwarderId","dateAdded","dateUpdated","effectiveConfig","id","isEnabled","overrides","project"]}},"dateAdded":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"}},"required":["config","dateAdded","dateUpdated","enrollNewProjects","enrolledProjects","id","isEnabled","organizationId","projectConfigs","provider"]},"Deploy":{"type":"object","properties":{"environment":{"type":"string","description":"The environment you're deploying to","maxLength":64},"name":{"type":"string","nullable":true,"description":"The optional name of the deploy","maxLength":64},"url":{"type":"string","format":"uri","nullable":true,"description":"The optional URL that points to the deploy"},"dateStarted":{"type":"string","format":"date-time","nullable":true,"description":"An optional date that indicates when the deploy started"},"dateFinished":{"type":"string","format":"date-time","nullable":true,"description":"An optional date that indicates when the deploy ended. If not provided, the current time is used."},"projects":{"type":"array","items":{"type":"string"},"description":"The optional list of project slugs to create a deploy within. If not provided, deploys are created for all of the release's projects."}},"required":["environment"]},"DeployResponse":{"type":"object","description":"Serializer for Deploy response objects","properties":{"id":{"type":"string","description":"The ID of the deploy"},"environment":{"type":"string","description":"The environment name"},"dateStarted":{"type":"string","format":"date-time","nullable":true,"description":"An optional date that indicates when the deploy started"},"dateFinished":{"type":"string","format":"date-time","description":"An optional date that indicates when the deploy ended"},"name":{"type":"string","nullable":true,"description":"The optional name of the deploy"},"url":{"type":"string","format":"uri","nullable":true,"description":"The optional URL that points to the deploy"}},"required":["dateFinished","dateStarted","environment","id","name","url"]},"DetailedProject":{"type":"object","properties":{"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"isInternal":{"type":"boolean"},"isPublic":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"color":{"type":"string"},"status":{"type":"string"},"team":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]}},"latestRelease":{"type":"object","properties":{"version":{"type":"string"}},"required":["version"],"nullable":true},"options":{"type":"object","additionalProperties":{}},"digestsMinDelay":{"type":"integer"},"digestsMaxDelay":{"type":"integer"},"subjectPrefix":{"type":"string"},"allowedDomains":{"type":"array","items":{"type":"string"}},"resolveAge":{"type":"integer"},"dataScrubber":{"type":"boolean"},"dataScrubberDefaults":{"type":"boolean"},"safeFields":{"type":"array","items":{"type":"string"}},"storeCrashReports":{"type":"integer","nullable":true},"sensitiveFields":{"type":"array","items":{"type":"string"}},"subjectTemplate":{"type":"string"},"securityToken":{"type":"string"},"securityTokenHeader":{"type":"string","nullable":true},"verifySSL":{"type":"boolean"},"scrubIPAddresses":{"type":"boolean"},"scrapeJavaScript":{"type":"boolean"},"enableAutoReleaseCreation":{"type":"boolean"},"highlightTags":{"type":"array","items":{"type":"string"}},"highlightContext":{"type":"object","additionalProperties":{}},"highlightPreset":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"string"}},"context":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"required":["context","tags"]},"groupingConfig":{"type":"string"},"derivedGroupingEnhancements":{"type":"string"},"groupingEnhancements":{"type":"string"},"secondaryGroupingExpiry":{"type":"integer"},"secondaryGroupingConfig":{"type":"string","nullable":true},"fingerprintingRules":{"type":"string"},"organization":{"type":"object","properties":{"features":{"type":"array","items":{"type":"string"}},"extraOptions":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{}}},"access":{"type":"array","items":{"type":"string"}},"onboardingTasks":{"type":"array","items":{"type":"object","properties":{"task":{"type":"string","nullable":true},"status":{"type":"string"},"completionSeen":{"type":"string","format":"date-time","nullable":true},"dateCompleted":{"type":"string","format":"date-time"},"data":{}},"required":["completionSeen","data","dateCompleted","status","task"]}},"id":{"type":"string"},"slug":{"type":"string"},"status":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"isEarlyAdopter":{"type":"boolean"},"require2FA":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"links":{"type":"object","properties":{"organizationUrl":{"type":"string"},"regionUrl":{"type":"string"}},"required":["organizationUrl","regionUrl"]},"hasAuthProvider":{"type":"boolean"},"allowMemberInvite":{"type":"boolean"},"allowMemberProjectCreation":{"type":"boolean"},"allowSuperuserAccess":{"type":"boolean"}},"required":["allowMemberInvite","allowMemberProjectCreation","allowSuperuserAccess","avatar","dateCreated","hasAuthProvider","id","isEarlyAdopter","links","name","require2FA","slug","status"]},"platforms":{"type":"array","items":{"type":"string"}},"processingIssues":{"type":"integer"},"defaultEnvironment":{"type":"string","nullable":true},"relayPiiConfig":{"type":"string","nullable":true},"builtinSymbolSources":{"type":"array","items":{"type":"string"}},"enableNativeSourceServerMapping":{"type":"boolean"},"dynamicSamplingBiases":{"type":"array","items":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"boolean"}]}},"nullable":true},"symbolSources":{"type":"string"},"isDynamicallySampled":{"type":"boolean"},"tempestFetchScreenshots":{"type":"boolean"},"autofixAutomationTuning":{"type":"string"},"seerScannerAutomation":{"type":"boolean"},"seerNightshiftTweaks":{},"scmSourceContextEnabled":{"type":"boolean"},"debugFilesRole":{"type":"string","nullable":true}},"required":["access","allowedDomains","autofixAutomationTuning","avatar","builtinSymbolSources","color","dataScrubber","dataScrubberDefaults","dateCreated","debugFilesRole","defaultEnvironment","derivedGroupingEnhancements","digestsMaxDelay","digestsMinDelay","dynamicSamplingBiases","enableAutoReleaseCreation","enableNativeSourceServerMapping","features","fingerprintingRules","firstEvent","firstTransactionEvent","groupingConfig","groupingEnhancements","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","highlightContext","highlightPreset","highlightTags","id","isBookmarked","isDynamicallySampled","isInternal","isMember","isPublic","latestRelease","name","options","organization","platform","platforms","processingIssues","relayPiiConfig","resolveAge","safeFields","scmSourceContextEnabled","scrapeJavaScript","scrubIPAddresses","secondaryGroupingConfig","secondaryGroupingExpiry","securityToken","securityTokenHeader","seerNightshiftTweaks","seerScannerAutomation","sensitiveFields","slug","status","storeCrashReports","subjectPrefix","subjectTemplate","symbolSources","teams","tempestFetchScreenshots","verifySSL"]},"Detector":{"type":"object","properties":{"owner":{"type":"object","properties":{"type":{"enum":["user","team"],"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["id","name","type"],"nullable":true},"createdBy":{"type":"string","nullable":true},"latestGroup":{"type":"object","additionalProperties":{},"nullable":true},"description":{"type":"string","nullable":true},"id":{"type":"string"},"projectId":{"type":"string","nullable":true},"name":{"type":"string"},"type":{"type":"string"},"workflowIds":{"type":"array","items":{"type":"string"},"nullable":true},"dateCreated":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"dataSources":{"type":"array","items":{"type":"object","additionalProperties":{}},"nullable":true},"conditionGroup":{"type":"object","additionalProperties":{},"nullable":true},"config":{"type":"object","additionalProperties":{}},"enabled":{"type":"boolean"}},"required":["conditionGroup","config","dataSources","dateCreated","dateUpdated","enabled","id","name","projectId","type","workflowIds"]},"DiscoverSavedQuery":{"type":"object","properties":{"name":{"type":"string","description":"The user-defined saved query name.","maxLength":255},"projects":{"type":"array","items":{"type":"integer"},"description":"The saved projects filter for this query."},"queryDataset":{"enum":["discover","error-events","transaction-like"],"type":"string","default":"error-events","description":"The dataset you would like to query. Note: `discover` is a **deprecated** value. The allowed values are: `error-events`, `transaction-like`\n\n* `discover`\n* `error-events`\n* `transaction-like`"},"start":{"type":"string","format":"date-time","nullable":true,"description":"The saved start time for this saved query."},"end":{"type":"string","format":"date-time","nullable":true,"description":"The saved end time for this saved query."},"range":{"type":"string","nullable":true,"description":"The saved time range period for this saved query."},"fields":{"type":"array","items":{"type":"string"},"nullable":true,"description":"The fields, functions, or equations that can be requested for the query. At most 20 fields can be selected per request. Each field can be one of the following types:\n- A built-in key field. See possible fields in the [properties table](/product/sentry-basics/search/searchable-properties/#properties-table), under any field that is an event property.\n - example: `field=transaction`\n- A tag. Tags should use the `tag[]` formatting to avoid ambiguity with any fields\n - example: `field=tag[isEnterprise]`\n- A function which will be in the format of `function_name(parameters,...)`. See possible functions in the [query builder documentation](/product/discover-queries/query-builder/#stacking-functions).\n - when a function is included, Discover will group by any tags or fields\n - example: `field=count_if(transaction.duration,greater,300)`\n- An equation when prefixed with `equation|`. Read more about [equations here](/product/discover-queries/query-builder/query-equations/).\n - example: `field=equation|count_if(transaction.duration,greater,300) / count() * 100`\n"},"orderby":{"type":"string","nullable":true,"description":"How to order the query results. Must be something in the `field` list, excluding equations."},"rollup":{"type":"integer","nullable":true,"description":"Time-bucket granularity in seconds for the saved query."},"aggregations":{"type":"array","items":{"type":"array","items":{}},"nullable":true,"description":"Aggregate functions to apply, each as a `[function, column, alias]` triple."},"groupby":{"type":"array","items":{"type":"string"},"nullable":true,"description":"Columns to group results by."},"conditions":{"type":"array","items":{"type":"array","items":{}},"nullable":true,"description":"Filter conditions, each as a `[column, operator, value]` triple."},"limit":{"type":"integer","maximum":1000,"minimum":0,"nullable":true,"description":"Maximum number of rows to return, from `0` to `1000`."},"version":{"type":"integer","maximum":2,"minimum":1,"nullable":true,"description":"Saved query schema version. `1` for the legacy shape, `2` for the current one."},"environment":{"type":"array","items":{"type":"string"},"nullable":true,"description":"The name of environments to filter by."},"query":{"type":"string","nullable":true,"description":"Filters results by using [query syntax](/product/sentry-basics/search/)."},"widths":{"type":"array","items":{"type":"string"},"nullable":true,"description":"Rendered column widths, in the same order as the query's fields."},"yAxis":{"type":"array","items":{"type":"string"},"nullable":true,"description":"Aggregate functions to be plotted on the chart."},"display":{"type":"string","nullable":true,"description":"Visualization type for saved query chart. Allowed values are:\n- default\n- previous\n- top5\n- daily\n- dailytop5\n- bar\n"},"topEvents":{"type":"integer","maximum":10,"minimum":1,"nullable":true,"description":"Number of top events' timeseries to be visualized."},"interval":{"type":"string","nullable":true,"description":"Resolution of the time series."}},"required":["name"]},"DiscoverSavedQueryListResponse":{"type":"array","items":{"type":"object","properties":{"environment":{"type":"array","items":{"type":"string"}},"query":{"type":"string"},"fields":{"type":"array","items":{"type":"string"}},"widths":{"type":"array","items":{"type":"string"}},"conditions":{"type":"array","items":{"type":"string"}},"aggregations":{"type":"array","items":{"type":"string"}},"range":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"},"orderby":{"type":"string"},"limit":{"type":"string"},"yAxis":{"type":"array","items":{"type":"string"}},"display":{"type":"string"},"topEvents":{"type":"integer"},"interval":{"type":"string"},"exploreQuery":{"type":"object","additionalProperties":{}},"lastVisited":{"type":"string"},"starred":{"type":"boolean"},"position":{"type":"integer","nullable":true},"id":{"type":"string"},"name":{"type":"string"},"projects":{"type":"array","items":{"type":"integer"}},"version":{"type":"integer"},"queryDataset":{"type":"string"},"datasetSource":{"type":"string"},"expired":{"type":"boolean"},"dateCreated":{"type":"string"},"dateUpdated":{"type":"string"},"createdBy":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]}},"required":["createdBy","datasetSource","dateCreated","dateUpdated","expired","id","name","projects","queryDataset","version"]}},"DiscoverSavedQueryModel":{"type":"object","properties":{"environment":{"type":"array","items":{"type":"string"}},"query":{"type":"string"},"fields":{"type":"array","items":{"type":"string"}},"widths":{"type":"array","items":{"type":"string"}},"conditions":{"type":"array","items":{"type":"string"}},"aggregations":{"type":"array","items":{"type":"string"}},"range":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"},"orderby":{"type":"string"},"limit":{"type":"string"},"yAxis":{"type":"array","items":{"type":"string"}},"display":{"type":"string"},"topEvents":{"type":"integer"},"interval":{"type":"string"},"exploreQuery":{"type":"object","additionalProperties":{}},"lastVisited":{"type":"string"},"starred":{"type":"boolean"},"position":{"type":"integer","nullable":true},"id":{"type":"string"},"name":{"type":"string"},"projects":{"type":"array","items":{"type":"integer"}},"version":{"type":"integer"},"queryDataset":{"type":"string"},"datasetSource":{"type":"string"},"expired":{"type":"boolean"},"dateCreated":{"type":"string"},"dateUpdated":{"type":"string"},"createdBy":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]}},"required":["createdBy","datasetSource","dateCreated","dateUpdated","expired","id","name","projects","queryDataset","version"]},"DynamicSamplingBias":{"type":"object","properties":{"id":{"enum":["boostEnvironments","boostKeyTransactions","boostLatestRelease","boostLowVolumeTransactions","boostReplayId","ignoreHealthChecks","minimumSampleRate","recalibrationRule"],"type":"string","description":"* `boostEnvironments`\n* `boostKeyTransactions`\n* `boostLatestRelease`\n* `boostLowVolumeTransactions`\n* `boostReplayId`\n* `ignoreHealthChecks`\n* `minimumSampleRate`\n* `recalibrationRule`"},"active":{"type":"boolean","default":false}},"required":["id"]},"DynamicSdkLoaderOption":{"type":"object","description":"Configures multiple options for the Javascript Loader Script.\n- `Performance Monitoring`\n- `Debug Bundles & Logging`\n- `Session Replay` - Note that the loader will load the ES6 bundle instead of the ES5 bundle.\n- `User Feedback` - Note that the loader will load the ES6 bundle instead of the ES5 bundle.\n- `Logs and Metrics` - Note that the loader will load the ES6 bundle instead of the ES5 bundle. Requires SDK >= 10.0.0.\n```json\n{\n \"dynamicSdkLoaderOptions\": {\n \"hasReplay\": true,\n \"hasPerformance\": true,\n \"hasDebug\": true,\n \"hasFeedback\": true,\n \"hasLogsAndMetrics\": true\n }\n}\n```","properties":{"hasReplay":{"type":"boolean"},"hasPerformance":{"type":"boolean"},"hasDebug":{"type":"boolean"},"hasFeedback":{"type":"boolean"},"hasLogsAndMetrics":{"type":"boolean"}}},"Environment":{"type":"object","properties":{"isHidden":{"type":"boolean","description":"Specify `true` to make the environment visible or `false` to make the environment hidden."}},"required":["isHidden"]},"EnvironmentProject":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"isHidden":{"type":"boolean"}},"required":["id","isHidden","name"]},"EventAttachmentDetailsResponse":{"type":"object","properties":{"id":{"type":"string"},"event_id":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"mimetype":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"size":{"type":"integer"},"headers":{"type":"object","additionalProperties":{"type":"string","nullable":true}},"sha1":{"type":"string","nullable":true}},"required":["dateCreated","event_id","headers","id","mimetype","name","sha1","size","type"]},"EventIdLookupResponse":{"type":"object","properties":{"organizationSlug":{"type":"string"},"projectSlug":{"type":"string"},"groupId":{"type":"string"},"eventId":{"type":"string"},"event":{"type":"object","properties":{"id":{"type":"string"},"groupID":{"type":"string","nullable":true},"eventID":{"type":"string"},"projectID":{"type":"string"},"message":{"type":"string","nullable":true},"title":{"type":"string"},"location":{"type":"string","nullable":true},"user":{"type":"object","properties":{"id":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"username":{"type":"string","nullable":true},"ip_address":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"geo":{"type":"object","additionalProperties":{"type":"string"},"nullable":true},"data":{"type":"object","additionalProperties":{},"nullable":true}},"nullable":true},"tags":{"type":"array","items":{"type":"object","properties":{"query":{"type":"string"},"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}},"platform":{"type":"string"},"dateReceived":{"type":"string","format":"date-time","nullable":true},"contexts":{"type":"object","additionalProperties":{},"nullable":true},"size":{"type":"integer","nullable":true},"entries":{"type":"array","items":{}},"dist":{"type":"string","nullable":true},"sdk":{"type":"object","properties":{"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true}},"required":["name","version"],"nullable":true},"context":{"type":"object","additionalProperties":{},"nullable":true},"packages":{"type":"object","additionalProperties":{}},"type":{"enum":["default","error","csp","nel","hpkp","expectct","expectstaple","transaction","generic","feedback"],"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"errors":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"data":{"type":"object","additionalProperties":{}}},"required":["data","message","type"]}},"occurrence":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"integer"},"eventId":{"type":"string"},"fingerprint":{"type":"array","items":{"type":"string"}},"issueTitle":{"type":"string"},"subtitle":{"type":"string"},"resourceId":{"type":"string","nullable":true},"evidenceData":{"type":"object","additionalProperties":{}},"evidenceDisplay":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"important":{"type":"boolean"}},"required":["important","name","value"]}},"type":{"type":"integer"},"detectionTime":{"type":"number","format":"double"},"level":{"type":"string","nullable":true},"culprit":{"type":"string","nullable":true},"assignee":{"type":"string","nullable":true},"priority":{"type":"integer","nullable":true}},"required":["assignee","culprit","detectionTime","eventId","evidenceData","evidenceDisplay","fingerprint","id","issueTitle","level","priority","projectId","resourceId","subtitle","type"],"nullable":true},"_meta":{"type":"object","additionalProperties":{}},"crashFile":{"type":"string","nullable":true},"culprit":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"fingerprints":{"type":"array","items":{"type":"string"}},"groupingConfig":{"type":"object","properties":{"id":{"type":"string"},"enhancements":{"type":"string"}},"required":["enhancements","id"]},"startTimestamp":{"type":"number","format":"double"},"endTimestamp":{"type":"number","format":"double"},"measurements":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"type":"number","format":"double"},"unit":{"type":"string","nullable":true}},"required":["unit","value"]},"nullable":true},"breakdowns":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"type":"number","format":"double"},"unit":{"type":"string","nullable":true}},"required":["unit","value"]}},"nullable":true}},"required":["_meta","context","contexts","dateReceived","dist","entries","errors","eventID","groupID","id","location","message","metadata","occurrence","packages","platform","projectID","sdk","size","tags","title","type","user"]}},"required":["event","eventId","groupId","organizationSlug","projectSlug"]},"ExplorerAutofixRequest":{"type":"object","description":"Serializer for the agent-based autofix requests.","properties":{"step":{"enum":["root_cause","solution","code_changes","pr_iteration","open_pr","coding_agent_handoff"],"type":"string","default":"root_cause","description":"Which autofix step to run.\n\n* `root_cause`\n* `solution`\n* `code_changes`\n* `pr_iteration`\n* `open_pr`\n* `coding_agent_handoff`"},"stopping_point":{"enum":["root_cause","solution","code_changes","open_pr"],"type":"string","description":"Where the issue fix process should stop. If not provided, will run to root cause.\n\n* `root_cause`\n* `solution`\n* `code_changes`\n* `open_pr`"},"run_id":{"type":"integer","description":"**Deprecated** in favor of sentry_run_id; retained for backward compatibility. The existing run's numeric Seer id to continue. If neither run_id nor sentry_run_id is provided, starts a new run."},"sentry_run_id":{"type":"string","format":"uuid","description":"Existing run's UUID to continue. Preferred over run_id, and takes precedence when both are given."},"integration_id":{"type":"integer","description":"Coding agent integration ID. Required for coding_agent_handoff step (unless provider is specified)."},"provider":{"type":"string","description":"Coding agent provider (e.g., 'github_copilot'). Alternative to integration_id for user-authenticated providers."},"user_context":{"type":"string","description":"Optional user context to append to the step prompt.","maxLength":10000},"repo_name":{"type":"string","description":"Optional repository name for which to create the pull request. Do not pass a repository name to create pull requests in all relevant repositories."},"insert_index":{"type":"integer","description":"Block index to insert at. When provided, truncates blocks after this point for retry-from-step."},"referrer":{"type":"string","description":"Referrer identifying where the issue fix was triggered from."},"enable_bash_mode":{"type":"boolean","default":false,"description":"Override bash mode tools."}}},"ExternalActor":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]},"ExternalIssueLinkResponse":{"type":"object","properties":{"id":{"type":"integer"},"key":{"type":"string"},"url":{"type":"string"},"integrationId":{"type":"integer"},"displayName":{"type":"string"}},"required":["displayName","id","integrationId","key","url"]},"ExternalTeam":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"team_id":{"type":"integer","description":"ID of the Sentry team to link to the external team."},"external_name":{"type":"string","description":"The associated name for the provider."},"provider":{"enum":["github","github_enterprise","jira_server","slack","slack_staging","perforce","gitlab","cursor_origin","msteams","custom_scm"],"type":"string","description":"The provider of the external actor.\n\n* `github`\n* `github_enterprise`\n* `jira_server`\n* `slack`\n* `slack_staging`\n* `perforce`\n* `gitlab`\n* `cursor_origin`\n* `msteams`\n* `custom_scm`"},"integration_id":{"type":"integer","description":"The Integration ID."},"external_id":{"type":"string","nullable":true,"description":"The associated user ID for provider."}},"required":["external_name","integration_id","provider","team_id"]},"ExternalUser":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"user_id":{"type":"integer","description":"The user ID in Sentry."},"external_name":{"type":"string","description":"The associated name for the provider."},"provider":{"enum":["github","github_enterprise","jira_server","slack","slack_staging","perforce","gitlab","cursor_origin","msteams","custom_scm"],"type":"string","description":"The provider of the external actor.\n\n* `github`\n* `github_enterprise`\n* `jira_server`\n* `slack`\n* `slack_staging`\n* `perforce`\n* `gitlab`\n* `cursor_origin`\n* `msteams`\n* `custom_scm`"},"integration_id":{"type":"integer","description":"The Integration ID."},"id":{"type":"integer","readOnly":true,"description":"The external actor ID."},"external_id":{"type":"string","nullable":true,"description":"The associated user ID for provider."}},"required":["external_name","id","integration_id","provider","user_id"]},"Filters":{"type":"object","description":"Filter settings for the source. This is optional for all sources.\n\n**`filetypes`** ***(list)*** - A list of file types that can be found on this source. If this is left empty, all file types will be enabled. The options are:\n- `pe` - Windows executable files\n- `pdb` - Windows debug files\n- `portablepdb` - .NET portable debug files\n- `mach_code` - MacOS executable files\n- `mach_debug` - MacOS debug files\n- `elf_code` - ELF executable files\n- `elf_debug` - ELF debug files\n- `wasm_code` - WASM executable files\n- `wasm_debug` - WASM debug files\n- `breakpad` - Breakpad symbol files\n- `sourcebundle` - Source code bundles\n- `uuidmap` - Apple UUID mapping files\n- `bcsymbolmap` - Apple bitcode symbol maps\n- `il2cpp` - Unity IL2CPP mapping files\n- `proguard` - ProGuard mapping files\n\n**`path_patterns`** ***(list)*** - A list of glob patterns to check against the debug and code file paths of debug files. Only files that match one of these patterns will be requested from the source. If this is left empty, no path-based filtering takes place.\n\n**`requires_checksum`** ***(boolean)*** - Whether this source requires a debug checksum to be sent with each request. Defaults to `false`.\n\n```json\n{\n \"filters\": {\n \"filetypes\": [\"pe\", \"pdb\", \"portablepdb\"],\n \"path_patterns\": [\"*ffmpeg*\"]\n }\n}\n```","properties":{"filetypes":{"type":"array","items":{"enum":["pe","pdb","portablepdb","mach_debug","mach_code","elf_debug","elf_code","wasm_debug","wasm_code","breakpad","sourcebundle","uuidmap","bcsymbolmap","il2cpp","proguard","dartsymbolmap"],"type":"string","description":"* `pe`\n* `pdb`\n* `portablepdb`\n* `mach_debug`\n* `mach_code`\n* `elf_debug`\n* `elf_code`\n* `wasm_debug`\n* `wasm_code`\n* `breakpad`\n* `sourcebundle`\n* `uuidmap`\n* `bcsymbolmap`\n* `il2cpp`\n* `proguard`\n* `dartsymbolmap`"},"description":"The file types enabled for the source."},"path_patterns":{"type":"array","items":{"type":"string"},"description":"The debug and code file paths enabled for the source."},"requires_checksum":{"type":"boolean","description":"Whether the source requires debug checksums."}}},"GetFlagLogResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"action":{"enum":["created","deleted","updated"],"type":"string"},"createdAt":{"type":"string","format":"date-time"},"createdBy":{"type":"string","nullable":true},"createdByType":{"enum":["email","id","name",null],"type":"string","nullable":true},"flag":{"type":"string"},"provider":{"enum":["generic","flagpole","launchdarkly","unleash","statsig",null],"type":"string","nullable":true},"tags":{"type":"object","additionalProperties":{}}},"required":["action","createdAt","createdBy","createdByType","flag","id","provider","tags"]}},"required":["data"]},"GetReplay":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"trace_ids":{"type":"array","items":{"type":"string"}},"error_ids":{"type":"array","items":{"type":"string"}},"environment":{"type":"string","nullable":true},"tags":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},{"type":"array","items":{}}]},"user":{"type":"object","properties":{"id":{"type":"string","nullable":true},"username":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"ip":{"type":"string","nullable":true},"display_name":{"type":"string","nullable":true},"geo":{"type":"object","properties":{"city":{"type":"string","nullable":true},"country_code":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"subdivision":{"type":"string","nullable":true}}}}},"sdk":{"type":"object","properties":{"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true}}},"os":{"type":"object","properties":{"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true}}},"browser":{"type":"object","properties":{"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true}}},"device":{"type":"object","properties":{"name":{"type":"string","nullable":true},"brand":{"type":"string","nullable":true},"model":{"type":"string","nullable":true},"family":{"type":"string","nullable":true}}},"ota_updates":{"type":"object","properties":{"channel":{"type":"string","nullable":true},"runtime_version":{"type":"string","nullable":true},"update_id":{"type":"string","nullable":true}}},"is_archived":{"type":"boolean","nullable":true},"urls":{"type":"array","items":{"type":"string"},"nullable":true},"segment_names":{"type":"array","items":{"type":"string"},"nullable":true},"clicks":{"type":"array","items":{"type":"object","additionalProperties":{}}},"count_dead_clicks":{"type":"integer","nullable":true},"count_rage_clicks":{"type":"integer","nullable":true},"count_errors":{"type":"integer","nullable":true},"duration":{"type":"integer","nullable":true},"finished_at":{"type":"string","nullable":true},"started_at":{"type":"string","nullable":true},"activity":{"type":"integer","nullable":true},"count_urls":{"type":"integer","nullable":true},"replay_type":{"type":"string"},"count_segments":{"type":"integer","nullable":true},"platform":{"type":"string","nullable":true},"releases":{"type":"array","items":{"type":"string"}},"dist":{"type":"string","nullable":true},"count_warnings":{"type":"integer","nullable":true},"count_infos":{"type":"integer","nullable":true},"has_viewed":{"type":"boolean"}}}},"required":["data"]},"GetReplayDeletionJob":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"dateCreated":{"type":"string"},"dateUpdated":{"type":"string"},"rangeStart":{"type":"string"},"rangeEnd":{"type":"string"},"environments":{"type":"array","items":{"type":"string"}},"status":{"type":"string"},"query":{"type":"string"},"countDeleted":{"type":"integer"}},"required":["countDeleted","dateCreated","dateUpdated","environments","id","query","rangeEnd","rangeStart","status"]}},"required":["data"]},"GetReplayRecordingSegment":{"type":"object","properties":{"data":{"type":"object","properties":{"replayId":{"type":"string"},"segmentId":{"type":"integer"},"projectId":{"type":"string"},"dateAdded":{"type":"string","nullable":true}},"required":["dateAdded","projectId","replayId","segmentId"]}},"required":["data"]},"GetReplayViewedBy":{"type":"object","properties":{"data":{"type":"object","properties":{"viewed_by":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["viewed_by"]}},"required":["data"]},"GroupDetailsResponse":{"type":"object","properties":{"isUnhandled":{"type":"boolean"},"count":{"type":"string"},"userCount":{"type":"integer"},"firstSeen":{"type":"string","format":"date-time","nullable":true},"lastSeen":{"type":"string","format":"date-time","nullable":true},"derivedData":{"type":"object","properties":{"blocker":{"type":"string"},"progress":{"type":"string"},"status":{"type":"string"},"viewCount":{"type":"integer"},"hasOpenFixPr":{"type":"boolean"},"isAssigned":{"type":"boolean"},"hasRootCause":{"type":"boolean"},"lastCompletedAutofixStep":{"type":"string"},"lastProgressedAt":{"type":"string","format":"date-time","nullable":true}},"required":["blocker","hasOpenFixPr","hasRootCause","isAssigned","lastCompletedAutofixStep","lastProgressedAt","progress","status","viewCount"]},"id":{"type":"string"},"shareId":{"type":"string","nullable":true},"shortId":{"type":"string"},"title":{"type":"string"},"culprit":{"type":"string","nullable":true},"permalink":{"type":"string"},"logger":{"type":"string","nullable":true},"level":{"enum":["sample","debug","info","warning","error","fatal","unknown"],"type":"string"},"status":{"enum":["resolved","ignored","pending_deletion","pending_merge","reprocessing","unresolved"],"type":"string"},"statusDetails":{"type":"object","properties":{"ignoreCount":{"type":"integer"},"ignoreUntil":{"type":"string","format":"date-time"},"ignoreUserCount":{"type":"integer"},"ignoreUserWindow":{"type":"integer"},"ignoreWindow":{"type":"integer"},"actor":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},"inNextRelease":{"type":"boolean"},"inRelease":{"type":"string"},"inCommit":{"type":"string"},"pendingEvents":{"type":"integer"},"info":{"type":"object","properties":{"dateCreated":{"type":"string"},"syncCount":{"type":"integer"},"totalEvents":{"type":"integer"}},"required":["dateCreated","syncCount","totalEvents"],"nullable":true}}},"substatus":{"enum":["archived_until_escalating","archived_until_condition_met","archived_forever","escalating","ongoing","regressed","new",null],"type":"string","nullable":true},"isPublic":{"type":"boolean"},"platform":{"type":"string","nullable":true},"priority":{"enum":["low","medium","high",null],"type":"string","nullable":true},"priorityLockedAt":{"type":"string","format":"date-time","nullable":true},"seerFixabilityScore":{"type":"number","format":"double","nullable":true},"seerAutofixLastTriggered":{"type":"string","format":"date-time","nullable":true},"seerExplorerAutofixLastTriggered":{"type":"string","format":"date-time","nullable":true},"project":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"platform":{"type":"string","nullable":true}},"required":["id","name","platform","slug"]},"type":{"enum":["default","error","csp","nel","hpkp","expectct","expectstaple","transaction","generic","feedback"],"type":"string"},"issueType":{"type":"string"},"issueCategory":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"numComments":{"type":"integer"},"assignedTo":{"type":"object","properties":{"type":{"enum":["user","team"],"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["id","name","type"],"nullable":true},"isBookmarked":{"type":"boolean"},"isSubscribed":{"type":"boolean"},"subscriptionDetails":{"type":"object","properties":{"disabled":{"type":"boolean"},"reason":{"type":"string"}},"nullable":true},"hasSeen":{"type":"boolean"},"annotations":{"type":"array","items":{"type":"object","properties":{"displayName":{"type":"string"},"url":{"type":"string"}},"required":["displayName","url"]}},"firstRelease":{"type":"object","additionalProperties":{},"nullable":true},"lastRelease":{"type":"object","additionalProperties":{},"nullable":true},"tags":{"type":"array","items":{"type":"object","additionalProperties":{}}},"stats":{"type":"object","additionalProperties":{"type":"array","items":{"type":"array","items":{"type":"number","format":"double"}}}},"inbox":{"type":"object","properties":{"reason":{"type":"integer"},"reason_details":{"type":"object","properties":{"until":{"type":"string","nullable":true},"count":{"type":"integer","nullable":true},"window":{"type":"integer","nullable":true},"user_count":{"type":"integer","nullable":true},"user_window":{"type":"integer","nullable":true}},"required":["count","until","user_count","user_window","window"],"nullable":true},"date_added":{"type":"string","format":"date-time"}},"required":["date_added","reason","reason_details"],"nullable":true},"owners":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"owner":{"type":"string"},"date_added":{"type":"string","format":"date-time"}},"required":["date_added","owner","type"]},"nullable":true},"forecast":{"type":"object","additionalProperties":{}},"integrationIssues":{"type":"array","items":{"type":"object","additionalProperties":{}}},"sentryAppIssues":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"issueId":{"type":"string"},"serviceType":{"type":"string"},"displayName":{"type":"string"},"webUrl":{"type":"string"}},"required":["displayName","id","issueId","serviceType","webUrl"]}},"latestEventHasAttachments":{"type":"boolean"},"activity":{"type":"array","items":{"type":"object","additionalProperties":{}}},"seenBy":{"type":"array","items":{"type":"object","additionalProperties":{}}},"userReportCount":{"type":"integer"},"participants":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["activity","annotations","assignedTo","culprit","hasSeen","id","isBookmarked","isPublic","isSubscribed","issueCategory","issueType","level","logger","metadata","numComments","participants","permalink","platform","priority","priorityLockedAt","project","seenBy","seerAutofixLastTriggered","seerExplorerAutofixLastTriggered","seerFixabilityScore","shareId","shortId","status","statusDetails","subscriptionDetails","substatus","title","type","userReportCount"]},"GroupEventsResponseDict":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"event.type":{"type":"string"},"groupID":{"type":"string","nullable":true},"eventID":{"type":"string"},"projectID":{"type":"string"},"message":{"type":"string"},"title":{"type":"string"},"location":{"type":"string","nullable":true},"culprit":{"type":"string","nullable":true},"user":{"type":"object","properties":{"id":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"username":{"type":"string","nullable":true},"ip_address":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"geo":{"type":"object","additionalProperties":{"type":"string"},"nullable":true},"data":{"type":"object","additionalProperties":{},"nullable":true}},"nullable":true},"tags":{"type":"array","items":{"type":"object","properties":{"query":{"type":"string"},"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"crashFile":{"type":"string","nullable":true},"metadata":{"type":"object","additionalProperties":{}}},"required":["crashFile","culprit","dateCreated","event.type","eventID","groupID","id","location","message","metadata","platform","projectID","tags","title","user"]}},"GroupExternalIssueResponse":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"issueId":{"type":"string"},"serviceType":{"type":"string"},"displayName":{"type":"string"},"webUrl":{"type":"string"}},"required":["displayName","id","issueId","serviceType","webUrl"]}},"GroupHashesResponse":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"latestEvent":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"groupID":{"type":"string","nullable":true},"eventID":{"type":"string"},"projectID":{"type":"string"},"message":{"type":"string","nullable":true},"title":{"type":"string"},"location":{"type":"string","nullable":true},"user":{"type":"object","properties":{"id":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"username":{"type":"string","nullable":true},"ip_address":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"geo":{"type":"object","additionalProperties":{"type":"string"},"nullable":true},"data":{"type":"object","additionalProperties":{},"nullable":true}},"nullable":true},"tags":{"type":"array","items":{"type":"object","properties":{"query":{"type":"string"},"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}},"platform":{"type":"string"},"dateReceived":{"type":"string","format":"date-time","nullable":true},"contexts":{"type":"object","additionalProperties":{},"nullable":true},"size":{"type":"integer","nullable":true},"entries":{"type":"array","items":{}},"dist":{"type":"string","nullable":true},"sdk":{"type":"object","properties":{"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true}},"required":["name","version"],"nullable":true},"context":{"type":"object","additionalProperties":{},"nullable":true},"packages":{"type":"object","additionalProperties":{}},"type":{"enum":["default","error","csp","nel","hpkp","expectct","expectstaple","transaction","generic","feedback"],"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"errors":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"data":{"type":"object","additionalProperties":{}}},"required":["data","message","type"]}},"occurrence":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"integer"},"eventId":{"type":"string"},"fingerprint":{"type":"array","items":{"type":"string"}},"issueTitle":{"type":"string"},"subtitle":{"type":"string"},"resourceId":{"type":"string","nullable":true},"evidenceData":{"type":"object","additionalProperties":{}},"evidenceDisplay":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"important":{"type":"boolean"}},"required":["important","name","value"]}},"type":{"type":"integer"},"detectionTime":{"type":"number","format":"double"},"level":{"type":"string","nullable":true},"culprit":{"type":"string","nullable":true},"assignee":{"type":"string","nullable":true},"priority":{"type":"integer","nullable":true}},"required":["assignee","culprit","detectionTime","eventId","evidenceData","evidenceDisplay","fingerprint","id","issueTitle","level","priority","projectId","resourceId","subtitle","type"],"nullable":true},"_meta":{"type":"object","additionalProperties":{}},"crashFile":{"type":"string","nullable":true},"culprit":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"fingerprints":{"type":"array","items":{"type":"string"}},"groupingConfig":{"type":"object","properties":{"id":{"type":"string"},"enhancements":{"type":"string"}},"required":["enhancements","id"]},"startTimestamp":{"type":"number","format":"double"},"endTimestamp":{"type":"number","format":"double"},"measurements":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"type":"number","format":"double"},"unit":{"type":"string","nullable":true}},"required":["unit","value"]},"nullable":true},"breakdowns":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"type":"number","format":"double"},"unit":{"type":"string","nullable":true}},"required":["unit","value"]}},"nullable":true}},"required":["_meta","context","contexts","dateReceived","dist","entries","errors","eventID","groupID","id","location","message","metadata","occurrence","packages","platform","projectID","sdk","size","tags","title","type","user"]},{"type":"object","properties":{"id":{"type":"string"},"event.type":{"type":"string"},"groupID":{"type":"string","nullable":true},"eventID":{"type":"string"},"projectID":{"type":"string"},"message":{"type":"string"},"title":{"type":"string"},"location":{"type":"string","nullable":true},"culprit":{"type":"string","nullable":true},"user":{"type":"object","properties":{"id":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"username":{"type":"string","nullable":true},"ip_address":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"geo":{"type":"object","additionalProperties":{"type":"string"},"nullable":true},"data":{"type":"object","additionalProperties":{},"nullable":true}},"nullable":true},"tags":{"type":"array","items":{"type":"object","properties":{"query":{"type":"string"},"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"crashFile":{"type":"string","nullable":true},"metadata":{"type":"object","additionalProperties":{}}},"required":["crashFile","culprit","dateCreated","event.type","eventID","groupID","id","location","message","metadata","platform","projectID","tags","title","user"]},{"type":"object","nullable":true}]},"mergedBySeer":{"type":"boolean"},"seerMatchDistance":{"type":"number","format":"double","nullable":true}},"required":["id","latestEvent","mergedBySeer","seerMatchDistance"]}},"GroupSearchViewPostValidator":{"type":"object","properties":{"name":{"type":"string","description":"The name of the issue view."},"query":{"type":"string","description":"The issue search query. Issue search does not support the `AND`/`OR` boolean operators or parenthesized boolean groups. To match any of several values, use the list form instead: `issue:[PROJ-AB1, PROJ-CD2]`, `issue.priority:[high, medium]`."},"projects":{"type":"array","items":{"type":"integer"},"description":"The project IDs included in the view. Use `-1` to include all projects."},"environments":{"type":"array","items":{"type":"string"},"description":"The environment names included in the view. An empty list includes all environments."},"timeFilters":{"allOf":[{"type":"object","properties":{"start":{"type":"string","nullable":true,"description":"The start of the time range in ISO-8601 format."},"end":{"type":"string","nullable":true,"description":"The end of the time range in ISO-8601 format."},"period":{"type":"string","nullable":true,"description":"The relative time period, such as `14d`."},"utc":{"type":"boolean","nullable":true,"description":"Whether to interpret the time range as UTC."}}}],"description":"The time range for the view."},"querySort":{"enum":["date","new","trends","freq","user","inbox","recommended"],"type":"string","default":"date","description":"How to sort issues in the view.\n\n* `date` - Last Seen\n* `new` - First Seen\n* `trends` - Trends\n* `freq` - Events\n* `user` - Users\n* `inbox` - Date Added\n* `recommended` - Recommended"},"starred":{"type":"boolean","description":"Whether to star the issue view for the current user."}},"required":["environments","name","projects","query","timeFilters"]},"GroupSearchViewTimeFilters":{"type":"object","properties":{"start":{"type":"string","nullable":true,"description":"The start of the time range in ISO-8601 format."},"end":{"type":"string","nullable":true,"description":"The end of the time range in ISO-8601 format."},"period":{"type":"string","nullable":true,"description":"The relative time period, such as `14d`."},"utc":{"type":"boolean","nullable":true,"description":"Whether to interpret the time range as UTC."}}},"GroupUpdateResponse":{"type":"object","properties":{"isUnhandled":{"type":"boolean"},"count":{"type":"string"},"userCount":{"type":"integer"},"firstSeen":{"type":"string","format":"date-time","nullable":true},"lastSeen":{"type":"string","format":"date-time","nullable":true},"derivedData":{"type":"object","properties":{"blocker":{"type":"string"},"progress":{"type":"string"},"status":{"type":"string"},"viewCount":{"type":"integer"},"hasOpenFixPr":{"type":"boolean"},"isAssigned":{"type":"boolean"},"hasRootCause":{"type":"boolean"},"lastCompletedAutofixStep":{"type":"string"},"lastProgressedAt":{"type":"string","format":"date-time","nullable":true}},"required":["blocker","hasOpenFixPr","hasRootCause","isAssigned","lastCompletedAutofixStep","lastProgressedAt","progress","status","viewCount"]},"id":{"type":"string"},"shareId":{"type":"string","nullable":true},"shortId":{"type":"string"},"title":{"type":"string"},"culprit":{"type":"string","nullable":true},"permalink":{"type":"string"},"logger":{"type":"string","nullable":true},"level":{"enum":["sample","debug","info","warning","error","fatal","unknown"],"type":"string"},"status":{"enum":["resolved","ignored","pending_deletion","pending_merge","reprocessing","unresolved"],"type":"string"},"statusDetails":{"type":"object","properties":{"ignoreCount":{"type":"integer"},"ignoreUntil":{"type":"string","format":"date-time"},"ignoreUserCount":{"type":"integer"},"ignoreUserWindow":{"type":"integer"},"ignoreWindow":{"type":"integer"},"actor":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},"inNextRelease":{"type":"boolean"},"inRelease":{"type":"string"},"inCommit":{"type":"string"},"pendingEvents":{"type":"integer"},"info":{"type":"object","properties":{"dateCreated":{"type":"string"},"syncCount":{"type":"integer"},"totalEvents":{"type":"integer"}},"required":["dateCreated","syncCount","totalEvents"],"nullable":true}}},"substatus":{"enum":["archived_until_escalating","archived_until_condition_met","archived_forever","escalating","ongoing","regressed","new",null],"type":"string","nullable":true},"isPublic":{"type":"boolean"},"platform":{"type":"string","nullable":true},"priority":{"enum":["low","medium","high",null],"type":"string","nullable":true},"priorityLockedAt":{"type":"string","format":"date-time","nullable":true},"seerFixabilityScore":{"type":"number","format":"double","nullable":true},"seerAutofixLastTriggered":{"type":"string","format":"date-time","nullable":true},"seerExplorerAutofixLastTriggered":{"type":"string","format":"date-time","nullable":true},"project":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"platform":{"type":"string","nullable":true}},"required":["id","name","platform","slug"]},"type":{"enum":["default","error","csp","nel","hpkp","expectct","expectstaple","transaction","generic","feedback"],"type":"string"},"issueType":{"type":"string"},"issueCategory":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"numComments":{"type":"integer"},"assignedTo":{"type":"object","properties":{"type":{"enum":["user","team"],"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["id","name","type"],"nullable":true},"isBookmarked":{"type":"boolean"},"isSubscribed":{"type":"boolean"},"subscriptionDetails":{"type":"object","properties":{"disabled":{"type":"boolean"},"reason":{"type":"string"}},"nullable":true},"hasSeen":{"type":"boolean"},"annotations":{"type":"array","items":{"type":"object","properties":{"displayName":{"type":"string"},"url":{"type":"string"}},"required":["displayName","url"]}}},"required":["annotations","assignedTo","culprit","hasSeen","id","isBookmarked","isPublic","isSubscribed","issueCategory","issueType","level","logger","metadata","numComments","permalink","platform","priority","priorityLockedAt","project","seerAutofixLastTriggered","seerExplorerAutofixLastTriggered","seerFixabilityScore","shareId","shortId","status","statusDetails","subscriptionDetails","substatus","title","type"]},"GroupValidator":{"type":"object","properties":{"inbox":{"type":"boolean","description":"If true, marks the issue as reviewed by the requestor."},"status":{"enum":["resolved","unresolved","ignored","resolvedInNextRelease","muted"],"type":"string","description":"Limit mutations to only issues with the given status.\n\n* `resolved`\n* `unresolved`\n* `ignored`\n* `resolvedInNextRelease`\n* `muted`"},"statusDetails":{"allOf":[{"type":"object","properties":{"inNextRelease":{"type":"boolean","description":"If true, marks the issue as resolved in the next release."},"inRelease":{"type":"string","description":"The version of the release that the issue should be resolved in.If set to `latest`, the latest release will be used."},"inCommit":{"allOf":[{"type":"object","properties":{"commit":{"type":"string","description":"The SHA of the resolving commit."},"repository":{"type":"string","description":"The name of the repository (as it appears in Sentry)."}},"required":["commit","repository"]}],"description":"The commit data that the issue should use for resolution."},"ignoreDuration":{"type":"integer","minimum":0,"description":"Ignore the issue until for this many minutes."},"ignoreCount":{"type":"integer","minimum":0,"description":"Ignore the issue until it has occurred this many times in `ignoreWindow` minutes."},"ignoreWindow":{"type":"integer","maximum":10080,"minimum":0,"description":"Ignore the issue until it has occurred `ignoreCount` times in this many minutes. (Max: 1 week)"},"ignoreUserCount":{"type":"integer","minimum":0,"description":"Ignore the issue until it has affected this many users in `ignoreUserWindow` minutes."},"ignoreUserWindow":{"type":"integer","maximum":10080,"minimum":0,"description":"Ignore the issue until it has affected `ignoreUserCount` users in this many minutes. (Max: 1 week)"}},"required":["ignoreCount","ignoreDuration","ignoreUserCount","ignoreUserWindow","ignoreWindow","inNextRelease","inRelease"]}],"description":"Additional details about the resolution. Status detail updates that include release data are only allowed for issues within a single project."},"substatus":{"enum":["archived_until_escalating","archived_until_condition_met","archived_forever","escalating","ongoing","regressed","new",null],"type":"string","nullable":true,"description":"The new substatus of the issue.\n\n* `archived_until_escalating`\n* `archived_until_condition_met`\n* `archived_forever`\n* `escalating`\n* `ongoing`\n* `regressed`\n* `new`"},"hasSeen":{"type":"boolean","description":"If true, marks the issue as seen by the requestor."},"isBookmarked":{"type":"boolean","description":"If true, bookmarks the issue for the requestor."},"isPublic":{"type":"boolean","description":"If true, publishes the issue."},"isSubscribed":{"type":"boolean","description":"If true, subscribes the requestor to the issue."},"merge":{"type":"boolean","description":"If true, merges the issues together."},"discard":{"type":"boolean","description":"If true, discards the issues instead of updating them."},"assignedTo":{"type":"string","description":"The user or team that should be assigned to the issues. Values take the form of ``, `user:`, ``, ``, or `team:`."},"priority":{"enum":["low","medium","high"],"type":"string","description":"The priority that should be set for the issues\n\n* `low`\n* `medium`\n* `high`"},"ignoreDuration":{"type":"integer","minimum":0,"description":"Ignore the issue for this many minutes."},"ignoreCount":{"type":"integer","minimum":0,"description":"Ignore the issue until it is seen this many more times."},"ignoreWindow":{"type":"integer","maximum":10080,"minimum":0,"description":"Window in minutes over which `ignoreCount` is measured. Maximum is 7 days."},"ignoreUserCount":{"type":"integer","minimum":0,"description":"Ignore the issue until it affects this many more users."},"ignoreUserWindow":{"type":"integer","maximum":10080,"minimum":0,"description":"Window in minutes over which `ignoreUserCount` is measured. Maximum is 7 days."},"snoozeDuration":{"type":"integer","minimum":0,"nullable":true,"description":"Snooze the issue for this many minutes."}},"required":["assignedTo","discard","hasSeen","ignoreCount","ignoreDuration","ignoreUserCount","ignoreUserWindow","ignoreWindow","inbox","isBookmarked","isPublic","isSubscribed","merge","priority","snoozeDuration","status","statusDetails","substatus"]},"InCommitValidator":{"type":"object","properties":{"commit":{"type":"string","description":"The SHA of the resolving commit."},"repository":{"type":"string","description":"The name of the repository (as it appears in Sentry)."}},"required":["commit","repository"]},"InstallInfoResponse":{"type":"object","properties":{"buildId":{"type":"string"},"state":{"type":"string"},"appInfo":{"type":"object","properties":{"appId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true},"buildNumber":{"type":"integer","nullable":true},"artifactType":{"type":"string","nullable":true},"dateAdded":{"type":"string","nullable":true},"dateBuilt":{"type":"string","nullable":true}},"required":["appId","artifactType","buildNumber","dateAdded","dateBuilt","name","version"]},"gitInfo":{"type":"object","properties":{"headSha":{"type":"string","nullable":true},"baseSha":{"type":"string","nullable":true},"provider":{"type":"string","nullable":true},"headRepoName":{"type":"string","nullable":true},"baseRepoName":{"type":"string","nullable":true},"headRef":{"type":"string","nullable":true},"baseRef":{"type":"string","nullable":true},"prNumber":{"type":"integer","nullable":true}},"required":["baseRef","baseRepoName","baseSha","headRef","headRepoName","headSha","prNumber","provider"],"nullable":true},"platform":{"type":"string","nullable":true},"projectId":{"type":"string"},"projectSlug":{"type":"string"},"buildConfiguration":{"type":"string","nullable":true},"isInstallable":{"type":"boolean"},"installUrl":{"type":"string","nullable":true},"installUrlExpiresAt":{"type":"string","nullable":true},"downloadCount":{"type":"integer"},"releaseNotes":{"type":"string","nullable":true},"installGroups":{"type":"array","items":{"type":"string"},"nullable":true},"isCodeSignatureValid":{"type":"boolean","nullable":true},"profileName":{"type":"string","nullable":true},"codesigningType":{"type":"string","nullable":true}},"required":["appInfo","buildConfiguration","buildId","codesigningType","downloadCount","gitInfo","installGroups","installUrl","installUrlExpiresAt","isCodeSignatureValid","isInstallable","platform","profileName","projectId","projectSlug","releaseNotes","state"]},"IntegrationChannelValidationResponse":{"type":"object","properties":{"detail":{"type":"string"},"valid":{"type":"boolean"}},"required":["valid"]},"IntegrationChannelsResponse":{"type":"object","properties":{"warning":{"type":"string"},"results":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"display":{"type":"string"},"type":{"type":"string"}},"required":["display","id","name","type"]}}},"required":["results"]},"IntegrationIssueConfigResponse":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string","nullable":true},"domainName":{"type":"string","nullable":true},"accountType":{"type":"string","nullable":true},"scopes":{"type":"array","items":{"type":"string"},"nullable":true},"outOfDate":{"type":"boolean","nullable":true},"missingFeatures":{"type":"array","items":{"type":"object","description":"A feature the installation can no longer support, named by the permission\ntier it falls short of, so the update-permissions modal can list them.","properties":{"key":{"type":"string"},"description":{"type":"string"}},"required":["description","key"]},"nullable":true},"status":{"type":"string"},"provider":{"type":"object","properties":{"key":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"canAdd":{"type":"boolean"},"canDisable":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"aspects":{"type":"object","additionalProperties":{}}},"required":["aspects","canAdd","canDisable","features","key","name","slug"]},"linkIssueConfig":{"type":"array","items":{"type":"object","additionalProperties":{}}},"createIssueConfig":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["accountType","domainName","icon","id","missingFeatures","name","outOfDate","provider","scopes","status"]},"IntegrationRepositoriesResponse":{"type":"object","properties":{"repos":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"identifier":{"type":"string"},"isInstalled":{"type":"boolean"},"defaultBranch":{"type":"string","nullable":true},"externalId":{"type":"string"},"url":{"type":"string","nullable":true}},"required":["defaultBranch","externalId","identifier","isInstalled","name","url"]}},"searchable":{"type":"boolean"}},"required":["repos"]},"IssueEventDetailsResponse":{"type":"object","properties":{"id":{"type":"string"},"groupID":{"type":"string","nullable":true},"eventID":{"type":"string"},"projectID":{"type":"string"},"message":{"type":"string","nullable":true},"title":{"type":"string"},"location":{"type":"string","nullable":true},"user":{"type":"object","properties":{"id":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"username":{"type":"string","nullable":true},"ip_address":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"geo":{"type":"object","additionalProperties":{"type":"string"},"nullable":true},"data":{"type":"object","additionalProperties":{},"nullable":true}},"nullable":true},"tags":{"type":"array","items":{"type":"object","properties":{"query":{"type":"string"},"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}},"platform":{"type":"string"},"dateReceived":{"type":"string","format":"date-time","nullable":true},"contexts":{"type":"object","additionalProperties":{},"nullable":true},"size":{"type":"integer","nullable":true},"entries":{"type":"array","items":{}},"dist":{"type":"string","nullable":true},"sdk":{"type":"object","properties":{"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true}},"required":["name","version"],"nullable":true},"context":{"type":"object","additionalProperties":{},"nullable":true},"packages":{"type":"object","additionalProperties":{}},"type":{"enum":["default","error","csp","nel","hpkp","expectct","expectstaple","transaction","generic","feedback"],"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"errors":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"data":{"type":"object","additionalProperties":{}}},"required":["data","message","type"]}},"occurrence":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"integer"},"eventId":{"type":"string"},"fingerprint":{"type":"array","items":{"type":"string"}},"issueTitle":{"type":"string"},"subtitle":{"type":"string"},"resourceId":{"type":"string","nullable":true},"evidenceData":{"type":"object","additionalProperties":{}},"evidenceDisplay":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"important":{"type":"boolean"}},"required":["important","name","value"]}},"type":{"type":"integer"},"detectionTime":{"type":"number","format":"double"},"level":{"type":"string","nullable":true},"culprit":{"type":"string","nullable":true},"assignee":{"type":"string","nullable":true},"priority":{"type":"integer","nullable":true}},"required":["assignee","culprit","detectionTime","eventId","evidenceData","evidenceDisplay","fingerprint","id","issueTitle","level","priority","projectId","resourceId","subtitle","type"],"nullable":true},"_meta":{"type":"object","additionalProperties":{}},"crashFile":{"type":"string","nullable":true},"culprit":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"fingerprints":{"type":"array","items":{"type":"string"}},"groupingConfig":{"type":"object","properties":{"id":{"type":"string"},"enhancements":{"type":"string"}},"required":["enhancements","id"]},"startTimestamp":{"type":"number","format":"double"},"endTimestamp":{"type":"number","format":"double"},"measurements":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"type":"number","format":"double"},"unit":{"type":"string","nullable":true}},"required":["unit","value"]},"nullable":true},"breakdowns":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"type":"number","format":"double"},"unit":{"type":"string","nullable":true}},"required":["unit","value"]}},"nullable":true},"release":{"type":"object","properties":{"id":{"type":"integer"},"commitCount":{"type":"integer"},"data":{"type":"object","additionalProperties":{}},"dateCreated":{"type":"string","format":"date-time"},"dateReleased":{"type":"string","format":"date-time","nullable":true},"deployCount":{"type":"integer"},"ref":{"type":"string","nullable":true},"lastCommit":{"type":"object","additionalProperties":{},"nullable":true},"lastDeploy":{"type":"object","properties":{"dateStarted":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"id":{"type":"string"},"environment":{"type":"string"},"dateFinished":{"type":"string"},"name":{"type":"string"}},"required":["dateFinished","environment","id","name"],"nullable":true},"status":{"type":"string"},"url":{"type":"string","nullable":true},"userAgent":{"type":"string","nullable":true},"version":{"type":"string","nullable":true},"versionInfo":{"type":"object","properties":{"description":{"type":"string"},"package":{"type":"string","nullable":true},"version":{"type":"object","additionalProperties":{}},"buildHash":{"type":"string","nullable":true}},"required":["buildHash","package","version"],"nullable":true}},"nullable":true},"userReport":{"type":"object","properties":{"id":{"type":"string"},"eventID":{"type":"string"},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"comments":{"type":"string"},"dateCreated":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"username":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"ipAddress":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}},"required":["avatarUrl","email","id","ipAddress","name","username"],"nullable":true},"event":{"type":"object","properties":{"id":{"type":"string"},"eventID":{"type":"string"}},"required":["eventID","id"]}},"required":["comments","dateCreated","email","event","eventID","id","name","user"],"nullable":true},"sdkUpdates":{"type":"array","items":{"type":"object","additionalProperties":{}}},"resolvedWith":{"type":"array","items":{"type":"string"}},"nextEventID":{"type":"string","nullable":true},"previousEventID":{"type":"string","nullable":true},"formatted":{"type":"object","description":"The ``formatted`` field the mixin adds to a response when ``?llmFormat`` is requested.\n\n``content`` is text for the text formats and a serialized JSON object for ``json``, so the\nresponse shape is the same whichever format a caller asks for.","properties":{"format":{"enum":["markdown","xml","json"],"type":"string"},"content":{"type":"string"}},"required":["content","format"]}},"required":["_meta","context","contexts","dateReceived","dist","entries","errors","eventID","groupID","id","location","message","metadata","nextEventID","occurrence","packages","platform","previousEventID","projectID","release","resolvedWith","sdk","sdkUpdates","size","tags","title","type","user","userReport"]},"IssueIntegrationsResponse":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string","nullable":true},"domainName":{"type":"string","nullable":true},"accountType":{"type":"string","nullable":true},"scopes":{"type":"array","items":{"type":"string"},"nullable":true},"outOfDate":{"type":"boolean","nullable":true},"missingFeatures":{"type":"array","items":{"type":"object","description":"A feature the installation can no longer support, named by the permission\ntier it falls short of, so the update-permissions modal can list them.","properties":{"key":{"type":"string"},"description":{"type":"string"}},"required":["description","key"]},"nullable":true},"status":{"type":"string"},"provider":{"type":"object","properties":{"key":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"canAdd":{"type":"boolean"},"canDisable":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"aspects":{"type":"object","additionalProperties":{}}},"required":["aspects","canAdd","canDisable","features","key","name","slug"]},"externalIssues":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"key":{"type":"string"},"url":{"type":"string"},"title":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"displayName":{"type":"string"}},"required":["description","displayName","id","key","title","url"]}}},"required":["accountType","domainName","externalIssues","icon","id","missingFeatures","name","outOfDate","provider","scopes","status"]}},"IssueLinkConflict":{"type":"object","description":"DRF's standard error-body shape: `{\"detail\": str}`.\n\nUse in `Response[T] | Response[DetailResponse]` annotations on endpoints\nwhose inline error returns are exactly `Response({\"detail\": \"...\"}, status=4xx)`.\nEndpoints whose error bodies have richer or different shapes should\ndeclare their own local TypedDicts instead.","properties":{"detail":{"type":"string"}},"required":["detail"]},"LatestBaseSnapshotResponse":{"type":"object","properties":{"head_artifact_id":{"type":"string"},"project_id":{"type":"string"},"project_slug":{"type":"string"},"app_id":{"type":"string","nullable":true},"image_count":{"type":"integer"},"images":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"display_name":{"type":"string","nullable":true},"group":{"type":"string","nullable":true},"image_file_name":{"type":"string"},"width":{"type":"integer"},"height":{"type":"integer"},"canvas_theme":{"enum":["light","dark",null],"type":"string","nullable":true},"image_url":{"type":"string"}}}},"diff_threshold":{"type":"number","format":"double","nullable":true},"date_added":{"type":"string"},"vcs_info":{"type":"object","properties":{"head_sha":{"type":"string","nullable":true},"base_sha":{"type":"string","nullable":true},"head_ref":{"type":"string","nullable":true},"base_ref":{"type":"string","nullable":true},"head_repo_name":{"type":"string","nullable":true},"pr_number":{"type":"integer","nullable":true}}}}},"LatestInstallableBuildResponse":{"type":"object","properties":{"latestArtifact":{"type":"object","properties":{"buildId":{"type":"string"},"state":{"type":"string"},"appInfo":{"type":"object","properties":{"appId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true},"buildNumber":{"type":"integer","nullable":true},"artifactType":{"type":"string","nullable":true},"dateAdded":{"type":"string","nullable":true},"dateBuilt":{"type":"string","nullable":true}},"required":["appId","artifactType","buildNumber","dateAdded","dateBuilt","name","version"]},"gitInfo":{"type":"object","properties":{"headSha":{"type":"string","nullable":true},"baseSha":{"type":"string","nullable":true},"provider":{"type":"string","nullable":true},"headRepoName":{"type":"string","nullable":true},"baseRepoName":{"type":"string","nullable":true},"headRef":{"type":"string","nullable":true},"baseRef":{"type":"string","nullable":true},"prNumber":{"type":"integer","nullable":true}},"required":["baseRef","baseRepoName","baseSha","headRef","headRepoName","headSha","prNumber","provider"],"nullable":true},"platform":{"type":"string","nullable":true},"projectId":{"type":"string"},"projectSlug":{"type":"string"},"buildConfiguration":{"type":"string","nullable":true},"isInstallable":{"type":"boolean"},"installUrl":{"type":"string","nullable":true},"installUrlExpiresAt":{"type":"string","nullable":true},"downloadCount":{"type":"integer"},"releaseNotes":{"type":"string","nullable":true},"installGroups":{"type":"array","items":{"type":"string"},"nullable":true},"isCodeSignatureValid":{"type":"boolean","nullable":true},"profileName":{"type":"string","nullable":true},"codesigningType":{"type":"string","nullable":true}},"required":["appInfo","buildConfiguration","buildId","codesigningType","downloadCount","gitInfo","installGroups","installUrl","installUrlExpiresAt","isCodeSignatureValid","isInstallable","platform","profileName","projectId","projectSlug","releaseNotes","state"],"nullable":true},"currentArtifact":{"type":"object","properties":{"buildId":{"type":"string"},"state":{"type":"string"},"appInfo":{"type":"object","properties":{"appId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true},"buildNumber":{"type":"integer","nullable":true},"artifactType":{"type":"string","nullable":true},"dateAdded":{"type":"string","nullable":true},"dateBuilt":{"type":"string","nullable":true}},"required":["appId","artifactType","buildNumber","dateAdded","dateBuilt","name","version"]},"gitInfo":{"type":"object","properties":{"headSha":{"type":"string","nullable":true},"baseSha":{"type":"string","nullable":true},"provider":{"type":"string","nullable":true},"headRepoName":{"type":"string","nullable":true},"baseRepoName":{"type":"string","nullable":true},"headRef":{"type":"string","nullable":true},"baseRef":{"type":"string","nullable":true},"prNumber":{"type":"integer","nullable":true}},"required":["baseRef","baseRepoName","baseSha","headRef","headRepoName","headSha","prNumber","provider"],"nullable":true},"platform":{"type":"string","nullable":true},"projectId":{"type":"string"},"projectSlug":{"type":"string"},"buildConfiguration":{"type":"string","nullable":true},"isInstallable":{"type":"boolean"},"installUrl":{"type":"string","nullable":true},"installUrlExpiresAt":{"type":"string","nullable":true},"downloadCount":{"type":"integer"},"releaseNotes":{"type":"string","nullable":true},"installGroups":{"type":"array","items":{"type":"string"},"nullable":true},"isCodeSignatureValid":{"type":"boolean","nullable":true},"profileName":{"type":"string","nullable":true},"codesigningType":{"type":"string","nullable":true}},"required":["appInfo","buildConfiguration","buildId","codesigningType","downloadCount","gitInfo","installGroups","installUrl","installUrlExpiresAt","isCodeSignatureValid","isInstallable","platform","profileName","projectId","projectSlug","releaseNotes","state"],"nullable":true}},"required":["currentArtifact","latestArtifact"]},"Layout":{"type":"object","description":"Layout settings for the source. This is required for HTTP, GCS, and S3 sources.\n\n**`type`** ***(string)*** - The layout of the folder structure. The options are:\n- `native` - Platform-Specific (SymStore / GDB / LLVM)\n- `symstore` - Microsoft SymStore\n- `symstore_index2` - Microsoft SymStore (with index2.txt)\n- `ssqp` - Microsoft SSQP\n- `unified` - Unified Symbol Server Layout\n- `debuginfod` - debuginfod\n- `nxsymstore` - Nintendo NXSymStore\n\n**`casing`** ***(string)*** - The layout of the folder structure. The options are:\n- `default` - Default (mixed case)\n- `uppercase` - Uppercase\n- `lowercase` - Lowercase\n\n```json\n{\n \"layout\": {\n \"type\": \"native\"\n \"casing\": \"default\"\n }\n}\n```","properties":{"type":{"enum":["native","symstore","symstore_index2","ssqp","unified","debuginfod","slashsymbols","nxsymstore"],"type":"string","description":"The source's layout type.\n\n* `native`\n* `symstore`\n* `symstore_index2`\n* `ssqp`\n* `unified`\n* `debuginfod`\n* `slashsymbols`\n* `nxsymstore`"},"casing":{"enum":["lowercase","uppercase","default"],"type":"string","description":"The source's casing rules.\n\n* `lowercase`\n* `uppercase`\n* `default`"}},"required":["casing","type"]},"LinkExternalIssueRequest":{"type":"object","properties":{"externalIssue":{"type":"string","description":"The identifier or full URL of the existing external issue to link. URL support depends on the selected integration."},"repo":{"type":"string","description":"The repository containing the external issue, in owner/name format. Required by GitHub, GitHub Enterprise, and Bitbucket integrations."},"comment":{"type":"string","description":"An optional comment to post to the external issue when linking, if supported by the integration."}},"required":["externalIssue"]},"LinkedDashboard":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"field":{"type":"string"},"dashboard_id":{"type":"string"}},"required":["dashboard_id","field"]},"ListClientKeysResponse":{"type":"array","items":{"type":"object","description":"This represents a Sentry Project Client Key.","properties":{"id":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"public":{"type":"string","nullable":true},"secret":{"type":"string","nullable":true},"projectId":{"type":"integer"},"isActive":{"type":"boolean"},"rateLimit":{"type":"object","properties":{"window":{"type":"integer"},"count":{"type":"integer"}},"required":["count","window"],"nullable":true},"dsn":{"type":"object","properties":{"secret":{"type":"string"},"public":{"type":"string"},"csp":{"type":"string"},"security":{"type":"string"},"minidump":{"type":"string"},"nel":{"type":"string"},"unreal":{"type":"string"},"crons":{"type":"string"},"cdn":{"type":"string"},"playstation":{"type":"string"},"integration":{"type":"string"},"otlp_traces":{"type":"string"},"otlp_logs":{"type":"string"}},"required":["cdn","crons","csp","integration","minidump","nel","otlp_logs","otlp_traces","playstation","public","secret","security","unreal"]},"browserSdkVersion":{"type":"string"},"browserSdk":{"type":"object","properties":{"choices":{"type":"array","items":{"type":"array","items":{"type":"string"}}}},"required":["choices"]},"dateCreated":{"type":"string","format":"date-time","nullable":true},"dynamicSdkLoaderOptions":{"type":"object","properties":{"hasReplay":{"type":"boolean"},"hasPerformance":{"type":"boolean"},"hasDebug":{"type":"boolean"},"hasFeedback":{"type":"boolean"},"hasLogsAndMetrics":{"type":"boolean"}},"required":["hasDebug","hasFeedback","hasLogsAndMetrics","hasPerformance","hasReplay"]},"useCase":{"type":"string"}},"required":["browserSdk","browserSdkVersion","dateCreated","dsn","dynamicSdkLoaderOptions","id","isActive","label","name","projectId","public","rateLimit","secret"]}},"ListDataForwarderResponse":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"isEnabled":{"type":"boolean"},"enrollNewProjects":{"type":"boolean"},"enrolledProjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"platform":{"type":"string","nullable":true}},"required":["id","platform","slug"]}},"provider":{"type":"string"},"config":{"type":"object","additionalProperties":{"type":"string"},"nullable":true},"projectConfigs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"isEnabled":{"type":"boolean"},"dataForwarderId":{"type":"string"},"project":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"platform":{"type":"string","nullable":true}},"required":["id","platform","slug"]},"overrides":{"type":"object","additionalProperties":{"type":"string"}},"effectiveConfig":{"type":"object","additionalProperties":{"type":"string"}},"dateAdded":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"}},"required":["dataForwarderId","dateAdded","dateUpdated","effectiveConfig","id","isEnabled","overrides","project"]}},"dateAdded":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"}},"required":["config","dateAdded","dateUpdated","enrollNewProjects","enrolledProjects","id","isEnabled","organizationId","projectConfigs","provider"]}},"ListDetectorSerializerResponse":{"type":"array","items":{"type":"object","properties":{"owner":{"type":"object","properties":{"type":{"enum":["user","team"],"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["id","name","type"],"nullable":true},"createdBy":{"type":"string","nullable":true},"latestGroup":{"type":"object","additionalProperties":{},"nullable":true},"description":{"type":"string","nullable":true},"id":{"type":"string"},"projectId":{"type":"string","nullable":true},"name":{"type":"string"},"type":{"type":"string"},"workflowIds":{"type":"array","items":{"type":"string"},"nullable":true},"dateCreated":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"dataSources":{"type":"array","items":{"type":"object","additionalProperties":{}},"nullable":true},"conditionGroup":{"type":"object","additionalProperties":{},"nullable":true},"config":{"type":"object","additionalProperties":{}},"enabled":{"type":"boolean"}},"required":["conditionGroup","config","dataSources","dateCreated","dateUpdated","enabled","id","name","projectId","type","workflowIds"]}},"ListEventAttachmentsResponse":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"event_id":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"mimetype":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"size":{"type":"integer"},"headers":{"type":"object","additionalProperties":{"type":"string","nullable":true}},"sha1":{"type":"string","nullable":true}},"required":["dateCreated","event_id","headers","id","mimetype","name","sha1","size","type"]}},"ListFlagLogsResponse":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"action":{"enum":["created","deleted","updated"],"type":"string"},"createdAt":{"type":"string","format":"date-time"},"createdBy":{"type":"string","nullable":true},"createdByType":{"enum":["email","id","name",null],"type":"string","nullable":true},"flag":{"type":"string"},"provider":{"enum":["generic","flagpole","launchdarkly","unleash","statsig",null],"type":"string","nullable":true},"tags":{"type":"object","additionalProperties":{}}},"required":["action","createdAt","createdBy","createdByType","flag","id","provider","tags"]}}},"required":["data"]},"ListMemberOnTeamResponse":{"type":"array","items":{"type":"object","properties":{"externalUsers":{"type":"array","items":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]}},"role":{"type":"string"},"roleName":{"type":"string"},"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"user":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},"orgRole":{"type":"string"},"pending":{"type":"boolean"},"expired":{"type":"boolean"},"flags":{"type":"object","properties":{"idp:provisioned":{"type":"boolean"},"idp:role-restricted":{"type":"boolean"},"sso:linked":{"type":"boolean"},"sso:invalid":{"type":"boolean"},"member-limit:restricted":{"type":"boolean"},"partnership:restricted":{"type":"boolean"}},"required":["idp:provisioned","idp:role-restricted","member-limit:restricted","partnership:restricted","sso:invalid","sso:linked"]},"dateCreated":{"type":"string","format":"date-time"},"inviteStatus":{"type":"string"},"inviterName":{"type":"string","nullable":true},"teamRole":{"type":"string","nullable":true},"teamSlug":{"type":"string"}},"required":["dateCreated","email","expired","flags","id","inviteStatus","inviterName","name","orgRole","pending","teamRole","teamSlug","user"]}},"ListOrgMembersResponse":{"type":"array","items":{"type":"object","properties":{"externalUsers":{"type":"array","items":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]}},"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"user":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"],"nullable":true},"orgRole":{"type":"string"},"pending":{"type":"boolean"},"expired":{"type":"boolean"},"flags":{"type":"object","properties":{"idp:provisioned":{"type":"boolean"},"idp:role-restricted":{"type":"boolean"},"sso:linked":{"type":"boolean"},"sso:invalid":{"type":"boolean"},"member-limit:restricted":{"type":"boolean"},"partnership:restricted":{"type":"boolean"}},"required":["idp:provisioned","idp:role-restricted","member-limit:restricted","partnership:restricted","sso:invalid","sso:linked"]},"dateCreated":{"type":"string","format":"date-time"},"inviteStatus":{"type":"string"},"inviterName":{"type":"string","nullable":true}},"required":["dateCreated","email","expired","flags","id","inviteStatus","inviterName","name","orgRole","pending","user"]}},"ListOrgTeamResponse":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time","nullable":true},"isMember":{"type":"boolean"},"teamRole":{"type":"string","nullable":true},"flags":{"type":"object","additionalProperties":{}},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"isPending":{"type":"boolean"},"memberCount":{"type":"integer"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"externalTeams":{"type":"array","items":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]}},"organization":{"type":"object","properties":{"features":{"type":"array","items":{"type":"string"}},"extraOptions":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{}}},"access":{"type":"array","items":{"type":"string"}},"onboardingTasks":{"type":"array","items":{"type":"object","properties":{"task":{"type":"string","nullable":true},"status":{"type":"string"},"completionSeen":{"type":"string","format":"date-time","nullable":true},"dateCompleted":{"type":"string","format":"date-time"},"data":{}},"required":["completionSeen","data","dateCompleted","status","task"]}},"id":{"type":"string"},"slug":{"type":"string"},"status":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"isEarlyAdopter":{"type":"boolean"},"require2FA":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"links":{"type":"object","properties":{"organizationUrl":{"type":"string"},"regionUrl":{"type":"string"}},"required":["organizationUrl","regionUrl"]},"hasAuthProvider":{"type":"boolean"},"allowMemberInvite":{"type":"boolean"},"allowMemberProjectCreation":{"type":"boolean"},"allowSuperuserAccess":{"type":"boolean"}},"required":["allowMemberInvite","allowMemberProjectCreation","allowSuperuserAccess","avatar","dateCreated","hasAuthProvider","id","isEarlyAdopter","links","name","require2FA","slug","status"]},"projects":{"type":"array","items":{"type":"object","properties":{"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"isInternal":{"type":"boolean"},"isPublic":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"color":{"type":"string"},"status":{"type":"string"}},"required":["access","avatar","color","dateCreated","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","id","isBookmarked","isInternal","isMember","isPublic","name","platform","slug","status"]}}},"required":["access","avatar","dateCreated","flags","hasAccess","id","isMember","isPending","memberCount","name","slug","teamRole"]}},"ListOrganizationAIConversationsResponse":{"type":"array","items":{"type":"object","properties":{"endTimestamp":{"type":"integer"},"errors":{"type":"integer"},"generationDuration":{"type":"number","format":"double"},"inputTokens":{"type":"integer"},"llmCalls":{"type":"integer"},"outputTokens":{"type":"integer"},"startTimestamp":{"type":"integer"},"toolCalls":{"type":"integer"},"toolErrors":{"type":"integer"},"toolNames":{"type":"array","items":{"type":"string"}},"totalCost":{"type":"number","format":"double"},"totalTokens":{"type":"integer"},"conversationId":{"type":"string"},"timeSpan":{"type":"number","format":"double"},"title":{"type":"string","nullable":true},"projectId":{"type":"integer","nullable":true},"flow":{"type":"array","items":{"type":"string"}},"traceCount":{"type":"integer"},"traceIds":{"type":"array","items":{"type":"string"}},"firstInput":{"type":"string","nullable":true},"lastOutput":{"type":"string","nullable":true},"user":{"type":"object","properties":{"id":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"username":{"type":"string","nullable":true},"ip_address":{"type":"string","nullable":true}},"required":["email","id","ip_address","username"],"nullable":true},"projects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]}},"webUrl":{"type":"string"}},"required":["conversationId","endTimestamp","errors","firstInput","flow","generationDuration","inputTokens","lastOutput","llmCalls","outputTokens","projectId","projects","startTimestamp","timeSpan","title","toolCalls","toolErrors","toolNames","totalCost","totalTokens","traceCount","traceIds","user","webUrl"]}},"ListOrganizationClientKeysResponse":{"type":"array","items":{"type":"object","description":"This represents a Sentry Project Client Key.","properties":{"id":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"public":{"type":"string","nullable":true},"secret":{"type":"string","nullable":true},"projectId":{"type":"integer"},"isActive":{"type":"boolean"},"rateLimit":{"type":"object","properties":{"window":{"type":"integer"},"count":{"type":"integer"}},"required":["count","window"],"nullable":true},"dsn":{"type":"object","properties":{"secret":{"type":"string"},"public":{"type":"string"},"csp":{"type":"string"},"security":{"type":"string"},"minidump":{"type":"string"},"nel":{"type":"string"},"unreal":{"type":"string"},"crons":{"type":"string"},"cdn":{"type":"string"},"playstation":{"type":"string"},"integration":{"type":"string"},"otlp_traces":{"type":"string"},"otlp_logs":{"type":"string"}},"required":["cdn","crons","csp","integration","minidump","nel","otlp_logs","otlp_traces","playstation","public","secret","security","unreal"]},"browserSdkVersion":{"type":"string"},"browserSdk":{"type":"object","properties":{"choices":{"type":"array","items":{"type":"array","items":{"type":"string"}}}},"required":["choices"]},"dateCreated":{"type":"string","format":"date-time","nullable":true},"dynamicSdkLoaderOptions":{"type":"object","properties":{"hasReplay":{"type":"boolean"},"hasPerformance":{"type":"boolean"},"hasDebug":{"type":"boolean"},"hasFeedback":{"type":"boolean"},"hasLogsAndMetrics":{"type":"boolean"}},"required":["hasDebug","hasFeedback","hasLogsAndMetrics","hasPerformance","hasReplay"]},"useCase":{"type":"string"}},"required":["browserSdk","browserSdkVersion","dateCreated","dsn","dynamicSdkLoaderOptions","id","isActive","label","name","projectId","public","rateLimit","secret"]}},"ListOrganizationCodeMappingsResponse":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"projectSlug":{"type":"string"},"repoId":{"type":"string"},"repoName":{"type":"string"},"integrationId":{"type":"string","nullable":true},"provider":{"type":"object","properties":{"key":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"canAdd":{"type":"boolean"},"canDisable":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"aspects":{"type":"object","additionalProperties":{}}},"required":["aspects","canAdd","canDisable","features","key","name","slug"],"nullable":true},"stackRoot":{"type":"string"},"sourceRoot":{"type":"string"},"defaultBranch":{"type":"string","nullable":true},"automaticallyGenerated":{"type":"boolean"},"hasCodeOwner":{"type":"boolean"}},"required":["automaticallyGenerated","defaultBranch","hasCodeOwner","id","integrationId","projectId","projectSlug","provider","repoId","repoName","sourceRoot","stackRoot"]}},"ListOrganizationIntegrationResponse":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string","nullable":true},"domainName":{"type":"string","nullable":true},"accountType":{"type":"string","nullable":true},"scopes":{"type":"array","items":{"type":"string"},"nullable":true},"outOfDate":{"type":"boolean","nullable":true},"missingFeatures":{"type":"array","items":{"type":"object","description":"A feature the installation can no longer support, named by the permission\ntier it falls short of, so the update-permissions modal can list them.","properties":{"key":{"type":"string"},"description":{"type":"string"}},"required":["description","key"]},"nullable":true},"status":{"type":"string"},"provider":{},"configOrganization":{},"configData":{},"externalId":{"type":"string"},"organizationId":{"type":"integer"},"organizationIntegrationStatus":{"type":"string"},"gracePeriodEnd":{"type":"string","nullable":true}},"required":["accountType","configData","configOrganization","domainName","externalId","gracePeriodEnd","icon","id","missingFeatures","name","organizationId","organizationIntegrationStatus","outOfDate","provider","scopes","status"]}},"ListOrganizationMemberResponse":{"type":"array","items":{"type":"object","properties":{"externalUsers":{"type":"array","items":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]}},"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"user":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"],"nullable":true},"orgRole":{"type":"string"},"pending":{"type":"boolean"},"expired":{"type":"boolean"},"flags":{"type":"object","properties":{"idp:provisioned":{"type":"boolean"},"idp:role-restricted":{"type":"boolean"},"sso:linked":{"type":"boolean"},"sso:invalid":{"type":"boolean"},"member-limit:restricted":{"type":"boolean"},"partnership:restricted":{"type":"boolean"}},"required":["idp:provisioned","idp:role-restricted","member-limit:restricted","partnership:restricted","sso:invalid","sso:linked"]},"dateCreated":{"type":"string","format":"date-time"},"inviteStatus":{"type":"string"},"inviterName":{"type":"string","nullable":true}},"required":["dateCreated","email","expired","flags","id","inviteStatus","inviterName","name","orgRole","pending","user"]}},"ListOrganizationReleaseCommitsResponse":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"message":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"pullRequest":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string","nullable":true},"message":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"mergedAt":{"type":"string","format":"date-time","nullable":true},"status":{"enum":["merged","open","closed","draft","unknown",null],"type":"string","nullable":true},"repository":{"type":"object","properties":{"url":{"type":"string","nullable":true},"provider":{"type":"object","additionalProperties":{"type":"string"}},"status":{"type":"string"},"integrationId":{"type":"string","nullable":true},"externalSlug":{"type":"string","nullable":true},"externalId":{"type":"string","nullable":true},"settings":{"type":"object","properties":{"enabledCodeReview":{"type":"boolean"},"codeReviewTriggers":{"type":"array","items":{"type":"string"}}},"required":["codeReviewTriggers","enabledCodeReview"],"nullable":true},"id":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","id","name"]},"author":{"anyOf":[{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string"}},"required":["email","name"]}]},"externalUrl":{"type":"string"}},"required":["author","dateCreated","externalUrl","id","mergedAt","message","repository","status","title"],"nullable":true},"suspectCommitType":{"type":"string"},"repository":{"type":"object","properties":{"url":{"type":"string","nullable":true},"provider":{"type":"object","additionalProperties":{"type":"string"}},"status":{"type":"string"},"integrationId":{"type":"string","nullable":true},"externalSlug":{"type":"string","nullable":true},"externalId":{"type":"string","nullable":true},"settings":{"type":"object","properties":{"enabledCodeReview":{"type":"boolean"},"codeReviewTriggers":{"type":"array","items":{"type":"string"}}},"required":["codeReviewTriggers","enabledCodeReview"],"nullable":true},"id":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","id","name"]},"author":{"anyOf":[{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string"}},"required":["email","name"]},{"type":"object","description":"The commit serializer emits ``{}`` for ``author`` when the commit has no\nmapped author, so the published schema must allow an empty object alongside a\npopulated ``Author``."}]},"releases":{"type":"array","items":{"type":"object","properties":{"version":{"type":"string"},"shortVersion":{"type":"string"},"ref":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"dateReleased":{"type":"string","format":"date-time","nullable":true},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","dateReleased","ref","shortVersion","url","version"]}}},"required":["dateCreated","id","message","pullRequest","releases","suspectCommitType"]}},"ListOrganizationReleasesResponse":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"dateReleased":{"type":"string","format":"date-time","nullable":true},"dateCreated":{"type":"string","format":"date-time","nullable":true},"dateStarted":{"type":"string","format":"date-time","nullable":true},"owner":{"type":"object","additionalProperties":{},"nullable":true},"lastCommit":{"type":"object","additionalProperties":{},"nullable":true},"lastDeploy":{"type":"object","properties":{"dateStarted":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"id":{"type":"string"},"environment":{"type":"string"},"dateFinished":{"type":"string"},"name":{"type":"string"}},"required":["dateFinished","environment","id","name"],"nullable":true},"firstEvent":{"type":"string","format":"date-time","nullable":true},"lastEvent":{"type":"string","format":"date-time","nullable":true},"currentProjectMeta":{"type":"object","additionalProperties":{},"nullable":true},"userAgent":{"type":"string","nullable":true},"adoptionStages":{"type":"object","additionalProperties":{},"nullable":true},"id":{"type":"integer"},"version":{"type":"string"},"newGroups":{"type":"integer"},"status":{"type":"string"},"shortVersion":{"type":"string"},"versionInfo":{"type":"object","properties":{"description":{"type":"string"},"package":{"type":"string","nullable":true},"version":{"type":"object","additionalProperties":{}},"buildHash":{"type":"string","nullable":true}},"required":["buildHash","package","version"],"nullable":true},"data":{"type":"object","additionalProperties":{}},"commitCount":{"type":"integer"},"deployCount":{"type":"integer"},"authors":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string"}},"required":["email","name"]}]}},"projects":{"type":"array","items":{"type":"object","properties":{"healthData":{"type":"object","properties":{"durationP50":{"type":"number","format":"double","nullable":true},"durationP90":{"type":"number","format":"double","nullable":true},"crashFreeUsers":{"type":"number","format":"double","nullable":true},"crashFreeSessions":{"type":"number","format":"double","nullable":true},"totalUsers":{"type":"integer","nullable":true},"totalUsers24h":{"type":"integer","nullable":true},"totalProjectUsers24h":{"type":"integer","nullable":true},"totalSessions":{"type":"integer","nullable":true},"totalSessions24h":{"type":"integer","nullable":true},"totalProjectSessions24h":{"type":"integer","nullable":true},"adoption":{"type":"number","format":"double","nullable":true},"sessionsAdoption":{"type":"number","format":"double","nullable":true},"sessionsCrashed":{"type":"integer"},"sessionsErrored":{"type":"integer"},"hasHealthData":{"type":"boolean"},"stats":{"type":"object","additionalProperties":{}}},"required":["hasHealthData","sessionsCrashed","sessionsErrored","stats"],"nullable":true},"dateReleased":{"type":"string","format":"date-time","nullable":true},"dateCreated":{"type":"string","format":"date-time","nullable":true},"dateStarted":{"type":"string","format":"date-time","nullable":true},"id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"platforms":{"type":"array","items":{"type":"string"},"nullable":true},"hasHealthData":{"type":"boolean"},"newGroups":{"type":"integer"}},"required":["hasHealthData","id","name","newGroups","platform","platforms","slug"]}}},"required":["authors","commitCount","data","deployCount","id","newGroups","projects","shortVersion","status","version","versionInfo"]}},"ListOrganizationRepositoriesResponse":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","nullable":true},"provider":{"type":"object","additionalProperties":{"type":"string"}},"status":{"type":"string"},"integrationId":{"type":"string","nullable":true},"externalSlug":{"type":"string","nullable":true},"externalId":{"type":"string","nullable":true},"settings":{"type":"object","properties":{"enabledCodeReview":{"type":"boolean"},"codeReviewTriggers":{"type":"array","items":{"type":"string"}}},"required":["codeReviewTriggers","enabledCodeReview"],"nullable":true},"id":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","id","name"]}},"ListOrganizationTagsResponse":{"type":"array","items":{"type":"object","properties":{"uniqueValues":{"type":"integer","nullable":true},"totalValues":{"type":"integer","nullable":true},"topValues":{"type":"array","items":{"type":"object","properties":{"query":{"type":"string","nullable":true},"key":{"type":"string"},"name":{"type":"string"},"value":{"type":"string","nullable":true},"count":{"type":"integer","nullable":true},"lastSeen":{"type":"string","nullable":true},"firstSeen":{"type":"string","nullable":true}},"required":["count","firstSeen","key","lastSeen","name","value"]},"nullable":true},"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"]}},"ListOrganizationTraceMetricsResponse":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"enum":["counter","gauge","distribution"],"type":"string"},"unit":{"type":"string","nullable":true},"count":{"type":"number","format":"double"},"lastSeen":{"type":"number","format":"double","nullable":true},"context":{"type":"object","properties":{"brief":{"type":"string"},"details":{"type":"array","items":{"type":"string"}}}}},"required":["count","lastSeen","name","type","unit"]}},"ListOrganizations":{"type":"array","items":{"type":"object","properties":{"features":{"type":"array","items":{"type":"string"}},"extraOptions":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{}}},"access":{"type":"array","items":{"type":"string"}},"onboardingTasks":{"type":"array","items":{"type":"object","properties":{"task":{"type":"string","nullable":true},"status":{"type":"string"},"completionSeen":{"type":"string","format":"date-time","nullable":true},"dateCompleted":{"type":"string","format":"date-time"},"data":{}},"required":["completionSeen","data","dateCompleted","status","task"]}},"id":{"type":"string"},"slug":{"type":"string"},"status":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"isEarlyAdopter":{"type":"boolean"},"require2FA":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"links":{"type":"object","properties":{"organizationUrl":{"type":"string"},"regionUrl":{"type":"string"}},"required":["organizationUrl","regionUrl"]},"hasAuthProvider":{"type":"boolean"},"allowMemberInvite":{"type":"boolean"},"allowMemberProjectCreation":{"type":"boolean"},"allowSuperuserAccess":{"type":"boolean"}},"required":["allowMemberInvite","allowMemberProjectCreation","allowSuperuserAccess","avatar","dateCreated","hasAuthProvider","id","isEarlyAdopter","links","name","require2FA","slug","status"]}},"ListProjectDebugFilesResponse":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"uuid":{"type":"string"},"debugId":{"type":"string"},"codeId":{"type":"string","nullable":true},"cpuName":{"type":"string"},"objectName":{"type":"string"},"symbolType":{"type":"string"},"headers":{"type":"object","additionalProperties":{"type":"string"}},"size":{"type":"integer"},"sha1":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"data":{"type":"object","additionalProperties":{}}},"required":["codeId","cpuName","data","dateCreated","debugId","headers","id","objectName","sha1","size","symbolType","uuid"]}},"ListProjectEnvironments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"isHidden":{"type":"boolean"}},"required":["id","isHidden","name"]}},"ListProjectReleaseCommitsResponse":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"message":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"pullRequest":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string","nullable":true},"message":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"mergedAt":{"type":"string","format":"date-time","nullable":true},"status":{"enum":["merged","open","closed","draft","unknown",null],"type":"string","nullable":true},"repository":{"type":"object","properties":{"url":{"type":"string","nullable":true},"provider":{"type":"object","additionalProperties":{"type":"string"}},"status":{"type":"string"},"integrationId":{"type":"string","nullable":true},"externalSlug":{"type":"string","nullable":true},"externalId":{"type":"string","nullable":true},"settings":{"type":"object","properties":{"enabledCodeReview":{"type":"boolean"},"codeReviewTriggers":{"type":"array","items":{"type":"string"}}},"required":["codeReviewTriggers","enabledCodeReview"],"nullable":true},"id":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","id","name"]},"author":{"anyOf":[{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string"}},"required":["email","name"]}]},"externalUrl":{"type":"string"}},"required":["author","dateCreated","externalUrl","id","mergedAt","message","repository","status","title"],"nullable":true},"suspectCommitType":{"type":"string"},"repository":{"type":"object","properties":{"url":{"type":"string","nullable":true},"provider":{"type":"object","additionalProperties":{"type":"string"}},"status":{"type":"string"},"integrationId":{"type":"string","nullable":true},"externalSlug":{"type":"string","nullable":true},"externalId":{"type":"string","nullable":true},"settings":{"type":"object","properties":{"enabledCodeReview":{"type":"boolean"},"codeReviewTriggers":{"type":"array","items":{"type":"string"}}},"required":["codeReviewTriggers","enabledCodeReview"],"nullable":true},"id":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","id","name"]},"author":{"anyOf":[{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string"}},"required":["email","name"]},{"type":"object","description":"The commit serializer emits ``{}`` for ``author`` when the commit has no\nmapped author, so the published schema must allow an empty object alongside a\npopulated ``Author``."}]},"releases":{"type":"array","items":{"type":"object","properties":{"version":{"type":"string"},"shortVersion":{"type":"string"},"ref":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"dateReleased":{"type":"string","format":"date-time","nullable":true},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","dateReleased","ref","shortVersion","url","version"]}}},"required":["dateCreated","id","message","pullRequest","releases","suspectCommitType"]}},"ListProjectReleasesResponse":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"dateReleased":{"type":"string","format":"date-time","nullable":true},"dateCreated":{"type":"string","format":"date-time","nullable":true},"dateStarted":{"type":"string","format":"date-time","nullable":true},"owner":{"type":"object","additionalProperties":{},"nullable":true},"lastCommit":{"type":"object","additionalProperties":{},"nullable":true},"lastDeploy":{"type":"object","properties":{"dateStarted":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"id":{"type":"string"},"environment":{"type":"string"},"dateFinished":{"type":"string"},"name":{"type":"string"}},"required":["dateFinished","environment","id","name"],"nullable":true},"firstEvent":{"type":"string","format":"date-time","nullable":true},"lastEvent":{"type":"string","format":"date-time","nullable":true},"currentProjectMeta":{"type":"object","additionalProperties":{},"nullable":true},"userAgent":{"type":"string","nullable":true},"adoptionStages":{"type":"object","additionalProperties":{},"nullable":true},"id":{"type":"integer"},"version":{"type":"string"},"newGroups":{"type":"integer"},"status":{"type":"string"},"shortVersion":{"type":"string"},"versionInfo":{"type":"object","properties":{"description":{"type":"string"},"package":{"type":"string","nullable":true},"version":{"type":"object","additionalProperties":{}},"buildHash":{"type":"string","nullable":true}},"required":["buildHash","package","version"],"nullable":true},"data":{"type":"object","additionalProperties":{}},"commitCount":{"type":"integer"},"deployCount":{"type":"integer"},"authors":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string"}},"required":["email","name"]}]}},"projects":{"type":"array","items":{"type":"object","properties":{"healthData":{"type":"object","properties":{"durationP50":{"type":"number","format":"double","nullable":true},"durationP90":{"type":"number","format":"double","nullable":true},"crashFreeUsers":{"type":"number","format":"double","nullable":true},"crashFreeSessions":{"type":"number","format":"double","nullable":true},"totalUsers":{"type":"integer","nullable":true},"totalUsers24h":{"type":"integer","nullable":true},"totalProjectUsers24h":{"type":"integer","nullable":true},"totalSessions":{"type":"integer","nullable":true},"totalSessions24h":{"type":"integer","nullable":true},"totalProjectSessions24h":{"type":"integer","nullable":true},"adoption":{"type":"number","format":"double","nullable":true},"sessionsAdoption":{"type":"number","format":"double","nullable":true},"sessionsCrashed":{"type":"integer"},"sessionsErrored":{"type":"integer"},"hasHealthData":{"type":"boolean"},"stats":{"type":"object","additionalProperties":{}}},"required":["hasHealthData","sessionsCrashed","sessionsErrored","stats"],"nullable":true},"dateReleased":{"type":"string","format":"date-time","nullable":true},"dateCreated":{"type":"string","format":"date-time","nullable":true},"dateStarted":{"type":"string","format":"date-time","nullable":true},"id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"platforms":{"type":"array","items":{"type":"string"},"nullable":true},"hasHealthData":{"type":"boolean"},"newGroups":{"type":"integer"}},"required":["hasHealthData","id","name","newGroups","platform","platforms","slug"]}}},"required":["authors","commitCount","data","deployCount","id","newGroups","projects","shortVersion","status","version","versionInfo"]}},"ListProjectUsersResponse":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","nullable":true},"tagValue":{"type":"string"},"identifier":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"ipAddress":{"type":"string"},"avatarUrl":{"type":"string"},"hash":{"type":"string"},"dateCreated":{"type":"string","format":"date-time","nullable":true}},"required":["avatarUrl","dateCreated","email","hash","id","identifier","ipAddress","name","tagValue","username"]}},"ListReleaseFiles":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"dist":{"type":"string","nullable":true},"headers":{"type":"object","additionalProperties":{}},"size":{"type":"integer"},"sha1":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","dist","headers","id","name","sha1","size"]}},"ListReleaseSetupSteps":{"type":"array","items":{"type":"object","properties":{"step":{"enum":["tag","repo","commit","deploy"],"type":"string"},"complete":{"type":"boolean"}},"required":["complete","step"]}},"ListReplayClicks":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"node_id":{"type":"integer"},"timestamp":{"type":"string","format":"date-time"}},"required":["node_id","timestamp"]}}},"required":["data"]},"ListReplayDeletionJobs":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"dateCreated":{"type":"string"},"dateUpdated":{"type":"string"},"rangeStart":{"type":"string"},"rangeEnd":{"type":"string"},"environments":{"type":"array","items":{"type":"string"}},"status":{"type":"string"},"query":{"type":"string"},"countDeleted":{"type":"integer"}},"required":["countDeleted","dateCreated","dateUpdated","environments","id","query","rangeEnd","rangeStart","status"]}}},"required":["data"]},"ListReplayRecordingSegments":{"type":"array","items":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"ListReplays":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"project_id":{"type":"string"},"trace_ids":{"type":"array","items":{"type":"string"}},"error_ids":{"type":"array","items":{"type":"string"}},"environment":{"type":"string","nullable":true},"tags":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},{"type":"array","items":{}}]},"user":{"type":"object","properties":{"id":{"type":"string","nullable":true},"username":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"ip":{"type":"string","nullable":true},"display_name":{"type":"string","nullable":true},"geo":{"type":"object","properties":{"city":{"type":"string","nullable":true},"country_code":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"subdivision":{"type":"string","nullable":true}}}}},"sdk":{"type":"object","properties":{"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true}}},"os":{"type":"object","properties":{"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true}}},"browser":{"type":"object","properties":{"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true}}},"device":{"type":"object","properties":{"name":{"type":"string","nullable":true},"brand":{"type":"string","nullable":true},"model":{"type":"string","nullable":true},"family":{"type":"string","nullable":true}}},"ota_updates":{"type":"object","properties":{"channel":{"type":"string","nullable":true},"runtime_version":{"type":"string","nullable":true},"update_id":{"type":"string","nullable":true}}},"is_archived":{"type":"boolean","nullable":true},"urls":{"type":"array","items":{"type":"string"},"nullable":true},"segment_names":{"type":"array","items":{"type":"string"},"nullable":true},"clicks":{"type":"array","items":{"type":"object","additionalProperties":{}}},"count_dead_clicks":{"type":"integer","nullable":true},"count_rage_clicks":{"type":"integer","nullable":true},"count_errors":{"type":"integer","nullable":true},"duration":{"type":"integer","nullable":true},"finished_at":{"type":"string","nullable":true},"started_at":{"type":"string","nullable":true},"activity":{"type":"integer","nullable":true},"count_urls":{"type":"integer","nullable":true},"replay_type":{"type":"string"},"count_segments":{"type":"integer","nullable":true},"platform":{"type":"string","nullable":true},"releases":{"type":"array","items":{"type":"string"}},"dist":{"type":"string","nullable":true},"count_warnings":{"type":"integer","nullable":true},"count_infos":{"type":"integer","nullable":true},"has_viewed":{"type":"boolean"}}}}},"required":["data"]},"ListSelectors":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"count_dead_clicks":{"type":"integer"},"count_rage_clicks":{"type":"integer"},"dom_element":{"type":"string"},"element":{"type":"object","properties":{"alt":{"type":"string"},"aria_label":{"type":"string"},"class":{"type":"array","items":{"type":"string"}},"component_name":{"type":"string"},"id":{"type":"string"},"role":{"type":"string"},"tag":{"type":"string"},"testid":{"type":"string"},"title":{"type":"string"}},"required":["alt","aria_label","class","component_name","id","role","tag","testid","title"]},"project_id":{"type":"string"}}}}},"required":["data"]},"ListTeamProjectResponse":{"type":"array","items":{"type":"object","properties":{"latestDeploys":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"string"}},"nullable":true},"options":{"type":"object","additionalProperties":{}},"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"team":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"],"nullable":true},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]}},"platforms":{"type":"array","items":{"type":"string"}},"hasUserReports":{"type":"boolean"},"environments":{"type":"array","items":{"type":"string"}},"latestRelease":{"type":"object","properties":{"version":{"type":"string"}},"required":["version"],"nullable":true}},"required":["access","dateCreated","environments","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","hasUserReports","id","isBookmarked","isMember","latestRelease","name","platform","platforms","slug","team","teams"]}},"ListTraceItemAttributesResponse":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"secondaryAliases":{"type":"array","items":{"type":"string"}},"attributeSource":{"type":"object","properties":{"source_type":{"enum":["sentry","user"],"type":"string"},"is_transformed_alias":{"type":"boolean"}},"required":["source_type"]},"attributeType":{"enum":["string","number","boolean","array"],"type":"string"},"context":{"type":"object","description":"Additional, mostly-static metadata about an attribute.\n\nWhen ``expand=context`` is requested, context is attached to every attribute.\nMetadata comes from the sentry conventions, Sentry's own column definitions,\nor user-authored context (gated behind ``data-browsing-attribute-context``),\nin that precedence order. Only the fields available are included, so an\nattribute with no metadata gets an empty context.","properties":{"isConvention":{"type":"boolean"},"isCustom":{"type":"boolean"},"brief":{"type":"string"},"isDeprecated":{"type":"boolean"},"details":{"type":"array","items":{"type":"string"}},"examples":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number","format":"double"},{"type":"boolean"}]}},"replacementAttribute":{"type":"string"}}}},"required":["attributeSource","attributeType","key","name"]}},"ListWorkflow":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organizationId":{"type":"string"},"createdBy":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"triggers":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"logicType":{"type":"string"},"conditions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"comparison":{"anyOf":[{"type":"boolean"},{"type":"integer"}]},"conditionResult":{"type":"boolean"}},"required":["comparison","conditionResult","id","type"]}},{"type":"array","items":{}}]},"actions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"integrationId":{"type":"string","nullable":true},"data":{"type":"object","additionalProperties":{"type":"string"}},"config":{"type":"object","additionalProperties":{}},"status":{"type":"string"}}}},{"type":"array","items":{}}]}},"nullable":true},"actionFilters":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"logicType":{"type":"string"},"conditions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"comparison":{"anyOf":[{"type":"boolean"},{"type":"integer"}]},"conditionResult":{"type":"boolean"}},"required":["comparison","conditionResult","id","type"]}},{"type":"array","items":{}}]},"actions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"integrationId":{"type":"string","nullable":true},"data":{"type":"object","additionalProperties":{"type":"string"}},"config":{"type":"object","additionalProperties":{}},"status":{"type":"string"}}}},{"type":"array","items":{}}]}}},"nullable":true},"environment":{"type":"string","nullable":true},"config":{"type":"object","additionalProperties":{}},"detectorIds":{"type":"array","items":{"type":"string"},"nullable":true},"enabled":{"type":"boolean"},"lastTriggered":{"type":"string","format":"date-time","nullable":true},"owner":{"type":"string","nullable":true}},"required":["actionFilters","config","createdBy","dateCreated","dateUpdated","detectorIds","enabled","environment","id","lastTriggered","name","organizationId","owner","triggers"]}},"MappingItem":{"type":"object","properties":{"stack_root":{"type":"string","description":"The path prefix to strip from matching stack frame filenames before adding sourceRoot.","pattern":"^[^\\s'\\\"]+$"},"source_root":{"type":"string","description":"The repository path prefix that replaces stackRoot. For example, /app/pkg/file.py with stackRoot=/app/ and sourceRoot=src/ resolves to src/pkg/file.py.","pattern":"^[^\\s'\\\"]+$"}},"required":["source_root","stack_root"]},"Monitor":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"status":{"type":"string"},"isMuted":{"type":"boolean"},"isUpserting":{"type":"boolean"},"config":{"type":"object","properties":{"schedule_type":{"enum":["crontab","interval"],"type":"string"},"schedule":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"integer"},"minLength":2,"maxLength":2}]},"checkin_margin":{"type":"integer","nullable":true},"max_runtime":{"type":"integer","nullable":true},"timezone":{"type":"string","nullable":true},"failure_issue_threshold":{"type":"integer","nullable":true},"recovery_threshold":{"type":"integer","nullable":true},"alert_rule_id":{"type":"integer","nullable":true}},"required":["alert_rule_id","checkin_margin","failure_issue_threshold","max_runtime","recovery_threshold","schedule","schedule_type","timezone"]},"dateCreated":{"type":"string","format":"date-time"},"project":{"type":"object","properties":{"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"isInternal":{"type":"boolean"},"isPublic":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"color":{"type":"string"},"status":{"type":"string"}},"required":["access","avatar","color","dateCreated","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","id","isBookmarked","isInternal","isMember","isPublic","name","platform","slug","status"]},"environments":{"type":"object","properties":{"name":{"type":"string"},"status":{"type":"string"},"isMuted":{"type":"boolean"},"dateCreated":{"type":"string","format":"date-time"},"lastCheckIn":{"type":"string","format":"date-time"},"nextCheckIn":{"type":"string","format":"date-time"},"nextCheckInLatest":{"type":"string","format":"date-time"},"activeIncident":{"type":"object","properties":{"startingTimestamp":{"type":"string","format":"date-time"},"resolvingTimestamp":{"type":"string","format":"date-time"},"brokenNotice":{"type":"object","properties":{"userNotifiedTimestamp":{"type":"string","format":"date-time"},"environmentMutedTimestamp":{"type":"string","format":"date-time"}},"required":["environmentMutedTimestamp","userNotifiedTimestamp"],"nullable":true}},"required":["brokenNotice","resolvingTimestamp","startingTimestamp"],"nullable":true}},"required":["activeIncident","dateCreated","isMuted","lastCheckIn","name","nextCheckIn","nextCheckInLatest","status"]},"owner":{"type":"object","properties":{"type":{"enum":["user","team"],"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["id","name","type"]}},"required":["config","dateCreated","environments","id","isMuted","isUpserting","name","owner","project","slug","status"]},"MonitorList":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"status":{"type":"string"},"isMuted":{"type":"boolean"},"isUpserting":{"type":"boolean"},"config":{"type":"object","properties":{"schedule_type":{"enum":["crontab","interval"],"type":"string"},"schedule":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"integer"},"minLength":2,"maxLength":2}]},"checkin_margin":{"type":"integer","nullable":true},"max_runtime":{"type":"integer","nullable":true},"timezone":{"type":"string","nullable":true},"failure_issue_threshold":{"type":"integer","nullable":true},"recovery_threshold":{"type":"integer","nullable":true},"alert_rule_id":{"type":"integer","nullable":true}},"required":["alert_rule_id","checkin_margin","failure_issue_threshold","max_runtime","recovery_threshold","schedule","schedule_type","timezone"]},"dateCreated":{"type":"string","format":"date-time"},"project":{"type":"object","properties":{"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"isInternal":{"type":"boolean"},"isPublic":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"color":{"type":"string"},"status":{"type":"string"}},"required":["access","avatar","color","dateCreated","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","id","isBookmarked","isInternal","isMember","isPublic","name","platform","slug","status"]},"environments":{"type":"object","properties":{"name":{"type":"string"},"status":{"type":"string"},"isMuted":{"type":"boolean"},"dateCreated":{"type":"string","format":"date-time"},"lastCheckIn":{"type":"string","format":"date-time"},"nextCheckIn":{"type":"string","format":"date-time"},"nextCheckInLatest":{"type":"string","format":"date-time"},"activeIncident":{"type":"object","properties":{"startingTimestamp":{"type":"string","format":"date-time"},"resolvingTimestamp":{"type":"string","format":"date-time"},"brokenNotice":{"type":"object","properties":{"userNotifiedTimestamp":{"type":"string","format":"date-time"},"environmentMutedTimestamp":{"type":"string","format":"date-time"}},"required":["environmentMutedTimestamp","userNotifiedTimestamp"],"nullable":true}},"required":["brokenNotice","resolvingTimestamp","startingTimestamp"],"nullable":true}},"required":["activeIncident","dateCreated","isMuted","lastCheckIn","name","nextCheckIn","nextCheckInLatest","status"]},"owner":{"type":"object","properties":{"type":{"enum":["user","team"],"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["id","name","type"]}},"required":["config","dateCreated","environments","id","isMuted","isUpserting","name","owner","project","slug","status"]}},"MonitorValidator":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"project":{"type":"string","description":"The project ID or slug to associate the monitor to."},"name":{"type":"string","description":"Name of the monitor. Used for notifications. If not set the slug will be derived from your monitor name.","maxLength":128},"config":{"allOf":[{"type":"object","properties":{"schedule_type":{"enum":["crontab","interval"],"type":"string","description":"Currently supports \"crontab\" or \"interval\"\n\n* `crontab`\n* `interval`"},"schedule":{"description":"Varies depending on the schedule_type. Is either a crontab string, or a 2 element tuple for intervals (e.g. [1, 'day'])"},"checkin_margin":{"type":"integer","maximum":40320,"minimum":1,"nullable":true,"description":"How long (in minutes) after the expected checkin time will we wait until we consider the checkin to have been missed."},"max_runtime":{"type":"integer","maximum":10080,"minimum":1,"nullable":true,"description":"How long (in minutes) is the checkin allowed to run for in CheckInStatus.IN_PROGRESS before it is considered failed. Maximum 10080 (7 days)."},"timezone":{"enum":["Africa/Abidjan","Africa/Accra","Africa/Addis_Ababa","Africa/Algiers","Africa/Asmara","Africa/Asmera","Africa/Bamako","Africa/Bangui","Africa/Banjul","Africa/Bissau","Africa/Blantyre","Africa/Brazzaville","Africa/Bujumbura","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/Conakry","Africa/Dakar","Africa/Dar_es_Salaam","Africa/Djibouti","Africa/Douala","Africa/El_Aaiun","Africa/Freetown","Africa/Gaborone","Africa/Harare","Africa/Johannesburg","Africa/Juba","Africa/Kampala","Africa/Khartoum","Africa/Kigali","Africa/Kinshasa","Africa/Lagos","Africa/Libreville","Africa/Lome","Africa/Luanda","Africa/Lubumbashi","Africa/Lusaka","Africa/Malabo","Africa/Maputo","Africa/Maseru","Africa/Mbabane","Africa/Mogadishu","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Niamey","Africa/Nouakchott","Africa/Ouagadougou","Africa/Porto-Novo","Africa/Sao_Tome","Africa/Timbuktu","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Anguilla","America/Antigua","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/ComodRivadavia","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Aruba","America/Asuncion","America/Atikokan","America/Atka","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Buenos_Aires","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Catamarca","America/Cayenne","America/Cayman","America/Chicago","America/Chihuahua","America/Ciudad_Juarez","America/Coral_Harbour","America/Cordoba","America/Costa_Rica","America/Coyhaique","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Dominica","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Ensenada","America/Fort_Nelson","America/Fort_Wayne","America/Fortaleza","America/Glace_Bay","America/Godthab","America/Goose_Bay","America/Grand_Turk","America/Grenada","America/Guadeloupe","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Indianapolis","America/Inuvik","America/Iqaluit","America/Jamaica","America/Jujuy","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/Knox_IN","America/Kralendijk","America/La_Paz","America/Lima","America/Los_Angeles","America/Louisville","America/Lower_Princes","America/Maceio","America/Managua","America/Manaus","America/Marigot","America/Martinique","America/Matamoros","America/Mazatlan","America/Mendoza","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Montreal","America/Montserrat","America/Nassau","America/New_York","America/Nipigon","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Nuuk","America/Ojinaga","America/Panama","America/Pangnirtung","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Acre","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rainy_River","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Rosario","America/Santa_Isabel","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Shiprock","America/Sitka","America/St_Barthelemy","America/St_Johns","America/St_Kitts","America/St_Lucia","America/St_Thomas","America/St_Vincent","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Thunder_Bay","America/Tijuana","America/Toronto","America/Tortola","America/Vancouver","America/Virgin","America/Whitehorse","America/Winnipeg","America/Yakutat","America/Yellowknife","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer","Antarctica/Rothera","Antarctica/South_Pole","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen","Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Ashkhabad","Asia/Atyrau","Asia/Baghdad","Asia/Bahrain","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Calcutta","Asia/Chita","Asia/Choibalsan","Asia/Chongqing","Asia/Chungking","Asia/Colombo","Asia/Dacca","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Harbin","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Istanbul","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kashgar","Asia/Kathmandu","Asia/Katmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macao","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Rangoon","Asia/Riyadh","Asia/Saigon","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Tel_Aviv","Asia/Thimbu","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ujung_Pandang","Asia/Ulaanbaatar","Asia/Ulan_Bator","Asia/Urumqi","Asia/Ust-Nera","Asia/Vientiane","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faeroe","Atlantic/Faroe","Atlantic/Jan_Mayen","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena","Atlantic/Stanley","Australia/ACT","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Canberra","Australia/Currie","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/LHI","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/NSW","Australia/North","Australia/Perth","Australia/Queensland","Australia/South","Australia/Sydney","Australia/Tasmania","Australia/Victoria","Australia/West","Australia/Yancowinna","Brazil/Acre","Brazil/DeNoronha","Brazil/East","Brazil/West","CET","CST6CDT","Canada/Atlantic","Canada/Central","Canada/Eastern","Canada/Mountain","Canada/Newfoundland","Canada/Pacific","Canada/Saskatchewan","Canada/Yukon","Chile/Continental","Chile/EasterIsland","Cuba","EET","EST","EST5EDT","Egypt","Eire","Etc/GMT","Etc/GMT+0","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11","Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5","Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/GMT-0","Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12","Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3","Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8","Etc/GMT-9","Etc/GMT0","Etc/Greenwich","Etc/UCT","Etc/UTC","Etc/Universal","Etc/Zulu","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belfast","Europe/Belgrade","Europe/Berlin","Europe/Bratislava","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Busingen","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man","Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Kyiv","Europe/Lisbon","Europe/Ljubljana","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Mariehamn","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Nicosia","Europe/Oslo","Europe/Paris","Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/San_Marino","Europe/Sarajevo","Europe/Saratov","Europe/Simferopol","Europe/Skopje","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Tiraspol","Europe/Ulyanovsk","Europe/Uzhgorod","Europe/Vaduz","Europe/Vatican","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zagreb","Europe/Zaporozhye","Europe/Zurich","GB","GB-Eire","GMT","GMT+0","GMT-0","GMT0","Greenwich","HST","Hongkong","Iceland","Indian/Antananarivo","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Mayotte","Indian/Reunion","Iran","Israel","Jamaica","Japan","Kwajalein","Libya","MET","MST","MST7MDT","Mexico/BajaNorte","Mexico/BajaSur","Mexico/General","NZ","NZ-CHAT","Navajo","PRC","PST8PDT","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Johnston","Pacific/Kanton","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Midway","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Ponape","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Saipan","Pacific/Samoa","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Truk","Pacific/Wake","Pacific/Wallis","Pacific/Yap","Poland","Portugal","ROC","ROK","Singapore","Turkey","UCT","US/Alaska","US/Aleutian","US/Arizona","US/Central","US/East-Indiana","US/Eastern","US/Hawaii","US/Indiana-Starke","US/Michigan","US/Mountain","US/Pacific","US/Samoa","UTC","Universal","W-SU","WET","Zulu","localtime",""],"type":"string","description":"tz database style timezone string\n\n* `Africa/Abidjan`\n* `Africa/Accra`\n* `Africa/Addis_Ababa`\n* `Africa/Algiers`\n* `Africa/Asmara`\n* `Africa/Asmera`\n* `Africa/Bamako`\n* `Africa/Bangui`\n* `Africa/Banjul`\n* `Africa/Bissau`\n* `Africa/Blantyre`\n* `Africa/Brazzaville`\n* `Africa/Bujumbura`\n* `Africa/Cairo`\n* `Africa/Casablanca`\n* `Africa/Ceuta`\n* `Africa/Conakry`\n* `Africa/Dakar`\n* `Africa/Dar_es_Salaam`\n* `Africa/Djibouti`\n* `Africa/Douala`\n* `Africa/El_Aaiun`\n* `Africa/Freetown`\n* `Africa/Gaborone`\n* `Africa/Harare`\n* `Africa/Johannesburg`\n* `Africa/Juba`\n* `Africa/Kampala`\n* `Africa/Khartoum`\n* `Africa/Kigali`\n* `Africa/Kinshasa`\n* `Africa/Lagos`\n* `Africa/Libreville`\n* `Africa/Lome`\n* `Africa/Luanda`\n* `Africa/Lubumbashi`\n* `Africa/Lusaka`\n* `Africa/Malabo`\n* `Africa/Maputo`\n* `Africa/Maseru`\n* `Africa/Mbabane`\n* `Africa/Mogadishu`\n* `Africa/Monrovia`\n* `Africa/Nairobi`\n* `Africa/Ndjamena`\n* `Africa/Niamey`\n* `Africa/Nouakchott`\n* `Africa/Ouagadougou`\n* `Africa/Porto-Novo`\n* `Africa/Sao_Tome`\n* `Africa/Timbuktu`\n* `Africa/Tripoli`\n* `Africa/Tunis`\n* `Africa/Windhoek`\n* `America/Adak`\n* `America/Anchorage`\n* `America/Anguilla`\n* `America/Antigua`\n* `America/Araguaina`\n* `America/Argentina/Buenos_Aires`\n* `America/Argentina/Catamarca`\n* `America/Argentina/ComodRivadavia`\n* `America/Argentina/Cordoba`\n* `America/Argentina/Jujuy`\n* `America/Argentina/La_Rioja`\n* `America/Argentina/Mendoza`\n* `America/Argentina/Rio_Gallegos`\n* `America/Argentina/Salta`\n* `America/Argentina/San_Juan`\n* `America/Argentina/San_Luis`\n* `America/Argentina/Tucuman`\n* `America/Argentina/Ushuaia`\n* `America/Aruba`\n* `America/Asuncion`\n* `America/Atikokan`\n* `America/Atka`\n* `America/Bahia`\n* `America/Bahia_Banderas`\n* `America/Barbados`\n* `America/Belem`\n* `America/Belize`\n* `America/Blanc-Sablon`\n* `America/Boa_Vista`\n* `America/Bogota`\n* `America/Boise`\n* `America/Buenos_Aires`\n* `America/Cambridge_Bay`\n* `America/Campo_Grande`\n* `America/Cancun`\n* `America/Caracas`\n* `America/Catamarca`\n* `America/Cayenne`\n* `America/Cayman`\n* `America/Chicago`\n* `America/Chihuahua`\n* `America/Ciudad_Juarez`\n* `America/Coral_Harbour`\n* `America/Cordoba`\n* `America/Costa_Rica`\n* `America/Coyhaique`\n* `America/Creston`\n* `America/Cuiaba`\n* `America/Curacao`\n* `America/Danmarkshavn`\n* `America/Dawson`\n* `America/Dawson_Creek`\n* `America/Denver`\n* `America/Detroit`\n* `America/Dominica`\n* `America/Edmonton`\n* `America/Eirunepe`\n* `America/El_Salvador`\n* `America/Ensenada`\n* `America/Fort_Nelson`\n* `America/Fort_Wayne`\n* `America/Fortaleza`\n* `America/Glace_Bay`\n* `America/Godthab`\n* `America/Goose_Bay`\n* `America/Grand_Turk`\n* `America/Grenada`\n* `America/Guadeloupe`\n* `America/Guatemala`\n* `America/Guayaquil`\n* `America/Guyana`\n* `America/Halifax`\n* `America/Havana`\n* `America/Hermosillo`\n* `America/Indiana/Indianapolis`\n* `America/Indiana/Knox`\n* `America/Indiana/Marengo`\n* `America/Indiana/Petersburg`\n* `America/Indiana/Tell_City`\n* `America/Indiana/Vevay`\n* `America/Indiana/Vincennes`\n* `America/Indiana/Winamac`\n* `America/Indianapolis`\n* `America/Inuvik`\n* `America/Iqaluit`\n* `America/Jamaica`\n* `America/Jujuy`\n* `America/Juneau`\n* `America/Kentucky/Louisville`\n* `America/Kentucky/Monticello`\n* `America/Knox_IN`\n* `America/Kralendijk`\n* `America/La_Paz`\n* `America/Lima`\n* `America/Los_Angeles`\n* `America/Louisville`\n* `America/Lower_Princes`\n* `America/Maceio`\n* `America/Managua`\n* `America/Manaus`\n* `America/Marigot`\n* `America/Martinique`\n* `America/Matamoros`\n* `America/Mazatlan`\n* `America/Mendoza`\n* `America/Menominee`\n* `America/Merida`\n* `America/Metlakatla`\n* `America/Mexico_City`\n* `America/Miquelon`\n* `America/Moncton`\n* `America/Monterrey`\n* `America/Montevideo`\n* `America/Montreal`\n* `America/Montserrat`\n* `America/Nassau`\n* `America/New_York`\n* `America/Nipigon`\n* `America/Nome`\n* `America/Noronha`\n* `America/North_Dakota/Beulah`\n* `America/North_Dakota/Center`\n* `America/North_Dakota/New_Salem`\n* `America/Nuuk`\n* `America/Ojinaga`\n* `America/Panama`\n* `America/Pangnirtung`\n* `America/Paramaribo`\n* `America/Phoenix`\n* `America/Port-au-Prince`\n* `America/Port_of_Spain`\n* `America/Porto_Acre`\n* `America/Porto_Velho`\n* `America/Puerto_Rico`\n* `America/Punta_Arenas`\n* `America/Rainy_River`\n* `America/Rankin_Inlet`\n* `America/Recife`\n* `America/Regina`\n* `America/Resolute`\n* `America/Rio_Branco`\n* `America/Rosario`\n* `America/Santa_Isabel`\n* `America/Santarem`\n* `America/Santiago`\n* `America/Santo_Domingo`\n* `America/Sao_Paulo`\n* `America/Scoresbysund`\n* `America/Shiprock`\n* `America/Sitka`\n* `America/St_Barthelemy`\n* `America/St_Johns`\n* `America/St_Kitts`\n* `America/St_Lucia`\n* `America/St_Thomas`\n* `America/St_Vincent`\n* `America/Swift_Current`\n* `America/Tegucigalpa`\n* `America/Thule`\n* `America/Thunder_Bay`\n* `America/Tijuana`\n* `America/Toronto`\n* `America/Tortola`\n* `America/Vancouver`\n* `America/Virgin`\n* `America/Whitehorse`\n* `America/Winnipeg`\n* `America/Yakutat`\n* `America/Yellowknife`\n* `Antarctica/Casey`\n* `Antarctica/Davis`\n* `Antarctica/DumontDUrville`\n* `Antarctica/Macquarie`\n* `Antarctica/Mawson`\n* `Antarctica/McMurdo`\n* `Antarctica/Palmer`\n* `Antarctica/Rothera`\n* `Antarctica/South_Pole`\n* `Antarctica/Syowa`\n* `Antarctica/Troll`\n* `Antarctica/Vostok`\n* `Arctic/Longyearbyen`\n* `Asia/Aden`\n* `Asia/Almaty`\n* `Asia/Amman`\n* `Asia/Anadyr`\n* `Asia/Aqtau`\n* `Asia/Aqtobe`\n* `Asia/Ashgabat`\n* `Asia/Ashkhabad`\n* `Asia/Atyrau`\n* `Asia/Baghdad`\n* `Asia/Bahrain`\n* `Asia/Baku`\n* `Asia/Bangkok`\n* `Asia/Barnaul`\n* `Asia/Beirut`\n* `Asia/Bishkek`\n* `Asia/Brunei`\n* `Asia/Calcutta`\n* `Asia/Chita`\n* `Asia/Choibalsan`\n* `Asia/Chongqing`\n* `Asia/Chungking`\n* `Asia/Colombo`\n* `Asia/Dacca`\n* `Asia/Damascus`\n* `Asia/Dhaka`\n* `Asia/Dili`\n* `Asia/Dubai`\n* `Asia/Dushanbe`\n* `Asia/Famagusta`\n* `Asia/Gaza`\n* `Asia/Harbin`\n* `Asia/Hebron`\n* `Asia/Ho_Chi_Minh`\n* `Asia/Hong_Kong`\n* `Asia/Hovd`\n* `Asia/Irkutsk`\n* `Asia/Istanbul`\n* `Asia/Jakarta`\n* `Asia/Jayapura`\n* `Asia/Jerusalem`\n* `Asia/Kabul`\n* `Asia/Kamchatka`\n* `Asia/Karachi`\n* `Asia/Kashgar`\n* `Asia/Kathmandu`\n* `Asia/Katmandu`\n* `Asia/Khandyga`\n* `Asia/Kolkata`\n* `Asia/Krasnoyarsk`\n* `Asia/Kuala_Lumpur`\n* `Asia/Kuching`\n* `Asia/Kuwait`\n* `Asia/Macao`\n* `Asia/Macau`\n* `Asia/Magadan`\n* `Asia/Makassar`\n* `Asia/Manila`\n* `Asia/Muscat`\n* `Asia/Nicosia`\n* `Asia/Novokuznetsk`\n* `Asia/Novosibirsk`\n* `Asia/Omsk`\n* `Asia/Oral`\n* `Asia/Phnom_Penh`\n* `Asia/Pontianak`\n* `Asia/Pyongyang`\n* `Asia/Qatar`\n* `Asia/Qostanay`\n* `Asia/Qyzylorda`\n* `Asia/Rangoon`\n* `Asia/Riyadh`\n* `Asia/Saigon`\n* `Asia/Sakhalin`\n* `Asia/Samarkand`\n* `Asia/Seoul`\n* `Asia/Shanghai`\n* `Asia/Singapore`\n* `Asia/Srednekolymsk`\n* `Asia/Taipei`\n* `Asia/Tashkent`\n* `Asia/Tbilisi`\n* `Asia/Tehran`\n* `Asia/Tel_Aviv`\n* `Asia/Thimbu`\n* `Asia/Thimphu`\n* `Asia/Tokyo`\n* `Asia/Tomsk`\n* `Asia/Ujung_Pandang`\n* `Asia/Ulaanbaatar`\n* `Asia/Ulan_Bator`\n* `Asia/Urumqi`\n* `Asia/Ust-Nera`\n* `Asia/Vientiane`\n* `Asia/Vladivostok`\n* `Asia/Yakutsk`\n* `Asia/Yangon`\n* `Asia/Yekaterinburg`\n* `Asia/Yerevan`\n* `Atlantic/Azores`\n* `Atlantic/Bermuda`\n* `Atlantic/Canary`\n* `Atlantic/Cape_Verde`\n* `Atlantic/Faeroe`\n* `Atlantic/Faroe`\n* `Atlantic/Jan_Mayen`\n* `Atlantic/Madeira`\n* `Atlantic/Reykjavik`\n* `Atlantic/South_Georgia`\n* `Atlantic/St_Helena`\n* `Atlantic/Stanley`\n* `Australia/ACT`\n* `Australia/Adelaide`\n* `Australia/Brisbane`\n* `Australia/Broken_Hill`\n* `Australia/Canberra`\n* `Australia/Currie`\n* `Australia/Darwin`\n* `Australia/Eucla`\n* `Australia/Hobart`\n* `Australia/LHI`\n* `Australia/Lindeman`\n* `Australia/Lord_Howe`\n* `Australia/Melbourne`\n* `Australia/NSW`\n* `Australia/North`\n* `Australia/Perth`\n* `Australia/Queensland`\n* `Australia/South`\n* `Australia/Sydney`\n* `Australia/Tasmania`\n* `Australia/Victoria`\n* `Australia/West`\n* `Australia/Yancowinna`\n* `Brazil/Acre`\n* `Brazil/DeNoronha`\n* `Brazil/East`\n* `Brazil/West`\n* `CET`\n* `CST6CDT`\n* `Canada/Atlantic`\n* `Canada/Central`\n* `Canada/Eastern`\n* `Canada/Mountain`\n* `Canada/Newfoundland`\n* `Canada/Pacific`\n* `Canada/Saskatchewan`\n* `Canada/Yukon`\n* `Chile/Continental`\n* `Chile/EasterIsland`\n* `Cuba`\n* `EET`\n* `EST`\n* `EST5EDT`\n* `Egypt`\n* `Eire`\n* `Etc/GMT`\n* `Etc/GMT+0`\n* `Etc/GMT+1`\n* `Etc/GMT+10`\n* `Etc/GMT+11`\n* `Etc/GMT+12`\n* `Etc/GMT+2`\n* `Etc/GMT+3`\n* `Etc/GMT+4`\n* `Etc/GMT+5`\n* `Etc/GMT+6`\n* `Etc/GMT+7`\n* `Etc/GMT+8`\n* `Etc/GMT+9`\n* `Etc/GMT-0`\n* `Etc/GMT-1`\n* `Etc/GMT-10`\n* `Etc/GMT-11`\n* `Etc/GMT-12`\n* `Etc/GMT-13`\n* `Etc/GMT-14`\n* `Etc/GMT-2`\n* `Etc/GMT-3`\n* `Etc/GMT-4`\n* `Etc/GMT-5`\n* `Etc/GMT-6`\n* `Etc/GMT-7`\n* `Etc/GMT-8`\n* `Etc/GMT-9`\n* `Etc/GMT0`\n* `Etc/Greenwich`\n* `Etc/UCT`\n* `Etc/UTC`\n* `Etc/Universal`\n* `Etc/Zulu`\n* `Europe/Amsterdam`\n* `Europe/Andorra`\n* `Europe/Astrakhan`\n* `Europe/Athens`\n* `Europe/Belfast`\n* `Europe/Belgrade`\n* `Europe/Berlin`\n* `Europe/Bratislava`\n* `Europe/Brussels`\n* `Europe/Bucharest`\n* `Europe/Budapest`\n* `Europe/Busingen`\n* `Europe/Chisinau`\n* `Europe/Copenhagen`\n* `Europe/Dublin`\n* `Europe/Gibraltar`\n* `Europe/Guernsey`\n* `Europe/Helsinki`\n* `Europe/Isle_of_Man`\n* `Europe/Istanbul`\n* `Europe/Jersey`\n* `Europe/Kaliningrad`\n* `Europe/Kiev`\n* `Europe/Kirov`\n* `Europe/Kyiv`\n* `Europe/Lisbon`\n* `Europe/Ljubljana`\n* `Europe/London`\n* `Europe/Luxembourg`\n* `Europe/Madrid`\n* `Europe/Malta`\n* `Europe/Mariehamn`\n* `Europe/Minsk`\n* `Europe/Monaco`\n* `Europe/Moscow`\n* `Europe/Nicosia`\n* `Europe/Oslo`\n* `Europe/Paris`\n* `Europe/Podgorica`\n* `Europe/Prague`\n* `Europe/Riga`\n* `Europe/Rome`\n* `Europe/Samara`\n* `Europe/San_Marino`\n* `Europe/Sarajevo`\n* `Europe/Saratov`\n* `Europe/Simferopol`\n* `Europe/Skopje`\n* `Europe/Sofia`\n* `Europe/Stockholm`\n* `Europe/Tallinn`\n* `Europe/Tirane`\n* `Europe/Tiraspol`\n* `Europe/Ulyanovsk`\n* `Europe/Uzhgorod`\n* `Europe/Vaduz`\n* `Europe/Vatican`\n* `Europe/Vienna`\n* `Europe/Vilnius`\n* `Europe/Volgograd`\n* `Europe/Warsaw`\n* `Europe/Zagreb`\n* `Europe/Zaporozhye`\n* `Europe/Zurich`\n* `GB`\n* `GB-Eire`\n* `GMT`\n* `GMT+0`\n* `GMT-0`\n* `GMT0`\n* `Greenwich`\n* `HST`\n* `Hongkong`\n* `Iceland`\n* `Indian/Antananarivo`\n* `Indian/Chagos`\n* `Indian/Christmas`\n* `Indian/Cocos`\n* `Indian/Comoro`\n* `Indian/Kerguelen`\n* `Indian/Mahe`\n* `Indian/Maldives`\n* `Indian/Mauritius`\n* `Indian/Mayotte`\n* `Indian/Reunion`\n* `Iran`\n* `Israel`\n* `Jamaica`\n* `Japan`\n* `Kwajalein`\n* `Libya`\n* `MET`\n* `MST`\n* `MST7MDT`\n* `Mexico/BajaNorte`\n* `Mexico/BajaSur`\n* `Mexico/General`\n* `NZ`\n* `NZ-CHAT`\n* `Navajo`\n* `PRC`\n* `PST8PDT`\n* `Pacific/Apia`\n* `Pacific/Auckland`\n* `Pacific/Bougainville`\n* `Pacific/Chatham`\n* `Pacific/Chuuk`\n* `Pacific/Easter`\n* `Pacific/Efate`\n* `Pacific/Enderbury`\n* `Pacific/Fakaofo`\n* `Pacific/Fiji`\n* `Pacific/Funafuti`\n* `Pacific/Galapagos`\n* `Pacific/Gambier`\n* `Pacific/Guadalcanal`\n* `Pacific/Guam`\n* `Pacific/Honolulu`\n* `Pacific/Johnston`\n* `Pacific/Kanton`\n* `Pacific/Kiritimati`\n* `Pacific/Kosrae`\n* `Pacific/Kwajalein`\n* `Pacific/Majuro`\n* `Pacific/Marquesas`\n* `Pacific/Midway`\n* `Pacific/Nauru`\n* `Pacific/Niue`\n* `Pacific/Norfolk`\n* `Pacific/Noumea`\n* `Pacific/Pago_Pago`\n* `Pacific/Palau`\n* `Pacific/Pitcairn`\n* `Pacific/Pohnpei`\n* `Pacific/Ponape`\n* `Pacific/Port_Moresby`\n* `Pacific/Rarotonga`\n* `Pacific/Saipan`\n* `Pacific/Samoa`\n* `Pacific/Tahiti`\n* `Pacific/Tarawa`\n* `Pacific/Tongatapu`\n* `Pacific/Truk`\n* `Pacific/Wake`\n* `Pacific/Wallis`\n* `Pacific/Yap`\n* `Poland`\n* `Portugal`\n* `ROC`\n* `ROK`\n* `Singapore`\n* `Turkey`\n* `UCT`\n* `US/Alaska`\n* `US/Aleutian`\n* `US/Arizona`\n* `US/Central`\n* `US/East-Indiana`\n* `US/Eastern`\n* `US/Hawaii`\n* `US/Indiana-Starke`\n* `US/Michigan`\n* `US/Mountain`\n* `US/Pacific`\n* `US/Samoa`\n* `UTC`\n* `Universal`\n* `W-SU`\n* `WET`\n* `Zulu`\n* `localtime`"},"failure_issue_threshold":{"type":"integer","maximum":720,"minimum":1,"nullable":true,"description":"How many consecutive missed or failed check-ins in a row before creating a new issue."},"recovery_threshold":{"type":"integer","maximum":720,"minimum":1,"nullable":true,"description":"How many successful check-ins in a row before resolving an issue."}},"required":["schedule"]}],"description":"The configuration for the monitor."},"slug":{"type":"string","description":"Uniquely identifies your monitor within your organization. Changing this slug will require updates to any instrumented check-in calls.","maxLength":50,"pattern":"^(?![0-9]+$)[a-z0-9_\\-]+$"},"status":{"enum":["active","disabled"],"type":"string","default":"active","description":"Status of the monitor. Disabled monitors will not accept events and will not count towards the monitor quota.\n\n* `active`\n* `disabled`"},"owner":{"type":"string","nullable":true,"description":"The ID of the team or user that owns the monitor. (eg. user:51 or team:6)"},"is_muted":{"type":"boolean","description":"Disable creation of monitor incidents"}},"required":["config","name","project"]},"NotificationAction":{"type":"object","description":"Django Rest Framework serializer for incoming NotificationAction API payloads","properties":{"trigger_type":{"type":"string","description":"Type of the trigger that causes the notification. The only supported trigger right now is: `spike-protection`."},"service_type":{"type":"string","description":"Service that is used for sending the notification.\n- `email`\n- `slack`\n- `sentry_notification`\n- `pagerduty`\n- `opsgenie`\n"},"integration_id":{"type":"integer","description":"ID of the integration used as the notification service. See\n[List Integrations](https://docs.sentry.io/api/integrations/list-an-organizations-available-integrations/)\nto retrieve a full list of integrations.\n\nRequired if **service_type** is `slack`, `pagerduty` or `opsgenie`.\n"},"target_identifier":{"type":"string","description":"ID of the notification target, like a Slack channel ID.\n\nRequired if **service_type** is `slack` or `opsgenie`.\n"},"target_display":{"type":"string","description":"Name of the notification target, like a Slack channel name.\n\nRequired if **service_type** is `slack` or `opsgenie`.\n"},"projects":{"type":"array","items":{"type":"string"},"description":"List of project IDs or slugs that the Notification Action is created for."},"sentry_app_id":{"type":"integer","description":"ID of the custom integration to notify, when the target is a Sentry app."},"target_type":{"type":"string","default":"specific","description":"How the notification target is addressed."}},"required":["service_type","trigger_type"]},"OrgReleaseResponse":{"type":"object","properties":{"ref":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"dateReleased":{"type":"string","format":"date-time","nullable":true},"dateCreated":{"type":"string","format":"date-time","nullable":true},"dateStarted":{"type":"string","format":"date-time","nullable":true},"owner":{"type":"object","additionalProperties":{},"nullable":true},"lastCommit":{"type":"object","additionalProperties":{},"nullable":true},"lastDeploy":{"type":"object","properties":{"dateStarted":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"id":{"type":"string"},"environment":{"type":"string"},"dateFinished":{"type":"string"},"name":{"type":"string"}},"required":["dateFinished","environment","id","name"],"nullable":true},"firstEvent":{"type":"string","format":"date-time","nullable":true},"lastEvent":{"type":"string","format":"date-time","nullable":true},"currentProjectMeta":{"type":"object","additionalProperties":{},"nullable":true},"userAgent":{"type":"string","nullable":true},"adoptionStages":{"type":"object","additionalProperties":{},"nullable":true},"id":{"type":"integer"},"version":{"type":"string"},"newGroups":{"type":"integer"},"status":{"type":"string"},"shortVersion":{"type":"string"},"versionInfo":{"type":"object","properties":{"description":{"type":"string"},"package":{"type":"string","nullable":true},"version":{"type":"object","additionalProperties":{}},"buildHash":{"type":"string","nullable":true}},"required":["buildHash","package","version"],"nullable":true},"data":{"type":"object","additionalProperties":{}},"commitCount":{"type":"integer"},"deployCount":{"type":"integer"},"authors":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},{"type":"object","properties":{"name":{"type":"string","nullable":true},"email":{"type":"string"}},"required":["email","name"]}]}},"projects":{"type":"array","items":{"type":"object","properties":{"healthData":{"type":"object","properties":{"durationP50":{"type":"number","format":"double","nullable":true},"durationP90":{"type":"number","format":"double","nullable":true},"crashFreeUsers":{"type":"number","format":"double","nullable":true},"crashFreeSessions":{"type":"number","format":"double","nullable":true},"totalUsers":{"type":"integer","nullable":true},"totalUsers24h":{"type":"integer","nullable":true},"totalProjectUsers24h":{"type":"integer","nullable":true},"totalSessions":{"type":"integer","nullable":true},"totalSessions24h":{"type":"integer","nullable":true},"totalProjectSessions24h":{"type":"integer","nullable":true},"adoption":{"type":"number","format":"double","nullable":true},"sessionsAdoption":{"type":"number","format":"double","nullable":true},"sessionsCrashed":{"type":"integer"},"sessionsErrored":{"type":"integer"},"hasHealthData":{"type":"boolean"},"stats":{"type":"object","additionalProperties":{}}},"required":["hasHealthData","sessionsCrashed","sessionsErrored","stats"],"nullable":true},"dateReleased":{"type":"string","format":"date-time","nullable":true},"dateCreated":{"type":"string","format":"date-time","nullable":true},"dateStarted":{"type":"string","format":"date-time","nullable":true},"id":{"type":"integer"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"platforms":{"type":"array","items":{"type":"string"},"nullable":true},"hasHealthData":{"type":"boolean"},"newGroups":{"type":"integer"}},"required":["hasHealthData","id","name","newGroups","platform","platforms","slug"]}}},"required":["authors","commitCount","data","deployCount","id","newGroups","projects","shortVersion","status","version","versionInfo"]},"OrganizationCodeMappingResponse":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"projectSlug":{"type":"string"},"repoId":{"type":"string"},"repoName":{"type":"string"},"integrationId":{"type":"string","nullable":true},"provider":{"type":"object","properties":{"key":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"canAdd":{"type":"boolean"},"canDisable":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"aspects":{"type":"object","additionalProperties":{}}},"required":["aspects","canAdd","canDisable","features","key","name","slug"],"nullable":true},"stackRoot":{"type":"string"},"sourceRoot":{"type":"string"},"defaultBranch":{"type":"string","nullable":true},"automaticallyGenerated":{"type":"boolean"},"hasCodeOwner":{"type":"boolean"}},"required":["automaticallyGenerated","defaultBranch","hasCodeOwner","id","integrationId","projectId","projectSlug","provider","repoId","repoName","sourceRoot","stackRoot"]},"OrganizationCodeOwnersAssociationsResponse":{"type":"object","additionalProperties":{"type":"object","properties":{"associations":{"type":"object","additionalProperties":{"type":"string"}},"errors":{"type":"object","properties":{"missing_user_emails":{"type":"array","items":{"type":"string"}},"missing_external_users":{"type":"array","items":{"type":"string"}},"missing_external_teams":{"type":"array","items":{"type":"string"}},"teams_without_access":{"type":"array","items":{"type":"string"}},"users_without_access":{"type":"array","items":{"type":"string"}}},"required":["missing_external_teams","missing_external_users","missing_user_emails","teams_without_access","users_without_access"]}},"required":["associations","errors"]}},"OrganizationConfigIntegrationsEndpointResponse":{"type":"object","properties":{"providers":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"metadata":{},"canAdd":{"type":"boolean"},"canDisable":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}}},"required":["canAdd","canDisable","features","key","metadata","name","slug"]}}},"required":["providers"]},"OrganizationDetailsPut":{"type":"object","properties":{"slug":{"type":"string","description":"The new slug for the organization, which needs to be unique.","maxLength":50},"name":{"type":"string","description":"The new name for the organization.","maxLength":64},"isEarlyAdopter":{"type":"boolean","description":"Specify `true` to opt-in to new features before they're released to the public."},"hideAiFeatures":{"type":"boolean","description":"Specify `true` to hide AI features from the organization."},"defaultRole":{"enum":["member","admin","manager","owner"],"type":"string","description":"The default role new members will receive.\n\n* `member` - Member\n* `admin` - Admin\n* `manager` - Manager\n* `owner` - Owner"},"openMembership":{"type":"boolean","description":"Specify `true` to allow organization members to freely join any team."},"eventsMemberAdmin":{"type":"boolean","description":"Specify `true` to allow members to delete events (including the delete & discard action) by granting them the `event:admin` scope."},"alertsMemberWrite":{"type":"boolean","description":"Specify `true` to allow members to create, edit, and delete alert rules by granting them the `alerts:write` scope."},"attachmentsRole":{"enum":["member","admin","manager","owner"],"type":"string","description":"The role required to download event attachments, such as native crash reports or log files.\n\n* `member` - Member\n* `admin` - Admin\n* `manager` - Manager\n* `owner` - Owner"},"debugFilesRole":{"enum":["member","admin","manager","owner"],"type":"string","description":"The role required to download debug information files, ProGuard mappings and source maps.\n\n* `member` - Member\n* `admin` - Admin\n* `manager` - Manager\n* `owner` - Owner"},"hasGranularReplayPermissions":{"type":"boolean","description":"Specify `true` to enable granular replay permissions, allowing per-member access control for replay data."},"replayAccessMembers":{"type":"array","items":{"type":"integer"},"nullable":true,"description":"A list of user IDs who have permission to access replay data. Requires the hasGranularReplayPermissions flag to be true to be enforced."},"avatarType":{"enum":["letter_avatar","upload"],"type":"string","description":"The type of display picture for the organization.\n\n* `letter_avatar` - Use initials\n* `upload` - Upload an image"},"avatar":{"type":"string","description":"The image to upload as the organization avatar, in base64. Required if `avatarType` is `upload`."},"require2FA":{"type":"boolean","description":"Specify `true` to require and enforce two-factor authentication for all members."},"allowSharedIssues":{"type":"boolean","description":"Specify `true` to allow sharing of limited details on issues to anonymous users."},"enhancedPrivacy":{"type":"boolean","description":"Specify `true` to enable enhanced privacy controls to limit personally identifiable information (PII) as well as source code in things like notifications."},"scrapeJavaScript":{"type":"boolean","description":"Specify `true` to allow Sentry to scrape missing JavaScript source context when possible."},"storeCrashReports":{"enum":[0,1,5,10,20,50,100,-1],"type":"integer","description":"How many native crash reports (such as Minidumps for improved processing and download in issue details) to store per issue.\n\n* `0` - Disabled\n* `1` - 1 per issue\n* `5` - 5 per issue\n* `10` - 10 per issue\n* `20` - 20 per issue\n* `50` - 50 per issue\n* `100` - 100 per issue\n* `-1` - Unlimited"},"allowJoinRequests":{"type":"boolean","description":"Specify `true` to allow users to request to join your organization."},"dataScrubber":{"type":"boolean","description":"Specify `true` to require server-side data scrubbing for all projects."},"dataScrubberDefaults":{"type":"boolean","description":"Specify `true` to apply the default scrubbers to prevent things like passwords and credit cards from being stored for all projects."},"sensitiveFields":{"type":"array","items":{"type":"string"},"description":"A list of additional global field names to match against when scrubbing data for all projects."},"safeFields":{"type":"array","items":{"type":"string"},"description":"A list of global field names which data scrubbers should ignore."},"scrubIPAddresses":{"type":"boolean","description":"Specify `true` to prevent IP addresses from being stored for new events on all projects."},"relayPiiConfig":{"type":"string","description":"Advanced data scrubbing rules that can be configured for each project as a JSON string. The new rules will only apply to new incoming events. For more details on advanced data scrubbing, see our [full documentation](/security-legal-pii/scrubbing/advanced-datascrubbing/).\n\n> Warning: Calling this endpoint with this field fully overwrites the advanced data scrubbing rules.\n\nBelow is an example of a payload for a set of advanced data scrubbing rules for masking credit card numbers from the log message (equivalent to `[Mask] [Credit card numbers] from [$message]` in the Sentry app) and removing a specific key called `foo` (equivalent to `[Remove] [Anything] from [extra.foo]` in the Sentry app):\n```json\n{\n relayPiiConfig: \"{\\\"rules\":{\\\"0\\\":{\\\"type\\\":\\\"creditcard\\\",\\\"redaction\\\":{\\\"method\\\":\\\"mask\\\"}},\\\"1\\\":{\\\"type\\\":\\\"anything\\\",\\\"redaction\\\":{\\\"method\\\":\\\"remove\\\"}}},\\\"applications\\\":{\\\"$message\\\":[\\\"0\\\"],\\\"extra.foo\\\":[\\\"1\\\"]}}\"\n}\n```\n "},"trustedRelays":{"type":"array","items":{"type":"object","additionalProperties":{}},"description":"A list of local Relays (the name, public key, and description as a JSON) registered for the organization. This feature is only available for organizations on the Business and Enterprise plans. Read more about Relay [here](/product/relay/).\n\n Below is an example of a list containing a single local Relay registered for the organization:\n ```json\n {\n trustedRelays: [\n {\n name: \"my-relay\",\n publicKey: \"eiwr9fdruw4erfh892qy4493reyf89ur34wefd90h\",\n description: \"Configuration for my-relay.\"\n }\n ]\n }\n ```\n "},"relayDsnEndpoint":{"type":"string","nullable":true,"description":"A Relay base URL to use when displaying Client Key DSNs for this organization."},"issueAlertsThreadFlag":{"type":"boolean","description":"Specify `true` to allow the Sentry Slack integration to post replies in threads for an Issue Alert notification. Requires a Slack integration."},"metricAlertsThreadFlag":{"type":"boolean","description":"Specify `true` to allow the Sentry Slack integration to post replies in threads for a Metric Alert notification. Requires a Slack integration."},"cancelDeletion":{"type":"boolean","description":"Specify `true` to restore an organization that is pending deletion."},"apdexThreshold":{"type":"integer","description":"Deprecated. Response-time threshold in milliseconds previously used to compute Apdex."}}},"OrganizationEnvironmentResponse":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}},"OrganizationEventsDroppedResponse":{"type":"object","properties":{"meta":{"type":"object","properties":{"dataset":{"type":"string"},"start":{"type":"number","format":"double"},"end":{"type":"number","format":"double"},"interval":{"type":"number","format":"double"},"suppressedDrops":{"type":"array","items":{"type":"object","description":"Drop volume withheld from the dropped annotations as a known misreport.","properties":{"cause":{"type":"string"},"category":{"type":"string"},"outcome":{"type":"string"},"reason":{"type":"string"},"count":{"type":"integer"}},"required":["category","cause","count","outcome","reason"]}}},"required":["dataset","end","interval","start","suppressedDrops"]},"droppedEvents":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"category":{"type":"string"},"outcome":{"type":"string"},"reason":{"type":"string"},"start":{"type":"number","format":"double"},"end":{"type":"number","format":"double"},"count":{"type":"number","format":"double"},"tags":{"type":"array","items":{"type":"string"}}},"required":["category","count","end","outcome","reason","start","tags","type"]}},"acceptedEvents":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"category":{"type":"string"},"outcome":{"type":"string"},"reason":{"type":"string"},"start":{"type":"number","format":"double"},"end":{"type":"number","format":"double"},"count":{"type":"number","format":"double"},"tags":{"type":"array","items":{"type":"string"}}},"required":["category","count","end","outcome","reason","start","tags","type"]}}},"required":["acceptedEvents","droppedEvents","meta"]},"OrganizationEventsResponseDict":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","additionalProperties":{}}},"meta":{"type":"object","description":"Meta envelope emitted by `handle_results_with_meta` and the\nempty-projects short-circuit. Every key is optional because the path\nthat emits it depends on flags (`standard_meta`, debug, dataset) \u2014 the\nno-projects path only carries `tips`, the standard path carries\neverything below.","properties":{"fields":{"type":"object","additionalProperties":{"type":"string"}},"units":{"type":"object","additionalProperties":{"type":"string","nullable":true}},"tips":{"type":"object","additionalProperties":{"type":"string"}},"datasetReason":{"type":"string"},"isMetricsData":{"type":"boolean"},"isMetricsExtractedData":{"type":"boolean"},"dataset":{"type":"string"},"discoverSplitDecision":{},"dataScanned":{"type":"string"},"bytesScanned":{"type":"integer"},"routingHint":{"type":"string"},"debug_info":{},"ingestion":{"type":"object","description":"Ingestion status for the data behind a response.","properties":{"status":{"type":"string"},"delaySeconds":{"type":"number","format":"double"},"completeThrough":{"type":"number","format":"double"}},"required":["status"]}}}},"required":["data","meta"]},"OrganizationEventsTimeseriesResponse":{"type":"object","properties":{"meta":{"type":"object","properties":{"dataset":{"type":"string"},"start":{"type":"number","format":"double"},"end":{"type":"number","format":"double"},"ingestion":{"type":"object","description":"Ingestion status for the data behind a response.","properties":{"status":{"type":"string"},"delaySeconds":{"type":"number","format":"double"},"completeThrough":{"type":"number","format":"double"}},"required":["status"]}},"required":["dataset","end","start"]},"timeSeries":{"type":"array","items":{"type":"object","properties":{"values":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"number","format":"double"},"value":{"type":"number","format":"double","nullable":true},"incomplete":{"type":"boolean"},"comparisonValue":{"type":"number","format":"double","nullable":true},"filled":{"type":"boolean"},"smoothed":{"type":"boolean"},"comparisonFilled":{"type":"boolean"},"comparisonSmoothed":{"type":"boolean"},"sampleCount":{"type":"number","format":"double"},"sampleRate":{"type":"number","format":"double","nullable":true},"confidence":{"enum":["low","high",null],"type":"string","nullable":true},"incompleteReason":{"type":"string"}},"required":["incomplete","timestamp","value"]}},"yAxis":{"type":"string"},"groupBy":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"number","format":"double"},{"type":"object","nullable":true}]}},"required":["key","value"]}},"meta":{"type":"object","properties":{"order":{"type":"integer"},"isOther":{"type":"boolean"},"valueUnit":{"type":"string","nullable":true},"dataScanned":{"enum":["partial","full"],"type":"string"},"valueType":{"type":"string"},"interval":{"type":"number","format":"double"}},"required":["interval","valueType","valueUnit"]}},"required":["meta","values","yAxis"]}}},"required":["timeSeries"]},"OrganizationGroupIndexGetResponse":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"shareId":{"type":"string","nullable":true},"shortId":{"type":"string"},"title":{"type":"string"},"culprit":{"type":"string","nullable":true},"permalink":{"type":"string"},"logger":{"type":"string","nullable":true},"level":{"enum":["sample","debug","info","warning","error","fatal","unknown"],"type":"string"},"status":{"enum":["resolved","ignored","pending_deletion","pending_merge","reprocessing","unresolved"],"type":"string"},"statusDetails":{"type":"object","properties":{"ignoreCount":{"type":"integer"},"ignoreUntil":{"type":"string","format":"date-time"},"ignoreUserCount":{"type":"integer"},"ignoreUserWindow":{"type":"integer"},"ignoreWindow":{"type":"integer"},"actor":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"]},"inNextRelease":{"type":"boolean"},"inRelease":{"type":"string"},"inCommit":{"type":"string"},"pendingEvents":{"type":"integer"},"info":{"type":"object","properties":{"dateCreated":{"type":"string"},"syncCount":{"type":"integer"},"totalEvents":{"type":"integer"}},"required":["dateCreated","syncCount","totalEvents"],"nullable":true}}},"substatus":{"enum":["archived_until_escalating","archived_until_condition_met","archived_forever","escalating","ongoing","regressed","new",null],"type":"string","nullable":true},"isPublic":{"type":"boolean"},"platform":{"type":"string","nullable":true},"priority":{"enum":["low","medium","high",null],"type":"string","nullable":true},"priorityLockedAt":{"type":"string","format":"date-time","nullable":true},"seerFixabilityScore":{"type":"number","format":"double","nullable":true},"seerAutofixLastTriggered":{"type":"string","format":"date-time","nullable":true},"seerExplorerAutofixLastTriggered":{"type":"string","format":"date-time","nullable":true},"project":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"platform":{"type":"string","nullable":true}},"required":["id","name","platform","slug"]},"type":{"enum":["default","error","csp","nel","hpkp","expectct","expectstaple","transaction","generic","feedback"],"type":"string"},"issueType":{"type":"string"},"issueCategory":{"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"numComments":{"type":"integer"},"assignedTo":{"type":"object","properties":{"type":{"enum":["user","team"],"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["id","name","type"],"nullable":true},"isBookmarked":{"type":"boolean"},"isSubscribed":{"type":"boolean"},"subscriptionDetails":{"type":"object","properties":{"disabled":{"type":"boolean"},"reason":{"type":"string"}},"nullable":true},"hasSeen":{"type":"boolean"},"annotations":{"type":"array","items":{"type":"object","properties":{"displayName":{"type":"string"},"url":{"type":"string"}},"required":["displayName","url"]}},"isUnhandled":{"type":"boolean"},"count":{"type":"string"},"userCount":{"type":"integer"},"firstSeen":{"type":"string","format":"date-time","nullable":true},"lastSeen":{"type":"string","format":"date-time","nullable":true},"derivedData":{"type":"object","properties":{"blocker":{"type":"string"},"progress":{"type":"string"},"status":{"type":"string"},"viewCount":{"type":"integer"},"hasOpenFixPr":{"type":"boolean"},"isAssigned":{"type":"boolean"},"hasRootCause":{"type":"boolean"},"lastCompletedAutofixStep":{"type":"string"},"lastProgressedAt":{"type":"string","format":"date-time","nullable":true}},"required":["blocker","hasOpenFixPr","hasRootCause","isAssigned","lastCompletedAutofixStep","lastProgressedAt","progress","status","viewCount"]},"stats":{"type":"object","additionalProperties":{}},"lifetime":{"type":"object","additionalProperties":{}},"filtered":{"type":"object","properties":{"count":{"type":"string"},"userCount":{"type":"integer"},"firstSeen":{"type":"string","format":"date-time","nullable":true},"lastSeen":{"type":"string","format":"date-time","nullable":true},"stats":{"type":"object","additionalProperties":{}}},"required":["count","firstSeen","lastSeen","stats","userCount"],"nullable":true},"sessionCount":{"type":"integer"},"inbox":{"type":"object","properties":{"reason":{"type":"integer"},"reason_details":{"type":"object","properties":{"until":{"type":"string","nullable":true},"count":{"type":"integer","nullable":true},"window":{"type":"integer","nullable":true},"user_count":{"type":"integer","nullable":true},"user_window":{"type":"integer","nullable":true}},"required":["count","until","user_count","user_window","window"],"nullable":true},"date_added":{"type":"string","format":"date-time"}},"required":["date_added","reason","reason_details"]},"owners":{"type":"object","properties":{"type":{"type":"string"},"owner":{"type":"string"},"date_added":{"type":"string","format":"date-time"}},"required":["date_added","owner","type"]},"integrationIssues":{"type":"array","items":{"type":"object","additionalProperties":{}}},"sentryAppIssues":{"type":"array","items":{"type":"object","additionalProperties":{}}},"latestEventHasAttachments":{"type":"boolean"},"matchingEventId":{"type":"string","nullable":true},"matchingEventEnvironment":{"type":"string","nullable":true}},"required":["annotations","assignedTo","count","culprit","derivedData","filtered","firstSeen","hasSeen","id","inbox","integrationIssues","isBookmarked","isPublic","isSubscribed","isUnhandled","issueCategory","issueType","lastSeen","latestEventHasAttachments","level","lifetime","logger","matchingEventEnvironment","matchingEventId","metadata","numComments","owners","permalink","platform","priority","priorityLockedAt","project","seerAutofixLastTriggered","seerExplorerAutofixLastTriggered","seerFixabilityScore","sentryAppIssues","sessionCount","shareId","shortId","stats","status","statusDetails","subscriptionDetails","substatus","title","type","userCount"]}},"OrganizationGroupIndexPutResponse":{"type":"object","properties":{"assignedTo":{"type":"object","properties":{"type":{"enum":["user","team"],"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}},"required":["id","name","type"]},"discard":{"type":"boolean"},"hasSeen":{"type":"boolean"},"inbox":{"type":"boolean"},"isBookmarked":{"type":"boolean"},"isPublic":{"type":"boolean"},"isSubscribed":{"type":"boolean"},"merge":{"type":"object","properties":{"parent":{"type":"string"},"children":{"type":"array","items":{"type":"string"}}},"required":["children","parent"]},"priority":{"type":"string"},"shareId":{"type":"string"},"status":{"type":"string"},"statusDetails":{"type":"object","properties":{"inNextRelease":{"type":"boolean"},"inRelease":{"type":"string"},"inCommit":{"type":"object","properties":{"commit":{"type":"string"},"repository":{"type":"string"}},"required":["commit","repository"]},"ignoreDuration":{"type":"integer"},"ignoreCount":{"type":"integer"},"ignoreWindow":{"type":"integer"},"ignoreUserCount":{"type":"integer"},"ignoreUserWindow":{"type":"integer"}}},"subscriptionDetails":{"type":"object","properties":{"disabled":{"type":"boolean"},"reason":{"type":"string"}}},"substatus":{"type":"string"}}},"OrganizationIntegrationResponse":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string","nullable":true},"domainName":{"type":"string","nullable":true},"accountType":{"type":"string","nullable":true},"scopes":{"type":"array","items":{"type":"string"},"nullable":true},"outOfDate":{"type":"boolean","nullable":true},"missingFeatures":{"type":"array","items":{"type":"object","description":"A feature the installation can no longer support, named by the permission\ntier it falls short of, so the update-permissions modal can list them.","properties":{"key":{"type":"string"},"description":{"type":"string"}},"required":["description","key"]},"nullable":true},"status":{"type":"string"},"provider":{},"configOrganization":{},"configData":{},"externalId":{"type":"string"},"organizationId":{"type":"integer"},"organizationIntegrationStatus":{"type":"string"},"gracePeriodEnd":{"type":"string","nullable":true}},"required":["accountType","configData","configOrganization","domainName","externalId","gracePeriodEnd","icon","id","missingFeatures","name","organizationId","organizationIntegrationStatus","outOfDate","provider","scopes","status"]},"OrganizationIssueView":{"type":"object","properties":{"id":{"type":"string"},"createdBy":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"],"nullable":true},"name":{"type":"string"},"query":{"type":"string"},"querySort":{"enum":["date","new","trends","freq","user","inbox","recommended"],"type":"string"},"projects":{"type":"array","items":{"type":"integer"}},"environments":{"type":"array","items":{"type":"string"}},"timeFilters":{"type":"object","properties":{"start":{"type":"string","nullable":true},"end":{"type":"string","nullable":true},"period":{"type":"string","nullable":true},"utc":{"type":"boolean","nullable":true}}},"lastVisited":{"type":"string","nullable":true},"dateCreated":{"type":"string"},"dateUpdated":{"type":"string"},"starred":{"type":"boolean"},"stars":{"type":"integer"}},"required":["createdBy","dateCreated","dateUpdated","environments","id","lastVisited","name","projects","query","querySort","starred","stars","timeFilters"]},"OrganizationIssueViewList":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"createdBy":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"],"nullable":true},"name":{"type":"string"},"query":{"type":"string"},"querySort":{"enum":["date","new","trends","freq","user","inbox","recommended"],"type":"string"},"projects":{"type":"array","items":{"type":"integer"}},"environments":{"type":"array","items":{"type":"string"}},"timeFilters":{"type":"object","properties":{"start":{"type":"string","nullable":true},"end":{"type":"string","nullable":true},"period":{"type":"string","nullable":true},"utc":{"type":"boolean","nullable":true}}},"lastVisited":{"type":"string","nullable":true},"dateCreated":{"type":"string"},"dateUpdated":{"type":"string"},"starred":{"type":"boolean"},"stars":{"type":"integer"}},"required":["createdBy","dateCreated","dateUpdated","environments","id","lastVisited","name","projects","query","querySort","starred","stars","timeFilters"]}},"OrganizationMember":{"type":"object","properties":{"externalUsers":{"type":"array","items":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]}},"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"user":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"],"nullable":true},"orgRole":{"type":"string"},"pending":{"type":"boolean"},"expired":{"type":"boolean"},"flags":{"type":"object","properties":{"idp:provisioned":{"type":"boolean"},"idp:role-restricted":{"type":"boolean"},"sso:linked":{"type":"boolean"},"sso:invalid":{"type":"boolean"},"member-limit:restricted":{"type":"boolean"},"partnership:restricted":{"type":"boolean"}},"required":["idp:provisioned","idp:role-restricted","member-limit:restricted","partnership:restricted","sso:invalid","sso:linked"]},"dateCreated":{"type":"string","format":"date-time"},"inviteStatus":{"type":"string"},"inviterName":{"type":"string","nullable":true}},"required":["dateCreated","email","expired","flags","id","inviteStatus","inviterName","name","orgRole","pending","user"]},"OrganizationMemberRequest":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"The email address to send the invitation to.","maxLength":75},"role":{"enum":["member","admin","manager","owner"],"type":"string","default":"member","description":"Deprecated, use `orgRole`. The organization-level role to assign.\n\n* `member` - Member\n* `admin` - Admin\n* `manager` - Manager\n* `owner` - Owner","deprecated":true},"orgRole":{"enum":["billing","member","manager","owner","admin"],"type":"string","default":"member","description":"The organization-level role of the new member. Roles include:\n\n* `billing` - Can manage payment and compliance details.\n* `member` - Can view and act on events, as well as view most other data within the organization.\n* `manager` - Has full management access to all teams and projects. Can also manage\n the organization's membership.\n* `owner` - Has unrestricted access to the organization, its data, and its\n settings. Can add, modify, and delete projects and members, as well as\n make billing and plan changes.\n* `admin` - Can edit global integrations, manage projects, and add/remove teams.\n They automatically assume the Team Admin role for teams they join.\n Note: This role can no longer be assigned in Business and Enterprise plans. Use `TeamRoles` instead.\n "},"teams":{"type":"array","items":{},"description":"Deprecated, use `teamRoles`. Slugs of teams to add the member to.","deprecated":true},"teamRoles":{"type":"array","items":{"type":"object","additionalProperties":{}},"nullable":true,"description":"The team and team-roles assigned to the member. Team roles can be either:\n - `contributor` - Can view and act on issues. Depending on organization settings, they can also add team members.\n - `admin` - Has full management access to their team's membership and projects."},"sendInvite":{"type":"boolean","writeOnly":true,"default":true,"description":"Whether or not to send an invite notification through email. Defaults to True."},"reinvite":{"type":"boolean","description":"Whether or not to re-invite a user who has already been invited to the organization. Defaults to True."},"regenerate":{"type":"boolean","description":"Reissue the invite token, invalidating any previously sent invite link."}},"required":["email"]},"OrganizationMemberSCIM":{"type":"object","description":"Conforming to the SCIM RFC, this represents a Sentry Org Member\nas a SCIM user object.","properties":{"active":{"type":"boolean"},"schemas":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"userName":{"type":"string"},"name":{"type":"object","properties":{"givenName":{"type":"string"},"familyName":{"type":"string"}},"required":["familyName","givenName"]},"emails":{"type":"array","items":{"type":"object","properties":{"primary":{"type":"boolean"},"value":{"type":"string"},"type":{"type":"string"}},"required":["primary","type","value"]}},"meta":{"type":"object","properties":{"resourceType":{"type":"string"}},"required":["resourceType"]},"sentryOrgRole":{"type":"string"}},"required":["emails","id","meta","name","schemas","sentryOrgRole","userName"]},"OrganizationMemberTeam":{"type":"object","properties":{"teamRole":{"enum":["contributor","admin"],"type":"string","default":"contributor","description":"The team-level role to switch to. Valid roles include:\n\n* `contributor` - Contributors can view and act on events, as well as view most other data within the team's projects.\n* `admin` - Admin privileges on the team. They can create and remove projects, and can manage the team's memberships."}}},"OrganizationMemberTeamDetails":{"type":"object","properties":{"isActive":{"type":"boolean"},"teamRole":{"enum":["contributor","admin"],"type":"string"}},"required":["isActive","teamRole"]},"OrganizationMemberWithRoles":{"type":"object","properties":{"externalUsers":{"type":"array","items":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]}},"role":{"type":"string"},"roleName":{"type":"string"},"id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"user":{"type":"object","properties":{"identities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organization":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["name","slug"]},"provider":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"dateVerified":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time"}},"required":["dateSynced","dateVerified","id","name","organization","provider"]}},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"authenticators":{"type":"array","items":{}},"canReset2fa":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"username":{"type":"string"},"email":{"type":"string"},"avatarUrl":{"type":"string"},"isActive":{"type":"boolean"},"isSuspended":{"type":"boolean"},"hasPasswordAuth":{"type":"boolean"},"isManaged":{"type":"boolean"},"dateJoined":{"type":"string","format":"date-time"},"lastLogin":{"type":"string","format":"date-time","nullable":true},"has2fa":{"type":"boolean"},"lastActive":{"type":"string","format":"date-time","nullable":true},"isSuperuser":{"type":"boolean"},"isStaff":{"type":"boolean"},"experiments":{"type":"object","additionalProperties":{}},"emails":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"is_verified":{"type":"boolean"}},"required":["email","id","is_verified"]}}},"required":["avatarUrl","dateJoined","email","emails","experiments","has2fa","hasPasswordAuth","id","isActive","isManaged","isStaff","isSuperuser","isSuspended","lastActive","lastLogin","name","username"],"nullable":true},"orgRole":{"type":"string"},"pending":{"type":"boolean"},"expired":{"type":"boolean"},"flags":{"type":"object","properties":{"idp:provisioned":{"type":"boolean"},"idp:role-restricted":{"type":"boolean"},"sso:linked":{"type":"boolean"},"sso:invalid":{"type":"boolean"},"member-limit:restricted":{"type":"boolean"},"partnership:restricted":{"type":"boolean"}},"required":["idp:provisioned","idp:role-restricted","member-limit:restricted","partnership:restricted","sso:invalid","sso:linked"]},"dateCreated":{"type":"string","format":"date-time"},"inviteStatus":{"type":"string"},"inviterName":{"type":"string","nullable":true},"teams":{"type":"array","items":{"type":"string"}},"teamRoles":{"type":"array","items":{"type":"object","properties":{"teamSlug":{"type":"string"},"role":{"type":"string","nullable":true}},"required":["role","teamSlug"]}},"invite_link":{"type":"string","nullable":true},"isOnlyOwner":{"type":"boolean"},"orgRoleList":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"desc":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"allowed":{"type":"boolean"},"isAllowed":{"type":"boolean"},"isRetired":{"type":"boolean"},"isTeamRolesAllowed":{"type":"boolean"},"is_global":{"type":"boolean"},"isGlobal":{"type":"boolean"},"minimumTeamRole":{"type":"string"}},"required":["allowed","desc","id","isAllowed","isGlobal","isRetired","isTeamRolesAllowed","is_global","minimumTeamRole","name","scopes"]}},"teamRoleList":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"desc":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"allowed":{"type":"boolean"},"isAllowed":{"type":"boolean"},"isRetired":{"type":"boolean"},"isTeamRolesAllowed":{"type":"boolean"},"isMinimumRoleFor":{"type":"string","nullable":true}},"required":["allowed","desc","id","isAllowed","isMinimumRoleFor","isRetired","isTeamRolesAllowed","name","scopes"]}}},"required":["dateCreated","email","expired","flags","id","inviteStatus","invite_link","inviterName","isOnlyOwner","name","orgRole","orgRoleList","pending","teamRoleList","teamRoles","teams","user"]},"OrganizationProfilingChunksResponse":{"type":"object","additionalProperties":{}},"OrganizationProfilingFlamegraphResponse":{"type":"object","additionalProperties":{}},"OrganizationProjectResponseDict":{"type":"array","items":{"type":"object","properties":{"latestDeploys":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"string"}},"nullable":true},"options":{"type":"object","additionalProperties":{}},"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"team":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"],"nullable":true},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]}},"platforms":{"type":"array","items":{"type":"string"}},"hasUserReports":{"type":"boolean"},"environments":{"type":"array","items":{"type":"string"}},"latestRelease":{"type":"object","properties":{"version":{"type":"string"}},"required":["version"],"nullable":true}},"required":["access","dateCreated","environments","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","hasUserReports","id","isBookmarked","isMember","latestRelease","name","platform","platforms","slug","team","teams"]}},"OrganizationRelayResponse":{"type":"array","items":{"type":"object","properties":{"relayId":{"type":"string"},"version":{"type":"string"},"publicKey":{"type":"string","nullable":true},"firstSeen":{"type":"string","format":"date-time"},"lastSeen":{"type":"string","format":"date-time"}},"required":["firstSeen","lastSeen","publicKey","relayId","version"]}},"OrganizationRelease":{"type":"object","properties":{"ref":{"type":"string","nullable":true,"description":"An optional commit reference. This is useful if a tagged version has been provided.","maxLength":200},"url":{"type":"string","format":"uri","nullable":true,"description":"A URL that points to the release. For instance, this can be the path to an online interface to the source code, such as a GitHub URL."},"dateReleased":{"type":"string","format":"date-time","nullable":true,"description":"An optional date that indicates when the release went live. If not provided the current time is used."},"commits":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":64},"repository":{"type":"string","nullable":true,"maxLength":64},"message":{"type":"string","nullable":true},"author_name":{"type":"string","nullable":true,"maxLength":128},"author_email":{"type":"string","nullable":true,"maxLength":200},"timestamp":{"type":"string","format":"date-time","nullable":true},"patch_set":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","maxLength":510},"type":{"type":"string","maxLength":1}},"required":["path","type"]},"nullable":true}},"required":["id"]},"description":"An optional list of commit data to be associated. Very long lists are truncated to the most recent commits."},"status":{"type":"string","description":"The status of the release. Can be `open` or `archived`."},"headCommits":{"type":"array","items":{"type":"object","properties":{"currentId":{"type":"string","maxLength":64},"repository":{"type":"string","maxLength":64},"previousId":{"type":"string","nullable":true,"maxLength":64}},"required":["currentId","repository"]},"description":"Deprecated, use `commits`. Head commits to associate with the release."},"refs":{"type":"array","items":{"type":"object","properties":{"commit":{"type":"string"},"repository":{"type":"string","maxLength":200},"previousCommit":{"type":"string","nullable":true,"maxLength":64}},"required":["commit","repository"]},"description":"An optional way to indicate the start and end commits for each repository included in a release. Head commits must include parameters ``repository`` and ``commit`` (the HEAD SHA). For GitLab repositories, please use the Group name instead of the slug. They can optionally include ``previousCommit`` (the SHA of the HEAD of the previous release), which should be specified if this is the first time you've sent commit data."}}},"OrganizationRepositorySettingsResponse":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","nullable":true},"provider":{"type":"object","additionalProperties":{"type":"string"}},"status":{"type":"string"},"integrationId":{"type":"string","nullable":true},"externalSlug":{"type":"string","nullable":true},"externalId":{"type":"string","nullable":true},"settings":{"type":"object","properties":{"enabledCodeReview":{"type":"boolean"},"codeReviewTriggers":{"type":"array","items":{"type":"string"}}},"required":["codeReviewTriggers","enabledCodeReview"],"nullable":true},"id":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","id","name"]}},"OrganizationSentryAppDetailsResponse":{"type":"array","items":{"type":"object","properties":{"allowedOrigins":{"type":"array","items":{"type":"string"}},"avatars":{"type":"array","items":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string"},"avatarUrl":{"type":"string"},"color":{"type":"boolean"},"photoType":{"type":"string"}},"required":["avatarType","avatarUrl","avatarUuid","color","photoType"]}},"events":{"type":"array","items":{"type":"string"}},"webhookEvents":{"type":"array","items":{"type":"string"}},"featureData":{"type":"array","items":{"type":"string"}},"isAlertable":{"type":"boolean"},"metadata":{"type":"string"},"name":{"type":"string"},"schema":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"slug":{"type":"string"},"status":{"type":"string"},"uuid":{"type":"string"},"verifyInstall":{"type":"boolean"},"webhookHeaders":{"type":"array","items":{"type":"string"}},"isDisabled":{"type":"boolean"},"author":{"type":"string","nullable":true},"overview":{"type":"string","nullable":true},"popularity":{"type":"integer","nullable":true},"redirectUrl":{"type":"string","nullable":true},"webhookUrl":{"type":"string","nullable":true},"clientSecret":{"type":"string","nullable":true},"datePublished":{"type":"string","format":"date-time"},"clientId":{"type":"string"},"owner":{"type":"object","properties":{"id":{"type":"integer"},"slug":{"type":"string"}},"required":["id","slug"]}},"required":["allowedOrigins","avatars","events","featureData","isAlertable","metadata","name","schema","scopes","slug","status","uuid","verifyInstall","webhookEvents","webhookHeaders"]}},"OrganizationStatsSummaryResponse":{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"},"projects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"stats":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["id","slug","stats"]}}},"required":["end","projects","start"]},"OrganizationSummary":{"type":"object","properties":{"features":{"type":"array","items":{"type":"string"}},"extraOptions":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{}}},"access":{"type":"array","items":{"type":"string"}},"onboardingTasks":{"type":"array","items":{"type":"object","properties":{"task":{"type":"string","nullable":true},"status":{"type":"string"},"completionSeen":{"type":"string","format":"date-time","nullable":true},"dateCompleted":{"type":"string","format":"date-time"},"data":{}},"required":["completionSeen","data","dateCompleted","status","task"]}},"id":{"type":"string"},"slug":{"type":"string"},"status":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"isEarlyAdopter":{"type":"boolean"},"require2FA":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"links":{"type":"object","properties":{"organizationUrl":{"type":"string"},"regionUrl":{"type":"string"}},"required":["organizationUrl","regionUrl"]},"hasAuthProvider":{"type":"boolean"},"allowMemberInvite":{"type":"boolean"},"allowMemberProjectCreation":{"type":"boolean"},"allowSuperuserAccess":{"type":"boolean"}},"required":["allowMemberInvite","allowMemberProjectCreation","allowSuperuserAccess","avatar","dateCreated","hasAuthProvider","id","isEarlyAdopter","links","name","require2FA","slug","status"]},"OrganizationTraceMetaResponse":{"type":"object","properties":{"uptimeCount":{"type":"integer"},"errorsCount":{"type":"integer"},"logsCount":{"type":"number","format":"double"},"metricsCount":{"type":"number","format":"double"},"performanceIssuesCount":{"type":"integer"},"spansCount":{"type":"number","format":"double"},"transactionChildCountMap":{"type":"array","items":{"type":"object","additionalProperties":{}}},"spansCountMap":{"type":"object","additionalProperties":{"type":"number","format":"double"}}},"required":["errorsCount","logsCount","metricsCount","performanceIssuesCount","spansCount","spansCountMap","transactionChildCountMap"]},"OrganizationTraceResponse":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"description":{"type":"string"},"event_id":{"type":"string"},"project_id":{"type":"integer"},"project_slug":{"type":"string"},"transaction":{"type":"string"},"event_type":{"enum":["span"],"type":"string"},"children":{"type":"array","items":{"type":"object","description":"Fields shared by every item in a trace. Entries in `children` are full\nspans at runtime; only the shared fields are documented here.","properties":{"description":{"type":"string"},"event_id":{"type":"string"},"project_id":{"type":"integer"},"project_slug":{"type":"string"},"transaction":{"type":"string"}},"required":["description","event_id","project_id","project_slug","transaction"]}},"errors":{"type":"array","items":{"type":"object","properties":{"description":{"type":"string"},"event_id":{"type":"string"},"project_id":{"type":"integer"},"project_slug":{"type":"string"},"transaction":{"type":"string"},"event_type":{"enum":["error","occurrence"],"type":"string"},"issue_id":{"type":"integer"},"level":{"type":"string"},"start_timestamp":{"type":"number","format":"double"},"end_timestamp":{"type":"number","format":"double"},"culprit":{"type":"string","nullable":true},"short_id":{"type":"string","nullable":true},"issue_type":{"type":"integer"}},"required":["culprit","description","event_id","event_type","issue_id","issue_type","level","project_id","project_slug","short_id","start_timestamp","transaction"]}},"occurrences":{"type":"array","items":{"type":"object","properties":{"description":{"type":"string"},"event_id":{"type":"string"},"project_id":{"type":"integer"},"project_slug":{"type":"string"},"transaction":{"type":"string"},"event_type":{"enum":["error","occurrence"],"type":"string"},"issue_id":{"type":"integer"},"level":{"type":"string"},"start_timestamp":{"type":"number","format":"double"},"end_timestamp":{"type":"number","format":"double"},"culprit":{"type":"string","nullable":true},"short_id":{"type":"string","nullable":true},"issue_type":{"type":"integer"}},"required":["culprit","description","event_id","event_type","issue_id","issue_type","level","project_id","project_slug","short_id","start_timestamp","transaction"]}},"duration":{"type":"number","format":"double"},"end_timestamp":{"type":"number","format":"double"},"measurements":{"type":"object","additionalProperties":{"type":"number","format":"double"}},"browser_web_vital":{"type":"object","additionalProperties":{"type":"number","format":"double"}},"mobile_app_vital":{"type":"object","additionalProperties":{"type":"number","format":"double"}},"op":{"type":"string"},"name":{"type":"string"},"parent_span_id":{"type":"string","nullable":true},"profile_id":{"type":"string"},"profiler_id":{"type":"string"},"sdk_name":{"type":"string"},"start_timestamp":{"type":"number","format":"double"},"is_transaction":{"type":"boolean"},"transaction_id":{"type":"string"},"additional_attributes":{"type":"object","additionalProperties":{}}},"required":["browser_web_vital","children","description","duration","end_timestamp","errors","event_id","event_type","is_transaction","measurements","mobile_app_vital","name","occurrences","op","parent_span_id","profile_id","profiler_id","project_id","project_slug","sdk_name","start_timestamp","transaction","transaction_id"]},{"type":"object","properties":{"description":{"type":"string"},"event_id":{"type":"string"},"project_id":{"type":"integer"},"project_slug":{"type":"string"},"transaction":{"type":"string"},"event_type":{"enum":["error","occurrence"],"type":"string"},"issue_id":{"type":"integer"},"level":{"type":"string"},"start_timestamp":{"type":"number","format":"double"},"end_timestamp":{"type":"number","format":"double"},"culprit":{"type":"string","nullable":true},"short_id":{"type":"string","nullable":true},"issue_type":{"type":"integer"}},"required":["culprit","description","event_id","event_type","issue_id","issue_type","level","project_id","project_slug","short_id","start_timestamp","transaction"]},{"type":"object","properties":{"description":{"type":"string"},"event_id":{"type":"string"},"project_id":{"type":"integer"},"project_slug":{"type":"string"},"transaction":{"type":"string"},"event_type":{"enum":["uptime_check"],"type":"string"},"children":{"type":"array","items":{"type":"object","description":"Fields shared by every item in a trace. Entries in `children` are full\nspans at runtime; only the shared fields are documented here.","properties":{"description":{"type":"string"},"event_id":{"type":"string"},"project_id":{"type":"integer"},"project_slug":{"type":"string"},"transaction":{"type":"string"}},"required":["description","event_id","project_id","project_slug","transaction"]}},"errors":{"type":"array","items":{"type":"object","properties":{"description":{"type":"string"},"event_id":{"type":"string"},"project_id":{"type":"integer"},"project_slug":{"type":"string"},"transaction":{"type":"string"},"event_type":{"enum":["error","occurrence"],"type":"string"},"issue_id":{"type":"integer"},"level":{"type":"string"},"start_timestamp":{"type":"number","format":"double"},"end_timestamp":{"type":"number","format":"double"},"culprit":{"type":"string","nullable":true},"short_id":{"type":"string","nullable":true},"issue_type":{"type":"integer"}},"required":["culprit","description","event_id","event_type","issue_id","issue_type","level","project_id","project_slug","short_id","start_timestamp","transaction"]}},"occurrences":{"type":"array","items":{"type":"object","properties":{"description":{"type":"string"},"event_id":{"type":"string"},"project_id":{"type":"integer"},"project_slug":{"type":"string"},"transaction":{"type":"string"},"event_type":{"enum":["error","occurrence"],"type":"string"},"issue_id":{"type":"integer"},"level":{"type":"string"},"start_timestamp":{"type":"number","format":"double"},"end_timestamp":{"type":"number","format":"double"},"culprit":{"type":"string","nullable":true},"short_id":{"type":"string","nullable":true},"issue_type":{"type":"integer"}},"required":["culprit","description","event_id","event_type","issue_id","issue_type","level","project_id","project_slug","short_id","start_timestamp","transaction"]}},"transaction_id":{"type":"string"},"op":{"type":"string"},"start_timestamp":{"type":"number","format":"double"},"end_timestamp":{"type":"number","format":"double"},"duration":{"type":"number","format":"double"},"name":{"type":"string"},"region_name":{"type":"string"},"additional_attributes":{"type":"object","additionalProperties":{}}},"required":["additional_attributes","children","description","duration","end_timestamp","errors","event_id","event_type","name","occurrences","op","project_id","project_slug","region_name","start_timestamp","transaction","transaction_id"]}]}},"OrganizationWithProjectsAndTeams":{"type":"object","properties":{"features":{"type":"array","items":{"type":"string"}},"extraOptions":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{}}},"access":{"type":"array","items":{"type":"string"}},"onboardingTasks":{"type":"array","items":{"type":"object","properties":{"task":{"type":"string","nullable":true},"status":{"type":"string"},"completionSeen":{"type":"string","format":"date-time","nullable":true},"dateCompleted":{"type":"string","format":"date-time"},"data":{}},"required":["completionSeen","data","dateCompleted","status","task"]}},"id":{"type":"string"},"slug":{"type":"string"},"status":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"isEarlyAdopter":{"type":"boolean"},"require2FA":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"links":{"type":"object","properties":{"organizationUrl":{"type":"string"},"regionUrl":{"type":"string"}},"required":["organizationUrl","regionUrl"]},"hasAuthProvider":{"type":"boolean"},"allowMemberInvite":{"type":"boolean"},"allowMemberProjectCreation":{"type":"boolean"},"allowSuperuserAccess":{"type":"boolean"},"role":{},"orgRole":{"type":"string"},"targetSampleRate":{"type":"number","format":"double"},"samplingMode":{"type":"string"},"planSampleRate":{"type":"number","format":"double"},"desiredSampleRate":{"type":"number","format":"double"},"experiments":{"type":"object","additionalProperties":{"type":"string"}},"isDefault":{"type":"boolean"},"defaultRole":{"type":"string"},"orgRoleList":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"desc":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"allowed":{"type":"boolean"},"isAllowed":{"type":"boolean"},"isRetired":{"type":"boolean"},"isTeamRolesAllowed":{"type":"boolean"},"is_global":{"type":"boolean"},"isGlobal":{"type":"boolean"},"minimumTeamRole":{"type":"string"}},"required":["allowed","desc","id","isAllowed","isGlobal","isRetired","isTeamRolesAllowed","is_global","minimumTeamRole","name","scopes"]}},"teamRoleList":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"desc":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"allowed":{"type":"boolean"},"isAllowed":{"type":"boolean"},"isRetired":{"type":"boolean"},"isTeamRolesAllowed":{"type":"boolean"},"isMinimumRoleFor":{"type":"string","nullable":true}},"required":["allowed","desc","id","isAllowed","isMinimumRoleFor","isRetired","isTeamRolesAllowed","name","scopes"]}},"openMembership":{"type":"boolean"},"allowSharedIssues":{"type":"boolean"},"enhancedPrivacy":{"type":"boolean"},"dataScrubber":{"type":"boolean"},"dataScrubberDefaults":{"type":"boolean"},"sensitiveFields":{"type":"array","items":{"type":"string"}},"safeFields":{"type":"array","items":{"type":"string"}},"storeCrashReports":{"type":"integer"},"attachmentsRole":{"type":"string"},"debugFilesRole":{"type":"string"},"eventsMemberAdmin":{"type":"boolean"},"alertsMemberWrite":{"type":"boolean"},"scrubIPAddresses":{"type":"boolean"},"scrapeJavaScript":{"type":"boolean"},"allowJoinRequests":{"type":"boolean"},"relayPiiConfig":{"type":"string","nullable":true},"relayDsnEndpoint":{"type":"string","nullable":true},"trustedRelays":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"publicKey":{"type":"string"},"created":{"type":"string","format":"date-time"},"lastModified":{"type":"string","format":"date-time"}}}},"pendingAccessRequests":{"type":"integer"},"hideAiFeatures":{"type":"boolean"},"aggregatedDataConsent":{"type":"boolean"},"isDynamicallySampled":{"type":"boolean"},"issueAlertsThreadFlag":{"type":"boolean"},"metricAlertsThreadFlag":{"type":"boolean"},"requiresSso":{"type":"boolean"},"defaultAutofixAutomationTuning":{"type":"string"},"defaultSeerScannerAutomation":{"type":"boolean"},"enableSeerCoding":{"type":"boolean"},"defaultCodingAgent":{"type":"string"},"defaultCodingAgentIntegrationId":{"type":"string","nullable":true},"defaultAutomatedRunStoppingPoint":{"type":"string"},"autoEnableCodeReview":{"type":"boolean"},"autoOpenPrs":{"type":"boolean"},"defaultCodeReviewTriggers":{"type":"array","items":{"type":"string"}},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time","nullable":true},"isMember":{"type":"boolean"},"teamRole":{"type":"string","nullable":true},"flags":{"type":"object","additionalProperties":{}},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"isPending":{"type":"boolean"},"memberCount":{"type":"integer"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"externalTeams":{"type":"array","items":{"type":"object","properties":{"externalId":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"id":{"type":"string"},"provider":{"type":"string"},"externalName":{"type":"string"},"integrationId":{"type":"string"}},"required":["externalName","id","integrationId","provider"]}},"organization":{"type":"object","properties":{"features":{"type":"array","items":{"type":"string"}},"extraOptions":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{}}},"access":{"type":"array","items":{"type":"string"}},"onboardingTasks":{"type":"array","items":{"type":"object","properties":{"task":{"type":"string","nullable":true},"status":{"type":"string"},"completionSeen":{"type":"string","format":"date-time","nullable":true},"dateCompleted":{"type":"string","format":"date-time"},"data":{}},"required":["completionSeen","data","dateCompleted","status","task"]}},"id":{"type":"string"},"slug":{"type":"string"},"status":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"isEarlyAdopter":{"type":"boolean"},"require2FA":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"links":{"type":"object","properties":{"organizationUrl":{"type":"string"},"regionUrl":{"type":"string"}},"required":["organizationUrl","regionUrl"]},"hasAuthProvider":{"type":"boolean"},"allowMemberInvite":{"type":"boolean"},"allowMemberProjectCreation":{"type":"boolean"},"allowSuperuserAccess":{"type":"boolean"}},"required":["allowMemberInvite","allowMemberProjectCreation","allowSuperuserAccess","avatar","dateCreated","hasAuthProvider","id","isEarlyAdopter","links","name","require2FA","slug","status"]},"projects":{"type":"array","items":{"type":"object","properties":{"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"isInternal":{"type":"boolean"},"isPublic":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"color":{"type":"string"},"status":{"type":"string"}},"required":["access","avatar","color","dateCreated","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","id","isBookmarked","isInternal","isMember","isPublic","name","platform","slug","status"]}}},"required":["access","avatar","dateCreated","flags","hasAccess","id","isMember","isPending","memberCount","name","slug","teamRole"]}},"projects":{"type":"array","items":{"type":"object","properties":{"latestDeploys":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"string"}},"nullable":true},"options":{"type":"object","additionalProperties":{}},"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"team":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"],"nullable":true},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]}},"platforms":{"type":"array","items":{"type":"string"}},"hasUserReports":{"type":"boolean"},"environments":{"type":"array","items":{"type":"string"}},"latestRelease":{"type":"object","properties":{"version":{"type":"string"}},"required":["version"],"nullable":true}},"required":["access","dateCreated","environments","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","hasUserReports","id","isBookmarked","isMember","latestRelease","name","platform","platforms","slug","team","teams"]}}},"required":["aggregatedDataConsent","alertsMemberWrite","allowJoinRequests","allowMemberInvite","allowMemberProjectCreation","allowSharedIssues","allowSuperuserAccess","attachmentsRole","autoEnableCodeReview","autoOpenPrs","avatar","dataScrubber","dataScrubberDefaults","dateCreated","debugFilesRole","defaultAutofixAutomationTuning","defaultAutomatedRunStoppingPoint","defaultCodeReviewTriggers","defaultCodingAgent","defaultCodingAgentIntegrationId","defaultRole","defaultSeerScannerAutomation","enableSeerCoding","enhancedPrivacy","eventsMemberAdmin","experiments","hasAuthProvider","hideAiFeatures","id","isDefault","isDynamicallySampled","isEarlyAdopter","issueAlertsThreadFlag","links","metricAlertsThreadFlag","name","openMembership","orgRoleList","pendingAccessRequests","projects","relayDsnEndpoint","relayPiiConfig","require2FA","requiresSso","safeFields","scrapeJavaScript","scrubIPAddresses","sensitiveFields","slug","status","storeCrashReports","teamRoleList","teams","trustedRelays"]},"OutcomesResponse":{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"},"intervals":{"type":"array","items":{"type":"string"}},"groups":{"type":"array","items":{"type":"object","properties":{"by":{"type":"object","additionalProperties":{}},"totals":{"type":"object","additionalProperties":{}},"series":{"type":"object","additionalProperties":{}}},"required":["by","series","totals"]}}},"required":["end","groups","intervals","start"]},"OutgoingNotificationAction":{"type":"object","properties":{"id":{"type":"integer"},"organizationId":{"type":"integer"},"integrationId":{"type":"integer","nullable":true},"sentryAppId":{"type":"integer","nullable":true},"projects":{"type":"array","items":{"type":"integer"}},"serviceType":{"type":"string","nullable":true},"triggerType":{"type":"string"},"targetType":{"type":"string","nullable":true},"targetIdentifier":{"type":"string","nullable":true},"targetDisplay":{"type":"string","nullable":true}},"required":["id","integrationId","organizationId","projects","sentryAppId","serviceType","targetDisplay","targetIdentifier","targetType","triggerType"]},"PlatformExternalIssueResponse":{"type":"object","properties":{"id":{"type":"string"},"issueId":{"type":"string"},"serviceType":{"type":"string"},"displayName":{"type":"string"},"webUrl":{"type":"string"}},"required":["displayName","id","issueId","serviceType","webUrl"]},"ProjectAdmin":{"type":"object","properties":{"digestsMinDelay":{"type":"integer","maximum":3600,"minimum":60,"description":"Minimum time in seconds to wait before sending an issue digest email."},"digestsMaxDelay":{"type":"integer","maximum":3600,"minimum":60,"description":"Maximum time in seconds to wait before sending an issue digest email."},"securityToken":{"type":"string","description":"Token sent with security reports (CSP, Expect-CT, HPKP) so Sentry can verify their origin.","maxLength":255,"pattern":"^[-a-zA-Z0-9+/=\\s]+$"},"securityTokenHeader":{"type":"string","description":"Name of the header carrying the security token on inbound security reports.","maxLength":64,"pattern":"^[a-zA-Z0-9_\\-]+$"},"isBookmarked":{"type":"boolean","description":"Enables starring the project within the projects tab. Can be updated with **`project:read`** permission."},"autofixAutomationTuning":{"enum":["off","super_low","low","medium","high","always"],"type":"string","description":"How aggressively Seer runs Autofix on new issues. Can be updated with **`project:read`** permission.\n\n* `off`\n* `super_low`\n* `low`\n* `medium`\n* `high`\n* `always`"},"seerScannerAutomation":{"type":"boolean","description":"Let Seer scan new issues automatically. Can be updated with **`project:read`** permission."},"preprodSizeStatusChecksEnabled":{"type":"boolean","description":"Enable preprod size status checks. Can be updated with **`project:read`** permission."},"preprodSizeStatusChecksRules":{"type":"object","additionalProperties":{},"description":"Rules controlling when preprod size status checks fail. Can be updated with **`project:read`** permission."},"preprodSizePrCommentsEnabled":{"type":"boolean","description":"Enable preprod size PR comments. Can be updated with **`project:read`** permission."},"preprodSizePrCommentsRules":{"type":"object","additionalProperties":{},"description":"Rules controlling which preprod size changes are posted as PR comments. Can be updated with **`project:read`** permission."},"preprodSnapshotStatusChecksEnabled":{"type":"boolean","description":"Enable preprod snapshot status checks."},"preprodSnapshotStatusChecksFailOnAdded":{"type":"boolean","description":"Fail the preprod snapshot status check when snapshots are added."},"preprodSnapshotStatusChecksFailOnRemoved":{"type":"boolean","description":"Fail the preprod snapshot status check when snapshots are removed."},"preprodSnapshotStatusChecksFailOnChanged":{"type":"boolean","description":"Fail the preprod snapshot status check when snapshots change."},"preprodSnapshotStatusChecksFailOnRenamed":{"type":"boolean","description":"Fail the preprod snapshot status check when snapshots are renamed."},"preprodSizeEnabledByCustomer":{"type":"boolean","nullable":true,"description":"Enable preprod size analysis. Can be updated with **`project:read`** permission."},"preprodDistributionEnabledByCustomer":{"type":"boolean","nullable":true,"description":"Enable preprod build distribution. Can be updated with **`project:read`** permission."},"preprodDistributionPrCommentsEnabledByCustomer":{"type":"boolean","nullable":true,"description":"Post preprod distribution updates as PR comments. Can be updated with **`project:read`** permission."},"preprodSnapshotPrCommentsEnabled":{"type":"boolean","nullable":true,"description":"Post preprod snapshot changes as PR comments."},"preprodSnapshotPrCommentsPostOnAdded":{"type":"boolean","nullable":true,"description":"Include added snapshots in preprod snapshot PR comments."},"preprodSnapshotPrCommentsPostOnRemoved":{"type":"boolean","nullable":true,"description":"Include removed snapshots in preprod snapshot PR comments."},"preprodSnapshotPrCommentsPostOnChanged":{"type":"boolean","nullable":true,"description":"Include changed snapshots in preprod snapshot PR comments."},"preprodSnapshotPrCommentsPostOnRenamed":{"type":"boolean","nullable":true,"description":"Include renamed snapshots in preprod snapshot PR comments."},"preprodSizeEnabledQuery":{"type":"string","nullable":true,"description":"Query selecting which preprod builds are size-analyzed. Can be updated with **`project:read`** permission."},"preprodDistributionEnabledQuery":{"type":"string","nullable":true,"description":"Query selecting which preprod builds are distributed. Can be updated with **`project:read`** permission."},"name":{"type":"string","description":"The name for the project","maxLength":200},"slug":{"type":"string","description":"Uniquely identifies a project and is used for the interface.","maxLength":100,"pattern":"^(?![0-9]+$)[a-z0-9_\\-]+$"},"platform":{"type":"string","nullable":true,"description":"The platform for the project"},"subjectPrefix":{"type":"string","description":"Custom prefix for emails from this project.","maxLength":200},"subjectTemplate":{"type":"string","description":"The email subject to use (excluding the prefix) for individual alerts. Here are the list of variables you can use:\n- `$title`\n- `$shortID`\n- `$projectID`\n- `$orgID`\n- `${tag:key}` - such as `${tag:environment}` or `${tag:release}`.","maxLength":200},"resolveAge":{"type":"integer","nullable":true,"description":"Automatically resolve an issue if it hasn't been seen for this many hours. Set to `0` to disable auto-resolve."},"highlightContext":{"type":"object","additionalProperties":{},"description":"A JSON mapping of context types to lists of strings for their keys.\nE.g. `{'user': ['id', 'email']}`"},"highlightTags":{"type":"array","items":{"type":"string"},"description":"A list of strings with tag keys to highlight on this project's issues.\nE.g. `['release', 'environment']`"},"verifySSL":{"type":"boolean","description":"Verify SSL certificates when delivering outbound webhooks and service hooks."},"defaultEnvironment":{"type":"string","nullable":true,"description":"Environment selected by default when viewing this project."},"dataScrubber":{"type":"boolean","description":"Remove known sensitive values from events before storing them."},"dataScrubberDefaults":{"type":"boolean","description":"Also scrub Sentry's built-in list of sensitive field names."},"sensitiveFields":{"type":"array","items":{"type":"string"},"description":"Additional field names to scrub from events, beyond the defaults."},"safeFields":{"type":"array","items":{"type":"string"},"description":"Field names to exempt from scrubbing, including the built-in defaults."},"storeCrashReports":{"type":"integer","maximum":100,"minimum":-1,"nullable":true,"description":"Number of native crash report files to store per issue. Use `-1` for unlimited or `0` to store none."},"relayPiiConfig":{"type":"string","nullable":true,"description":"Advanced data scrubbing rules, as a JSON string, applied before events are stored."},"builtinSymbolSources":{"type":"array","items":{"type":"string"},"description":"Identifiers of Sentry-hosted symbol sources to use when symbolicating events."},"symbolSources":{"type":"string","nullable":true,"description":"Custom symbol sources, as a JSON string, to use when symbolicating events."},"enableNativeSourceServerMapping":{"type":"boolean","description":"Apply source server (srcsrv) information from native debug files to symbolicated frames."},"scrubIPAddresses":{"type":"boolean","description":"Discard client IP addresses rather than storing them on events."},"groupingConfig":{"type":"string","nullable":true,"description":"Identifier of the grouping algorithm used to assign events to issues."},"groupingEnhancements":{"type":"string","nullable":true,"description":"Grouping enhancement rules, as a newline-delimited config string, adjusting which stack frames contribute to an issue."},"fingerprintingRules":{"type":"string","nullable":true,"description":"Fingerprinting rules, as a newline-delimited config string, controlling how events are grouped into issues."},"secondaryGroupingConfig":{"type":"string","nullable":true,"description":"Grouping algorithm run alongside the primary one during a grouping migration."},"secondaryGroupingExpiry":{"type":"integer","minimum":1,"nullable":true,"description":"Unix timestamp after which the secondary grouping algorithm stops running."},"scrapeJavaScript":{"type":"boolean","description":"Allow Sentry to fetch source files and source maps from your servers."},"enableAutoReleaseCreation":{"type":"boolean","description":"Automatically create releases from ingested events. When disabled, releases must be created manually (e.g. via the Sentry CLI)."},"allowedDomains":{"type":"array","items":{"type":"string"},"description":"Origins permitted to send events to this project. Use `*` to allow any."},"copy_from_project":{"type":"integer","description":"ID of a project whose settings, teams, and keys should be copied into this one."},"targetSampleRate":{"type":"number","format":"double","maximum":1,"minimum":0,"description":"Target proportion of transactions to retain, from `0` to `1`. Requires manual dynamic sampling mode."},"dynamicSamplingBiases":{"type":"array","items":{"type":"object","properties":{"id":{"enum":["boostEnvironments","boostKeyTransactions","boostLatestRelease","boostLowVolumeTransactions","boostReplayId","ignoreHealthChecks","minimumSampleRate","recalibrationRule"],"type":"string","description":"* `boostEnvironments`\n* `boostKeyTransactions`\n* `boostLatestRelease`\n* `boostLowVolumeTransactions`\n* `boostReplayId`\n* `ignoreHealthChecks`\n* `minimumSampleRate`\n* `recalibrationRule`"},"active":{"type":"boolean","default":false}},"required":["id"]},"description":"Per-bias toggles adjusting which transactions dynamic sampling favors retaining."},"tempestFetchScreenshots":{"type":"boolean","description":"Fetch screenshots attached to console crash reports. Requires the Tempest feature."},"scmSourceContextEnabled":{"type":"boolean","description":"Enable on-demand source context fetching from SCM integrations for stack traces."},"debugFilesRole":{"enum":["member","admin","manager","owner",null],"type":"string","nullable":true,"description":"The role required to download debug information files, ProGuard mappings and source maps. If not set, inherits from organization setting.\n\n* `member` - Member\n* `admin` - Admin\n* `manager` - Manager\n* `owner` - Owner"}},"required":["digestsMaxDelay","digestsMinDelay","securityToken","securityTokenHeader"]},"ProjectCodeOwners":{"type":"object","properties":{"codeMapping":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"projectSlug":{"type":"string"},"repoId":{"type":"string"},"repoName":{"type":"string"},"integrationId":{"type":"string","nullable":true},"provider":{"type":"object","properties":{"key":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"canAdd":{"type":"boolean"},"canDisable":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"aspects":{"type":"object","additionalProperties":{}}},"required":["aspects","canAdd","canDisable","features","key","name","slug"],"nullable":true},"stackRoot":{"type":"string"},"sourceRoot":{"type":"string"},"defaultBranch":{"type":"string","nullable":true},"automaticallyGenerated":{"type":"boolean"},"hasCodeOwner":{"type":"boolean"}},"required":["automaticallyGenerated","defaultBranch","hasCodeOwner","id","integrationId","projectId","projectSlug","provider","repoId","repoName","sourceRoot","stackRoot"]},"ownershipSyntax":{"type":"string"},"errors":{"type":"object","properties":{"missing_user_emails":{"type":"array","items":{"type":"string"}},"missing_external_users":{"type":"array","items":{"type":"string"}},"missing_external_teams":{"type":"array","items":{"type":"string"}},"teams_without_access":{"type":"array","items":{"type":"string"}},"users_without_access":{"type":"array","items":{"type":"string"}}},"required":["missing_external_teams","missing_external_users","missing_user_emails","teams_without_access","users_without_access"]},"schema":{"anyOf":[{"type":"object","properties":{"$version":{"type":"integer"},"rules":{"type":"array","items":{"type":"object","properties":{"matcher":{"type":"object","properties":{"type":{"type":"string"},"pattern":{"type":"string"}},"required":["pattern","type"]},"owners":{"type":"array","items":{"type":"object","description":"Owner as it appears in the API response (after identifier->name rename).","properties":{"type":{"type":"string"},"name":{"type":"string"},"id":{"type":"string"}},"required":["name","type"]}}},"required":["matcher","owners"]}}},"required":["$version","rules"]},{"type":"object","description":"Legacy CODEOWNERS records can have an empty schema before it is built."}]},"codeOwnersUrl":{"type":"string"},"id":{"type":"string"},"raw":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time","nullable":true},"codeMappingId":{"type":"string"},"provider":{"type":"string"}},"required":["codeMappingId","dateCreated","dateSynced","dateUpdated","id","provider","raw"]},"ProjectCodeOwnersCreateRequest":{"type":"object","properties":{"raw":{"type":"string","description":"The raw contents of the CODEOWNERS file."},"codeMappingId":{"type":"string","description":"The ID of the code mapping used to translate repository paths to stack trace paths."}},"required":["codeMappingId","raw"]},"ProjectCodeOwnersList":{"type":"array","items":{"type":"object","properties":{"codeMapping":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"projectSlug":{"type":"string"},"repoId":{"type":"string"},"repoName":{"type":"string"},"integrationId":{"type":"string","nullable":true},"provider":{"type":"object","properties":{"key":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"canAdd":{"type":"boolean"},"canDisable":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"aspects":{"type":"object","additionalProperties":{}}},"required":["aspects","canAdd","canDisable","features","key","name","slug"],"nullable":true},"stackRoot":{"type":"string"},"sourceRoot":{"type":"string"},"defaultBranch":{"type":"string","nullable":true},"automaticallyGenerated":{"type":"boolean"},"hasCodeOwner":{"type":"boolean"}},"required":["automaticallyGenerated","defaultBranch","hasCodeOwner","id","integrationId","projectId","projectSlug","provider","repoId","repoName","sourceRoot","stackRoot"]},"ownershipSyntax":{"type":"string"},"errors":{"type":"object","properties":{"missing_user_emails":{"type":"array","items":{"type":"string"}},"missing_external_users":{"type":"array","items":{"type":"string"}},"missing_external_teams":{"type":"array","items":{"type":"string"}},"teams_without_access":{"type":"array","items":{"type":"string"}},"users_without_access":{"type":"array","items":{"type":"string"}}},"required":["missing_external_teams","missing_external_users","missing_user_emails","teams_without_access","users_without_access"]},"schema":{"anyOf":[{"type":"object","properties":{"$version":{"type":"integer"},"rules":{"type":"array","items":{"type":"object","properties":{"matcher":{"type":"object","properties":{"type":{"type":"string"},"pattern":{"type":"string"}},"required":["pattern","type"]},"owners":{"type":"array","items":{"type":"object","description":"Owner as it appears in the API response (after identifier->name rename).","properties":{"type":{"type":"string"},"name":{"type":"string"},"id":{"type":"string"}},"required":["name","type"]}}},"required":["matcher","owners"]}}},"required":["$version","rules"]},{"type":"object","description":"Legacy CODEOWNERS records can have an empty schema before it is built."}]},"codeOwnersUrl":{"type":"string"},"id":{"type":"string"},"raw":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"dateSynced":{"type":"string","format":"date-time","nullable":true},"codeMappingId":{"type":"string"},"provider":{"type":"string"}},"required":["codeMappingId","dateCreated","dateSynced","dateUpdated","id","provider","raw"]}},"ProjectCodeOwnersUpdateRequest":{"type":"object","properties":{"raw":{"type":"string","description":"The raw contents of the CODEOWNERS file."},"codeMappingId":{"type":"string","description":"The ID of the code mapping used to translate repository paths to stack trace paths."}}},"ProjectEventDetailsResponse":{"type":"object","properties":{"id":{"type":"string"},"groupID":{"type":"string","nullable":true},"eventID":{"type":"string"},"projectID":{"type":"string"},"message":{"type":"string","nullable":true},"title":{"type":"string"},"location":{"type":"string","nullable":true},"user":{"type":"object","properties":{"id":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"username":{"type":"string","nullable":true},"ip_address":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"geo":{"type":"object","additionalProperties":{"type":"string"},"nullable":true},"data":{"type":"object","additionalProperties":{},"nullable":true}},"nullable":true},"tags":{"type":"array","items":{"type":"object","properties":{"query":{"type":"string"},"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}},"platform":{"type":"string"},"dateReceived":{"type":"string","format":"date-time","nullable":true},"contexts":{"type":"object","additionalProperties":{},"nullable":true},"size":{"type":"integer","nullable":true},"entries":{"type":"array","items":{}},"dist":{"type":"string","nullable":true},"sdk":{"type":"object","properties":{"name":{"type":"string","nullable":true},"version":{"type":"string","nullable":true}},"required":["name","version"],"nullable":true},"context":{"type":"object","additionalProperties":{},"nullable":true},"packages":{"type":"object","additionalProperties":{}},"type":{"enum":["default","error","csp","nel","hpkp","expectct","expectstaple","transaction","generic","feedback"],"type":"string"},"metadata":{"type":"object","additionalProperties":{}},"errors":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"data":{"type":"object","additionalProperties":{}}},"required":["data","message","type"]}},"occurrence":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"integer"},"eventId":{"type":"string"},"fingerprint":{"type":"array","items":{"type":"string"}},"issueTitle":{"type":"string"},"subtitle":{"type":"string"},"resourceId":{"type":"string","nullable":true},"evidenceData":{"type":"object","additionalProperties":{}},"evidenceDisplay":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"important":{"type":"boolean"}},"required":["important","name","value"]}},"type":{"type":"integer"},"detectionTime":{"type":"number","format":"double"},"level":{"type":"string","nullable":true},"culprit":{"type":"string","nullable":true},"assignee":{"type":"string","nullable":true},"priority":{"type":"integer","nullable":true}},"required":["assignee","culprit","detectionTime","eventId","evidenceData","evidenceDisplay","fingerprint","id","issueTitle","level","priority","projectId","resourceId","subtitle","type"],"nullable":true},"_meta":{"type":"object","additionalProperties":{}},"crashFile":{"type":"string","nullable":true},"culprit":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"fingerprints":{"type":"array","items":{"type":"string"}},"groupingConfig":{"type":"object","properties":{"id":{"type":"string"},"enhancements":{"type":"string"}},"required":["enhancements","id"]},"startTimestamp":{"type":"number","format":"double"},"endTimestamp":{"type":"number","format":"double"},"measurements":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"type":"number","format":"double"},"unit":{"type":"string","nullable":true}},"required":["unit","value"]},"nullable":true},"breakdowns":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"object","properties":{"value":{"type":"number","format":"double"},"unit":{"type":"string","nullable":true}},"required":["unit","value"]}},"nullable":true},"release":{"type":"object","properties":{"id":{"type":"integer"},"commitCount":{"type":"integer"},"data":{"type":"object","additionalProperties":{}},"dateCreated":{"type":"string","format":"date-time"},"dateReleased":{"type":"string","format":"date-time","nullable":true},"deployCount":{"type":"integer"},"ref":{"type":"string","nullable":true},"lastCommit":{"type":"object","additionalProperties":{},"nullable":true},"lastDeploy":{"type":"object","properties":{"dateStarted":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"id":{"type":"string"},"environment":{"type":"string"},"dateFinished":{"type":"string"},"name":{"type":"string"}},"required":["dateFinished","environment","id","name"],"nullable":true},"status":{"type":"string"},"url":{"type":"string","nullable":true},"userAgent":{"type":"string","nullable":true},"version":{"type":"string","nullable":true},"versionInfo":{"type":"object","properties":{"description":{"type":"string"},"package":{"type":"string","nullable":true},"version":{"type":"object","additionalProperties":{}},"buildHash":{"type":"string","nullable":true}},"required":["buildHash","package","version"],"nullable":true}},"nullable":true},"userReport":{"type":"object","properties":{"id":{"type":"string"},"eventID":{"type":"string"},"name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"comments":{"type":"string"},"dateCreated":{"type":"string"},"user":{"type":"object","properties":{"id":{"type":"string"},"username":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"ipAddress":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}},"required":["avatarUrl","email","id","ipAddress","name","username"],"nullable":true},"event":{"type":"object","properties":{"id":{"type":"string"},"eventID":{"type":"string"}},"required":["eventID","id"]}},"required":["comments","dateCreated","email","event","eventID","id","name","user"],"nullable":true},"sdkUpdates":{"type":"array","items":{"type":"object","additionalProperties":{}}},"resolvedWith":{"type":"array","items":{"type":"string"}},"nextEventID":{"type":"string","nullable":true},"previousEventID":{"type":"string","nullable":true}},"required":["_meta","context","contexts","dateReceived","dist","entries","errors","eventID","groupID","id","location","message","metadata","nextEventID","occurrence","packages","platform","previousEventID","projectID","release","resolvedWith","sdk","sdkUpdates","size","tags","title","type","user","userReport"]},"ProjectEventsResponseDict":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"event.type":{"type":"string"},"groupID":{"type":"string","nullable":true},"eventID":{"type":"string"},"projectID":{"type":"string"},"message":{"type":"string"},"title":{"type":"string"},"location":{"type":"string","nullable":true},"culprit":{"type":"string","nullable":true},"user":{"type":"object","properties":{"id":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"username":{"type":"string","nullable":true},"ip_address":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"geo":{"type":"object","additionalProperties":{"type":"string"},"nullable":true},"data":{"type":"object","additionalProperties":{},"nullable":true}},"nullable":true},"tags":{"type":"array","items":{"type":"object","properties":{"query":{"type":"string"},"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]}},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"crashFile":{"type":"string","nullable":true},"metadata":{"type":"object","additionalProperties":{}}},"required":["crashFile","culprit","dateCreated","event.type","eventID","groupID","id","location","message","metadata","platform","projectID","tags","title","user"]}},"ProjectFilterResponse":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"active":{"anyOf":[{"type":"boolean"},{"type":"array","items":{"type":"string"}}]}},"required":["active","id"]}},"ProjectKey":{"type":"object","description":"This represents a Sentry Project Client Key.","properties":{"id":{"type":"string"},"name":{"type":"string"},"label":{"type":"string"},"public":{"type":"string","nullable":true},"secret":{"type":"string","nullable":true},"projectId":{"type":"integer"},"isActive":{"type":"boolean"},"rateLimit":{"type":"object","properties":{"window":{"type":"integer"},"count":{"type":"integer"}},"required":["count","window"],"nullable":true},"dsn":{"type":"object","properties":{"secret":{"type":"string"},"public":{"type":"string"},"csp":{"type":"string"},"security":{"type":"string"},"minidump":{"type":"string"},"nel":{"type":"string"},"unreal":{"type":"string"},"crons":{"type":"string"},"cdn":{"type":"string"},"playstation":{"type":"string"},"integration":{"type":"string"},"otlp_traces":{"type":"string"},"otlp_logs":{"type":"string"}},"required":["cdn","crons","csp","integration","minidump","nel","otlp_logs","otlp_traces","playstation","public","secret","security","unreal"]},"browserSdkVersion":{"type":"string"},"browserSdk":{"type":"object","properties":{"choices":{"type":"array","items":{"type":"array","items":{"type":"string"}}}},"required":["choices"]},"dateCreated":{"type":"string","format":"date-time","nullable":true},"dynamicSdkLoaderOptions":{"type":"object","properties":{"hasReplay":{"type":"boolean"},"hasPerformance":{"type":"boolean"},"hasDebug":{"type":"boolean"},"hasFeedback":{"type":"boolean"},"hasLogsAndMetrics":{"type":"boolean"}},"required":["hasDebug","hasFeedback","hasLogsAndMetrics","hasPerformance","hasReplay"]},"useCase":{"type":"string"}},"required":["browserSdk","browserSdkVersion","dateCreated","dsn","dynamicSdkLoaderOptions","id","isActive","label","name","projectId","public","rateLimit","secret"]},"ProjectKeyPost":{"type":"object","properties":{"name":{"type":"string","nullable":true,"description":"The optional name of the key. If not provided it will be automatically generated.","maxLength":64},"rateLimit":{"type":"object","description":"Applies a rate limit to cap the number of errors accepted during a given time window. To\ndisable entirely set `rateLimit` to null.\n```json\n{\n \"rateLimit\": {\n \"window\": 7200, // time in seconds\n \"count\": 1000 // error cap\n }\n}\n```","properties":{"count":{"type":"integer","minimum":0,"nullable":true},"window":{"type":"integer","maximum":86400,"minimum":0,"nullable":true}}},"useCase":{"enum":["user","profiling","tempest","demo"],"type":"string","description":"* `user`\n* `profiling`\n* `tempest`\n* `demo`","default":"user"}}},"ProjectOwnership":{"type":"object","properties":{"schema":{"type":"object","properties":{"$version":{"type":"integer"},"rules":{"type":"array","items":{"type":"object","properties":{"matcher":{"type":"object","properties":{"type":{"type":"string"},"pattern":{"type":"string"}},"required":["pattern","type"]},"owners":{"type":"array","items":{"type":"object","description":"Owner as it appears in the API response (after identifier->name rename).","properties":{"type":{"type":"string"},"name":{"type":"string"},"id":{"type":"string"}},"required":["name","type"]}}},"required":["matcher","owners"]}}},"required":["$version","rules"],"nullable":true},"raw":{"type":"string"},"fallthrough":{"type":"boolean"},"dateCreated":{"type":"string","format":"date-time"},"lastUpdated":{"type":"string","format":"date-time"},"isActive":{"type":"boolean"},"autoAssignment":{"type":"string"},"codeownersAutoSync":{"type":"boolean"}},"required":["autoAssignment","codeownersAutoSync","dateCreated","fallthrough","isActive","lastUpdated","raw"]},"ProjectOwnershipRequest":{"type":"object","properties":{"raw":{"type":"string","description":"Raw input for ownership configuration. See the [Ownership Rules Documentation](/product/issues/ownership-rules/) to learn more."},"fallthrough":{"type":"boolean","description":"A boolean determining who to assign ownership to when an ownership rule has no match. If set to `True`, all project members are made owners. Otherwise, no owners are set."},"autoAssignment":{"type":"string","description":"Auto-assignment settings. The available options are:\n- Auto Assign to Issue Owner\n- Auto Assign to Suspect Commits\n- Turn off Auto-Assignment"},"codeownersAutoSync":{"type":"boolean","default":true,"description":"Set to `True` to sync issue owners with CODEOWNERS updates in a release."}}},"ProjectPost":{"type":"object","properties":{"name":{"type":"string","description":"The name for the project.","maxLength":50},"slug":{"type":"string","nullable":true,"description":"Uniquely identifies a project and is used for the interface.\n If not provided, it is automatically generated from the name.","maxLength":100,"pattern":"^(?![0-9]+$)[a-z0-9_\\-]+$"},"platform":{"type":"string","nullable":true,"description":"The platform for the project."},"default_rules":{"type":"boolean","description":"\nDefaults to true where the behavior is to alert the user on every new\nissue. Setting this to false will turn this off and the user must create\ntheir own alerts to be notified of new issues.\n "}},"required":["name"]},"ProjectProfilingProfileResponse":{"type":"object","additionalProperties":{}},"ProjectRepoLinkRequest":{"type":"object","properties":{"repositoryId":{"type":"integer","description":"The ID of the repository to link."}},"required":["repositoryId"]},"ProjectRepoLinkResponse":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"repositoryId":{"type":"string"},"source":{"type":"string"},"created":{"type":"boolean"}},"required":["created","id","projectId","repositoryId","source"]},"ProjectRepoListResponse":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"integrationId":{"type":"string","nullable":true},"externalId":{"type":"string","nullable":true},"projectId":{"type":"string"},"repositoryId":{"type":"string"},"repoName":{"type":"string"},"source":{"type":"string"},"providerKey":{"type":"string","nullable":true},"mappingCount":{"type":"integer"}},"required":["externalId","id","integrationId","projectId","providerKey","repoName","repositoryId","source"]}},"ProjectSeerRepositoriesResponse":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"repositoryId":{"type":"string"},"organizationId":{"type":"string"},"provider":{"type":"string"},"owner":{"type":"string"},"name":{"type":"string"},"externalId":{"type":"string"},"integrationId":{"type":"string","nullable":true},"branchName":{"type":"string","nullable":true},"branchOverrides":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"tagName":{"type":"string"},"tagValue":{"type":"string"},"branchName":{"type":"string"}},"required":["branchName","id","tagName","tagValue"]}},"instructions":{"type":"string","nullable":true}},"required":["branchName","branchOverrides","externalId","id","instructions","integrationId","name","organizationId","owner","provider","repositoryId"]}},"ProjectSizeStatusCheckRulesResponse":{"type":"object","properties":{"enabled":{"type":"boolean"},"rules":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"metric":{"enum":["install_size","download_size"],"type":"string"},"measurement":{"enum":["absolute","absolute_diff","relative_diff"],"type":"string"},"value":{"type":"string"},"filterQuery":{"type":"string"},"filters":{"type":"array","items":{"type":"object","properties":{"key":{"enum":["app_id","build_configuration_name","git_head_ref","platform_name"],"type":"string"},"conditions":{"type":"array","items":{"type":"object","properties":{"operator":{"enum":["contains","endsWith","equals","in","matches","notContains","notEndsWith","notEquals","notIn","notMatches","notStartsWith","startsWith"],"type":"string"},"values":{"type":"array","items":{"type":"string"}}},"required":["operator","values"]}}},"required":["conditions","key"]},"nullable":true},"artifactType":{"enum":["main_artifact","watch_artifact","android_dynamic_feature_artifact","app_clip_artifact","all_artifacts"],"type":"string"}},"required":["artifactType","filterQuery","filters","id","measurement","metric","value"]}}},"required":["enabled","rules"]},"ProjectSnapshotStatusCheckRulesResponse":{"type":"object","properties":{"enabled":{"type":"boolean"},"rules":{"type":"object","properties":{"failOnAdded":{"type":"boolean"},"failOnRemoved":{"type":"boolean"},"failOnChanged":{"type":"boolean"},"failOnRenamed":{"type":"boolean"}},"required":["failOnAdded","failOnChanged","failOnRemoved","failOnRenamed"]}},"required":["enabled","rules"]},"ProjectStats":{"type":"array","items":{"type":"array","items":{"type":"integer"},"minLength":2,"maxLength":2}},"ProjectSummary":{"type":"object","properties":{"latestDeploys":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"string"}},"nullable":true},"options":{"type":"object","additionalProperties":{}},"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"team":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"],"nullable":true},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]}},"platforms":{"type":"array","items":{"type":"string"}},"hasUserReports":{"type":"boolean"},"environments":{"type":"array","items":{"type":"string"}},"latestRelease":{"type":"object","properties":{"version":{"type":"string"}},"required":["version"],"nullable":true}},"required":["access","dateCreated","environments","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","hasUserReports","id","isBookmarked","isMember","latestRelease","name","platform","platforms","slug","team","teams"]},"ProjectTeamsResponse":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"dateCreated":{"type":"string","format":"date-time","nullable":true},"isMember":{"type":"boolean"},"teamRole":{"type":"string","nullable":true},"flags":{"type":"object","additionalProperties":{}},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"isPending":{"type":"boolean"},"memberCount":{"type":"integer"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}}},"required":["access","avatar","dateCreated","flags","hasAccess","id","isMember","isPending","memberCount","name","slug","teamRole"]}},"ProjectWithTeam":{"type":"object","properties":{"stats":{},"transactionStats":{},"sessionStats":{},"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"platform":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"isBookmarked":{"type":"boolean"},"isMember":{"type":"boolean"},"features":{"type":"array","items":{"type":"string"}},"firstEvent":{"type":"string","format":"date-time","nullable":true},"firstTransactionEvent":{"type":"boolean"},"access":{"type":"array","items":{"type":"string"}},"hasAccess":{"type":"boolean"},"hasFeedbacks":{"type":"boolean"},"hasFlags":{"type":"boolean"},"hasMinifiedStackTrace":{"type":"boolean"},"hasMonitors":{"type":"boolean"},"hasNewFeedbacks":{"type":"boolean"},"hasProfiles":{"type":"boolean"},"hasReplays":{"type":"boolean"},"hasSessions":{"type":"boolean"},"hasInsightsHttp":{"type":"boolean"},"hasInsightsDb":{"type":"boolean"},"hasInsightsAssets":{"type":"boolean"},"hasInsightsAppStart":{"type":"boolean"},"hasInsightsScreenLoad":{"type":"boolean"},"hasInsightsVitals":{"type":"boolean"},"hasInsightsCaches":{"type":"boolean"},"hasInsightsQueues":{"type":"boolean"},"hasInsightsAgentMonitoring":{"type":"boolean"},"hasInsightsMCP":{"type":"boolean"},"hasLogs":{"type":"boolean"},"hasTraceMetrics":{"type":"boolean"},"isInternal":{"type":"boolean"},"isPublic":{"type":"boolean"},"avatar":{"type":"object","properties":{"avatarType":{"type":"string"},"avatarUuid":{"type":"string","nullable":true},"avatarUrl":{"type":"string","nullable":true}}},"color":{"type":"string"},"status":{"type":"string"},"team":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]}}},"required":["access","avatar","color","dateCreated","features","firstEvent","firstTransactionEvent","hasAccess","hasFeedbacks","hasFlags","hasInsightsAgentMonitoring","hasInsightsAppStart","hasInsightsAssets","hasInsightsCaches","hasInsightsDb","hasInsightsHttp","hasInsightsMCP","hasInsightsQueues","hasInsightsScreenLoad","hasInsightsVitals","hasLogs","hasMinifiedStackTrace","hasMonitors","hasNewFeedbacks","hasProfiles","hasReplays","hasSessions","hasTraceMetrics","id","isBookmarked","isInternal","isMember","isPublic","name","platform","slug","status","teams"]},"RateLimit":{"type":"object","description":"Applies a rate limit to cap the number of errors accepted during a given time window. To\ndisable entirely set `rateLimit` to null.\n```json\n{\n \"rateLimit\": {\n \"window\": 7200, // time in seconds\n \"count\": 1000 // error cap\n }\n}\n```","properties":{"count":{"type":"integer","minimum":0,"nullable":true},"window":{"type":"integer","maximum":86400,"minimum":0,"nullable":true}}},"ReleaseFile":{"type":"object","properties":{"name":{"type":"string","description":"The new name (full path) of the file.","maxLength":200}},"required":["name"]},"ReleaseFileResponse":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"dist":{"type":"string","nullable":true},"headers":{"type":"object","additionalProperties":{}},"size":{"type":"integer"},"sha1":{"type":"string"},"dateCreated":{"type":"string","format":"date-time"}},"required":["dateCreated","dist","headers","id","name","sha1","size"]},"ReleaseFileUpload":{"type":"object","description":"Documents the multipart/form-data body of the release file upload endpoints.\n\nThe endpoints read the upload directly off ``request.data``; this serializer\nexists to describe the request body in the OpenAPI schema.","properties":{"file":{"type":"string","format":"uri","description":"The multipart-encoded file contents to upload."},"name":{"type":"string","description":"The name (full path) the file will be referenced as, e.g. the full web URI of a JavaScript file. Defaults to the uploaded file's name."},"dist":{"type":"string","description":"The name of the distribution to associate the file with."},"header":{"type":"array","items":{"type":"string"},"description":"Headers to attach to the file, each formatted as a `\"key:value\"` string (for example, to define a content type). May be supplied multiple times."}},"required":["file"]},"ReleaseHeadCommit":{"type":"object","properties":{"commit":{"type":"string"},"repository":{"type":"string","maxLength":200},"previousCommit":{"type":"string","nullable":true,"maxLength":64}},"required":["commit","repository"]},"ReleaseHeadCommitSerializerDeprecated":{"type":"object","properties":{"currentId":{"type":"string","maxLength":64},"repository":{"type":"string","maxLength":64},"previousId":{"type":"string","nullable":true,"maxLength":64}},"required":["currentId","repository"]},"ReleaseSerializerWithProjects":{"type":"object","properties":{"version":{"type":"string","description":"A version identifier for this release. Can be a version number, a commit hash, and so on.","maxLength":200},"projects":{"type":"array","items":{"type":"string"},"description":"A list of project slugs that are involved in this release."},"ref":{"type":"string","nullable":true,"description":"An optional commit reference. This is useful if a tagged version has been provided.","maxLength":200},"url":{"type":"string","format":"uri","nullable":true,"description":"A URL that points to the release. For instance, this can be the path to an online interface to the source code, such as a GitHub URL."},"dateReleased":{"type":"string","format":"date-time","nullable":true,"description":"An optional date that indicates when the release went live. If not provided the current time is used."},"commits":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":64},"repository":{"type":"string","nullable":true,"maxLength":64},"message":{"type":"string","nullable":true},"author_name":{"type":"string","nullable":true,"maxLength":128},"author_email":{"type":"string","nullable":true,"maxLength":200},"timestamp":{"type":"string","format":"date-time","nullable":true},"patch_set":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","maxLength":510},"type":{"type":"string","maxLength":1}},"required":["path","type"]},"nullable":true}},"required":["id"]},"description":"An optional list of commit data to be associated. Very long lists are truncated to the most recent commits."},"status":{"type":"string","description":"The status of the release. Can be `open` or `archived`."},"owner":{"type":"string","description":"The username of the user to set as the release owner."},"headCommits":{"type":"array","items":{"type":"object","properties":{"currentId":{"type":"string","maxLength":64},"repository":{"type":"string","maxLength":64},"previousId":{"type":"string","nullable":true,"maxLength":64}},"required":["currentId","repository"]},"description":"(Deprecated) Use `refs` instead. An optional list of head commits to associate with the release, one per repository."},"refs":{"type":"array","items":{"type":"object","properties":{"commit":{"type":"string"},"repository":{"type":"string","maxLength":200},"previousCommit":{"type":"string","nullable":true,"maxLength":64}},"required":["commit","repository"]},"description":"An optional list of commit references, one per repository, used to associate commits with the release."}},"required":["projects","version"]},"ReleaseThresholdStatusResponse":{"type":"object","additionalProperties":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"date_added":{"type":"string","format":"date-time"},"environment":{"type":"object","additionalProperties":{},"nullable":true},"project":{"type":"object","additionalProperties":{}},"release":{"type":"string"},"threshold_type":{"enum":["total_error_count","new_issue_count","unhandled_issue_count","regressed_issue_count","failure_rate","crash_free_session_rate","crash_free_user_rate"],"type":"string"},"trigger_type":{"enum":["over","under"],"type":"string"},"value":{"type":"integer"},"window_in_seconds":{"type":"integer"},"end":{"type":"string","format":"date-time"},"is_healthy":{"type":"boolean"},"key":{"type":"string"},"project_slug":{"type":"string"},"project_id":{"type":"integer"},"start":{"type":"string","format":"date-time"},"metric_value":{"anyOf":[{"type":"integer"},{"type":"number","format":"double"},{"type":"object","nullable":true}]}},"required":["end","is_healthy","key","metric_value","project_id","project_slug","start"]}}},"ReplayCounts":{"type":"object","additionalProperties":{"type":"integer"}},"ReplayDeletionJobCreate":{"type":"object","properties":{"data":{"type":"object","properties":{"rangeStart":{"type":"string","format":"date-time"},"rangeEnd":{"type":"string","format":"date-time"},"environments":{"type":"array","items":{"type":"string"}},"query":{"type":"string","nullable":true}},"required":["environments","query","rangeEnd","rangeStart"]}},"required":["data"]},"ReplayDeletionJobCreateData":{"type":"object","properties":{"rangeStart":{"type":"string","format":"date-time"},"rangeEnd":{"type":"string","format":"date-time"},"environments":{"type":"array","items":{"type":"string"}},"query":{"type":"string","nullable":true}},"required":["environments","query","rangeEnd","rangeStart"]},"RepositoryProjectPathConfig":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"repository_id":{"type":"integer","description":"The ID of a repository belonging to the installed integration."},"project_id":{"type":"integer","description":"The ID of the project to associate with the code mapping."},"stack_root":{"type":"string","description":"The path prefix to replace in stack trace filenames.","pattern":"^[^\\s'\\\"]+$"},"source_root":{"type":"string","description":"The repository path prefix to substitute for the stack trace prefix.","pattern":"^[^\\s'\\\"]+$"},"default_branch":{"type":"string","description":"The default branch to use when resolving source files. May be empty for Perforce.","pattern":"^(^(?![\\/]))([\\w\\.\\/-]+)(?= 10.0.0.\n```json\n{\n \"dynamicSdkLoaderOptions\": {\n \"hasReplay\": true,\n \"hasPerformance\": true,\n \"hasDebug\": true,\n \"hasFeedback\": true,\n \"hasLogsAndMetrics\": true\n }\n}\n```","properties":{"hasReplay":{"type":"boolean"},"hasPerformance":{"type":"boolean"},"hasDebug":{"type":"boolean"},"hasFeedback":{"type":"boolean"},"hasLogsAndMetrics":{"type":"boolean"}}}}},"UpdateOrgMemberRoles":{"type":"object","properties":{"orgRole":{"enum":["billing","member","manager","owner","admin"],"type":"string","description":"The organization role of the member. The options are:\n\n* `billing` - Can manage payment and compliance details.\n* `member` - Can view and act on events, as well as view most other data within the organization.\n* `manager` - Has full management access to all teams and projects. Can also manage\n the organization's membership.\n* `owner` - Has unrestricted access to the organization, its data, and its\n settings. Can add, modify, and delete projects and members, as well as\n make billing and plan changes.\n* `admin` - Can edit global integrations, manage projects, and add/remove teams.\n They automatically assume the Team Admin role for teams they join.\n Note: This role can no longer be assigned in Business and Enterprise plans. Use `TeamRoles` instead.\n "},"teamRoles":{"type":"array","items":{"type":"object","additionalProperties":{}},"nullable":true,"description":"\nConfigures the team role of the member. The two roles are:\n- `contributor` - Can view and act on issues. Depending on organization settings, they can also add team members.\n- `admin` - Has full management access to their team's membership and projects.\n```json\n{\n \"teamRoles\": [\n {\n \"teamSlug\": \"ancient-gabelers\",\n \"role\": \"admin\"\n },\n {\n \"teamSlug\": \"powerful-abolitionist\",\n \"role\": \"contributor\"\n }\n ]\n}\n```\n"}}},"WidgetLayout":{"type":"object","description":"Widget grid layout position and dimensions.\n\nThe dashboard uses a 6-column grid. Required keys: x, y, w, h, minH.\nConstraints: x (0-5), y (>= 0), w (1-6), h (>= 1), minH (>= 1), and x + w <= 6.","properties":{"x":{"type":"integer","maximum":5,"minimum":0,"description":"Column position (0-indexed)."},"y":{"type":"integer","minimum":0,"description":"Row position (0-indexed)."},"w":{"type":"integer","maximum":6,"minimum":1,"description":"Width in grid columns (1-6)."},"h":{"type":"integer","minimum":1,"description":"Height in grid rows."},"min_h":{"type":"integer","minimum":1,"description":"Minimum height in grid rows."}},"required":["h","min_h","w","x","y"]},"Workflow":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"organizationId":{"type":"string"},"createdBy":{"type":"string","nullable":true},"dateCreated":{"type":"string","format":"date-time"},"dateUpdated":{"type":"string","format":"date-time"},"triggers":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"logicType":{"type":"string"},"conditions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"comparison":{"anyOf":[{"type":"boolean"},{"type":"integer"}]},"conditionResult":{"type":"boolean"}},"required":["comparison","conditionResult","id","type"]}},{"type":"array","items":{}}]},"actions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"integrationId":{"type":"string","nullable":true},"data":{"type":"object","additionalProperties":{"type":"string"}},"config":{"type":"object","additionalProperties":{}},"status":{"type":"string"}}}},{"type":"array","items":{}}]}},"nullable":true},"actionFilters":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"organizationId":{"type":"string"},"logicType":{"type":"string"},"conditions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"comparison":{"anyOf":[{"type":"boolean"},{"type":"integer"}]},"conditionResult":{"type":"boolean"}},"required":["comparison","conditionResult","id","type"]}},{"type":"array","items":{}}]},"actions":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"integrationId":{"type":"string","nullable":true},"data":{"type":"object","additionalProperties":{"type":"string"}},"config":{"type":"object","additionalProperties":{}},"status":{"type":"string"}}}},{"type":"array","items":{}}]}}},"nullable":true},"environment":{"type":"string","nullable":true},"config":{"type":"object","additionalProperties":{}},"detectorIds":{"type":"array","items":{"type":"string"},"nullable":true},"enabled":{"type":"boolean"},"lastTriggered":{"type":"string","format":"date-time","nullable":true},"owner":{"type":"string","nullable":true}},"required":["actionFilters","config","createdBy","dateCreated","dateUpdated","detectorIds","enabled","environment","id","lastTriggered","name","organizationId","owner","triggers"]},"WorkflowValidator":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"name":{"type":"string","description":"The name of the alert","maxLength":256},"id":{"type":"string","description":"The ID of the existing alert"},"enabled":{"type":"boolean","default":true,"description":"Whether the alert is enabled or disabled"},"detector_ids":{"type":"array","items":{"type":"integer"},"description":"The IDs of the monitors to connect this alert to. Use 'Fetch an Organization's Monitors' to find the IDs."},"config":{"type":"object","additionalProperties":{},"description":"\n Typically the frequency at which the alert will fire, in minutes.\n\n - `0`: 0 minutes\n - `5`: 5 minutes\n - `10`: 10 minutes\n - `30`: 30 minutes\n - `60`: 1 hour\n - `180`: 3 hours\n - `720`: 12 hours\n - `1440`: 24 hours\n\n ```json\n {\n \"frequency\": 60\n }\n ```\n "},"environment":{"type":"string","nullable":true,"description":"The name of the environment for the alert to evaluate in"},"triggers":{"allOf":[{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"id":{"type":"integer"},"logic_type":{"enum":["any","any-short","all","none"],"type":"string","description":"* `any`\n* `any-short`\n* `all`\n* `none`"},"conditions":{"type":"array","items":{}}},"required":["logic_type"]}],"description":"The conditions on which the alert will trigger. See available options below.\n ```json\n {\n \"triggers\": {\n \"organizationId\": \"1\",\n \"logicType\": \"any-short\",\n \"conditions\": [\n {\n \"type\": \"first_seen_event\",\n \"comparison\": true,\n \"conditionResult\": true\n },\n {\n \"type\": \"issue_resolved_trigger\",\n \"comparison\": true,\n \"conditionResult\": true\n },\n {\n \"type\": \"reappeared_event\",\n \"comparison\": true,\n \"conditionResult\": true\n },\n {\n \"type\": \"regression_event\",\n \"comparison\": true,\n \"conditionResult\": true\n },\n {\n \"type\": \"seer_activity_trigger\",\n \"comparison\": [\n \"rca_completed\",\n \"solution_completed\",\n \"coding_completed\",\n \"pr_ready_for_review\"\n ],\n \"conditionResult\": true\n }\n ]\n }\n }\n ```\n "},"action_filters":{"type":"array","items":{"type":"object","description":"Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.","properties":{"id":{"type":"integer"},"logic_type":{"enum":["any","any-short","all","none"],"type":"string","description":"* `any`\n* `any-short`\n* `all`\n* `none`"},"conditions":{"type":"array","items":{}},"actions":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"required":["actions","logic_type"]},"description":"The filters to run before the action will fire and the action(s) to fire.\n\n `logicType` can be one of `any-short`, `all`, or `none`.\n\n Below is a basic example. See below for all other options.\n\n ```json\n \"actionFilters\": [\n {\n \"logicType\": \"any\",\n \"conditions\": [\n {\n \"type\": \"level\",\n \"comparison\": {\n \"level\": 50,\n \"match\": \"eq\"\n },\n \"conditionResult\": true\n }\n ],\n \"actions\": [\n {\n \"id\": \"123\",\n \"type\": \"email\",\n \"integrationId\": null,\n \"data\": {},\n \"config\": {\n \"targetType\": \"user\",\n \"targetDisplay\": null,\n \"targetIdentifier\": \"56789\"\n },\n \"status\": \"active\"\n }\n ]\n }\n ]\n ```\n\n ## Conditions\n\n **Issue Age**\n - `time`: One of `minute`, `hour`, `day`, or `week`.\n - `value`: A positive integer.\n - `comparisonType`: One of `older` or `newer`.\n ```json\n {\n \"type\": \"age_comparison\",\n \"comparison\": {\n \"time\": \"minute\",\n \"value\": 10,\n \"comparisonType\": \"older\"\n },\n \"conditionResult\": true\n }\n\n ```\n\n **Issue Assignment**\n - `targetType`: Who the issue is assigned to\n - `Unassigned`: Unassigned\n - `Member`: Assigned to a user\n - `Team`: Assigned to a team\n - `targetIdentifier`: The ID of the user or team from the `targetType`. Enter \"\" if `targetType` is `Unassigned`.\n ```json\n {\n \"type\": \"assigned_to\",\n \"comparison\": {\n \"targetType\": \"Member\",\n \"targetIdentifier\": 123456\n },\n \"conditionResult\": true\n }\n ```\n\n **Issue Category**\n - `value`: The issue category to filter to.\n - `1`: Error issues\n - `6`: Feedback issues\n - `10`: Outage issues\n - `11`: Metric issues\n - `12`: DB Query issues\n - `13`: HTTP Client issues\n - `14`: Front end issues\n - `15`: Mobile issues\n - `17`: Preprod issues\n - `19`: Configuration issues\n ```json\n {\n \"type\": \"issue_category\",\n \"comparison\": {\n \"value\": 1\n },\n \"conditionResult\": true\n }\n ```\n\n **Issue Frequency**\n - `value`: A positive integer representing how many times the issue has to happen before the alert will fire.\n ```json\n {\n \"type\": \"issue_occurrences\",\n \"comparison\": {\n \"value\": 10\n },\n \"conditionResult\": true\n }\n ```\n\n **De-escalation**\n - `comparison`: The priority threshold the issue must de-escalate below.\n - `75`: High priority\n - `50`: Medium priority\n - `25`: Low priority\n ```json\n {\n \"type\": \"issue_priority_deescalating\",\n \"comparison\": 75,\n \"conditionResult\": true\n }\n ```\n\n **Issue Priority**\n - `comparison`: The priority the issue must be for the alert to fire.\n - `75`: High priority\n - `50`: Medium priority\n - `25`: Low priority\n ```json\n {\n \"type\": \"issue_priority_greater_or_equal\",\n \"comparison\": 75,\n \"conditionResult\": true\n }\n ```\n\n **Number of Users Affected**\n - `value`: A positive integer representing the number of users that must be affected before the alert will fire.\n - `filters`: A list of additional sub-filters to evaluate before the alert will fire.\n - `interval`: The time period in which to evaluate the value. e.g. Number of users affected by an issue is more than `value` in `interval`.\n - `1m`: 1 minute\n - `5m`: 5 minutes\n - `15m`: 15 minutes\n - `1h`: 1 hour\n - `1d`: 1 day\n - `1w`: 1 week\n - `30d`: 30 days\n ```json\n {\n \"type\": \"event_unique_user_frequency_count\",\n \"comparison\": {\n \"value\": 100,\n \"filters\": [{\"key\": \"foo\", \"match\": \"eq\", \"value\": \"bar\"}],\n \"interval\": \"1h\"\n },\n \"conditionResult\": true\n }\n ```\n\n **Number of Events**\n - `value`: A positive integer representing the number of events in an issue that must come in before the alert will fire\n - `interval`: The time period in which to evaluate the value. e.g. Number of events in an issue is more than `value` in `interval`.\n - `1m`: 1 minute\n - `5m`: 5 minutes\n - `15m`: 15 minutes\n - `1h`: 1 hour\n - `1d`: 1 day\n - `1w`: 1 week\n - `30d`: 30 days\n ```json\n {\n \"type\": \"event_frequency_count\",\n \"comparison\": {\n \"value\": 100,\n \"interval\": \"1h\"\n },\n \"conditionResult\": true\n }\n ```\n\n **Percent of Events**\n - `value`: A positive integer representing the number of events in an issue that must come in before the alert will fire\n - `interval`: The time period in which to evaluate the value.\n - `1m`: 1 minute\n - `5m`: 5 minutes\n - `15m`: 15 minutes\n - `1h`: 1 hour\n - `1d`: 1 day\n - `1w`: 1 week\n - `30d`: 30 days\n - `comparisonInterval`: The time period to compare against.\n - `5m`: 5 minutes\n - `15m`: 15 minutes\n - `1h`: 1 hour\n - `1d`: 1 day\n - `1w`: 1 week\n - `30d`: 30 days\n ```json\n {\n \"type\": \"event_frequency_percent\",\n \"comparison\": {\n \"value\": 100,\n \"interval\": \"1h\",\n \"comparisonInterval\": \"1w\"\n },\n \"conditionResult\": true\n }\n\n ```\n\n **Percentage of Sessions Affected Count**\n - `value`: A positive integer representing the number of events in an issue that must come in before the alert will fire\n - `interval`: The time period in which to evaluate the value. e.g. Percentage of sessions affected by an issue is more than `value` in `interval`.\n - `1m`: 1 minute\n - `5m`: 5 minutes\n - `10m`: 10 minutes\n - `30m`: 30 minutes\n - `1h`: 1 hour\n ```json\n {\n \"type\": \"percent_sessions_count\",\n \"comparison\": {\n \"value\": 10,\n \"interval\": \"1h\"\n },\n \"conditionResult\": true\n }\n ```\n\n **Percentage of Sessions Affected Percent**\n - `value`: A positive integer representing the number of events in an issue that must come in before the alert will fire\n - `interval`: The time period in which to evaluate the value.\n - `1m`: 1 minute\n - `5m`: 5 minutes\n - `10m`: 10 minutes\n - `30m`: 30 minutes\n - `1h`: 1 hour\n - `comparisonInterval`: The time period to compare against.\n - `5m`: 5 minutes\n - `15m`: 15 minutes\n - `1h`: 1 hour\n - `1d`: 1 day\n - `1w`: 1 week\n - `30d`: 30 days\n ```json\n {\n \"type\": \"percent_sessions_percent\",\n \"comparison\": {\n \"value\": 10,\n \"interval\": \"1h\",\n \"comparisonInterval\": \"1w\"\n },\n \"conditionResult\": true\n }\n ```\n\n **Event Attribute**\n The event's `attribute` value `match` `value`\n\n - `attribute`: The event attribute to match on. Valid values are: `message`, `platform`, `environment`, `type`, `error.handled`, `error.unhandled`, `error.main_thread`, `exception.type`, `exception.value`, `user.id`, `user.email`, `user.username`, `user.ip_address`, `http.method`, `http.url`, `http.status_code`, `sdk.name`, `stacktrace.code`, `stacktrace.module`, `stacktrace.filename`, `stacktrace.abs_path`, `stacktrace.package`, `unreal.crash_type`, `app.in_foreground`.\n - `match`: The comparison operator\n - `co`: Contains\n - `nc`: Does not contain\n - `eq`: Equals\n - `ne`: Does not equal\n - `sw`: Starts with\n - `ew`: Ends with\n - `is`: Is set\n - `ns`: Is not set\n - `value`: A string. Must be omitted when match is `is` or `ns`; required otherwise.\n\n ```json\n {\n \"type\": \"event_attribute\",\n \"comparison\": {\n \"match\": \"co\",\n \"value\": \"bar\",\n \"attribute\": \"message\"\n },\n \"conditionResult\": true\n }\n ```\n\n **Tagged Event**\n The event's tags `key` match `value`\n - `key`: The tag value\n - `match`: The comparison operator\n - `co`: Contains\n - `nc`: Does not contain\n - `eq`: Equals\n - `ne`: Does not equal\n - `sw`: Starts with\n - `ew`: Ends with\n - `is`: Is set\n - `ns`: Is not set\n - `value`: A string. Must be omitted when match is `is` or `ns`; required otherwise.\n\n ```json\n {\n \"type\": \"tagged_event\",\n \"comparison\": {\n \"key\": \"level\",\n \"match\": \"eq\",\n \"value\": \"error\"\n },\n \"conditionResult\": true\n }\n ```\n\n **Latest Release**\n The event is from the latest release\n\n ```json\n {\n \"type\": \"latest_release\",\n \"comparison\": true,\n \"conditionResult\": true\n }\n ```\n\n **Release Age**\n ```json\n {\n \"type\": \"latest_adopted_release\",\n \"comparison\": {\n \"environment\": \"production\",\n \"ageComparison\": \"older\",\n \"releaseAgeType\": \"oldest\"\n },\n \"conditionResult\": true\n }\n ```\n\n **Event Level**\n The event's level is `match` `level`\n - `match`: The comparison operator\n - `eq`: Equal\n - `gte`: Greater than or equal\n - `lte`: Less than or equal\n - `level`: The event level\n - `50`: Fatal\n - `40`: Error\n - `30`: Warning\n - `20`: Info\n - `10`: Debug\n - `0`: Sample\n\n ```json\n {\n \"type\": \"level\",\n \"comparison\": {\n \"level\": 50,\n \"match\": \"eq\"\n },\n \"conditionResult\": true\n }\n ```\n\n ## Actions\n A list of actions that take place when all required conditions and filters for the alert are met. See below for a list of possible actions.\n\n\n **Notify on Preferred Channel**\n - `data`: A dictionary with the fallthrough type option when choosing to notify Suggested Assignees. Leave empty if notifying a user or team.\n - `fallthroughType`\n - `ActiveMembers`\n - `AllMembers`\n - `NoOne`\n - `config`: A dictionary with the configuration options for notification.\n - `targetType`: The type of recipient to notify\n - `user`: User\n - `team`: Team\n - `issue_owners`: Suggested Assignees\n - `targetDisplay`: null\n - `targetIdentifier`: The id of the user or team to notify. Leave null for Suggested Assignees.\n\n ```json\n {\n \"type\":\"email\",\n \"integrationId\":null,\n \"data\":{},\n \"config\":{\n \"targetType\":\"user\",\n \"targetDisplay\":null,\n \"targetIdentifier\":\"232692\"\n },\n \"status\":\"active\"\n },\n {\n \"type\":\"email\",\n \"integrationId\":null,\n \"data\":{\n \"fallthroughType\":\"ActiveMembers\"\n },\n \"config\":{\n \"targetType\":\"issue_owners\",\n \"targetDisplay\":null,\n \"targetIdentifier\":\"\"}\n ,\n \"status\":\"active\"\n }\n ```\n **Notify on Slack**\n - `targetDisplay`: The name of the channel to notify in.\n `integrationId`: The stringified ID of the integration.\n\n ```json\n {\n \"type\":\"slack\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\"\",\n \"targetDisplay\":\"notify-errors\"\n },\n \"integrationId\":\"1\",\n \"data\":{},\n \"status\":\"active\"\n }\n ```\n\n **Notify on PagerDuty**\n - `targetDisplay`: The name of the service to create the ticket in.\n - `integrationId`: The stringified ID of the integration.\n - `data[\"priority\"]`: The severity level for the notification.\n\n ```json\n {\n \"type\":\"pagerduty\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\"123456\",\n \"targetDisplay\":\"Error Service\"\n },\n \"integrationId\":\"2345\",\n \"data\":{\n \"priority\":\"default\"\n },\n \"status\":\"active\"\n }\n ```\n\n **Notify on Discord**\n - `targetDisplay`: The name of the service to create the ticket in.\n - `integrationId`: The stringified ID of the integration.\n - `data[\"tags\"]`: Comma separated list of tags to add to the notification.\n\n ```json\n {\n \"type\":\"discord\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\"12345\",\n \"targetDisplay\":\"\"\n },\n \"integrationId\":\"1234\",\n \"data\":{\n \"tags\":\"transaction,environment\"\n },\n \"status\":\"active\"\n }\n ```\n\n **Notify on MSTeams**\n - `targetIdentifier` - The integration ID associated with the Microsoft Teams team.\n - `targetDisplay` - The name of the channel to send the notification to.\n - `integrationId`: The stringified ID of the integration.\n ```json\n {\n \"type\":\"msteams\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\"19:a4b3kghaghgkjah357y6847@thread.skype\",\n \"targetDisplay\":\"notify-errors\"\n },\n \"integrationId\":\"1\",\n \"data\":{},\n \"status\":\"active\"\n }\n ```\n\n **Notify on OpsGenie**\n - `targetDisplay`: The name of the Opsgenie team.\n - `targetIdentifier`: The ID of the Opsgenie team to send the notification to.\n - `integrationId`: The stringified ID of the integration.\n - `data[\"priority\"]`: The priority level for the notification.\n\n ```json\n {\n \"type\":\"opsgenie\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\"123456-Error-Service\",\n \"targetDisplay\":\"Error Service\"\n },\n \"integrationId\":\"2345\",\n \"data\":{\n \"priority\":\"P3\"\n },\n \"status\":\"active\"\n }\n ```\n\n **Notify on Azure DevOps**\n - `integrationId`: The stringified ID of the integration.\n - `data` - A list of any fields you want to include in the ticket as objects.\n\n ```json\n {\n \"type\":\"vsts\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\",\n \"targetDisplay\":\"\"\n },\n \"integrationId\":\"2345\",\n \"data\":{...},\n \"status\":\"active\"\n }\n ```\n\n **Create a Jira ticket**\n - `integrationId`: The stringified ID of the integration.\n - `data` - A list of any fields you want to include in the ticket as objects.\n\n ```json\n {\n \"type\":\"jira\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\",\n \"targetDisplay\":\"\"\n },\n \"integrationId\":\"2345\",\n \"data\":{...},\n \"status\":\"active\"\n }\n ```\n\n **Create a Jira Server ticket**\n - `integrationId`: The stringified ID of the integration.\n - `data` - A list of any fields you want to include in the ticket as objects.\n\n ```json\n {\n \"type\":\"jira_server\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\",\n \"targetDisplay\":\"\"\n },\n \"integrationId\":\"2345\",\n \"data\":{...},\n \"status\":\"active\"\n }\n ```\n\n **Create a GitHub issue**\n - `integrationId`: The stringified ID of the integration.\n - `data` - A list of any fields you want to include in the ticket as objects.\n\n ```json\n {\n \"type\":\"github\",\n \"config\":{\n \"targetType\":\"specific\",\n \"targetIdentifier\":\",\n \"targetDisplay\":\"\"\n },\n \"integrationId\":\"2345\",\n \"data\":{\n \"additional_fields\": {\n \"assignee\": \"\",\n \"integration\": \"2345\",\n \"labels\": [],\n \"repo\": \"example-repo\",\n },\n \"dynamic_form_fields\": [\n {\n \"choices\": [[\"YourOrg/example-repo\", \"example-repo\"]],\n \"default\": \"YourOrg/example-repo\",\n \"label\": \"GitHub Repository\",\n \"name\": \"repo\",\n \"required\": true\n \"type\": \"select\",\n \"updatesForm\": true,\n \"url\": \"/extensions/github/search/example-repo/1234567/\",\n },\n ],\n },\n \"status\":\"active\"\n }\n ```\n "},"owner":{"type":"string","nullable":true,"description":"\n The ID user or team who owns the monitor or alert prefaced by the string 'user' or 'team'.\n\n **User**\n ```json\n \"user:123456\"\n ```\n\n **Team**\n ```json\n \"team:456789\"\n ```\n "}},"required":["name"]},"_LegacyBrowserFilter":{"type":"object","properties":{"active":{"type":"boolean","description":"Toggle the browser-extensions, localhost, filtered-transaction, or web-crawlers filter on or off."},"subfilters":{"type":"array","items":{"enum":["ie","edge","safari","firefox","chrome","opera","android","opera_mini","ie_pre_9","ie9","ie10","ie11","opera_pre_15","android_pre_4","safari_pre_6","opera_mini_pre_8","edge_pre_79"],"type":"string","description":"* `ie`\n* `edge`\n* `safari`\n* `firefox`\n* `chrome`\n* `opera`\n* `android`\n* `opera_mini`\n* `ie_pre_9`\n* `ie9`\n* `ie10`\n* `ie11`\n* `opera_pre_15`\n* `android_pre_4`\n* `safari_pre_6`\n* `opera_mini_pre_8`\n* `edge_pre_79`"},"description":"\nSpecifies which legacy browser filters should be active. Anything excluded from the list will be\ndisabled. The options are:\n- `ie` - Internet Explorer Version 11 and lower\n- `edge` - Edge Version 110 and lower\n- `safari` - Safari Version 15 and lower\n- `firefox` - Firefox Version 110 and lower\n- `chrome` - Chrome Version 110 and lower\n- `opera` - Opera Version 99 and lower\n- `android` - Android Version 3 and lower\n- `opera_mini` - Opera Mini Version 34 and lower\n\nDeprecated options:\n- `ie_pre_9` - Internet Explorer Version 8 and lower\n- `ie9` - Internet Explorer Version 9\n- `ie10` - Internet Explorer Version 10\n- `ie11` - Internet Explorer Version 11\n- `safari_pre_6` - Safari Version 5 and lower\n- `opera_pre_15` - Opera Version 14 and lower\n- `opera_mini_pre_8` - Opera Mini Version 8 and lower\n- `android_pre_4` - Android Version 3 and lower\n- `edge_pre_79` - Edge Version 18 and lower (non Chromium based)\n"}}}},"securitySchemes":{"auth_token":{"type":"http","scheme":"bearer"},"dsn":{"type":"http","scheme":"DSN"}}},"servers":[{"url":"https://{region}.sentry.io","variables":{"region":{"default":"us","description":"The data-storage-location for an organization","enum":["us","de"]}}}],"tags":[{"name":"Investigations","description":"Private endpoints for investigation notebooks and agent workflows. Requires the organizations:investigations feature and open organization membership. Notebook and workflow versions are independent optimistic concurrency tokens.","x-display-description":true},{"name":"Teams","description":"Endpoints for teams","x-display-description":false,"externalDocs":{"description":"Found an error? Let us know.","url":"https://github.com/getsentry/sentry-docs/issues/new/?title=API%20Documentation%20Error:%20/api/teams/&template=api_error_template.md"}},{"name":"Organizations","description":"Endpoints for organizations","x-display-description":false,"externalDocs":{"description":"Found an error? Let us know.","url":"https://github.com/getsentry/sentry-docs/issues/new/?title=API%20Documentation%20Error:%20/api/organizations/&template=api_error_template.md"}},{"name":"Projects","description":"Endpoints for projects","x-display-description":false,"externalDocs":{"description":"Found an error? Let us know.","url":"https://github.com/getsentry/sentry-docs/issues/new/?title=API%20Documentation%20Error:%20/api/projects/&template=api_error_template.md"}},{"name":"Events","x-sidebar-name":"Events & Issues","description":"Endpoints for events and issues","x-display-description":false,"externalDocs":{"description":"Found an error? Let us know.","url":"https://github.com/getsentry/sentry-docs/issues/new/?title=API%20Documentation%20Error:%20/api/events/&template=api_error_template.md"}},{"name":"Releases","description":"Endpoints for releases","x-display-description":false,"externalDocs":{"description":"Found an error? Let us know.","url":"https://github.com/getsentry/sentry-docs/issues/new/?title=API%20Documentation%20Error:%20/api/releases/&template=api_error_template.md"}},{"name":"Integration","x-sidebar-name":"Integration Platform","description":"Endpoints for the integration platform","x-display-description":false,"externalDocs":{"description":"Found an error? Let us know.","url":"https://github.com/getsentry/sentry-docs/issues/new/?title=API%20Documentation%20Error:%20/api/integration-platform/&template=api_error_template.md"}},{"name":"SCIM","x-sidebar-name":"SCIM","description":"System for Cross-Domain Identity Management ([SCIM](http://www.simplecloud.info/)) is a standard implemented by Identity Providers and applications in order to facilitate federated identity management. Through these APIs you can add and delete members as well as teams, and look up which SCIM features, resource types, and schemas Sentry supports. Sentry SaaS customers must be on a Business Plan with SAML2 Enabled. SCIM uses a bearer token for authentication that is created when SCIM is enabled. For how to enable SCIM, see our docs [here](/organization/authentication/sso/#scim-provisioning).\n Sentry's SCIM API does not currently support syncing passwords, or setting any User attributes other than `active`.","x-display-description":true,"externalDocs":{"description":"Found an error? Let us know.","url":"https://github.com/getsentry/sentry-docs/issues/new/?title=API%20Documentation%20Error:%20/api/integration-platform/&template=api_error_template.md"}},{"name":"Discover","x-sidebar-name":"Discover & Performance","description":"Discover and Performance allow you to slice and dice your Error and Transaction events","x-display-description":true,"externalDocs":{"description":"Found an error? Let us know.","url":"https://github.com/getsentry/sentry-docs/issues/new/?title=API%20Documentation%20Error:%20/api/integration-platform/&template=api_error_template.md"}},{"name":"Explore","x-sidebar-name":"Explore","description":"Explore allow you to slice and dice your events","x-display-description":true,"externalDocs":{"description":"Found an error? Let us know.","url":"https://github.com/getsentry/sentry-docs/issues/new/?title=API%20Documentation%20Error:%20/api/integration-platform/&template=api_error_template.md"}},{"name":"Dashboards","x-sidebar-name":"Dashboards","description":"Endpoints for Dashboards","x-display-description":false,"externalDocs":{"description":"Found an error? Let us know.","url":"https://github.com/getsentry/sentry-docs/issues/new/?title=API%20Documentation%20Error:%20/api/integration-platform/&template=api_error_template.md"}},{"name":"Crons","x-sidebar-name":"Crons","description":"Endpoints for Crons","x-display-description":false,"externalDocs":{"description":"Found an error? Let us know.","url":"https://github.com/getsentry/sentry-docs/issues/new/?title=API%20Documentation%20Error:%20/api/integration-platform/&template=api_error_template.md"}},{"name":"Replays","x-sidebar-name":"Replays","description":"Endpoints for Replays","x-display-description":false,"externalDocs":{"description":"Found an error? Let us know.","url":"https://github.com/getsentry/sentry-docs/issues/new/?title=API%20Documentation%20Error:%20/api/integration-platform/&template=api_error_template.md"}},{"name":"Spike Protection","x-sidebar-name":"Spike Protection Notifications","description":"Endpoints for Spike Protection Notifications","x-display-description":false,"externalDocs":{"description":"Found an error? Let us know.","url":"https://github.com/getsentry/sentry-docs/issues/new/?title=API%20Documentation%20Error:%20/api/integration-platform/&template=api_error_template.md"}},{"name":"Monitors","x-sidebar-name":"Monitors & Alerts","description":"Endpoints for Monitors and Alerts","x-display-description":false,"externalDocs":{"description":"Found an error? Let us know.","url":"https://github.com/getsentry/sentry-docs/issues/new/?title=API%20Documentation%20Error:%20/monitors/&template=api_error_template.md"}},{"name":"Integrations","x-sidebar-name":"Integrations","description":"Endpoints for Integrations","x-display-description":false,"externalDocs":{"description":"Found an error? Let us know.","url":"https://github.com/getsentry/sentry-docs/issues/new/?title=API%20Documentation%20Error:%20/api/integration-platform/&template=api_error_template.md"}},{"name":"Environments","x-sidebar-name":"Environments","description":"Endpoints for Environments","x-display-description":false,"externalDocs":{"description":"Found an error? Let us know.","url":"https://github.com/getsentry/sentry-docs/issues/new/?title=API%20Documentation%20Error:%20/api/integration-platform/&template=api_error_template.md"}},{"name":"Users","x-sidebar-name":"Users","description":"Endpoints for Users","x-display-description":false,"externalDocs":{"description":"Found an error? Let us know.","url":"https://github.com/getsentry/sentry-docs/issues/new/?title=API%20Documentation%20Error:%20/api/integration-platform/&template=api_error_template.md"}},{"name":"Seer","description":"Endpoints for Seer features","x-display-description":false,"externalDocs":{"description":"Found an error? Let us know.","url":"https://github.com/getsentry/sentry-docs/issues/new/?title=API%20Documentation%20Error:%20/api/seer/&template=api_error_template.md"}},{"name":"Mobile Builds","description":"Endpoints for mobile build analysis","x-display-description":false,"externalDocs":{"description":"Found an error? Let us know.","url":"https://github.com/getsentry/sentry-docs/issues/new/?title=API%20Documentation%20Error:%20/api/organizations/preprodartifacts/size-analysis/&template=api_error_template.md"}},{"name":"Snapshots","description":"Endpoints for snapshot testing","x-display-description":false,"externalDocs":{"description":"Found an error? Let us know.","url":"https://github.com/getsentry/sentry-docs/issues/new/?title=API%20Documentation%20Error:%20/api/snapshots/&template=api_error_template.md"}},{"name":"Profiling","description":"Endpoints for retrieving profiling data, flamegraphs, and profile chunks","x-display-description":false,"externalDocs":{"description":"Found an error? Let us know.","url":"https://github.com/getsentry/sentry-docs/issues/new/?title=API%20Documentation%20Error:%20/api/profiling/&template=api_error_template.md"}},{"name":"Flags","description":"Endpoints for retrieving feature flag change logs","x-display-description":false,"externalDocs":{"description":"Found an error? Let us know.","url":"https://github.com/getsentry/sentry-docs/issues/new/?title=API%20Documentation%20Error:%20/api/flags/&template=api_error_template.md"}}]} \ No newline at end of file diff --git a/packages/mcp-cloudflare/src/code-mode/generated/source.json b/packages/mcp-cloudflare/src/code-mode/generated/source.json new file mode 100644 index 000000000..93ba505c5 --- /dev/null +++ b/packages/mcp-cloudflare/src/code-mode/generated/source.json @@ -0,0 +1,6 @@ +{ + "package": "@sentry/api", + "version": "0.428.0", + "repository": "getsentry/sentry-api-schema", + "path": "openapi-derefed.json" +} diff --git a/packages/mcp-cloudflare/src/code-mode/http.ts b/packages/mcp-cloudflare/src/code-mode/http.ts new file mode 100644 index 000000000..da3378345 --- /dev/null +++ b/packages/mcp-cloudflare/src/code-mode/http.ts @@ -0,0 +1,52 @@ +export function configuredUrl(value: string): URL { + const url = new URL(value); + const loopback = ["localhost", "127.0.0.1", "[::1]"].includes(url.hostname); + if ( + url.username || + url.password || + url.search || + url.hash || + (url.protocol !== "https:" && !(url.protocol === "http:" && loopback)) + ) { + throw new Error( + "Configured URLs must use HTTPS (or loopback HTTP for local tests), without credentials, query, or fragment.", + ); + } + return url; +} + +export class BodySizeLimitError extends Error {} + +/** Read before forwarding so streaming bodies cannot exceed the byte budget. */ +export async function readBoundedBody( + body: ReadableStream | null, + maximumBytes: number, +): Promise { + if (!body) return new Uint8Array(); + const reader = body.getReader(); + const chunks: Uint8Array[] = []; + let size = 0; + try { + for (;;) { + const next = await reader.read(); + if (next.done) break; + size += next.value.byteLength; + if (size > maximumBytes) { + await reader.cancel(); + throw new BodySizeLimitError( + `Response exceeds ${maximumBytes} bytes. Narrow the query or use pagination.`, + ); + } + chunks.push(next.value); + } + } finally { + reader.releaseLock(); + } + const result = new Uint8Array(size); + let offset = 0; + for (const chunk of chunks) { + result.set(chunk, offset); + offset += chunk.byteLength; + } + return result; +} diff --git a/packages/mcp-cloudflare/src/code-mode/openapi.test.ts b/packages/mcp-cloudflare/src/code-mode/openapi.test.ts new file mode 100644 index 000000000..69ecaeed3 --- /dev/null +++ b/packages/mcp-cloudflare/src/code-mode/openapi.test.ts @@ -0,0 +1,24 @@ +import { operations } from "@sentry/api/operations"; +import { describe, expect, it } from "vitest"; +import { getSpec } from "./openapi"; + +const METHODS = ["get", "put", "post", "delete", "patch", "head", "options"]; + +describe("shipped OpenAPI schema", () => { + it("matches the @sentry/api release in the pnpm catalog", () => { + const spec = getSpec() as { + paths: Record>; + }; + const shipped = Object.entries(spec.paths) + .flatMap(([path, item]) => + Object.keys(item) + .filter((method) => METHODS.includes(method)) + .map((method) => `${method.toUpperCase()} ${path}`), + ) + .sort(); + // On failure, run `pnpm --filter @sentry/mcp-cloudflare generate:openapi`. + expect(shipped).toEqual( + operations.map(({ method, path }) => `${method} ${path}`).sort(), + ); + }); +}); diff --git a/packages/mcp-cloudflare/src/code-mode/openapi.ts b/packages/mcp-cloudflare/src/code-mode/openapi.ts new file mode 100644 index 000000000..e4418d18b --- /dev/null +++ b/packages/mcp-cloudflare/src/code-mode/openapi.ts @@ -0,0 +1,21 @@ +import source from "./generated/source.json"; +import specText from "./generated/openapi.json.txt"; + +/** + * The pre-dereferenced Sentry OpenAPI schema of the catalog's `@sentry/api` + * release, shipped with the deploy. `scripts/generate-openapi-spec.mjs` + * writes it; nothing fetches it at runtime. It is a Text module, so loading + * it costs a string, not a parse. + */ +export const SPEC_TEXT: string = specText; + +/** The `@sentry/api` release the schema comes from, as the CLI uses it. */ +export const SPEC_VERSION: string = source.version; + +let spec: Record | undefined; + +/** The parsed schema for authorization, parsed once per isolate on first use. */ +export function getSpec(): Record { + spec ??= JSON.parse(SPEC_TEXT) as Record; + return spec; +} diff --git a/packages/mcp-cloudflare/src/code-mode/sandbox.ts b/packages/mcp-cloudflare/src/code-mode/sandbox.ts new file mode 100644 index 000000000..f827e9540 --- /dev/null +++ b/packages/mcp-cloudflare/src/code-mode/sandbox.ts @@ -0,0 +1,104 @@ +/** One execution per isolate; model code is loaded after the private broker is set. */ +export function sandboxSource(apiBase?: string): string { + return ` +import { WorkerEntrypoint } from "cloudflare:workers"; +${apiBase ? "" : 'import specText from "./spec.json.txt";'} +${apiBase ? "" : 'Object.defineProperty(globalThis, "spec", { value: JSON.parse(specText) });'} +const apiBase = ${JSON.stringify(apiBase ?? null)}; +let deadline = 0; +let apiCalls = 0; +let writesAttempted = 0; +let pendingApiCalls = 0; +let apiBroker; +const unhandledRejections = new Map(); +addEventListener("unhandledrejection", (event) => { + event.preventDefault(); + unhandledRejections.set(event.promise, event.reason); +}); +addEventListener("rejectionhandled", (event) => { + unhandledRejections.delete(event.promise); +}); +async function request({ method = "GET", path, query, body }) { + if (!apiBase) throw new Error("API access is unavailable during search."); + if (!apiBroker) throw new Error("Code execution has finished."); + if (typeof path !== "string" || !path.startsWith("/") || path.startsWith("//")) { + throw new Error("path must start with / and contain an API path, not a URL."); + } + const base = new URL(apiBase); + const prefix = base.pathname.replace(/\\/$/, ""); + const url = new URL(path === prefix || path.startsWith(prefix + "/") + ? path : prefix + path, base.origin); + if (query) for (const [key, value] of Object.entries(query)) { + if (value === undefined || value === null) continue; + for (const item of Array.isArray(value) ? value : [value]) url.searchParams.append(key, String(item)); + } + const request = new Request(url, { + method, + headers: body === undefined ? {} : { "Content-Type": "application/json" }, + body: body === undefined ? undefined : JSON.stringify(body), + redirect: "manual", + }); + if (++apiCalls > 20) throw new Error("API call budget exhausted (20 calls per execution)."); + if (Date.now() >= deadline) throw new Error("Execution deadline exceeded."); + if (!["GET", "HEAD", "OPTIONS"].includes(request.method)) writesAttempted++; + const response = await apiBroker.fetch(request); + const text = await response.text(); + let data = text; + if (text && (response.headers.get("content-type") || "").toLowerCase().includes("json")) { + try { data = JSON.parse(text); } catch { throw new Error("API response was not valid JSON."); } + } else if (!text) data = null; + if (!response.ok) { + const error = new Error("Sentry API error: " + method.toUpperCase() + " " + url.pathname + + " returned HTTP " + response.status + ": " + JSON.stringify(data).slice(0, 2_000)); + error.status = response.status; + error.method = method.toUpperCase(); + error.path = url.pathname; + error.headers = Object.fromEntries(response.headers); + error.data = data; + throw error; + } + return { status: response.status, headers: Object.fromEntries(response.headers), body: data }; +} +const sentry = { + request(options) { + pendingApiCalls++; + return request(options).finally(() => pendingApiCalls--); + }, +}; +Object.defineProperty(globalThis, "sentry", { value: sentry }); +export default class extends WorkerEntrypoint { + async run(broker, executionDeadline) { + apiBroker = broker; + deadline = executionDeadline; + try { + const { default: run } = await import("./user.js"); + const result = await run(); + apiBroker = undefined; + const serialized = JSON.stringify({ result: result ?? null, stats: { apiCalls, writesAttempted } }); + if (pendingApiCalls > 0) { + throw new Error("Await every sentry.request() before returning. API calls are still pending."); + } + if (new TextEncoder().encode(serialized).byteLength > 50_000) { + throw new Error("Result exceeds 50,000 bytes. Return selected fields or a smaller page."); + } + // Let workerd report rejections after microtasks, including handlers attached late. + await new Promise((resolve) => setTimeout(resolve, 0)); + if (unhandledRejections.size > 0) throw unhandledRejections.values().next().value; + return new Response(serialized, { headers: { "content-type": "application/json" } }); + } catch (error) { + const hasHttpDetails = Number.isFinite(error?.status) && + typeof error.method === "string" && typeof error.path === "string" && + error.headers !== null && typeof error.headers === "object" && + !Array.isArray(error.headers) && Object.values(error.headers).every(value => typeof value === "string"); + return Response.json({ error: String(error?.message || error).slice(0, 4_000), + ...(hasHttpDetails ? { httpError: { + status: error.status, method: error.method, path: error.path, headers: error.headers, + } } : {}), + stats: { apiCalls, writesAttempted } }, { status: 400 }); + } finally { + apiBroker = undefined; + } + } +} +`; +} diff --git a/packages/mcp-cloudflare/src/code-mode/text-modules.d.ts b/packages/mcp-cloudflare/src/code-mode/text-modules.d.ts new file mode 100644 index 000000000..aa20d615b --- /dev/null +++ b/packages/mcp-cloudflare/src/code-mode/text-modules.d.ts @@ -0,0 +1,5 @@ +// Workers bundle `.txt` imports as Text modules: the default export is the file's contents. +declare module "*.txt" { + const text: string; + export default text; +} diff --git a/packages/mcp-cloudflare/src/code-mode/tools.ts b/packages/mcp-cloudflare/src/code-mode/tools.ts new file mode 100644 index 000000000..cd150b214 --- /dev/null +++ b/packages/mcp-cloudflare/src/code-mode/tools.ts @@ -0,0 +1,190 @@ +import type { WorkerEntrypoint } from "cloudflare:workers"; +import type { McpServer } from "@modelcontextprotocol/server"; +import * as Sentry from "@sentry/cloudflare"; +import { + CODE_MODE_SKILLS, + codeModeResultSchema, + getCodeModeToolDefinitions, +} from "@sentry/mcp-core/code-mode"; +import type { Skill } from "@sentry/mcp-core/skills"; +import { logIssue } from "@sentry/mcp-core/telem/logging"; +import type { ServerContext } from "@sentry/mcp-core/types"; +import { ApiAuthorization } from "./authorization"; +import { type ApiCall, ApiBroker, isSentWrite, isWriteMethod } from "./broker"; +import { ExecutionGate } from "./execution"; +import { configuredUrl, readBoundedBody } from "./http"; +import { SPEC_VERSION, SPEC_TEXT } from "./openapi"; +import { sandboxSource } from "./sandbox"; + +declare class Sandbox extends WorkerEntrypoint { + run(broker: ApiBroker | undefined, deadline: number): Promise; +} + +/** + * `ok` and `error` come from the sandbox (the program returned or failed); + * `timeout` is the execution deadline; `internal_error` is everything else + * and creates a Sentry issue. + */ +type Outcome = "ok" | "error" | "timeout" | "internal_error"; + +/** + * Registers Code Mode on this request's MCP server when the connection grants + * API Read or API Write. The handlers capture the request's token and policy, + * so never share the server across users. + */ +export function registerCodeModeTools( + server: McpServer, + loader: WorkerLoader, + context: ServerContext, +): void { + const skills = new Set( + [...(context.grantedSkills ?? [])].filter((skill) => + CODE_MODE_SKILLS.some((allowedSkill) => skill === allowedSkill), + ), + ); + // A project route can mutate shared resources (e.g. release files). OpenAPI + // does not prove project isolation, so retain the existing scoped tools only. + if (!skills.size || context.constraints.projectSlug) return; + const allowWrites = skills.has("api-write"); + const apiBaseUrl = `${context.sentryProtocol ?? "https"}://${context.sentryHost ?? "sentry.io"}/api/0`; + const authorization = new ApiAuthorization(context); + + async function evaluate(tool: string, code: string) { + const execute = tool === "execute_sentry_code"; + const span = Sentry.getActiveSpan(); + const execution = new ExecutionGate(); + const broker = execute + ? new ApiBroker({ + accessToken: context.accessToken, + execution, + apiBaseUrl, + allowWrites, + authorization, + }) + : undefined; + const hint = + execute && allowWrites + ? " Execution is not atomic: writes may already have completed. Inspect API state before retrying writes." + : ""; + let outcome: Outcome = "ok"; + try { + const value = await execution.run(async () => { + const apiBase = configuredUrl(apiBaseUrl).toString().replace(/\/$/, ""); + const workerCode = { + compatibilityDate: "2026-01-12", + mainModule: "worker.js", + modules: { + "worker.js": sandboxSource(execute ? apiBase : undefined), + "user.js": `export default (${code});`, + ...(execute ? {} : { "spec.json.txt": { text: SPEC_TEXT } }), + }, + // Cloudflare enforces these in production. Local workerd does not; + // the trusted harness separately bounds HTTP calls and output size. + limits: { cpuMs: 1_000, subRequests: execute ? 20 : 0 }, + globalOutbound: null, + }; + const response = await loader + .load(workerCode) + .getEntrypoint() + .run(broker, execution.deadline); + const body = await readBoundedBody(response.body, 55_000); + return codeModeResultSchema.parse( + JSON.parse(new TextDecoder().decode(body)), + ); + }); + if (value.error !== undefined) { + outcome = "error"; + const failure = { ...value, error: value.error + hint }; + return { + isError: true, + content: [{ type: "text" as const, text: JSON.stringify(failure) }], + structuredContent: failure, + }; + } + return { + content: [{ type: "text" as const, text: JSON.stringify(value) }], + structuredContent: value, + }; + } catch (error) { + // The gate rejects with its own reason when the deadline closes it. + const timedOut = error === execution.signal.reason; + outcome = timedOut ? "timeout" : "internal_error"; + const eventId = timedOut + ? undefined + : logIssue(error, { + loggerScope: ["code-mode", "execution"], + extra: { tool, specVersion: SPEC_VERSION }, + }); + const message = + error instanceof Error ? error.message : "Code execution failed."; + // Same shape as sandbox failures, so the result matches outputSchema. + const failure = { + error: + message.slice(0, 4_000) + + hint + + (eventId ? ` Event ID: ${eventId}` : ""), + stats: { + apiCalls: broker?.calls.length ?? 0, + writesAttempted: + broker?.calls.filter((call) => isWriteMethod(call.method)).length ?? + 0, + }, + }; + return { + isError: true, + content: [{ type: "text" as const, text: JSON.stringify(failure) }], + structuredContent: failure, + }; + } finally { + execution.close(); + recordExecution(span, { tool, code, outcome, calls: broker?.calls }); + } + } + + for (const [name, definition] of Object.entries( + getCodeModeToolDefinitions({ allowWrites }), + )) { + server.registerTool(name, definition, ({ code }) => evaluate(name, code)); + } +} + +/** + * The tool span keeps what one execution did, for debugging it; the metrics + * count every execution and API operation, unsampled, for deciding what + * Code Mode needs next. Operations are path templates, never concrete URLs. + */ +function recordExecution( + span: ReturnType, + { + tool, + code, + outcome, + calls, + }: { tool: string; code: string; outcome: Outcome; calls?: ApiCall[] }, +): void { + span?.setAttributes({ + "gen_ai.tool.call.arguments.code": code, + "app.code_mode.outcome": outcome, + "app.code_mode.spec_version": SPEC_VERSION, + ...(calls + ? { + "app.code_mode.api_calls": calls.length, + "app.code_mode.writes": calls.filter(isSentWrite).length, + "app.code_mode.operations": JSON.stringify( + calls.map( + ({ method, operation, status, denied }) => + `${method} ${operation} ${status}${denied ? " denied" : ""}`, + ), + ), + } + : {}), + }); + Sentry.metrics.count("app.code_mode.execution", 1, { + attributes: { tool, outcome }, + }); + for (const { method, operation, status, denied } of calls ?? []) { + Sentry.metrics.count("app.code_mode.request", 1, { + attributes: { method, operation, status, denied: denied !== undefined }, + }); + } +} diff --git a/packages/mcp-cloudflare/src/server/lib/approval-dialog.test.ts b/packages/mcp-cloudflare/src/server/lib/approval-dialog.test.ts index 7030427d1..fbbfb0bd2 100644 --- a/packages/mcp-cloudflare/src/server/lib/approval-dialog.test.ts +++ b/packages/mcp-cloudflare/src/server/lib/approval-dialog.test.ts @@ -13,7 +13,8 @@ function skillInputAttributes(html: string, skillId: string): string { `]*)>`, ), ); - return match?.[1] ?? ""; + expect(match, `Missing skill checkbox: ${skillId}`).not.toBeNull(); + return match![1]; } function expectSkillChecked(html: string, skillId: string): void { @@ -71,7 +72,7 @@ describe("approval-dialog", () => { expect(html).not.toContain("history.back"); }); - it("selects all approvable skills when no remembered defaults are provided", async () => { + it("leaves API Write unchecked for new approvals and explains its independent authority", async () => { const response = await renderApprovalDialog( new Request("https://example.com/oauth/authorize"), { @@ -87,6 +88,37 @@ describe("approval-dialog", () => { expectSkillChecked(html, "seer"); expectSkillChecked(html, "triage"); expectSkillChecked(html, "project-management"); + expectSkillChecked(html, "api-read"); + expectSkillUnchecked(html, "api-write"); + expect(html).toContain('id="skill-name-api-write">API Write'); + expect(skillInputAttributes(html, "api-write")).toContain( + 'aria-describedby="skill-description-api-write api-write-help"', + ); + expect(html).toContain( + "API Write allows issue changes even when Triage Issues is unchecked.", + ); + expect(html).toContain( + "It also allows project and team changes when Manage Projects & Teams is unchecked.", + ); + }); + + it("preserves an explicit remembered API Write selection without selecting Triage", async () => { + const response = await renderApprovalDialog( + new Request("https://example.com/oauth/authorize"), + { + client: mockClient, + server: { name: "Test Server" }, + state: { oauthReqInfo: { clientId: "test-client" } }, + cookieSecret: TEST_SECRET, + defaultSkills: ["api-write"], + }, + ); + const html = await response.text(); + + expectSkillChecked(html, "api-write"); + expectSkillUnchecked(html, "triage"); + expectSkillUnchecked(html, "project-management"); + expect(html).toContain("Includes API Read."); }); it("uses remembered skill defaults when provided", async () => { @@ -106,6 +138,10 @@ describe("approval-dialog", () => { expectSkillUnchecked(html, "seer"); expectSkillChecked(html, "triage"); expectSkillChecked(html, "project-management"); + expect(html).toContain('value="api-read"'); + expect(html).toContain('value="api-write"'); + expectSkillUnchecked(html, "api-read"); + expectSkillUnchecked(html, "api-write"); }); it("ignores unknown and deprecated remembered skill defaults", async () => { @@ -183,11 +219,36 @@ describe("approval-dialog", () => { const html = await response.text(); - expect(html).toContain("Session scope"); - expect(html).toContain("This session will be limited to the"); - expect(html).toContain(">sentry organization"); + expect(html).toContain('aria-label="Organization scope"'); + expect(html).toContain( + 'Only sentry', + ); + expect(html).toContain( + "Every permission below, including API Write, is limited to this organization.", + ); + expect(html).toContain("Your Sentry permissions still apply."); + expect(html).toContain('value="api-read"'); + expect(html).toContain('value="api-write"'); + }); + + it("explains that an unconstrained connection can access every organization authorized by its token", async () => { + const response = await renderApprovalDialog( + new Request("https://example.com/oauth/authorize"), + { + client: mockClient, + server: { name: "Sentry MCP" }, + state: { oauthReqInfo: { clientId: "test-client" } }, + cookieSecret: TEST_SECRET, + }, + ); + const html = await response.text(); + + expect(html).toContain("All authorized organizations"); expect(html).toContain( - "The permissions below apply only within this scope.", + "This connection can access any organization allowed by its Sentry token.", + ); + expect(html).toContain( + "The permissions below, including API Write, apply across those organizations.", ); }); @@ -210,6 +271,8 @@ describe("approval-dialog", () => { expect(html).toContain(">javascript project"); expect(html).toContain(">sentry organization"); + expect(html).not.toContain('name="skill" value="api-read"'); + expect(html).not.toContain('name="skill" value="api-write"'); }); }); @@ -392,6 +455,89 @@ describe("approval-dialog", () => { expect(remembered).toEqual(["triage", "project-management"]); }); + it.each([{ apiSkills: ["api-read", "api-write"] }, { apiSkills: [] }])( + "preserves hidden API preferences through project consent ($apiSkills)", + async ({ apiSkills }) => { + let preferenceCookie = ""; + const clientId = "test-client"; + const render = async (projectSlug: string | null = null) => { + const defaultSkills = await getRememberedSkillsForClient( + preferenceCookie, + clientId, + TEST_SECRET, + ); + const response = await renderApprovalDialog( + new Request("https://example.com/oauth/authorize"), + { + client: mockClient, + server: { name: "Sentry MCP" }, + scope: { organizationSlug: "example", projectSlug }, + state: { + oauthReqInfo: { + clientId, + resource: `https://example.com/mcp/example${projectSlug ? `/${projectSlug}` : ""}`, + }, + }, + cookieSecret: TEST_SECRET, + defaultSkills, + }, + ); + return await response.text(); + }; + const approve = async (html: string, skills: string[]) => { + const formData = new FormData(); + formData.append( + "state", + html.match(/name="state" value="([^"]+)"/)![1], + ); + formData.append("decision", "approve"); + for (const skill of skills) formData.append("skill", skill); + const result = await parseRedirectApproval( + new Request("https://example.com/oauth/authorize", { + method: "POST", + headers: { Cookie: preferenceCookie }, + body: formData, + }), + TEST_SECRET, + ); + preferenceCookie = extractCookiePair( + result.headers.get("Set-Cookie") ?? "", + SKILL_PREFERENCES_COOKIE_NAME, + ); + return result; + }; + + await approve(await render(), ["inspect", "triage", ...apiSkills]); + const projectHtml = await render("backend"); + expect(projectHtml).not.toContain('name="skill" value="api-read"'); + expect(projectHtml).not.toContain('name="skill" value="api-write"'); + + const projectApproval = await approve(projectHtml, ["inspect"]); + expect(projectApproval.skills).toEqual(["inspect"]); + expect( + await getRememberedSkillsForClient( + preferenceCookie, + clientId, + TEST_SECRET, + ), + ).toEqual(["inspect", ...apiSkills]); + + const organizationHtml = await render(); + expectSkillChecked(organizationHtml, "inspect"); + expectSkillUnchecked(organizationHtml, "triage"); + for (const skill of ["api-read", "api-write"]) { + if (apiSkills.includes(skill)) + expectSkillChecked(organizationHtml, skill); + else expectSkillUnchecked(organizationHtml, skill); + } + + await approve(organizationHtml, ["inspect"]); + const afterUnchecking = await render(); + expectSkillUnchecked(afterUnchecking, "api-read"); + expectSkillUnchecked(afterUnchecking, "api-write"); + }, + ); + it("should keep only the ten newest skill preference clients", async () => { let preferenceCookie = ""; diff --git a/packages/mcp-cloudflare/src/server/lib/approval-dialog.ts b/packages/mcp-cloudflare/src/server/lib/approval-dialog.ts index a90dacb14..d1fa82954 100644 --- a/packages/mcp-cloudflare/src/server/lib/approval-dialog.ts +++ b/packages/mcp-cloudflare/src/server/lib/approval-dialog.ts @@ -6,6 +6,8 @@ import skillDefinitions, { type SkillDefinition, } from "@sentry/mcp-core/skillDefinitions"; import { logError, logIssue, logWarn } from "@sentry/mcp-core/telem/logging"; +import { CODE_MODE_SKILLS } from "@sentry/mcp-core/code-mode"; +import { parseResourceMcpConstraints } from "../oauth/resource-scope"; import { type OAuthState, signState, @@ -304,12 +306,24 @@ async function createSkillPreferencesSetCookie( clientId: string, skills: string[], cookieSecret: string, + resource?: string, ): Promise { const preferences = await getSkillPreferencesFromCookie( request.headers.get("Cookie"), cookieSecret, ); - const filteredSkills = filterApprovableSkillIds(skills); + // Hidden project permissions retain their preferences, never their grant. + const rememberedApiSkills = parseResourceMcpConstraints(resource)?.projectSlug + ? (preferences.clients + .find(([id]) => id === clientId)?.[1] + .filter((skill) => + CODE_MODE_SKILLS.some((apiSkill) => apiSkill === skill), + ) ?? []) + : []; + const filteredSkills = filterApprovableSkillIds([ + ...skills, + ...rememberedApiSkills, + ]); const clients = preferences.clients.filter(([id]) => id !== clientId); if (filteredSkills.length > 0) { @@ -384,7 +398,8 @@ export interface ApprovalDialogOptions { */ cookieSecret: string; /** - * Skill IDs to preselect. When omitted, all approvable skills are selected. + * Remembered skill IDs to preselect. New approvals select all approvable + * skills except API Write, which requires an explicit choice. */ defaultSkills?: string[]; } @@ -463,28 +478,48 @@ export async function renderApprovalDialog( cookieSecret, defaultSkills, } = options; + const approvableSkills = APPROVABLE_SKILLS.filter( + (skill) => + !scope?.projectSlug || + !CODE_MODE_SKILLS.some((codeModeSkill) => codeModeSkill === skill.id), + ); const defaultSkillIds = defaultSkills === undefined - ? new Set(APPROVABLE_SKILLS.map((skill) => skill.id)) + ? new Set( + approvableSkills + .filter((skill) => skill.id !== "api-write") + .map((skill) => skill.id), + ) : new Set(filterApprovableSkillIds(defaultSkills)); // Use static skill definitions bundled at build time // Generate HTML for all approvable skills. - const skillsHtml = APPROVABLE_SKILLS.map( - (skill) => ` + const skillsHtml = approvableSkills + .map( + (skill) => ` `, - ).join(""); + ) + .join(""); // Encode state for form submission (HMAC-signed to prevent tampering) const encodedState = await encodeState(state, cookieSecret); @@ -530,19 +565,21 @@ export async function renderApprovalDialog( ` : ""; - const scopeHtml = scope + const scopeHtml = scope?.projectSlug ? `
Session scope
-

${ - scope.projectSlug - ? `This session will be limited to the ${sanitizeHtml(scope.projectSlug)} project in the ${sanitizeHtml(scope.organizationSlug)} organization.` - : `This session will be limited to the ${sanitizeHtml(scope.organizationSlug)} organization.` - }

-

The permissions below apply only within this scope.

+

This session will be limited to the ${sanitizeHtml(scope.projectSlug)} project in the ${sanitizeHtml(scope.organizationSlug)} organization.

+

The permissions below apply only within this scope. Your Sentry permissions still apply.

` - : ""; + : ` +
+
Organization scope
+

${scope ? `Only ${sanitizeHtml(scope.organizationSlug)}` : "All authorized organizations"}

+

${scope ? "Every permission below, including API Write, is limited to this organization. Your Sentry permissions still apply." : "This connection can access any organization allowed by its Sentry token. The permissions below, including API Write, apply across those organizations."}

+
+ `; // Generate HTML for the approval dialog const htmlContent = ` @@ -886,6 +923,48 @@ export async function renderApprovalDialog( line-height: 1.5; } + .permission-note { + margin-top: 12px; + padding: 12px 14px; + border: 1px solid rgba(242, 185, 94, 0.35); + border-radius: var(--radius-sm); + background: rgba(242, 185, 94, 0.06); + font-size: 0.8125rem; + line-height: 1.55; + color: oklch(0.86 0.07 75); + } + + .permission-note > strong { + display: block; + font-weight: 600; + margin-bottom: 5px; + } + + .permission-note p { + margin: 0; + } + + .permission-note p + p { + margin-top: 5px; + } + + .permission-item:has(input[value="api-write"]) { + border: 1px solid var(--border-default); + border-left-width: 3px; + border-radius: var(--radius-sm); + margin-top: var(--space-md); + padding: var(--space-md); + } + + .permission-item:has(input[value="api-write"]:checked) { + border-color: var(--purple-primary); + } + + .permission-item:has(input:focus-visible) { + outline: 2px solid var(--purple-light); + outline-offset: 3px; + } + /* Two-column layout for wider screens */ .approval-grid { display: flex; @@ -973,6 +1052,10 @@ export async function renderApprovalDialog( padding: var(--space-sm); } + .permission-item:has(input[value="api-write"]) { + padding: 12px; + } + .permission-header { flex-direction: column; align-items: flex-start; @@ -1150,6 +1233,7 @@ export async function parseRedirectApproval( clientId, skills, cookieSecret, + state.oauthReqInfo.resource, ), ); diff --git a/packages/mcp-cloudflare/src/server/lib/code-mode.integration.test.ts b/packages/mcp-cloudflare/src/server/lib/code-mode.integration.test.ts new file mode 100644 index 000000000..568276b8c --- /dev/null +++ b/packages/mcp-cloudflare/src/server/lib/code-mode.integration.test.ts @@ -0,0 +1,1232 @@ +import { + createExecutionContext, + env, + waitOnExecutionContext, +} from "cloudflare:test"; +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { + MAX_MCP_REQUEST_BODY_BYTES, + MAX_TOOL_INPUT_ELEMENTS, +} from "@sentry/toolkit-core/mcp-limits"; +import * as Sentry from "@sentry/cloudflare"; +import * as logging from "@sentry/mcp-core/telem/logging"; +import { getSpec, SPEC_VERSION } from "../../code-mode/openapi"; +import type { Env, WorkerProps } from "../types"; +import mcpHandler from "./mcp-handler"; + +const monitorPath = + "/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/monitors/{monitor_id_or_slug}/"; + +interface ApiRequest { + url: string; + method: string; + headers: Headers; + body: string; + signal: AbortSignal; +} + +interface ToolResult { + isError?: boolean; + content: Array<{ type: string; text?: string }>; + structuredContent?: { + result?: unknown; + error?: string; + httpError?: { + status: number; + method: string; + path: string; + headers: Record; + }; + stats: { apiCalls: number; writesAttempted: number }; + }; +} + +interface ToolList { + tools: Array<{ + name: string; + description?: string; + annotations?: { readOnlyHint?: boolean }; + }>; +} + +const originalFetch = globalThis.fetch; +let apiRequests: ApiRequest[]; +let apiResponse: (request: ApiRequest) => Response | Promise; +let beforeRegionResponse: (() => Promise) | undefined; +const revokeGrant = vi.fn(async () => {}); + +function workerEnv(overrides: Partial = {}): Env { + return { + ...(env as Record), + MCP_CACHE: env.OAUTH_KV, + OAUTH_PROVIDER: { revokeGrant }, + ...overrides, + } as Env; +} + +async function dispatchRpc( + method: string, + params: Record, + options: { + props?: Partial; + path?: string; + keepAlive?: Promise; + protocolVersion?: "2026-07-28" | "2025-03-26"; + env?: Partial; + } = {}, +) { + const protocolVersion = options.protocolVersion ?? "2026-07-28"; + const props: WorkerProps = { + id: "code-mode-user", + clientId: "code-mode-client", + clientName: "Code Mode Test Client", + accessToken: "test-api-token", + refreshToken: "test-refresh-token", + scope: "org:read project:read", + grantedSkills: ["api-read"], + ...options.props, + }; + const ctx = Object.assign(createExecutionContext(), { props }); + if (options.keepAlive) ctx.waitUntil(options.keepAlive); + const request = new Request(`http://localhost${options.path ?? "/mcp"}`, { + method: "POST", + headers: { + Authorization: `Bearer ${props.id}:code-mode-grant:secret`, + "Content-Type": "application/json", + Accept: "application/json, text/event-stream", + Host: "localhost", + "CF-Connecting-IP": "192.0.2.1", + "User-Agent": "claude-code/2.0.0", + "X-Sentry-Utm-Source": "plugin", + "mcp-protocol-version": protocolVersion, + "mcp-method": method, + ...(typeof params.name === "string" ? { "mcp-name": params.name } : {}), + }, + body: JSON.stringify({ + jsonrpc: "2.0", + id: 1, + method, + params: { + ...params, + ...(protocolVersion === "2026-07-28" + ? { + _meta: { + "io.modelcontextprotocol/protocolVersion": protocolVersion, + "io.modelcontextprotocol/clientInfo": { + name: "code-mode-integration-tests", + version: "1.0.0", + }, + "io.modelcontextprotocol/clientCapabilities": {}, + }, + } + : {}), + }, + }), + }); + const response = await mcpHandler.fetch!( + request, + workerEnv(options.env), + ctx, + ); + return { response, ctx }; +} + +async function rpc( + method: string, + params: Record, + options: Parameters[2] = {}, +): Promise { + const { response, ctx } = await dispatchRpc(method, params, options); + const result = await readRpcResult(response); + await waitOnExecutionContext(ctx); + return result; +} + +async function readRpcResult(response: Response): Promise { + const text = await response.text(); + expect(response.status, text).toBe(200); + const data = text.startsWith("{") + ? text + : text + .split("\n") + .find((line) => line.startsWith("data: ")) + ?.slice(6); + expect(data, text).toBeDefined(); + const message = JSON.parse(data!) as { result?: T; error?: unknown }; + expect(message.error).toBeUndefined(); + return message.result as T; +} + +async function execute( + code: string, + options?: Parameters[2], +): Promise { + return await rpc( + "tools/call", + { name: "execute_sentry_code", arguments: { code } }, + options, + ); +} + +async function search( + code: string, + options?: Parameters[2], +): Promise { + return await rpc( + "tools/call", + { name: "search_sentry_api", arguments: { code } }, + options, + ); +} + +/** One of the search examples published in the tool description. */ +async function publishedExample( + name: "Discovery" | "Categories" | "Schema", +): Promise { + const { tools } = await rpc("tools/list", {}); + const example = tools + .find((tool) => tool.name === "search_sentry_api") + ?.description?.split(`${name} example: `)[1] + ?.split(/\n(?:Discovery|Categories|Schema) example: /)[0] + ?.trim(); + if (!example) throw new Error(`${name} example missing from tools/list`); + return example; +} + +beforeEach(() => { + apiRequests = []; + revokeGrant.mockClear(); + apiResponse = () => Response.json({ ok: true }); + beforeRegionResponse = undefined; + // The pool runs the real main Worker in this isolate. Only external HTTP is + // simulated; MCP handlers, Dynamic Workers and the RPC broker are real. + vi.spyOn(globalThis, "fetch").mockImplementation(async (input, init) => { + const request = new Request(input, init); + const url = new URL(request.url); + if (!["sentry.io", "de.sentry.io"].includes(url.hostname)) { + return await originalFetch(input, init); + } + const recorded = { + url: request.url, + method: request.method, + headers: request.headers, + body: await request.text(), + signal: request.signal, + }; + apiRequests.push(recorded); + const organization = /^\/api\/0\/organizations\/([^/]+)\/$/.exec( + url.pathname, + ); + if (organization) { + await beforeRegionResponse?.(); + return Response.json({ + id: "100", + slug: organization[1], + name: organization[1], + links: { + regionUrl: "https://de.sentry.io", + organizationUrl: `https://sentry.io/organizations/${organization[1]}/`, + }, + }); + } + if (url.pathname === "/api/0/projects/code-mode-org/web/") { + return Response.json({ id: "200", slug: "web", name: "Web" }); + } + return await apiResponse(recorded); + }); +}); + +afterEach(() => { + vi.useRealTimers(); + vi.restoreAllMocks(); +}); + +function deferred() { + let resolve!: () => void; + const promise = new Promise((finish) => { + resolve = finish; + }); + return { promise, resolve }; +} + +describe("Code Mode on the authenticated MCP", () => { + it.each(["return", "throw"])( + "closes unawaited API work when the program exits with %s", + async (exit) => { + const started = deferred(); + const finish = deferred(); + let write: ApiRequest | undefined; + apiResponse = async (request) => { + if (request.method === "POST") { + write = request; + started.resolve(); + await finish.promise; + } else { + await started.promise; + } + return Response.json({ ok: true }); + }; + const { response, ctx } = await dispatchRpc( + "tools/call", + { + name: "execute_sentry_code", + arguments: { + code: `async () => { + sentry.request({method: "POST", path: "/organizations/code-mode-org/dashboards/", body: {title: "Copy"}}).catch(() => {}); + await sentry.request({path: "/organizations/"}); + ${exit === "return" ? 'return "done";' : 'throw new Error("Program failed");'} + }`, + }, + }, + { props: { grantedSkills: ["api-write"] }, keepAlive: finish.promise }, + ); + try { + const result = await readRpcResult(response); + expect(result.isError).toBe(true); + expect(result.content[0].text).toContain( + exit === "return" ? "Await every sentry.request()" : "Program failed", + ); + expect(result.content[0].text).toContain( + "writes may already have completed", + ); + expect(write?.signal.aborted).toBe(true); + } finally { + finish.resolve(); + await waitOnExecutionContext(ctx); + } + }, + ); + + it("does not send a write when authorization finishes after the program", async () => { + const authorizing = deferred(); + const finish = deferred(); + beforeRegionResponse = async () => { + authorizing.resolve(); + await finish.promise; + }; + apiResponse = async () => { + await authorizing.promise; + return Response.json({ ok: true }); + }; + const { response, ctx } = await dispatchRpc( + "tools/call", + { + name: "execute_sentry_code", + arguments: { + code: `async () => { + sentry.request({method: "POST", path: "/organizations/code-mode-org/dashboards/", body: {title: "Copy"}}).catch(() => {}); + await sentry.request({path: "/organizations/"}); + return "done"; + }`, + }, + }, + { props: { grantedSkills: ["api-write"] }, keepAlive: finish.promise }, + ); + try { + const result = await readRpcResult(response); + finish.resolve(); + await waitOnExecutionContext(ctx); + // Drain the released lookup and any continuation into the API broker. + await new Promise((resolve) => setTimeout(resolve, 0)); + expect(apiRequests.filter(({ method }) => method === "POST")).toEqual([]); + expect(result.isError).toBe(true); + expect(result.content[0].text).toContain("Await every sentry.request()"); + } finally { + finish.resolve(); + await waitOnExecutionContext(ctx); + } + }); + + it.each(["headers", "body"])( + "aborts an awaited API request stalled before its %s at the execution deadline", + async (phase) => { + const logIssue = vi.spyOn(logging, "logIssue"); + vi.useFakeTimers({ toFake: ["Date", "setTimeout", "clearTimeout"] }); + const started = deferred(); + const finish = deferred(); + let pending: ApiRequest | undefined; + apiResponse = async (request) => { + pending = request; + started.resolve(); + if (phase === "headers") { + await finish.promise; + return Response.json({ ok: true }); + } + return new Response( + new ReadableStream({ + start(controller) { + request.signal.addEventListener( + "abort", + () => controller.error(request.signal.reason), + { once: true }, + ); + void finish.promise.then(() => { + if (!request.signal.aborted) controller.close(); + }); + }, + }), + { headers: { "content-type": "application/json" } }, + ); + }; + const dispatched = dispatchRpc( + "tools/call", + { + name: "execute_sentry_code", + arguments: { + code: 'async () => sentry.request({path: "/organizations/"})', + }, + }, + { keepAlive: finish.promise }, + ); + await started.promise; + await vi.advanceTimersByTimeAsync(30_000); + const { response, ctx } = await dispatched; + try { + const result = await readRpcResult(response); + expect(result.isError).toBe(true); + expect(result.content[0].text).toContain("Execution deadline exceeded"); + expect(pending?.signal.aborted).toBe(true); + expect(apiRequests).toHaveLength(1); + // A deadline is the program's outcome, not a server failure. + expect(logIssue).not.toHaveBeenCalled(); + expect(result.structuredContent).toEqual({ + error: expect.stringContaining("Execution deadline exceeded"), + stats: { apiCalls: 1, writesAttempted: 0 }, + }); + } finally { + finish.resolve(); + vi.useRealTimers(); + await waitOnExecutionContext(ctx); + } + }, + ); + + it.each([ + { + shape: "object keys", + unused: Object.fromEntries( + Array.from({ length: MAX_TOOL_INPUT_ELEMENTS + 1 }, (_, index) => [ + `key${index}`, + null, + ]), + ), + }, + { + shape: "array elements", + unused: { values: Array(MAX_TOOL_INPUT_ELEMENTS + 1).fill(null) }, + }, + ])( + "rejects excessive nested $shape before executing code", + async ({ unused }) => { + const result = await rpc("tools/call", { + name: "execute_sentry_code", + arguments: { + code: 'async () => sentry.request({path: "/organizations/"})', + unused, + }, + }); + expect(result.isError).toBe(true); + expect(result.content[0]?.text).toContain( + `maximum of ${MAX_TOOL_INPUT_ELEMENTS} elements`, + ); + expect(apiRequests).toEqual([]); + }, + ); + + it.each(["2026-07-28", "2025-03-26"] as const)( + "rejects HTTP bodies above the limit with protocol %s", + async (protocolVersion) => { + const { response, ctx } = await dispatchRpc( + "tools/call", + { + name: "execute_sentry_code", + arguments: { code: "x".repeat(MAX_MCP_REQUEST_BODY_BYTES) }, + }, + { protocolVersion }, + ); + const body = await response.text(); + await waitOnExecutionContext(ctx); + expect(response.status).toBe(413); + expect(response.headers.get("Content-Type")).toContain( + "application/json", + ); + expect(JSON.parse(body)).toEqual({ + jsonrpc: "2.0", + id: null, + error: { + code: -32000, + message: `Payload Too Large: Request body must not exceed ${MAX_MCP_REQUEST_BODY_BYTES} bytes`, + }, + }); + expect(apiRequests).toEqual([]); + }, + ); + + it("advertises Code Mode alongside the normal catalog and executes discovery", async () => { + const list = await rpc("tools/list", {}); + expect(list.tools.map(({ name }) => name)).toEqual( + expect.arrayContaining([ + "search_sentry_api", + "execute_sentry_code", + "find_organizations", + ]), + ); + expect( + list.tools.find(({ name }) => name === "execute_sentry_code")?.annotations + ?.readOnlyHint, + ).toBe(true); + const result = await rpc("tools/call", { + name: "search_sentry_api", + arguments: { code: "async () => Object.keys(spec.paths)" }, + }); + expect(result.isError).toBeUndefined(); + expect(result.structuredContent?.result).toContain(monitorPath); + expect(apiRequests).toHaveLength(0); + }); + + it("blocks api-read writes through both sentry.request and raw fetch", async () => { + const result = await execute( + `async () => { + let wrappedStatus; + try { await sentry.request({method: "PUT", path: "/projects/code-mode-org/web/monitors/billing/", body: {name: "changed"}}); } + catch (error) { wrappedStatus = error.status; } + let rawBlocked = false; + try { await fetch("https://sentry.io/api/0/projects/code-mode-org/web/monitors/billing/", {method: "PUT", body: "{}"}); } + catch { rawBlocked = true; } + return {wrappedStatus, rawBlocked}; + }`, + { + props: { + upstreamScopes: [ + "org:read", + "project:write", + "team:write", + "event:write", + ], + }, + }, + ); + expect(result.isError).toBeUndefined(); + expect(result.structuredContent?.result).toEqual({ + wrappedStatus: 403, + rawBlocked: true, + }); + expect(apiRequests).toHaveLength(0); + }); + + it("uses the API write grant, regional routing and attribution headers", async () => { + apiResponse = (request) => + Response.json( + { saved: JSON.parse(request.body) }, + { headers: { ETag: '"saved-monitor"', Link: "; rel=next" } }, + ); + const result = await execute( + `async () => sentry.request({ + method: "PUT", path: "/projects/code-mode-org/web/monitors/billing/", body: {name: "Billing"} + })`, + { props: { grantedSkills: ["api-write"] } }, + ); + expect(result.isError).toBeUndefined(); + expect(result.structuredContent?.result).toMatchObject({ + status: 200, + headers: { etag: '"saved-monitor"', link: "; rel=next" }, + body: { saved: { name: "Billing" } }, + }); + const writes = apiRequests.filter(({ method }) => method === "PUT"); + expect(writes).toHaveLength(1); + expect(writes[0].url).toBe( + "https://de.sentry.io/api/0/projects/code-mode-org/web/monitors/billing/", + ); + expect(writes[0].headers.get("authorization")).toBe( + "Bearer test-api-token", + ); + expect(writes[0].headers.get("x-sentry-mcp-client-id")).toBe( + "code-mode-client", + ); + expect(writes[0].headers.get("x-sentry-mcp-client-name")).toBe( + "Code Mode Test Client", + ); + expect(writes[0].headers.get("x-sentry-mcp-utm-source")).toBe("plugin"); + }); + + it("keeps concurrent users' upstream credentials separate", async () => { + apiResponse = ({ headers }) => + Response.json({ owner: headers.get("authorization") }); + const code = + 'async () => (await sentry.request({path: "/organizations/"})).body'; + const results = await Promise.all([ + execute(code, { + props: { id: "first-user", accessToken: "first-api-token" }, + }), + execute(code, { + props: { id: "second-user", accessToken: "second-api-token" }, + }), + ]); + expect(results.map((result) => result.isError)).toEqual([ + undefined, + undefined, + ]); + expect(results.map((result) => result.structuredContent?.result)).toEqual([ + { owner: "Bearer first-api-token" }, + { owner: "Bearer second-api-token" }, + ]); + expect(apiRequests).toHaveLength(2); + }); + + it("enforces an organization grant against other organizations and global ID routes", async () => { + const result = await execute( + `async () => { + const outcomes = []; + for (const path of ["/organizations/other-org/projects/", "/sentry-apps/an-app/"]) { + try { await sentry.request({path}); } + catch (error) { outcomes.push({status: error.status, body: error.data}); } + } + return outcomes; + }`, + { + path: "/mcp/code-mode-org", + props: { constraintOrganizationSlug: "code-mode-org" }, + }, + ); + expect(result.isError).toBeUndefined(); + expect(result.structuredContent?.result).toEqual([ + { + status: 403, + body: { detail: expect.stringContaining("organization constraint") }, + }, + { + status: 403, + body: { detail: expect.stringContaining("organization constraint") }, + }, + ]); + expect( + apiRequests.every( + ({ url }) => + url === "https://sentry.io/api/0/organizations/code-mode-org/", + ), + ).toBe(true); + }); + + it.each([ + { + name: "docs-only grant", + props: { grantedSkills: ["docs"] }, + path: "/mcp", + }, + { + name: "project constraint", + props: { + grantedSkills: ["api-read"], + constraintOrganizationSlug: "code-mode-org", + constraintProjectSlug: "web", + }, + path: "/mcp/code-mode-org/web", + }, + ])("preserves the existing surface for a $name", async ({ props, path }) => { + const result = await rpc("tools/list", {}, { props, path }); + expect(result.tools.map(({ name }) => name)).not.toContain( + "execute_sentry_code", + ); + expect(result.tools.map(({ name }) => name)).not.toContain( + "search_sentry_api", + ); + }); + + it.each(["inspect", "triage", "project-management", "seer"])( + "does not turn a legacy %s grant into arbitrary API access", + async (skill) => { + const result = await rpc( + "tools/list", + {}, + { + props: { + grantedSkills: [skill], + upstreamScopes: ["org:read", "project:write", "event:write"], + }, + }, + ); + expect(result.tools.map(({ name }) => name)).not.toContain( + "execute_sentry_code", + ); + expect(result.tools.map(({ name }) => name)).not.toContain( + "search_sentry_api", + ); + expect(apiRequests).toHaveLength(0); + }, + ); + + it("copies a dashboard for two projects with api-write and an upstream org:read token", async () => { + // Dashboard POST accepts org:read in both the published schema and backend. + const original = { + id: "101", + title: "Errors", + projects: [101, 102], + widgets: [], + }; + const dashboards = new Map([[original.id, original]]); + apiResponse = ({ url, method, body }) => { + if (method === "POST") { + const saved = { + ...JSON.parse(body), + id: String(dashboards.size + 101), + }; + dashboards.set(saved.id, saved); + return Response.json(saved, { status: 201 }); + } + const id = new URL(url).pathname.split("/").at(-2)!; + return Response.json(dashboards.get(id)); + }; + const result = await execute( + `async () => { + const path = "/organizations/code-mode-org/dashboards/"; + const original = (await sentry.request({path: path + "101/"})).body; + const copies = []; + for (const project of [201, 202]) { + const created = (await sentry.request({method: "POST", path, + body: {title: original.title + " " + project, widgets: original.widgets, projects: [project]} + })).body; + const verified = (await sentry.request({path: path + created.id + "/"})).body; + copies.push({id: verified.id, projects: verified.projects}); + } + return copies; + }`, + { + props: { + grantedSkills: ["api-write"], + upstreamScopes: ["org:read"], + grantedScopes: ["org:read"], + }, + }, + ); + expect(result.isError).toBeUndefined(); + expect(result.structuredContent?.result).toEqual([ + { id: "102", projects: [201] }, + { id: "103", projects: [202] }, + ]); + expect(apiRequests.filter(({ method }) => method === "POST")).toHaveLength( + 2, + ); + expect(dashboards.get("101")).toEqual(original); + }); + + it.each([undefined, ["org:read", "project:write"]])( + "preserves the real upstream permission denial with recorded scopes %j", + async (upstreamScopes) => { + apiResponse = () => + Response.json( + { detail: "You do not have permission to perform this action." }, + { status: 403 }, + ); + const result = await execute( + 'async () => sentry.request({method: "POST", path: "/organizations/code-mode-org/dashboards/", body: {title: "Copy", widgets: []}})', + { props: { grantedSkills: ["api-write"], upstreamScopes } }, + ); + expect(result.isError).toBe(true); + expect(result.content[0].text).toContain("403"); + expect(result.content[0].text).toContain("You do not have permission"); + expect( + apiRequests.filter(({ method }) => method === "POST"), + ).toHaveLength(1); + expect(revokeGrant).not.toHaveBeenCalled(); + }, + ); + + it("revokes an upstream-rejected grant even when user code catches the 401", async () => { + apiResponse = () => + Response.json({ detail: "Expired upstream token" }, { status: 401 }); + const result = await execute(`async () => { + const statuses = []; + for (let i = 0; i < 2; i++) { + try { await sentry.request({path: "/organizations/"}); } + catch (error) { statuses.push(error.status); } + } + return statuses; + }`); + expect(result.isError).toBeUndefined(); + expect(result.structuredContent?.result).toEqual([401, 401]); + expect(revokeGrant).toHaveBeenCalledExactlyOnceWith( + "code-mode-grant", + "code-mode-user", + ); + }); + + it.each([403, 503])( + "reports only upstream server failures when user code catches HTTP %s", + async (status) => { + const logIssue = vi + .spyOn(logging, "logIssue") + .mockReturnValue("code-mode-event"); + apiResponse = () => + Response.json({ detail: "Upstream failure" }, { status }); + const result = await execute(`async () => { + try { await sentry.request({path: "/organizations/"}); } + catch (error) { return {status: error.status, eventId: error.headers["x-sentry-event-id"] ?? null}; } + }`); + expect(result.isError).toBeUndefined(); + expect(result.structuredContent?.result).toEqual({ + status, + eventId: status === 503 ? "code-mode-event" : null, + }); + if (status === 503) { + expect(logIssue).toHaveBeenCalledExactlyOnceWith( + expect.objectContaining({ name: "ApiServerError", status: 503 }), + { + loggerScope: ["code-mode", "api"], + extra: { + method: "GET", + status: 503, + operation: "/api/0/organizations/", + }, + }, + ); + } else { + expect(logIssue).not.toHaveBeenCalled(); + } + }, + ); +}); + +describe("Code Mode sandbox", () => { + const dashboards = "/organizations/code-mode-org/dashboards/"; + const dashboardsPath = `/api/0${dashboards}`; + const writer = { props: { grantedSkills: ["api-write"] } }; + const sent = (method: string) => + apiRequests.filter((request) => request.method === method); + const failPosts = (status = 400) => { + apiResponse = ({ method }) => + method === "POST" + ? Response.json({ title: ["This field is required."] }, { status }) + : Response.json([]); + }; + + it("runs the published search examples against the shipped schema", async () => { + const spec = getSpec() as { + tags?: unknown; + paths: Record< + string, + Record< + string, + { description?: string; parameters?: unknown; requestBody?: unknown } + > + >; + }; + const discovery = await search( + (await publishedExample("Discovery")).replace( + 'const term = "release";', + 'const term = "alert";', + ), + ); + expect(discovery.isError).toBeUndefined(); + expect(discovery.structuredContent?.result).toContainEqual( + expect.objectContaining({ + method: "put", + path: "/api/0/organizations/{organization_id_or_slug}/workflows/{workflow_id}/", + summary: "Update an Alert by ID", + }), + ); + const categories = await search(await publishedExample("Categories")); + expect(categories.structuredContent?.result).toEqual(spec.tags); + const schema = await search(await publishedExample("Schema")); + const releases = + spec.paths["/api/0/organizations/{organization_id_or_slug}/releases/"]; + expect(schema.structuredContent?.result).toEqual({ + description: releases.post.description, + pathParameters: releases.parameters, + operationParameters: releases.post.parameters, + requestBody: releases.post.requestBody, + }); + expect(apiRequests).toEqual([]); + }); + + it("keeps search away from the network", async () => { + const result = await search( + 'async () => (await fetch("https://sentry.io/api/0/organizations/")).text()', + ); + expect(result.isError).toBe(true); + expect(apiRequests).toEqual([]); + }); + + it("repeats array query parameters and drops private response headers", async () => { + const link = + '; rel="next"; results="true"'; + apiResponse = ({ method }) => + Response.json( + { id: "1", name: "Web" }, + { + status: method === "POST" ? 201 : 200, + headers: { Link: link, "Set-Cookie": "private-session=secret" }, + }, + ); + const result = await execute( + `async () => { + const source = await sentry.request({path: "/organizations/code-mode-org/projects/", query: {project: [1, 2], cursor: undefined}}); + const created = await sentry.request({method: "POST", path: "/api/0${dashboards}", body: {title: source.body.name}}); + return {status: created.status, link: source.headers.link, cookie: source.headers["set-cookie"] ?? null}; + }`, + writer, + ); + expect(result.structuredContent).toEqual({ + result: { status: 201, link, cookie: null }, + stats: { apiCalls: 2, writesAttempted: 1 }, + }); + expect( + apiRequests + .filter(({ url }) => url.startsWith("https://de.sentry.io/")) + .map(({ method, url }) => ({ method, url })), + ).toEqual([ + { + method: "GET", + url: "https://de.sentry.io/api/0/organizations/code-mode-org/projects/?project=1&project=2", + }, + { method: "POST", url: `https://de.sentry.io${dashboardsPath}` }, + ]); + }); + + it("blocks raw network access, API path escapes and redirects", async () => { + apiResponse = () => + new Response(null, { + status: 302, + headers: { Location: "https://example.com/outside-api" }, + }); + const result = await execute(`async () => { + const outcomes = []; + for (const url of ["https://unconfigured.invalid/api/0/organizations/", "https://sentry.io/api/0/organizations/"]) { + try { await fetch(url, {headers: {Authorization: "Bearer forged"}}); outcomes.push("unexpected access"); } + catch { outcomes.push("blocked"); } + } + for (const path of ["/../../outside-api", "/organizations/"]) { + try { await sentry.request({path}); } + catch (error) { outcomes.push(error.status); } + } + return outcomes; + }`); + expect(result.structuredContent?.result).toEqual([ + "blocked", + "blocked", + 403, + 502, + ]); + expect(apiRequests.map(({ url }) => url)).toEqual([ + "https://sentry.io/api/0/organizations/", + ]); + }); + + it("returns API failures as tool errors without retrying writes", async () => { + failPosts(); + const result = await execute( + `async () => sentry.request({method: "POST", path: "${dashboards}", body: {}})`, + writer, + ); + expect(result.isError).toBe(true); + expect(result.content[0]?.text).toContain( + `POST ${dashboardsPath} returned HTTP 400`, + ); + expect(result.content[0]?.text).toContain( + "writes may already have completed", + ); + expect(sent("POST")).toHaveLength(1); + }); + + it.each(["insufficient-scope", "forbidden"])( + "returns an uncaught %s denial with HTTP evidence and no retries", + async (kind) => { + const challenge = + 'Bearer error="insufficient_scope", scope="org:admin org:write"'; + apiResponse = () => + Response.json( + { detail: "You do not have permission to perform this action." }, + { + status: 403, + headers: { + "Set-Cookie": "private-session=secret", + ...(kind === "insufficient-scope" + ? { "WWW-Authenticate": challenge } + : {}), + }, + }, + ); + const result = await execute( + `async () => sentry.request({method: "POST", path: "${dashboards}", body: {}})`, + writer, + ); + expect(result.isError).toBe(true); + expect(result.structuredContent).toEqual({ + error: expect.stringContaining( + `POST ${dashboardsPath} returned HTTP 403`, + ), + httpError: { + status: 403, + method: "POST", + path: dashboardsPath, + headers: { + "content-type": "application/json", + ...(kind === "insufficient-scope" + ? { "www-authenticate": challenge } + : {}), + }, + }, + stats: { apiCalls: 1, writesAttempted: 1 }, + }); + expect(result.content[0]?.text).toContain( + "You do not have permission to perform this action.", + ); + expect(result.content[0]?.text).toContain( + "writes may already have completed", + ); + expect(sent("POST")).toHaveLength(1); + }, + ); + + it("exposes HTTP details on caught errors", async () => { + failPosts(403); + const result = await execute( + `async () => { + try { await sentry.request({method: "POST", path: "${dashboards}", body: {}}); } + catch (error) { return {status: error.status, method: error.method, path: error.path, data: error.data}; } + }`, + writer, + ); + expect(result.isError).toBeUndefined(); + expect(result.structuredContent?.result).toEqual({ + status: 403, + method: "POST", + path: dashboardsPath, + data: { title: ["This field is required."] }, + }); + }); + + it.each(["", ".then(() => {})"])( + "reports settled API failures from ignored promises%s", + async (chain) => { + const answered = deferred(); + apiResponse = async ({ method }) => { + if (method === "POST") { + answered.resolve(); + return Response.json({ title: ["Required."] }, { status: 400 }); + } + await answered.promise; + await new Promise((resolve) => setTimeout(resolve, 50)); + return Response.json([]); + }; + const result = await execute( + `async () => { + sentry.request({method: "POST", path: "${dashboards}", body: {}})${chain}; + await sentry.request({path: "/organizations/"}); + return "done"; + }`, + writer, + ); + expect(result.isError).toBe(true); + expect(result.structuredContent).toMatchObject({ + error: expect.stringContaining( + `POST ${dashboardsPath} returned HTTP 400`, + ), + httpError: { status: 400, method: "POST", path: dashboardsPath }, + stats: { apiCalls: 2, writesAttempted: 1 }, + }); + expect(result.structuredContent).not.toHaveProperty("result"); + expect(sent("POST")).toHaveLength(1); + }, + ); + + it("reports an ignored request rejection when the program returns immediately", async () => { + const result = await execute(`async () => { + sentry.request({path: "invalid-path"}); + return "done"; + }`); + expect(result.isError).toBe(true); + expect(result.content[0]?.text).toContain("path must start with /"); + expect(apiRequests).toEqual([]); + }); + + it("allows handling an API failure after another request finishes", async () => { + failPosts(); + const result = await execute( + `async () => { + const pending = sentry.request({method: "POST", path: "${dashboards}", body: {}}); + await sentry.request({path: "/organizations/"}); + try { await pending; } catch (error) { return {status: error.status}; } + }`, + writer, + ); + expect(result.isError).toBeUndefined(); + expect(result.structuredContent?.result).toEqual({ status: 400 }); + }); + + it("allows collecting API failures with Promise.allSettled", async () => { + failPosts(); + const result = await execute( + `async () => { + const results = await Promise.allSettled([ + sentry.request({method: "POST", path: "${dashboards}", body: {}}), + sentry.request({path: "/organizations/"}), + ]); + return results.map(result => result.status); + }`, + writer, + ); + expect(result.isError).toBeUndefined(); + expect(result.structuredContent?.result).toEqual(["rejected", "fulfilled"]); + }); + + it("bounds API requests per execution", async () => { + const result = await execute( + "async () => { for (let i = 0; i < 21; i++) await sentry.request({path: '/organizations/'}); }", + ); + expect(result.isError).toBe(true); + expect(result.content[0]?.text).toContain("API call budget exhausted"); + expect(apiRequests).toHaveLength(20); + }); + + it("keeps the API broker outside the model module", async () => { + const result = await execute( + "async () => ({moduleBroker: typeof apiBroker, parameterBroker: typeof broker})", + ); + expect(result.structuredContent?.result).toEqual({ + moduleBroker: "undefined", + parameterBroker: "undefined", + }); + }); + + it("preserves a user error with partial HTTP-like properties", async () => { + const result = await execute( + 'async () => { throw {status: 403, message: "Example denied"}; }', + ); + expect(result.isError).toBe(true); + expect(result.structuredContent).toMatchObject({ + error: expect.stringContaining("Example denied"), + stats: { apiCalls: 0, writesAttempted: 0 }, + }); + expect(result.structuredContent).not.toHaveProperty("httpError"); + }); + + it("returns useful errors for invalid code and oversized results", async () => { + const invalid = await execute("async () => {"); + expect(invalid.isError).toBe(true); + const oversized = await execute("async () => 'x'.repeat(50_001)"); + expect(oversized.isError).toBe(true); + expect(oversized.content[0]?.text).toContain("Result exceeds 50,000 bytes"); + expect(apiRequests).toEqual([]); + }); +}); + +describe("Code Mode telemetry", () => { + /** + * Captures what Code Mode records on the active tools/call span. The MCP + * handler's own request attributes use setAttribute and are ignored here. + */ + function captureSpan(): Record { + const attributes: Record = {}; + const span = { + setAttribute: () => {}, + setAttributes: (values: Record) => + Object.assign(attributes, values), + }; + vi.spyOn(Sentry, "getActiveSpan").mockReturnValue( + span as unknown as ReturnType, + ); + return attributes; + } + + it("records the executed code and each operation by path template", async () => { + const attributes = captureSpan(); + const count = vi.spyOn(Sentry.metrics, "count"); + const code = `async () => { + await sentry.request({path: "/organizations/code-mode-org/projects/"}); + await sentry.request({method: "PUT", path: "/projects/code-mode-org/web/monitors/billing/", body: {name: "Billing"}}); + await sentry.request({path: "/organizations/code-mode-org/not-published/"}).catch(() => {}); + return "done"; + }`; + const result = await execute(code, { + props: { grantedSkills: ["api-write"] }, + }); + expect(result.isError).toBeUndefined(); + expect(attributes).toMatchObject({ + "gen_ai.tool.call.arguments.code": code, + "app.code_mode.outcome": "ok", + "app.code_mode.spec_version": SPEC_VERSION, + "app.code_mode.api_calls": 3, + "app.code_mode.writes": 1, + }); + expect(JSON.parse(String(attributes["app.code_mode.operations"]))).toEqual([ + "GET /api/0/organizations/{organization_id_or_slug}/projects/ 200", + `PUT ${monitorPath} 200`, + "GET unknown 403 denied", + ]); + expect(count).toHaveBeenCalledWith("app.code_mode.execution", 1, { + attributes: { tool: "execute_sentry_code", outcome: "ok" }, + }); + expect(count).toHaveBeenCalledWith("app.code_mode.request", 1, { + attributes: { + method: "PUT", + operation: monitorPath, + status: 200, + denied: false, + }, + }); + expect(count).toHaveBeenCalledWith("app.code_mode.request", 1, { + attributes: { + method: "GET", + operation: "unknown", + status: 403, + denied: true, + }, + }); + }); + + it("records search code without API attributes", async () => { + const attributes = captureSpan(); + const code = "async () => Object.keys(spec.paths).length"; + const result = await search(code); + expect(result.structuredContent?.result).toBe( + Object.keys(getSpec().paths as object).length, + ); + expect(attributes).toEqual({ + "gen_ai.tool.call.arguments.code": code, + "app.code_mode.outcome": "ok", + "app.code_mode.spec_version": SPEC_VERSION, + }); + }); + + it("does not report program errors as issues", async () => { + const logIssue = vi.spyOn(logging, "logIssue"); + const attributes = captureSpan(); + const result = await execute( + 'async () => { throw new Error("Program failed"); }', + ); + expect(result.isError).toBe(true); + expect(logIssue).not.toHaveBeenCalled(); + expect(attributes["app.code_mode.outcome"]).toBe("error"); + }); + + it("reports internal failures as issues and returns the event ID", async () => { + const logIssue = vi + .spyOn(logging, "logIssue") + .mockReturnValue("internal-event"); + const attributes = captureSpan(); + const loader = { + load() { + throw new Error("Loader unavailable"); + }, + } as unknown as WorkerLoader; + const result = await execute('async () => "never runs"', { + env: { LOADER: loader }, + }); + expect(result.isError).toBe(true); + expect(result.content[0]?.text).toContain("Loader unavailable"); + expect(result.content[0]?.text).toContain("Event ID: internal-event"); + // Failures outside the sandbox keep the tool's declared output shape. + expect(result.structuredContent).toEqual({ + error: expect.stringContaining("Event ID: internal-event"), + stats: { apiCalls: 0, writesAttempted: 0 }, + }); + expect(logIssue).toHaveBeenCalledExactlyOnceWith( + expect.objectContaining({ message: "Loader unavailable" }), + { + loggerScope: ["code-mode", "execution"], + extra: { tool: "execute_sentry_code", specVersion: SPEC_VERSION }, + }, + ); + expect(attributes["app.code_mode.outcome"]).toBe("internal_error"); + }); +}); diff --git a/packages/mcp-cloudflare/src/server/lib/mcp-handler.ts b/packages/mcp-cloudflare/src/server/lib/mcp-handler.ts index 860420ffe..5bf53c3e7 100644 --- a/packages/mcp-cloudflare/src/server/lib/mcp-handler.ts +++ b/packages/mcp-cloudflare/src/server/lib/mcp-handler.ts @@ -27,6 +27,7 @@ import { boundMcpRequestBody, } from "@sentry/toolkit-core/mcp-limits"; import { createMcpHandler } from "agents/mcp/server"; +import { registerCodeModeTools } from "../../code-mode/tools"; import { annotateResponseMetric } from "../metrics"; import { ACCESS_METHOD_ATTRIBUTE, @@ -472,12 +473,15 @@ async function handleAuthenticatedMcpRequest( // The modern handler requires a factory and creates a fresh SDK v2 server // for every request. Context remains request-scoped through tool closures. return await createMcpHandler( - () => - buildServer({ + () => { + const server = buildServer({ context: serverContext, experimentalMode: isExperimentalMode, sdkVersion: "v2", - }), + }); + registerCodeModeTools(server, env.LOADER, serverContext); + return server; + }, { route: url.pathname, // The Agents handler rejects browser Origins by default except localhost. diff --git a/packages/mcp-cloudflare/src/server/oauth/authorize.test.ts b/packages/mcp-cloudflare/src/server/oauth/authorize.test.ts index 5dffe42e7..6e8c75ed6 100644 --- a/packages/mcp-cloudflare/src/server/oauth/authorize.test.ts +++ b/packages/mcp-cloudflare/src/server/oauth/authorize.test.ts @@ -1,6 +1,7 @@ import { AuthorizationError } from "@cloudflare/workers-oauth-provider"; import { Hono } from "hono"; import { beforeEach, describe, expect, it, vi } from "vitest"; +import { SCOPES } from "../../constants"; import { SKILL_PREFERENCES_COOKIE_NAME } from "../lib/approval-dialog"; import type { Env } from "../types"; import oauthRoute from "./index"; @@ -26,7 +27,8 @@ function skillInputAttributes(html: string, skillId: string): string { `]*)>`, ), ); - return match?.[1] ?? ""; + expect(match).not.toBeNull(); + return match![1]; } function expectSkillChecked(html: string, skillId: string): void { @@ -262,6 +264,7 @@ describe("oauth authorize routes", () => { expectSkillUnchecked(html, "seer"); expectSkillChecked(html, "triage"); expectSkillChecked(html, "project-management"); + expectSkillUnchecked(html, "api-write"); }); it("does not reuse remembered skills for a different client ID", async () => { @@ -304,9 +307,10 @@ describe("oauth authorize routes", () => { expectSkillChecked(html, "seer"); expectSkillChecked(html, "triage"); expectSkillChecked(html, "project-management"); + expectSkillUnchecked(html, "api-write"); }); - it("ignores tampered remembered skill cookies and falls back to all approvable skills", async () => { + it("ignores tampered remembered skill cookies and falls back to initial defaults", async () => { mockOAuthProvider.parseAuthRequest.mockResolvedValueOnce({ clientId: "test-client", redirectUri: "https://example.com/callback", @@ -340,9 +344,97 @@ describe("oauth authorize routes", () => { expectSkillChecked(html, "seer"); expectSkillChecked(html, "triage"); expectSkillChecked(html, "project-management"); + expectSkillUnchecked(html, "api-write"); }); }); + describe("Code Mode consent", () => { + it.each([ + { name: "initial read-only Code Mode defaults", explicitWrite: false }, + { name: "explicit API Write without Triage", explicitWrite: true }, + ])( + "preserves $name through approval and the next prompt", + async ({ explicitWrite }) => { + const resource = "http://localhost/mcp/test-org"; + mockOAuthProvider.parseAuthRequest.mockResolvedValue({ + clientId: "test-client", + redirectUri: "https://example.com/callback", + scope: ["read"], + state: "original-state", + }); + mockOAuthProvider.lookupClient.mockResolvedValue({ + clientId: "test-client", + clientName: "Test Client", + redirectUris: ["https://example.com/callback"], + }); + const url = new URL("http://localhost/oauth/authorize"); + url.searchParams.set("resource", resource); + + const prompt = await app.fetch(new Request(url), testEnv as Env); + expect(prompt.status).toBe(200); + const html = await prompt.text(); + expect(html).toContain('value="api-read"'); + expect(html).toContain('value="api-write"'); + expectSkillChecked(html, "api-read"); + expectSkillUnchecked(html, "api-write"); + const state = html.match(/name="state" value="([^"]+)"/)?.[1]; + expect(state).toBeDefined(); + const initialSkills = [ + ...html.matchAll( + /]*)>/g, + ), + ] + .filter((match) => /\bchecked\b/.test(match[2])) + .map((match) => match[1]); + const selectedSkills = explicitWrite ? ["api-write"] : initialSkills; + const form = new FormData(); + form.set("state", state!); + form.set("decision", "approve"); + for (const skill of selectedSkills) form.append("skill", skill); + + const approval = await app.fetch( + new Request(url, { + method: "POST", + body: form, + }), + testEnv as Env, + ); + expect(approval.status).toBe(302); + const upstream = new URL(approval.headers.get("Location")!); + const approvedState = await verifyAndParseState( + upstream.searchParams.get("state")!, + testEnv.COOKIE_SECRET!, + ); + expect(approvedState.req.skills).toEqual(selectedSkills); + expect(approvedState.req.resource).toBe(resource); + expect(upstream.searchParams.get("scope")?.split(" ")).toEqual( + Object.keys(SCOPES), + ); + + const cookie = extractCookiePair( + approval.headers.get("Set-Cookie") ?? "", + SKILL_PREFERENCES_COOKIE_NAME, + ); + const remembered = await app.fetch( + new Request(url, { + headers: { Cookie: cookie }, + }), + testEnv as Env, + ); + expect(remembered.status).toBe(200); + const rememberedHtml = await remembered.text(); + const renderedSkills = [ + ...rememberedHtml.matchAll( + /]*)>/g, + ), + ] + .filter((match) => /\bchecked\b/.test(match[2])) + .map((match) => match[1]); + expect(renderedSkills).toEqual(selectedSkills); + }, + ); + }); + describe("POST /oauth/authorize", () => { beforeEach(() => { mockOAuthProvider.lookupClient.mockResolvedValue({ @@ -841,7 +933,10 @@ describe("oauth authorize routes", () => { expect(response.status).toBe(200); const html = await response.text(); - expect(html).toContain(">test-org organization"); + expect(html).toContain('aria-label="Organization scope"'); + expect(html).toContain( + 'Only test-org', + ); }); it("should allow request with project-scoped resource parameter", async () => { @@ -851,25 +946,36 @@ describe("oauth authorize routes", () => { scope: ["read"], resource: "http://localhost/mcp/test-org/test-project", }); - mockOAuthProvider.lookupClient.mockResolvedValueOnce({ + mockOAuthProvider.lookupClient.mockResolvedValue({ clientId: "test-client", clientName: "Test Client", redirectUris: ["https://example.com/callback"], }); + const preferenceCookie = await createSkillPreferenceCookie( + app, + testEnv, + "test-client", + ["api-write"], + ); const url = new URL("http://localhost/oauth/authorize"); url.searchParams.set( "resource", "http://localhost/mcp/test-org/test-project", ); - const request = new Request(url, { method: "GET" }); + const request = new Request(url, { + method: "GET", + headers: { Cookie: preferenceCookie }, + }); const response = await app.fetch(request, testEnv as Env); expect(response.status).toBe(200); const html = await response.text(); expect(html).toContain(">test-project project"); expect(html).toContain(">test-org organization"); + expect(html).not.toContain('name="skill" value="api-read"'); + expect(html).not.toContain('name="skill" value="api-write"'); }); it("should reject request with invalid resource hostname", async () => { diff --git a/packages/mcp-cloudflare/src/server/oauth/callback.test.ts b/packages/mcp-cloudflare/src/server/oauth/callback.test.ts index 5035d97bf..80e3e5e24 100644 --- a/packages/mcp-cloudflare/src/server/oauth/callback.test.ts +++ b/packages/mcp-cloudflare/src/server/oauth/callback.test.ts @@ -676,7 +676,8 @@ describe("oauth callback routes", () => { expires_at: new Date(Date.now() + 3600_000).toISOString(), token_type: "bearer", user: { id: "user-123", name: "Test User" }, - scope: "team:write org:read event:write project:write alerts:write", + scope: + " team:write org:read\tevent:write project:write alerts:write org:read ", }, null, ]); diff --git a/packages/mcp-cloudflare/src/server/oauth/constants.ts b/packages/mcp-cloudflare/src/server/oauth/constants.ts index b9c8c6680..757dcb870 100644 --- a/packages/mcp-cloudflare/src/server/oauth/constants.ts +++ b/packages/mcp-cloudflare/src/server/oauth/constants.ts @@ -15,5 +15,5 @@ export const TokenResponseSchema = z.object({ id: z.string(), name: z.string().nullable(), }), - scope: z.string(), + scope: z.string().optional(), }); diff --git a/packages/mcp-cloudflare/src/server/oauth/helpers.test.ts b/packages/mcp-cloudflare/src/server/oauth/helpers.test.ts index ee30d6872..ed8a7d858 100644 --- a/packages/mcp-cloudflare/src/server/oauth/helpers.test.ts +++ b/packages/mcp-cloudflare/src/server/oauth/helpers.test.ts @@ -1,6 +1,7 @@ import type { TokenExchangeCallbackOptions } from "@cloudflare/workers-oauth-provider"; import { beforeEach, describe, expect, it, vi } from "vitest"; import type { WorkerProps } from "../types"; + const { logIssue, logWarn, sentryMetricsCount, sentrySetUser } = vi.hoisted( () => ({ logIssue: vi.fn(), @@ -22,12 +23,6 @@ vi.mock("@sentry/cloudflare", () => ({ setUser: sentrySetUser, })); -import { - OAUTH_GRANT_AGE_BUCKET_ATTRIBUTE, - OAUTH_GRANT_SHAPE_ATTRIBUTE, - OAUTH_REFRESH_OUTCOME_ATTRIBUTE, - OAUTH_UPSTREAM_EXPIRES_IN_BUCKET_ATTRIBUTE, -} from "./telemetry"; import { appendAuthorizationResponseIss, createResourceValidationError, @@ -38,6 +33,12 @@ import { tokenExchangeCallback, validateResourceParameter, } from "./helpers"; +import { + OAUTH_GRANT_AGE_BUCKET_ATTRIBUTE, + OAUTH_GRANT_SHAPE_ATTRIBUTE, + OAUTH_REFRESH_OUTCOME_ATTRIBUTE, + OAUTH_UPSTREAM_EXPIRES_IN_BUCKET_ATTRIBUTE, +} from "./telemetry"; const GRANT_TYPES = { AUTHORIZATION_CODE: @@ -230,45 +231,54 @@ describe("tokenExchangeCallback", () => { expect(result).toBeUndefined(); }); - it("should return cached token TTL when token is locally valid", async () => { - const now = Date.now(); - const futureExpiry = Date.now() + 10 * 60 * 1000; - const options = createRefreshOptions({ - accessTokenExpiresAt: futureExpiry, - sessionStartedAt: now - 2 * 24 * 60 * 60 * 1000, - upstreamExpiresAt: now + 3 * 24 * 60 * 60 * 1000, - }); - - const fetchSpy = vi.spyOn(globalThis, "fetch"); - - const result = await callTokenExchangeCallback(options); - expect(result).toEqual({ - newProps: expect.objectContaining({ - accessToken: "old-access-token", - }), - accessTokenTTL: expect.any(Number), - }); - expect(fetchSpy).not.toHaveBeenCalled(); - expect(sentryMetricsCount).toHaveBeenCalledWith( - "app.oauth.token_exchange", - 1, - { - attributes: expect.objectContaining({ - [OAUTH_REFRESH_OUTCOME_ATTRIBUTE]: "cached_valid_local", - [OAUTH_GRANT_AGE_BUCKET_ATTRIBUTE]: "1d_7d", - [OAUTH_UPSTREAM_EXPIRES_IN_BUCKET_ATTRIBUTE]: "1d_7d", - "app.client.registration.method": - expect.stringMatching(/^(cimd|dcr|unknown)$/), + it.each([ + ["known", ["event:write", "org:read"]], + ["unknown", undefined], + ] as const)( + "preserves %s upstream scopes when reusing a locally valid token", + async (_, upstreamScopes) => { + const now = Date.now(); + const futureExpiry = Date.now() + 10 * 60 * 1000; + const options = createRefreshOptions({ + accessTokenExpiresAt: futureExpiry, + sessionStartedAt: now - 2 * 24 * 60 * 60 * 1000, + upstreamExpiresAt: now + 3 * 24 * 60 * 60 * 1000, + upstreamScopes: upstreamScopes ? [...upstreamScopes] : undefined, + }); + + const fetchSpy = vi.spyOn(globalThis, "fetch"); + + const result = await callTokenExchangeCallback(options); + expect(result).toEqual({ + newProps: expect.objectContaining({ + accessToken: "old-access-token", + upstreamScopes, }), - }, - ); - }); + accessTokenTTL: expect.any(Number), + }); + expect(fetchSpy).not.toHaveBeenCalled(); + expect(sentryMetricsCount).toHaveBeenCalledWith( + "app.oauth.token_exchange", + 1, + { + attributes: expect.objectContaining({ + [OAUTH_REFRESH_OUTCOME_ATTRIBUTE]: "cached_valid_local", + [OAUTH_GRANT_AGE_BUCKET_ATTRIBUTE]: "1d_7d", + [OAUTH_UPSTREAM_EXPIRES_IN_BUCKET_ATTRIBUTE]: "1d_7d", + "app.client.registration.method": + expect.stringMatching(/^(cimd|dcr|unknown)$/), + }), + }, + ); + }, + ); it("should clear upstreamTokenInvalid after a successful probe", async () => { const pastExpiry = Date.now() - 60 * 1000; const options = createRefreshOptions({ accessTokenExpiresAt: pastExpiry, upstreamTokenInvalid: true, + upstreamScopes: ["event:write", "org:read"], }); vi.spyOn(globalThis, "fetch").mockResolvedValue( @@ -286,6 +296,10 @@ describe("tokenExchangeCallback", () => { ); const result = await callTokenExchangeCallback(options); + expect(result?.newProps?.upstreamScopes).toEqual([ + "event:write", + "org:read", + ]); expect(result).toEqual({ newProps: expect.not.objectContaining({ upstreamTokenInvalid: true, @@ -399,6 +413,32 @@ describe("exchangeCodeForAccessToken", () => { expect(logWarn).not.toHaveBeenCalled(); }); + it("accepts token responses with omitted scope without inferring permissions", async () => { + const token = { + access_token: "test-access-token", + refresh_token: "test-refresh-token", + token_type: "bearer", + expires_in: 3600, + expires_at: "2026-04-13T16:36:23.087Z", + user: { id: "user-123", name: "Test User" }, + }; + vi.spyOn(globalThis, "fetch").mockResolvedValue(Response.json(token)); + + const [payload, response] = await exchangeCodeForAccessToken({ + client_id: "test-client-id", + client_secret: "test-client-secret", + code: "test-code", + upstream_url: "https://sentry.io/oauth/token", + redirect_uri: "https://mcp.sentry.dev/oauth/callback", + }); + + expect(response).toBeNull(); + expect(payload).toEqual(token); + expect(payload?.scope).toBeUndefined(); + expect(logIssue).not.toHaveBeenCalled(); + expect(logWarn).not.toHaveBeenCalled(); + }); + it("returns a specific invalid_grant message without an event ID", async () => { vi.spyOn(globalThis, "fetch").mockResolvedValue( new Response( diff --git a/packages/mcp-cloudflare/src/server/routes/__tests__/mcp-discovery.test.ts b/packages/mcp-cloudflare/src/server/routes/__tests__/mcp-discovery.test.ts index f321d4356..e052b3013 100644 --- a/packages/mcp-cloudflare/src/server/routes/__tests__/mcp-discovery.test.ts +++ b/packages/mcp-cloudflare/src/server/routes/__tests__/mcp-discovery.test.ts @@ -1,5 +1,5 @@ import { env } from "cloudflare:test"; -import { describe, it, expect } from "vitest"; +import { describe, expect, it } from "vitest"; import app from "../../app"; describe("/.mcp discovery routes", () => { @@ -72,5 +72,28 @@ describe("/.mcp discovery routes", () => { surface: "catalog", }), ); + for (const name of ["search_sentry_api", "execute_sentry_code"]) { + expect(toolsByName.get(name)).toEqual( + expect.objectContaining({ + surface: "direct", + requiredScopes: [], + skills: ["api-read", "api-write"], + inputSchema: expect.objectContaining({ + type: "object", + required: ["code"], + properties: expect.objectContaining({ + code: expect.objectContaining({ type: "string" }), + }), + }), + outputSchema: expect.objectContaining({ + type: "object", + properties: expect.objectContaining({ + result: expect.any(Object), + stats: expect.objectContaining({ type: "object" }), + }), + }), + }), + ); + } }); }); diff --git a/packages/mcp-cloudflare/src/server/routes/mcp.ts b/packages/mcp-cloudflare/src/server/routes/mcp.ts index 359361198..350bafdd7 100644 --- a/packages/mcp-cloudflare/src/server/routes/mcp.ts +++ b/packages/mcp-cloudflare/src/server/routes/mcp.ts @@ -1,12 +1,43 @@ /** * Public MCP metadata endpoints under `/.mcp/*` for external documentation sites. * - * Responds with pre-generated JSON payloads from @sentry/mcp-core. + * Combines generated core definitions with the hosted Code Mode definitions. * CORS is handled by the wrapper in index.ts (these paths are in PUBLIC_METADATA_PATHS), * so routes here only need to set content-specific headers like Cache-Control. */ -import { Hono } from "hono"; + +import { + CODE_MODE_SKILLS, + getCodeModeToolDefinitions, +} from "@sentry/mcp-core/code-mode"; import TOOL_DEFINITIONS from "@sentry/mcp-core/toolDefinitions"; +import { Hono } from "hono"; +import { z } from "zod"; + +const hostedTools = Object.entries( + getCodeModeToolDefinitions({ allowWrites: true }), +).map(([name, { inputSchema, outputSchema, ...definition }]) => ({ + name, + ...definition, + inputSchema: toJsonSchema(inputSchema, "input"), + outputSchema: toJsonSchema(outputSchema, "output"), + // API permissions are checked per operation, not as one fixed tool scope. + requiredScopes: [], + skills: [...CODE_MODE_SKILLS], + surface: "direct", +})); +const toolDefinitions = [...TOOL_DEFINITIONS, ...hostedTools].sort((a, b) => + a.name.localeCompare(b.name), +); + +function toJsonSchema(schema: z.ZodType, io: "input" | "output") { + const { $schema: _, ...jsonSchema } = z.toJSONSchema(schema, { + io, + target: "draft-7", + unrepresentable: "any", + }); + return jsonSchema; +} function jsonResponse(json: unknown, status = 200) { const body = JSON.stringify(json); @@ -27,4 +58,4 @@ export default new Hono() }), ) // Tools - .get("/tools.json", (c) => jsonResponse(TOOL_DEFINITIONS)); + .get("/tools.json", (c) => jsonResponse(toolDefinitions)); diff --git a/packages/mcp-cloudflare/src/server/types.ts b/packages/mcp-cloudflare/src/server/types.ts index 5d493089e..2ee3606e1 100644 --- a/packages/mcp-cloudflare/src/server/types.ts +++ b/packages/mcp-cloudflare/src/server/types.ts @@ -33,9 +33,9 @@ export type WorkerProps = { /** * Scopes Sentry actually granted on the upstream access token, as returned * in the `scope` field of Sentry's OAuth token response. Unlike - * `grantedScopes` (derived from selected skills), this reflects what the - * stored Sentry token can really do. Absent on grants created before this - * field existed. + * `grantedScopes` (derived from selected skills), these describe the token, + * not the MCP session's permissions. Absent on older grants or when Sentry + * omitted `scope`. */ upstreamScopes?: string[]; /** Primary authorization method - array of skill strings */ @@ -60,6 +60,7 @@ export type WorkerProps = { export interface Env { NODE_ENV: string; ASSETS: Fetcher; + LOADER: WorkerLoader; OAUTH_KV: KVNamespace; MCP_CACHE: KVNamespace; COOKIE_SECRET: string; diff --git a/packages/mcp-cloudflare/tsconfig.server.json b/packages/mcp-cloudflare/tsconfig.server.json index 1e0cc6723..706c6e163 100644 --- a/packages/mcp-cloudflare/tsconfig.server.json +++ b/packages/mcp-cloudflare/tsconfig.server.json @@ -8,7 +8,8 @@ ] }, "include": [ - "src/server" + "src/server", + "src/code-mode" ], "exclude": [ "src/**/*.test.ts", diff --git a/packages/mcp-cloudflare/wrangler.canary.jsonc b/packages/mcp-cloudflare/wrangler.canary.jsonc index e1b6405db..9448a98b9 100644 --- a/packages/mcp-cloudflare/wrangler.canary.jsonc +++ b/packages/mcp-cloudflare/wrangler.canary.jsonc @@ -22,6 +22,7 @@ "binding": "CF_VERSION_METADATA", }, "vars": {}, + "worker_loaders": [{ "binding": "LOADER" }], "unsafe": { "bindings": [ { diff --git a/packages/mcp-cloudflare/wrangler.jsonc b/packages/mcp-cloudflare/wrangler.jsonc index 6ea648773..c140d4239 100644 --- a/packages/mcp-cloudflare/wrangler.jsonc +++ b/packages/mcp-cloudflare/wrangler.jsonc @@ -27,6 +27,7 @@ "binding": "CF_VERSION_METADATA", }, "vars": {}, + "worker_loaders": [{ "binding": "LOADER" }], "unsafe": { "bindings": [ { diff --git a/packages/mcp-cloudflare/wrangler.test.jsonc b/packages/mcp-cloudflare/wrangler.test.jsonc index b972909b7..5a87f0f06 100644 --- a/packages/mcp-cloudflare/wrangler.test.jsonc +++ b/packages/mcp-cloudflare/wrangler.test.jsonc @@ -9,6 +9,7 @@ "nodejs_compat_populate_process_env", "global_fetch_strictly_public", ], + "worker_loaders": [{ "binding": "LOADER" }], "vars": { "COOKIE_SECRET": "test-cookie-secret-32-characters", "SENTRY_CLIENT_ID": "test-client-id", diff --git a/packages/mcp-core/package.json b/packages/mcp-core/package.json index 123d00191..0b22caaaf 100644 --- a/packages/mcp-core/package.json +++ b/packages/mcp-core/package.json @@ -29,6 +29,10 @@ "types": "./dist/api-client/index.d.ts", "default": "./dist/api-client/index.js" }, + "./code-mode": { + "types": "./dist/code-mode.d.ts", + "default": "./dist/code-mode.js" + }, "./constants": { "types": "./dist/constants.d.ts", "default": "./dist/constants.js" @@ -105,6 +109,14 @@ "types": "./dist/tools/agent-tools.d.ts", "default": "./dist/tools/agent-tools.js" }, + "./internal/tool-helpers/resolve-region-url": { + "types": "./dist/internal/tool-helpers/resolve-region-url.d.ts", + "default": "./dist/internal/tool-helpers/resolve-region-url.js" + }, + "./internal/tool-helpers/validate-region-url": { + "types": "./dist/internal/tool-helpers/validate-region-url.d.ts", + "default": "./dist/internal/tool-helpers/validate-region-url.js" + }, "./internal/agents/callEmbeddedAgent": { "types": "./dist/internal/agents/callEmbeddedAgent.d.ts", "default": "./dist/internal/agents/callEmbeddedAgent.js" diff --git a/packages/mcp-core/scripts/generate-definitions.ts b/packages/mcp-core/scripts/generate-definitions.ts index 94805e898..faaec094e 100644 --- a/packages/mcp-core/scripts/generate-definitions.ts +++ b/packages/mcp-core/scripts/generate-definitions.ts @@ -18,6 +18,9 @@ const toolsModule = await import("../src/tools/index.ts"); const surfacesModule = await import("../src/tools/surfaces.ts"); const skillsModule = await import("../src/skills.ts"); const toolTypesModule = await import("../src/tools/types.ts"); +// Hosted-only tools belong in remote plugin allowlists, not core/stdio exports. +const { CODE_MODE_TOOL_NAMES, CODE_MODE_SKILLS, getCodeModeToolDefinitions } = + await import("../src/code-mode.ts"); function writeJson(file: string, data: unknown) { fs.writeFileSync(file, JSON.stringify(data, null, 2)); @@ -194,6 +197,7 @@ async function generateSkillDefinitions() { description: string; defaultEnabled: boolean; deprecated?: boolean; + hostedOnly?: boolean; order: number; toolCount?: number; }> @@ -283,11 +287,25 @@ async function generateSkillDefinitions() { }); } + if (CODE_MODE_SKILLS.some((skillId) => skillId === skill.id)) { + const definitions = getCodeModeToolDefinitions({ + allowWrites: skill.id === "api-write", + }); + for (const [name, definition] of Object.entries(definitions)) { + skillTools.push({ + name, + description: definition.description, + requiredScopes: [], + }); + } + } + // Sort tools alphabetically by name skillTools.sort((a, b) => a.name.localeCompare(b.name)); return { ...skill, + ...(skill.hostedOnly ? { toolCount: skillTools.length } : {}), tools: skillTools, }; }); @@ -349,6 +367,7 @@ function isUpToDate(outDir: string): boolean { path.join(__dirname, "../src/skills.ts"), path.join(__dirname, "../src/tools/surfaces.ts"), path.join(__dirname, "../src/tools/types.ts"), + path.join(__dirname, "../src/code-mode.ts"), path.join( __dirname, "../src/internal/tool-helpers/tool-call-formatting.ts", @@ -415,12 +434,16 @@ async function main() { const experimentalDirectTools = experimentalTools.filter( (tool) => tool.surface === "direct", ); - const toolNames = directTools - .filter(isEnabledByDefaultSkills) - .map((t) => t.name); - const experimentalToolNames = experimentalDirectTools - .filter(isEnabledByDefaultSkills) - .map((t) => t.name); + const toolNames = [ + ...directTools.filter(isEnabledByDefaultSkills).map((t) => t.name), + ...CODE_MODE_TOOL_NAMES, + ].sort(); + const experimentalToolNames = [ + ...experimentalDirectTools + .filter(isEnabledByDefaultSkills) + .map((t) => t.name), + ...CODE_MODE_TOOL_NAMES, + ].sort(); let agentsSynced = 0; for (const agentConfig of agentConfigs()) { diff --git a/packages/mcp-core/src/code-mode.ts b/packages/mcp-core/src/code-mode.ts new file mode 100644 index 000000000..afd92a699 --- /dev/null +++ b/packages/mcp-core/src/code-mode.ts @@ -0,0 +1,98 @@ +/** + * Hosted Code Mode tool definitions. The runtime lives in + * `packages/mcp-cloudflare/src/code-mode/` because it needs Dynamic Workers; + * the definitions live here so definition generation, `/.mcp/tools.json` and + * the consent screen read them like any other tool metadata. + */ +import { z } from "zod"; + +export const CODE_MODE_SKILLS = ["api-read", "api-write"] as const; + +export const codeModeResultSchema = z + .object({ + result: z.unknown().optional(), + error: z.string().optional(), + httpError: z + .object({ + status: z.number(), + method: z.string(), + path: z.string(), + headers: z.record(z.string(), z.string()), + }) + .optional(), + stats: z.object({ apiCalls: z.number(), writesAttempted: z.number() }), + }) + .refine( + (value) => "result" in value !== "error" in value, + "Return either a result or an error.", + ); + +/** Shared by hosted registration, public metadata and plugin generation. */ +export function getCodeModeToolDefinitions({ + allowWrites, +}: { + allowWrites: boolean; +}) { + return { + search_sentry_api: { + title: "Search Sentry API", + description: `Discover Sentry HTTP API operations by executing a JavaScript async arrow function against the global spec. The configured OpenAPI document has schemas inline; no $ref resolution is needed. No network or API calls are available. +Search using the user's product terms across operation metadata: paths may use different internal names. Each spec.paths[path] has optional path-level parameters and HTTP-method operations. Operations have optional operationId, summary, description, tags (string[]), parameters, requestBody and responses. spec.tags, when present, describes categories with name, description and optional x-sidebar-name. +First return a short list of matching methods, paths and summaries. If results are empty or unrelated, inspect categories and broaden the terms before trying API routes. Then inspect the selected operation's descriptions, parameters, requestBody and relevant response fields. Path-level parameters also apply; operation parameters override them by name and in. Do not return whole paths, the full spec or sliced JSON strings. Return only needed fields; the result limit is 50,000 bytes. +Discovery example: async () => { + const term = "release"; + const results = []; + for (const [path, item] of Object.entries(spec.paths)) { + for (const [method, op] of Object.entries(item)) { + if (!["get", "post", "put", "patch", "delete", "head", "options", "trace"].includes(method)) continue; + const text = [path, op.operationId, op.summary, op.description, ...(op.tags ?? [])].join(" ").toLowerCase(); + if (text.includes(term.toLowerCase())) results.push({method, path, operationId: op.operationId, summary: op.summary, tags: op.tags}); + } + } + return results; +} +Categories example: async () => spec.tags?.length ? spec.tags : [...new Set(Object.values(spec.paths).flatMap(item => Object.entries(item).filter(([method]) => ["get", "post", "put", "patch", "delete", "head", "options", "trace"].includes(method)).flatMap(([, op]) => op.tags ?? [])))].map(name => ({name})) +Schema example: async () => { const path = "/api/0/organizations/{organization_id_or_slug}/releases/"; const item = spec.paths[path]; const op = item.post; return {description: op.description, pathParameters: item.parameters, operationParameters: op.parameters, requestBody: op.requestBody}; }`, + inputSchema: z.object({ + code: z + .string() + .min(1) + .max(30_000) + .describe( + "JavaScript async arrow function, e.g. async () => Object.keys(spec.paths)", + ), + }), + outputSchema: codeModeResultSchema, + annotations: { + readOnlyHint: true, + destructiveHint: false, + openWorldHint: false, + }, + }, + execute_sentry_code: { + title: "Execute Sentry API code", + description: `Execute a JavaScript async arrow function with sentry.request({method?, path, query?, body?}). Discover endpoints and schemas with search_sentry_api. method defaults to GET. path is relative to the configured API prefix; full /api/0 paths are also accepted. query accepts string, number or boolean values and arrays of those values; arrays produce repeated parameters, and null/undefined values are omitted. body is JSON. Each request returns {status, headers, body}; headers.link preserves pagination. Non-2xx responses throw an Error with status, method, path, headers, data. On 403, headers["www-authenticate"] may provide insufficient_scope evidence; a denial without that evidence does not identify its cause. Credentials are injected outside the sandbox. Direct network access is disabled; use sentry.request for HTTP. Only documented operations within this connection’s API read/write permission and organization constraint are allowed. Sentry separately enforces the upstream token scopes and user/resource permissions. A permission denial cannot be bypassed by changing routes or using fetch directly. +Before writing, discover the operation and inspect its request contract, defaults and update semantics. For edits, read the current resource through HTTP: other MCP tools may return renamed, enriched or filtered views. Even a raw GET response is not a write template: sending the same field and value back can trigger effects, including propagating an aggregate value to child resources. Build the body explicitly from required fields and requested changes. Include other fields only when the request contract or documented update behavior requires them; do not resend unchanged optional fields merely because GET returned them. Do not assume PUT replaces everything or that omitted fields always stay unchanged, and do not turn a missing field into an empty list or null. When the contract requires resending nested collections, retain existing IDs, values and relationships unless the user requested changing them. If preservation is ambiguous, obtain more documentation or report the limitation rather than inventing write semantics. Re-read after a write to verify requested changes and preserved settings. If an unexpected side effect occurs, do not probe speculative write bodies or routes to repair it; report the actual state unless a documented repair is available. +Combine dependent requests, loops, pagination and verification in code. Await every sentry.request(), including parallel calls, before returning. Pending calls are cancelled when execution ends or times out; already accepted writes are not rolled back. Keep intermediate responses inside the program and return only the fields needed to answer the user, such as IDs, URLs, counts or a concise verification result. Return full objects only when the user needs their full contents. +Limits: 20 API calls, 30 seconds, 50,000 output bytes, 2 MB per API response. Writes are ${allowWrites ? "enabled" : "disabled"}. No automatic retries. Execution is not atomic; inspect state before retrying a failed write. +Example: async () => { const response = await sentry.request({path: "/organizations/"}); return {organizations: response.body.map(({slug, name}) => ({slug, name})), pagination: response.headers.link}; }`, + inputSchema: z.object({ + code: z + .string() + .min(1) + .max(30_000) + .describe("JavaScript async arrow function using sentry.request"), + }), + outputSchema: codeModeResultSchema, + annotations: { + readOnlyHint: !allowWrites, + destructiveHint: allowWrites, + openWorldHint: true, + }, + }, + }; +} + +export const CODE_MODE_TOOL_NAMES: readonly string[] = Object.freeze( + Object.keys(getCodeModeToolDefinitions({ allowWrites: false })), +); diff --git a/packages/mcp-core/src/skillDefinitions.json b/packages/mcp-core/src/skillDefinitions.json index 41beeedd0..588838efe 100644 --- a/packages/mcp-core/src/skillDefinitions.json +++ b/packages/mcp-core/src/skillDefinitions.json @@ -664,5 +664,97 @@ "requiredScopes": [] } ] + }, + { + "id": "api-read", + "name": "API Read", + "description": "Read data through the Sentry API using Code Mode. Your Sentry permissions still apply.", + "defaultEnabled": false, + "hostedOnly": true, + "order": 6, + "toolCount": 7, + "tools": [ + { + "name": "execute_sentry_code", + "description": "Execute a JavaScript async arrow function with sentry.request({method?, path, query?, body?}). Discover endpoints and schemas with search_sentry_api. method defaults to GET. path is relative to the configured API prefix; full /api/0 paths are also accepted. query accepts string, number or boolean values and arrays of those values; arrays produce repeated parameters, and null/undefined values are omitted. body is JSON. Each request returns {status, headers, body}; headers.link preserves pagination. Non-2xx responses throw an Error with status, method, path, headers, data. On 403, headers[\"www-authenticate\"] may provide insufficient_scope evidence; a denial without that evidence does not identify its cause. Credentials are injected outside the sandbox. Direct network access is disabled; use sentry.request for HTTP. Only documented operations within this connection’s API read/write permission and organization constraint are allowed. Sentry separately enforces the upstream token scopes and user/resource permissions. A permission denial cannot be bypassed by changing routes or using fetch directly.\nBefore writing, discover the operation and inspect its request contract, defaults and update semantics. For edits, read the current resource through HTTP: other MCP tools may return renamed, enriched or filtered views. Even a raw GET response is not a write template: sending the same field and value back can trigger effects, including propagating an aggregate value to child resources. Build the body explicitly from required fields and requested changes. Include other fields only when the request contract or documented update behavior requires them; do not resend unchanged optional fields merely because GET returned them. Do not assume PUT replaces everything or that omitted fields always stay unchanged, and do not turn a missing field into an empty list or null. When the contract requires resending nested collections, retain existing IDs, values and relationships unless the user requested changing them. If preservation is ambiguous, obtain more documentation or report the limitation rather than inventing write semantics. Re-read after a write to verify requested changes and preserved settings. If an unexpected side effect occurs, do not probe speculative write bodies or routes to repair it; report the actual state unless a documented repair is available.\nCombine dependent requests, loops, pagination and verification in code. Await every sentry.request(), including parallel calls, before returning. Pending calls are cancelled when execution ends or times out; already accepted writes are not rolled back. Keep intermediate responses inside the program and return only the fields needed to answer the user, such as IDs, URLs, counts or a concise verification result. Return full objects only when the user needs their full contents.\nLimits: 20 API calls, 30 seconds, 50,000 output bytes, 2 MB per API response. Writes are disabled. No automatic retries. Execution is not atomic; inspect state before retrying a failed write.\nExample: async () => { const response = await sentry.request({path: \"/organizations/\"}); return {organizations: response.body.map(({slug, name}) => ({slug, name})), pagination: response.headers.link}; }", + "requiredScopes": [] + }, + { + "name": "find_organizations", + "description": "Find organizations that the user has access to in Sentry.\n\nUse this tool when you need to:\n- View organizations in Sentry\n- Find an organization's slug to aid other tool requests\n- Search for specific organizations by name or slug\n\nReturns up to 25 results per page. When hasMore is true, pass the returned nextCursor with the same filters and scope to fetch the next page.", + "requiredScopes": ["org:read"] + }, + { + "name": "find_projects", + "description": "Find projects in Sentry.\n\nUse this tool when you need to:\n- View projects in a Sentry organization\n- Find a project's slug to aid other tool requests\n- Search for specific projects by name or slug\n\nReturns up to 25 results per page. When hasMore is true, pass the returned nextCursor with the same filters and scope to fetch the next page.", + "requiredScopes": ["project:read"] + }, + { + "name": "get_sentry_mcp_info", + "description": "Get information about the running Sentry MCP server.\n\nUse this tool when you need to:\n- Check the Sentry MCP server version\n- Verify compatibility with a Skill or integration", + "requiredScopes": [] + }, + { + "name": "search_sentry_api", + "description": "Discover Sentry HTTP API operations by executing a JavaScript async arrow function against the global spec. The configured OpenAPI document has schemas inline; no $ref resolution is needed. No network or API calls are available.\nSearch using the user's product terms across operation metadata: paths may use different internal names. Each spec.paths[path] has optional path-level parameters and HTTP-method operations. Operations have optional operationId, summary, description, tags (string[]), parameters, requestBody and responses. spec.tags, when present, describes categories with name, description and optional x-sidebar-name.\nFirst return a short list of matching methods, paths and summaries. If results are empty or unrelated, inspect categories and broaden the terms before trying API routes. Then inspect the selected operation's descriptions, parameters, requestBody and relevant response fields. Path-level parameters also apply; operation parameters override them by name and in. Do not return whole paths, the full spec or sliced JSON strings. Return only needed fields; the result limit is 50,000 bytes.\nDiscovery example: async () => {\n const term = \"release\";\n const results = [];\n for (const [path, item] of Object.entries(spec.paths)) {\n for (const [method, op] of Object.entries(item)) {\n if (![\"get\", \"post\", \"put\", \"patch\", \"delete\", \"head\", \"options\", \"trace\"].includes(method)) continue;\n const text = [path, op.operationId, op.summary, op.description, ...(op.tags ?? [])].join(\" \").toLowerCase();\n if (text.includes(term.toLowerCase())) results.push({method, path, operationId: op.operationId, summary: op.summary, tags: op.tags});\n }\n }\n return results;\n}\nCategories example: async () => spec.tags?.length ? spec.tags : [...new Set(Object.values(spec.paths).flatMap(item => Object.entries(item).filter(([method]) => [\"get\", \"post\", \"put\", \"patch\", \"delete\", \"head\", \"options\", \"trace\"].includes(method)).flatMap(([, op]) => op.tags ?? [])))].map(name => ({name}))\nSchema example: async () => { const path = \"/api/0/organizations/{organization_id_or_slug}/releases/\"; const item = spec.paths[path]; const op = item.post; return {description: op.description, pathParameters: item.parameters, operationParameters: op.parameters, requestBody: op.requestBody}; }", + "requiredScopes": [] + }, + { + "name": "submit_feedback_to_sentry_team", + "description": "Report friction with the Sentry MCP server to its maintainers.\n\nUse this tool when you need to:\n- Report that no Sentry MCP tool could do what the user asked\n- Report a tool that failed, returned wrong data, or was confusing\n- Suggest an improvement to the Sentry MCP tools\n\n\nsubmit_feedback_to_sentry_team(task='find slow endpoints', kind='missing', impact='blocked', description='No tool returns p95 latency per endpoint.')\n\n\n\n- Call at most once per task, after you finish or give up.\n- Feedback goes to the Sentry MCP maintainers, not the user's Sentry organization.\n- Do not include secrets, credentials, or personal data.\n", + "requiredScopes": [] + }, + { + "name": "whoami", + "description": "Identify the authenticated user in Sentry.\n\nUse this tool when you need to:\n- Get the user's name and email address.", + "requiredScopes": [] + } + ] + }, + { + "id": "api-write", + "name": "API Write", + "description": "Read, create, modify, and delete data through the Sentry API. Includes API Read.", + "defaultEnabled": false, + "hostedOnly": true, + "order": 7, + "toolCount": 7, + "tools": [ + { + "name": "execute_sentry_code", + "description": "Execute a JavaScript async arrow function with sentry.request({method?, path, query?, body?}). Discover endpoints and schemas with search_sentry_api. method defaults to GET. path is relative to the configured API prefix; full /api/0 paths are also accepted. query accepts string, number or boolean values and arrays of those values; arrays produce repeated parameters, and null/undefined values are omitted. body is JSON. Each request returns {status, headers, body}; headers.link preserves pagination. Non-2xx responses throw an Error with status, method, path, headers, data. On 403, headers[\"www-authenticate\"] may provide insufficient_scope evidence; a denial without that evidence does not identify its cause. Credentials are injected outside the sandbox. Direct network access is disabled; use sentry.request for HTTP. Only documented operations within this connection’s API read/write permission and organization constraint are allowed. Sentry separately enforces the upstream token scopes and user/resource permissions. A permission denial cannot be bypassed by changing routes or using fetch directly.\nBefore writing, discover the operation and inspect its request contract, defaults and update semantics. For edits, read the current resource through HTTP: other MCP tools may return renamed, enriched or filtered views. Even a raw GET response is not a write template: sending the same field and value back can trigger effects, including propagating an aggregate value to child resources. Build the body explicitly from required fields and requested changes. Include other fields only when the request contract or documented update behavior requires them; do not resend unchanged optional fields merely because GET returned them. Do not assume PUT replaces everything or that omitted fields always stay unchanged, and do not turn a missing field into an empty list or null. When the contract requires resending nested collections, retain existing IDs, values and relationships unless the user requested changing them. If preservation is ambiguous, obtain more documentation or report the limitation rather than inventing write semantics. Re-read after a write to verify requested changes and preserved settings. If an unexpected side effect occurs, do not probe speculative write bodies or routes to repair it; report the actual state unless a documented repair is available.\nCombine dependent requests, loops, pagination and verification in code. Await every sentry.request(), including parallel calls, before returning. Pending calls are cancelled when execution ends or times out; already accepted writes are not rolled back. Keep intermediate responses inside the program and return only the fields needed to answer the user, such as IDs, URLs, counts or a concise verification result. Return full objects only when the user needs their full contents.\nLimits: 20 API calls, 30 seconds, 50,000 output bytes, 2 MB per API response. Writes are enabled. No automatic retries. Execution is not atomic; inspect state before retrying a failed write.\nExample: async () => { const response = await sentry.request({path: \"/organizations/\"}); return {organizations: response.body.map(({slug, name}) => ({slug, name})), pagination: response.headers.link}; }", + "requiredScopes": [] + }, + { + "name": "find_organizations", + "description": "Find organizations that the user has access to in Sentry.\n\nUse this tool when you need to:\n- View organizations in Sentry\n- Find an organization's slug to aid other tool requests\n- Search for specific organizations by name or slug\n\nReturns up to 25 results per page. When hasMore is true, pass the returned nextCursor with the same filters and scope to fetch the next page.", + "requiredScopes": ["org:read"] + }, + { + "name": "find_projects", + "description": "Find projects in Sentry.\n\nUse this tool when you need to:\n- View projects in a Sentry organization\n- Find a project's slug to aid other tool requests\n- Search for specific projects by name or slug\n\nReturns up to 25 results per page. When hasMore is true, pass the returned nextCursor with the same filters and scope to fetch the next page.", + "requiredScopes": ["project:read"] + }, + { + "name": "get_sentry_mcp_info", + "description": "Get information about the running Sentry MCP server.\n\nUse this tool when you need to:\n- Check the Sentry MCP server version\n- Verify compatibility with a Skill or integration", + "requiredScopes": [] + }, + { + "name": "search_sentry_api", + "description": "Discover Sentry HTTP API operations by executing a JavaScript async arrow function against the global spec. The configured OpenAPI document has schemas inline; no $ref resolution is needed. No network or API calls are available.\nSearch using the user's product terms across operation metadata: paths may use different internal names. Each spec.paths[path] has optional path-level parameters and HTTP-method operations. Operations have optional operationId, summary, description, tags (string[]), parameters, requestBody and responses. spec.tags, when present, describes categories with name, description and optional x-sidebar-name.\nFirst return a short list of matching methods, paths and summaries. If results are empty or unrelated, inspect categories and broaden the terms before trying API routes. Then inspect the selected operation's descriptions, parameters, requestBody and relevant response fields. Path-level parameters also apply; operation parameters override them by name and in. Do not return whole paths, the full spec or sliced JSON strings. Return only needed fields; the result limit is 50,000 bytes.\nDiscovery example: async () => {\n const term = \"release\";\n const results = [];\n for (const [path, item] of Object.entries(spec.paths)) {\n for (const [method, op] of Object.entries(item)) {\n if (![\"get\", \"post\", \"put\", \"patch\", \"delete\", \"head\", \"options\", \"trace\"].includes(method)) continue;\n const text = [path, op.operationId, op.summary, op.description, ...(op.tags ?? [])].join(\" \").toLowerCase();\n if (text.includes(term.toLowerCase())) results.push({method, path, operationId: op.operationId, summary: op.summary, tags: op.tags});\n }\n }\n return results;\n}\nCategories example: async () => spec.tags?.length ? spec.tags : [...new Set(Object.values(spec.paths).flatMap(item => Object.entries(item).filter(([method]) => [\"get\", \"post\", \"put\", \"patch\", \"delete\", \"head\", \"options\", \"trace\"].includes(method)).flatMap(([, op]) => op.tags ?? [])))].map(name => ({name}))\nSchema example: async () => { const path = \"/api/0/organizations/{organization_id_or_slug}/releases/\"; const item = spec.paths[path]; const op = item.post; return {description: op.description, pathParameters: item.parameters, operationParameters: op.parameters, requestBody: op.requestBody}; }", + "requiredScopes": [] + }, + { + "name": "submit_feedback_to_sentry_team", + "description": "Report friction with the Sentry MCP server to its maintainers.\n\nUse this tool when you need to:\n- Report that no Sentry MCP tool could do what the user asked\n- Report a tool that failed, returned wrong data, or was confusing\n- Suggest an improvement to the Sentry MCP tools\n\n\nsubmit_feedback_to_sentry_team(task='find slow endpoints', kind='missing', impact='blocked', description='No tool returns p95 latency per endpoint.')\n\n\n\n- Call at most once per task, after you finish or give up.\n- Feedback goes to the Sentry MCP maintainers, not the user's Sentry organization.\n- Do not include secrets, credentials, or personal data.\n", + "requiredScopes": [] + }, + { + "name": "whoami", + "description": "Identify the authenticated user in Sentry.\n\nUse this tool when you need to:\n- Get the user's name and email address.", + "requiredScopes": [] + } + ] } ] diff --git a/packages/mcp-core/src/skillDefinitions.ts b/packages/mcp-core/src/skillDefinitions.ts index 3be3c07ec..c7f035d23 100644 --- a/packages/mcp-core/src/skillDefinitions.ts +++ b/packages/mcp-core/src/skillDefinitions.ts @@ -7,6 +7,7 @@ export interface SkillDefinition { description: string; defaultEnabled: boolean; deprecated?: boolean; + hostedOnly?: boolean; order: number; toolCount?: number; tools?: Array<{ diff --git a/packages/mcp-core/src/skills.test.ts b/packages/mcp-core/src/skills.test.ts index 1ab5142db..e9c6dbc9a 100644 --- a/packages/mcp-core/src/skills.test.ts +++ b/packages/mcp-core/src/skills.test.ts @@ -1,14 +1,15 @@ -import { describe, it, expect } from "vitest"; +import { describe, expect, it } from "vitest"; +import skillDefinitions from "./skillDefinitions"; import { - SKILLS, ACTIVE_SKILLS, DEFAULT_SKILLS, + isEnabledBySkills, isValidSkill, parseSkills, - isEnabledBySkills, + SKILLS, type Skill, } from "./skills"; -import skillDefinitions from "./skillDefinitions"; +import toolDefinitions from "./toolDefinitions"; function getGeneratedSkillToolNames(skillId: string) { const skill = skillDefinitions.find( @@ -32,6 +33,24 @@ function getGeneratedSkillToolDescription(skillId: string, toolName: string) { } describe("skills module", () => { + it.each([ + ["api-read", "disabled"], + ["api-write", "enabled"], + ])("describes hosted Code Mode access for %s", (skillId, writeState) => { + const definition = skillDefinitions.find((skill) => skill.id === skillId); + expect(definition?.hostedOnly).toBe(true); + expect([...getGeneratedSkillToolNames(skillId)]).toEqual( + expect.arrayContaining(["search_sentry_api", "execute_sentry_code"]), + ); + expect(definition?.toolCount).toBe(definition?.tools?.length); + expect( + getGeneratedSkillToolDescription(skillId, "execute_sentry_code"), + ).toContain(`Writes are ${writeState}.`); + expect(toolDefinitions.map((tool) => tool.name)).not.toContain( + "execute_sentry_code", + ); + }); + it("does not advertise workflow-only tools in generated skill prompts", () => { for (const skill of skillDefinitions) { expect(skill.tools?.map((tool) => tool.name) ?? []).not.toContain( @@ -47,6 +66,8 @@ describe("skills module", () => { expect(SKILLS["project-management"]).toBeDefined(); expect(SKILLS.seer).toBeDefined(); expect(SKILLS.docs).toBeDefined(); + expect(SKILLS["api-read"].hostedOnly).toBe(true); + expect(SKILLS["api-write"].hostedOnly).toBe(true); expect("preprod" in SKILLS).toBe(false); }); @@ -72,6 +93,8 @@ describe("skills module", () => { expect(DEFAULT_SKILLS).not.toContain("docs"); expect(DEFAULT_SKILLS).not.toContain("triage"); expect(DEFAULT_SKILLS).not.toContain("project-management"); + expect(DEFAULT_SKILLS).not.toContain("api-read"); + expect(DEFAULT_SKILLS).not.toContain("api-write"); }); it("has exactly 2 default skills", () => { @@ -86,6 +109,8 @@ describe("skills module", () => { "seer", "triage", "project-management", + "api-read", + "api-write", ]); expect(ACTIVE_SKILLS).not.toContain("docs"); }); @@ -98,6 +123,8 @@ describe("skills module", () => { expect(isValidSkill("project-management")).toBe(true); expect(isValidSkill("seer")).toBe(true); expect(isValidSkill("docs")).toBe(true); + expect(isValidSkill("api-read")).toBe(true); + expect(isValidSkill("api-write")).toBe(true); }); it("returns false for invalid skills", () => { @@ -110,6 +137,12 @@ describe("skills module", () => { }); describe("parseSkills", () => { + it("keeps existing grants unchanged when API capabilities are introduced", () => { + expect(parseSkills(["inspect", "triage"]).valid).toEqual( + new Set(["inspect", "triage"]), + ); + expect(parseSkills(["api-write"]).valid).toEqual(new Set(["api-write"])); + }); it("parses comma-separated string", () => { const { valid, invalid } = parseSkills("inspect,triage,docs"); expect(valid.size).toBe(3); diff --git a/packages/mcp-core/src/skills.ts b/packages/mcp-core/src/skills.ts index dd89d52b3..ba247e6dd 100644 --- a/packages/mcp-core/src/skills.ts +++ b/packages/mcp-core/src/skills.ts @@ -11,7 +11,9 @@ export type Skill = | "triage" | "project-management" | "seer" - | "docs"; + | "docs" + | "api-read" + | "api-write"; // Central registry with metadata (used by OAuth UI) export interface SkillDefinition { @@ -20,6 +22,7 @@ export interface SkillDefinition { description: string; defaultEnabled: boolean; deprecated?: boolean; + hostedOnly?: boolean; order: number; toolCount?: number; // Number of tools enabled by this skill (calculated dynamically) } @@ -65,6 +68,24 @@ export const SKILLS: Record = { defaultEnabled: false, order: 5, }, + "api-read": { + id: "api-read", + name: "API Read", + description: + "Read data through the Sentry API using Code Mode. Your Sentry permissions still apply.", + defaultEnabled: false, + hostedOnly: true, + order: 6, + }, + "api-write": { + id: "api-write", + name: "API Write", + description: + "Read, create, modify, and delete data through the Sentry API. Includes API Read.", + defaultEnabled: false, + hostedOnly: true, + order: 7, + }, }; // Sorted array for UI ordering diff --git a/packages/mcp-core/src/toolDefinitions.json b/packages/mcp-core/src/toolDefinitions.json index 827186518..cd96c5d8e 100644 --- a/packages/mcp-core/src/toolDefinitions.json +++ b/packages/mcp-core/src/toolDefinitions.json @@ -1556,7 +1556,15 @@ "required": ["name"] }, "requiredScopes": [], - "skills": ["inspect", "seer", "docs", "triage", "project-management"], + "skills": [ + "inspect", + "seer", + "docs", + "triage", + "project-management", + "api-read", + "api-write" + ], "surface": "direct" }, { @@ -2654,7 +2662,15 @@ "additionalProperties": false }, "requiredScopes": ["org:read"], - "skills": ["inspect", "seer", "docs", "triage", "project-management"], + "skills": [ + "inspect", + "seer", + "docs", + "triage", + "project-management", + "api-read", + "api-write" + ], "surface": "direct" }, { @@ -2733,7 +2749,15 @@ "additionalProperties": false }, "requiredScopes": ["project:read"], - "skills": ["inspect", "seer", "docs", "triage", "project-management"], + "skills": [ + "inspect", + "seer", + "docs", + "triage", + "project-management", + "api-read", + "api-write" + ], "surface": "direct" }, { @@ -5524,7 +5548,15 @@ "additionalProperties": false }, "requiredScopes": [], - "skills": ["inspect", "seer", "docs", "triage", "project-management"], + "skills": [ + "inspect", + "seer", + "docs", + "triage", + "project-management", + "api-read", + "api-write" + ], "surface": "catalog" }, { @@ -6077,7 +6109,15 @@ "required": ["organizationSlug", "runToken", "update"] }, "requiredScopes": ["org:read"], - "skills": ["inspect", "seer", "docs", "triage", "project-management"], + "skills": [ + "inspect", + "seer", + "docs", + "triage", + "project-management", + "api-read", + "api-write" + ], "surface": "catalog" }, { @@ -7484,7 +7524,15 @@ "additionalProperties": false }, "requiredScopes": [], - "skills": ["inspect", "seer", "docs", "triage", "project-management"], + "skills": [ + "inspect", + "seer", + "docs", + "triage", + "project-management", + "api-read", + "api-write" + ], "surface": "direct" }, { @@ -7615,7 +7663,15 @@ "additionalProperties": false }, "requiredScopes": [], - "skills": ["inspect", "seer", "docs", "triage", "project-management"], + "skills": [ + "inspect", + "seer", + "docs", + "triage", + "project-management", + "api-read", + "api-write" + ], "surface": "catalog" }, { @@ -9057,7 +9113,15 @@ "additionalProperties": false }, "requiredScopes": [], - "skills": ["inspect", "seer", "docs", "triage", "project-management"], + "skills": [ + "inspect", + "seer", + "docs", + "triage", + "project-management", + "api-read", + "api-write" + ], "surface": "catalog" } ] diff --git a/packages/mcp-server/src/cli/resolve.test.ts b/packages/mcp-server/src/cli/resolve.test.ts index d3fe56251..5a6a23f56 100644 --- a/packages/mcp-server/src/cli/resolve.test.ts +++ b/packages/mcp-server/src/cli/resolve.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect } from "vitest"; +import { describe, expect, it } from "vitest"; import { finalize } from "./resolve"; describe("cli/finalize", () => { @@ -138,6 +138,18 @@ describe("cli/finalize", () => { ); // Skills tests + it.each(["api-read", "api-write"])( + "rejects hosted-only %s in explicit stdio configuration", + (skill) => { + expect(() => + finalize({ skills: `inspect,${skill}`, unknownArgs: [] }), + ).toThrow(`available only on the hosted MCP: ${skill}`); + expect(() => finalize({ disableSkills: skill, unknownArgs: [] })).toThrow( + `available only on the hosted MCP: ${skill}`, + ); + }, + ); + it("throws on invalid skills", () => { expect(() => finalize({ @@ -212,6 +224,8 @@ describe("cli/finalize", () => { expect(cfg.finalSkills.has("seer")).toBe(true); expect(cfg.finalSkills.has("docs")).toBe(false); expect(cfg.finalSkills.has("preprod")).toBe(false); + expect(cfg.finalSkills.has("api-read")).toBe(false); + expect(cfg.finalSkills.has("api-write")).toBe(false); }); it("grants all active skills with --all-skills", () => { @@ -227,6 +241,8 @@ describe("cli/finalize", () => { expect(cfg.finalSkills.has("seer")).toBe(true); expect(cfg.finalSkills.has("docs")).toBe(false); expect(cfg.finalSkills.has("preprod")).toBe(false); + expect(cfg.finalSkills.has("api-read")).toBe(false); + expect(cfg.finalSkills.has("api-write")).toBe(false); }); // Self-hosted defaults diff --git a/packages/mcp-server/src/cli/resolve.ts b/packages/mcp-server/src/cli/resolve.ts index d51b0baaa..de26fd632 100644 --- a/packages/mcp-server/src/cli/resolve.ts +++ b/packages/mcp-server/src/cli/resolve.ts @@ -2,6 +2,7 @@ import { ACTIVE_SKILLS, ALL_SKILLS, parseSkills, + SKILLS, type Skill, } from "@sentry/mcp-core/skills"; import { isSentryHost } from "@sentry/toolkit-core/sentry-host"; @@ -13,12 +14,31 @@ import { import { DEFAULT_SENTRY_CLIENT_ID } from "../auth/constants"; import type { MergedArgs, PartiallyResolvedConfig } from "./types"; +const STDIO_SKILLS = ALL_SKILLS.filter((skill) => !SKILLS[skill].hostedOnly); +const ACTIVE_STDIO_SKILLS = ACTIVE_SKILLS.filter( + (skill) => !SKILLS[skill].hostedOnly, +); + export function formatInvalidSkills( invalid: string[], source?: string, ): string { const prefix = source ? `${source} provided` : "Invalid skills provided"; - return `Error: ${prefix}: ${invalid.join(", ")}\nAvailable skills: ${ALL_SKILLS.join(", ")}`; + return `Error: ${prefix}: ${invalid.join(", ")}\nAvailable skills: ${STDIO_SKILLS.join(", ")}`; +} + +function parseStdioSkills(input: unknown, source?: string): Set { + const { valid, invalid } = parseSkills(input); + if (invalid.length > 0) { + throw new Error(formatInvalidSkills(invalid, source)); + } + const hostedSkills = [...valid].filter((skill) => SKILLS[skill].hostedOnly); + if (hostedSkills.length > 0) { + throw new Error( + `Error: These skills are available only on the hosted MCP: ${hostedSkills.join(", ")}. They cannot be used with stdio.`, + ); + } + return valid; } /** @@ -77,20 +97,17 @@ export function finalize(input: MergedArgs): PartiallyResolvedConfig { } if (input.allSkills) { - finalSkills = new Set(ACTIVE_SKILLS); + finalSkills = new Set(ACTIVE_STDIO_SKILLS); } else if (input.skills) { // Override: use only the specified skills - const { valid, invalid } = parseSkills(input.skills); - if (invalid.length > 0) { - throw new Error(formatInvalidSkills(invalid)); - } + const valid = parseStdioSkills(input.skills); if (valid.size === 0) { throw new Error("Error: Invalid skills provided. No valid skills found."); } finalSkills = valid; } else { // Default: grant all active skills when no flag is provided (see comment block above for rationale) - finalSkills = new Set(ACTIVE_SKILLS); + finalSkills = new Set(ACTIVE_STDIO_SKILLS); // Seer is a sentry.io service. Self-hosted Sentry ships without it, and its // autofix endpoints answer 500 when the Seer backend is not configured, so @@ -105,12 +122,10 @@ export function finalize(input: MergedArgs): PartiallyResolvedConfig { // Disable-skills: remove specific skills from the active set if (input.disableSkills) { - const { valid: skillsToDisable, invalid } = parseSkills( + const skillsToDisable = parseStdioSkills( input.disableSkills, + "--disable-skills", ); - if (invalid.length > 0) { - throw new Error(formatInvalidSkills(invalid, "--disable-skills")); - } for (const skill of skillsToDisable) { finalSkills.delete(skill); } diff --git a/plugins/sentry-mcp-experimental/agents/sentry-mcp.md b/plugins/sentry-mcp-experimental/agents/sentry-mcp.md index 37705a4f0..6c3576bc2 100644 --- a/plugins/sentry-mcp-experimental/agents/sentry-mcp.md +++ b/plugins/sentry-mcp-experimental/agents/sentry-mcp.md @@ -11,6 +11,7 @@ mcpServers: - sentry allowedTools: - analyze_issue_with_seer + - execute_sentry_code - execute_sentry_tool - find_organizations - find_projects @@ -21,6 +22,7 @@ allowedTools: - search_metrics - search_profiles - search_replays + - search_sentry_api - search_sentry_tools - search_traces --- diff --git a/plugins/sentry-mcp/agents/sentry-mcp.md b/plugins/sentry-mcp/agents/sentry-mcp.md index 37705a4f0..6c3576bc2 100644 --- a/plugins/sentry-mcp/agents/sentry-mcp.md +++ b/plugins/sentry-mcp/agents/sentry-mcp.md @@ -11,6 +11,7 @@ mcpServers: - sentry allowedTools: - analyze_issue_with_seer + - execute_sentry_code - execute_sentry_tool - find_organizations - find_projects @@ -21,6 +22,7 @@ allowedTools: - search_metrics - search_profiles - search_replays + - search_sentry_api - search_sentry_tools - search_traces --- diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 49e389fd3..2cdc089b1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -748,6 +748,9 @@ importers: '@cloudflare/workers-types': specifier: 'catalog:' version: 4.20260405.1 + '@sentry/api': + specifier: 'catalog:' + version: 0.428.0(typescript@5.9.3)(valibot@1.4.2(typescript@5.9.3))(zod@4.6.7) '@sentry/mcp-core': specifier: workspace:* version: link:../mcp-core diff --git a/scripts/pre-commit-generated.mjs b/scripts/pre-commit-generated.mjs index 2cba9b4e6..d69f3d594 100644 --- a/scripts/pre-commit-generated.mjs +++ b/scripts/pre-commit-generated.mjs @@ -16,6 +16,7 @@ const GENERATED_TASKS = [ /^packages\/mcp-core\/src\/skills\.ts$/, /^packages\/mcp-core\/src\/internal\/tool-helpers\/tool-call-formatting\.ts$/, /^packages\/mcp-core\/scripts\/generate-definitions\.ts$/, + /^packages\/mcp-core\/src\/code-mode\.ts$/, /^plugins\/sentry-mcp\/agents\/sentry-mcp\.md$/, /^plugins\/sentry-mcp-experimental\/agents\/sentry-mcp\.md$/, ],