From 583f6379ccb0f50a81b346ba95ec9c9caf991121 Mon Sep 17 00:00:00 2001 From: Cody De Arkland Date: Fri, 19 Sep 2025 20:31:43 -0700 Subject: [PATCH 1/8] Configuring docs mcp server --- app/api/[transport]/route.ts | 72 + app/api/search/route.ts | 33 + app/api/search/searchIndex.ts | 222 + app/scripts/generate-search-index.mjs | 134 + app/shared/docs-utils.ts | 43 + package.json | 5 +- public/search-index.json | 122307 +++++++++++++++++++++++ yarn.lock | 9280 +- 8 files changed, 127902 insertions(+), 4194 deletions(-) create mode 100644 app/api/[transport]/route.ts create mode 100644 app/api/search/route.ts create mode 100644 app/api/search/searchIndex.ts create mode 100644 app/scripts/generate-search-index.mjs create mode 100644 app/shared/docs-utils.ts create mode 100644 public/search-index.json diff --git a/app/api/[transport]/route.ts b/app/api/[transport]/route.ts new file mode 100644 index 0000000000000..2973ebcd9c957 --- /dev/null +++ b/app/api/[transport]/route.ts @@ -0,0 +1,72 @@ +import {createMcpHandler} from "mcp-handler"; +import {z} from "zod"; + +import {formatMatchAsBlock, searchIndex} from "../search/searchIndex"; +import {readDocContent} from "../../shared/docs-utils"; + +const handler = createMcpHandler( + (server) => { + server.tool( + "search_docs", + "Search the precomputed markdown index and return matching documentation entry points.", + { + query: z.string().min(1), + limit: z.number().int().min(1).max(25).default(5), + }, + async ({query, limit}) => { + const matches = await searchIndex(query, limit); + const contentText = matches.length + ? matches.map(formatMatchAsBlock).join("\n\n") + : "No matches found."; + + return { + content: [{type: "text", text: contentText}], + }; + } + ); + + server.tool( + "get_doc", + "Fetch raw markdown from the documentation exports. Reads local files when available, otherwise fetches from DOCS_PUBLIC_BASE.", + { + path: z.string().min(1), + }, + async ({path}) => { + const content = await readDocContent(path); + return { + content: [{type: "text", text: content}], + }; + } + ); + }, + { + // Optional server options + }, + { + basePath: "/api", + maxDuration: 60, + verboseLogs: false, + } +); + +function normalizeRequest(request: Request): Request { + const url = new URL(request.url); + if (url.pathname.endsWith("/") && url.pathname.length > 1) { + url.pathname = url.pathname.slice(0, -1); + } + + return new Request(url.toString(), { + method: request.method, + headers: request.headers, + body: request.body, + // @ts-ignore - duplex is needed for streaming + duplex: "half", + }); +} + +function wrappedHandler(request: Request) { + const normalizedRequest = normalizeRequest(request); + return handler(normalizedRequest); +} + +export {wrappedHandler as GET, wrappedHandler as POST, wrappedHandler as DELETE}; \ No newline at end of file diff --git a/app/api/search/route.ts b/app/api/search/route.ts new file mode 100644 index 0000000000000..813c6dce8b3b3 --- /dev/null +++ b/app/api/search/route.ts @@ -0,0 +1,33 @@ +import {NextRequest, NextResponse} from "next/server"; + +import {mapMatchToResponse, searchIndex} from "./searchIndex"; + +export const runtime = "nodejs"; + +export async function GET(request: NextRequest) { + const {searchParams} = new URL(request.url); + const query = searchParams.get("q") ?? ""; + const limitParam = searchParams.get("limit"); + const limit = limitParam ? Math.min(25, Math.max(1, Number(limitParam))) : 10; + + try { + const matches = await searchIndex(query, limit); + const results = matches.map(mapMatchToResponse); + + return NextResponse.json({ + query, + limit, + count: results.length, + results, + }); + } catch (error) { + return NextResponse.json( + { + query, + limit, + error: error instanceof Error ? error.message : "Unknown error", + }, + {status: 500} + ); + } +} \ No newline at end of file diff --git a/app/api/search/searchIndex.ts b/app/api/search/searchIndex.ts new file mode 100644 index 0000000000000..31dedf62e3260 --- /dev/null +++ b/app/api/search/searchIndex.ts @@ -0,0 +1,222 @@ +import {promises as fs} from "node:fs"; +import path from "node:path"; + +import {buildDocUrl} from "../../shared/docs-utils"; + +const SEARCH_INDEX_PATH = path.join(process.cwd(), "public", "search-index.json"); + +type RawSearchIndexEntry = { + content: string; + hierarchy: string[]; + path: string; + summary: string; + title: string; +}; + +type SearchIndexFile = { + entries: RawSearchIndexEntry[]; + generatedAt: string; + total: number; +}; + +export type SearchMatch = { + hierarchy: string[]; + matchedTokens: number; + path: string; + score: number; + snippet: string | null; + summary: string; + title: string; +}; + +type CachedEntry = RawSearchIndexEntry & { + contentLower: string; + hierarchyLower: string[]; + pathLower: string; + titleLower: string; +}; + +let searchIndexPromise: Promise | null = null; + +async function loadSearchIndexInternal(): Promise { + const raw = await fs.readFile(SEARCH_INDEX_PATH, "utf8"); + const parsed = JSON.parse(raw) as SearchIndexFile; + return parsed.entries.map(entry => ({ + ...entry, + pathLower: entry.path.toLowerCase(), + titleLower: entry.title.toLowerCase(), + hierarchyLower: entry.hierarchy.map(segment => segment.toLowerCase()), + contentLower: entry.content.toLowerCase(), + })); +} + +export function ensureSearchIndex(): Promise { + if (!searchIndexPromise) { + searchIndexPromise = loadSearchIndexInternal().catch(error => { + searchIndexPromise = null; + throw error; + }); + } + + return searchIndexPromise; +} + +function scoreEntry(entry: CachedEntry, tokens: string[]) { + let score = 0; + let matchedTokens = 0; + + for (const token of tokens) { + let tokenMatched = false; + + if (entry.titleLower.includes(token)) { + score += 6; + tokenMatched = true; + } + + if (entry.pathLower.includes(token)) { + score += 4; + tokenMatched = true; + } + + if (entry.hierarchyLower.some(segment => segment.includes(token))) { + score += 3; + tokenMatched = true; + } + + if (entry.contentLower.includes(token)) { + score += 1; + tokenMatched = true; + } + + if (tokenMatched) { + matchedTokens += 1; + } + } + + if (matchedTokens === 0) { + return null; + } + + score += getInstallBias(entry); + + return {score, matchedTokens}; +} + +function buildSnippet(entry: CachedEntry, tokens: string[]): string | null { + const lines = entry.content.split(/\r?\n/); + for (const line of lines) { + const lineLower = line.toLowerCase(); + if (tokens.some(token => lineLower.includes(token))) { + const trimmed = line.trim(); + if (trimmed.length === 0) { + continue; + } + return trimmed.length > 200 ? `${trimmed.slice(0, 199)}…` : trimmed; + } + } + return null; +} + +export async function searchIndex(query: string, limit: number): Promise { + const tokens = query + .toLowerCase() + .split(/\s+/) + .map(token => token.trim()) + .filter(Boolean); + + if (tokens.length === 0) { + return []; + } + + const entries = await ensureSearchIndex(); + const matches: SearchMatch[] = []; + + for (const entry of entries) { + const scoreResult = scoreEntry(entry, tokens); + if (!scoreResult) { + continue; + } + + matches.push({ + path: entry.path, + title: entry.title, + hierarchy: entry.hierarchy, + summary: entry.summary, + snippet: buildSnippet(entry, tokens), + score: scoreResult.score, + matchedTokens: scoreResult.matchedTokens, + }); + } + + matches.sort((a, b) => { + if (b.score !== a.score) { + return b.score - a.score; + } + if (b.matchedTokens !== a.matchedTokens) { + return b.matchedTokens - a.matchedTokens; + } + return a.path.localeCompare(b.path); + }); + + return matches.slice(0, limit); +} + +function getInstallBias(entry: CachedEntry): number { + const segments = entry.pathLower.split("/"); + const fileName = segments[segments.length - 1] ?? ""; + const baseName = fileName.replace(/\.md$/, ""); + + let bias = 0; + + // Top-level platform doc like "platforms/react.md" + if (segments[0] === "platforms" && segments.length === 2) { + bias += 40; + } + + // JavaScript guide root doc like "platforms/javascript/guides/react.md" + if ( + segments[0] === "platforms" && + segments[1] === "javascript" && + segments[2] === "guides" && + segments.length === 4 + ) { + bias += 50; + } + + // Files under an install directory get a boost + if (segments.includes("install")) { + bias += 20; + } + + // Common install filenames get additional weight + if (["install", "installation", "setup", "getting-started"].includes(baseName)) { + bias += 25; + } + + return bias; +} + +export function formatMatchAsBlock(match: SearchMatch): string { + const header = `# ${match.hierarchy.join(" > ")}`; + const link = `[${match.title}](${match.path})`; + const lines = [header, link]; + + if (match.snippet) { + lines.push(match.snippet); + } + + return lines.join("\n"); +} + +export function mapMatchToResponse(match: SearchMatch) { + return { + path: match.path, + title: match.title, + hierarchy: match.hierarchy, + summary: match.summary, + snippet: match.snippet, + url: buildDocUrl(match.path), + score: match.score, + matchedTokens: match.matchedTokens, + }; +} \ No newline at end of file diff --git a/app/scripts/generate-search-index.mjs b/app/scripts/generate-search-index.mjs new file mode 100644 index 0000000000000..a74d779c20cc0 --- /dev/null +++ b/app/scripts/generate-search-index.mjs @@ -0,0 +1,134 @@ +#!/usr/bin/env node +import {promises as fs} from "node:fs"; +import path from "node:path"; + +const MD_EXPORTS_ROOT = path.join(process.cwd(), "public", "md-exports"); +const OUTPUT_PATH = path.join(process.cwd(), "public", "search-index.json"); +const MAX_CONTENT_LENGTH = 4000; + +const SEGMENT_LABELS = new Map( + Object.entries({ + platforms: "Platform", + javascript: "JavaScript", + typescript: "TypeScript", + python: "Python", + android: "Android", + apple: "Apple", + react: "React", + "react-native": "React Native", + node: "Node", + nodejs: "Node.js", + dotnet: ".NET", + php: "PHP", + java: "Java", + swift: "Swift", + kotlin: "Kotlin", + guides: "Guides", + install: "Install", + tracing: "Tracing", + performance: "Performance", + }) +); + +function titleCase(segment) { + const lower = segment.toLowerCase(); + if (SEGMENT_LABELS.has(lower)) { + return SEGMENT_LABELS.get(lower); + } + + return segment + .split(/[-_]/) + .filter(Boolean) + .map(word => word.charAt(0).toUpperCase() + word.slice(1)) + .join(" "); +} + +async function* walkMarkdownFiles(root) { + const stack = [root]; + while (stack.length > 0) { + const current = stack.pop(); + if (!current) { + continue; + } + + const dirents = await fs.readdir(current, {withFileTypes: true}); + for (const dirent of dirents) { + const fullPath = path.join(current, dirent.name); + if (dirent.isDirectory()) { + stack.push(fullPath); + continue; + } + + if (dirent.isFile() && dirent.name.endsWith(".md")) { + yield fullPath; + } + } + } +} + +function extractTitle(content) { + const lines = content.split(/\r?\n/); + for (const line of lines) { + if (line.startsWith("#")) { + return line.replace(/^#+\s*/, "").trim() || null; + } + } + return null; +} + +function buildHierarchy(relativePath) { + const segments = relativePath.split("/"); + const fileName = segments.pop() || ""; + const baseName = fileName.replace(/\.md$/i, ""); + const pathSegments = [...segments, baseName]; + const labels = pathSegments.map(titleCase).filter(Boolean); + return labels; +} + +function toSummary(content) { + const lines = content.split(/\r?\n/); + for (const line of lines) { + const trimmed = line.trim(); + if (trimmed.length === 0) { + continue; + } + return trimmed.slice(0, 200); + } + return ""; +} + +async function main() { + const entries = []; + for await (const filePath of walkMarkdownFiles(MD_EXPORTS_ROOT)) { + const relativePath = path.relative(MD_EXPORTS_ROOT, filePath).replace(/\\/g, "/"); + const content = await fs.readFile(filePath, "utf8"); + const truncatedContent = content.slice(0, MAX_CONTENT_LENGTH); + const title = extractTitle(content) ?? titleCase(path.basename(filePath, ".md")); + const hierarchy = buildHierarchy(relativePath); + const summary = toSummary(truncatedContent); + + entries.push({ + path: relativePath, + title, + hierarchy, + summary, + content: truncatedContent, + }); + } + + entries.sort((a, b) => a.path.localeCompare(b.path)); + + const payload = { + generatedAt: new Date().toISOString(), + total: entries.length, + entries, + }; + + await fs.writeFile(OUTPUT_PATH, JSON.stringify(payload, null, 2), "utf8"); + console.log(`Generated ${entries.length} entries in ${OUTPUT_PATH}`); +} + +main().catch(error => { + console.error(error); + process.exitCode = 1; +}); \ No newline at end of file diff --git a/app/shared/docs-utils.ts b/app/shared/docs-utils.ts new file mode 100644 index 0000000000000..110d417c2ce80 --- /dev/null +++ b/app/shared/docs-utils.ts @@ -0,0 +1,43 @@ +import {promises as fs} from "node:fs"; +import path from "node:path"; + +export const MD_EXPORTS_ROOT = path.join(process.cwd(), "public", "md-exports"); +export const DOCS_PUBLIC_BASE = process.env.DOCS_PUBLIC_BASE ?? "https://docs.sentry.io"; + +export function normalizeDocPath(inputPath: string): string { + const trimmed = inputPath.trim(); + const withoutLeadingSlash = trimmed.replace(/^\/+/, ""); + const normalized = path.normalize(withoutLeadingSlash); + + if (normalized.startsWith("..")) { + throw new Error("Invalid doc path: outside allowed directory"); + } + + return normalized; +} + +export function buildDocUrl(docPath: string): string { + const normalized = normalizeDocPath(docPath); + const base = DOCS_PUBLIC_BASE.endsWith("/") ? DOCS_PUBLIC_BASE : `${DOCS_PUBLIC_BASE}/`; + const url = new URL(normalized, base); + return url.toString(); +} + +export async function readDocContent(docPath: string): Promise { + const normalized = normalizeDocPath(docPath); + const localPath = path.join(MD_EXPORTS_ROOT, normalized); + + try { + const file = await fs.readFile(localPath, "utf8"); + return file; + } catch (localError) { + const url = buildDocUrl(normalized); + + const response = await fetch(url); + if (!response.ok) { + throw new Error(`Failed to fetch doc from ${url}: ${response.status} ${response.statusText}`); + } + + return await response.text(); + } +} \ No newline at end of file diff --git a/package.json b/package.json index 16ce48579b1d5..7c6096f3ee6a0 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "@google-cloud/storage": "^7.7.0", "@mdx-js/loader": "^3.0.0", "@mdx-js/react": "^3.0.0", + "@modelcontextprotocol/sdk": "^1.18.1", "@pondorasti/remark-img-links": "^1.0.8", "@popperjs/core": "^2.11.8", "@prettier/plugin-xml": "^3.3.1", @@ -70,6 +71,7 @@ "js-cookie": "^3.0.5", "js-yaml": "^4.1.0", "match-sorter": "^6.3.4", + "mcp-handler": "^1.0.2", "mdx-bundler": "^10.0.1", "mermaid": "^11.11.0", "micromark": "^4.0.0", @@ -110,7 +112,8 @@ "tailwindcss-scoped-preflight": "^3.0.4", "textarea-markdown-editor": "^1.0.4", "unified": "^11.0.5", - "unist-util-remove": "^4.0.0" + "unist-util-remove": "^4.0.0", + "zod": "^3.25.76" }, "devDependencies": { "@babel/preset-typescript": "^7.15.0", diff --git a/public/search-index.json b/public/search-index.json new file mode 100644 index 0000000000000..b07bd79416556 --- /dev/null +++ b/public/search-index.json @@ -0,0 +1,122307 @@ +{ + "generatedAt": "2025-09-20T03:28:25.770Z", + "total": 8920, + "entries": [ + { + "path": "_not-found.md", + "title": "Home", + "hierarchy": [ + "Not Found" + ], + "summary": "# Home", + "content": "# Home\n" + }, + { + "path": "account.md", + "title": "Account Settings", + "hierarchy": [ + "Account" + ], + "summary": "# Account Settings", + "content": "# Account Settings\n\n* #### [Account Preferences](https://docs.sentry.io/account/user-settings.md)\n\n Learn how to customize your User Settings for a more personalized Sentry experience.\n\n* #### [Auth Tokens](https://docs.sentry.io/account/auth-tokens.md)\n\n Learn about the different kinds of Auth Tokens Sentry provides, and when to use which.\n" + }, + { + "path": "account/auth-tokens.md", + "title": "Auth Tokens", + "hierarchy": [ + "Account", + "Auth Tokens" + ], + "summary": "# Auth Tokens", + "content": "# Auth Tokens\n\nAuth tokens (short for *authentication tokens*) are a way to authenticate with Sentry. They are similar to passwords but are designed for programmatic interaction with Sentry. Some examples of what you would use auth tokens for include:\n\n* Uploading Source Maps during your CI build\n* Using [Sentry CLI](https://docs.sentry.io/cli.md) to interact with Sentry\n* Using the [Sentry API](https://docs.sentry.io/api/auth.md)\n\nEach auth token is created with a certain set of permissions and scopes which are mapped to the Sentry API's [Permissions & Scopes](https://docs.sentry.io/api/permissions.md). Some types of auth tokens have set permissions that can't be edited, while others can be customized upon token creation and edited later.\n\nWe recommend using a separate auth token for each use case. For example, you would use a different auth token to upload source maps than the one you use with Sentry CLI. This has the benefit that if an auth token is compromised, you can revoke that auth token without impacting the rest of your workflow.\n\n## [Types of Auth Tokens](https://docs.sentry.io/account/auth-tokens.md#types-of-auth-tokens)\n\nThere are three key types of auth tokens in Sentry:\n\n* [Organization Tokens](https://docs.sentry.io/account/auth-tokens.md#organization-tokens): These tokens are bound to an organization, and have access to all projects within that organization. They have a limited set of permissions and are designed to be used in CI environments and with Sentry CLI.\n\n* [Internal Integrations](https://docs.sentry.io/account/auth-tokens.md#internal-integrations): These tokens are bound to an organization, and have access to all projects within that organization. They can be created with a custom set of permissions, and are designed to be used in cases where organization tokens don't have sufficient access rights.\n\n* [Personal Tokens](https://docs.sentry.io/account/auth-tokens.md#personal-tokens): These tokens are bound to a user, and have access to all organizations and projects that user has access to.\n\n### [When Should I Use Which?](https://docs.sentry.io/account/auth-tokens.md#when-should-i-use-which)\n\nFor most scenarios, we recommend using [Organization Tokens](https://docs.sentry.io/account/auth-tokens.md#organization-tokens). They are designed to be used in CI environments and have a limited set of permissions. This means that if the place you stored the auth token is compromised, the attacker can only do limited damage.\n\nOrganization tokens permissions aren't customizable. They are set to allow most CI-related tasks, without any unnecessary permissions.\n\n[Internal Integrations](https://docs.sentry.io/account/auth-tokens.md#internal-integrations) should be used when you need full API access (which the organization tokens cannot grant), and you want to interact with the Sentry API on behalf of an organization. For example, to programmatically create a new project, you would use an internal integration.\n\nPermissions for auth tokens created as part of an internal integration are customizable and editable.\n\n[Personal Tokens](https://docs.sentry.io/account/auth-tokens.md#personal-tokens) should be used to interact with the Sentry API on behalf of a user. For example, to fetch all issues for a user, you would use a personal token. We don't recommend using personal tokens for CI tasks because if the user who created the token is removed from the Organization, the token will stop working.\n\nPersonal token permissions are customizable but cannot be edited later.\n\n### [Organization Tokens](https://docs.sentry.io/account/auth-tokens.md#organization-tokens)\n\n[Organization tokens](https://sentry.io/orgredirect/organizations/:orgslug/settings/auth-tokens/) can be created in [sentry.io](https://sentry.io) on the **Auth Tokens** page under **Settings > Developer Settings > Organization Tokens**.\n\nThey can also be generated on certain pages of Sentry's docs if you're signed in, and by using the Sentry Wizard to configure uploa" + }, + { + "path": "account/user-settings.md", + "title": "Account Preferences", + "hierarchy": [ + "Account", + "User Settings" + ], + "summary": "# Account Preferences", + "content": "# Account Preferences\n\n[Account preferences](https://sentry.io/settings/account/details/) help you customize your Sentry experience. Manage your account by selecting \"User settings\" from the dropdown under your organization’s name. On this page, you can control the frequency of your [email notifications](https://docs.sentry.io/account/user-settings.md#notifications), [change your primary email](https://docs.sentry.io/account/user-settings.md#emails), and update your security settings.\n\n## [Security Settings](https://docs.sentry.io/account/user-settings.md#security-settings)\n\nSecurity Settings include options to reset a password, sign out of all devices, and enable two-factor authentication.\n\n### [Two-Factor Authentication](https://docs.sentry.io/account/user-settings.md#two-factor-authentication)\n\nAfter setting up your two-factor authentication codes, click \"View Codes\" to download, print, or copy your codes to a secure location. If you cannot receive two-factor authentication codes in the future, such as if you lose your device, use your recovery codes to access your account.\n\nClicking \"Sign out of all devices\" will end your sessions with any device logged in to Sentry using your account.\n\n## [Notifications](https://docs.sentry.io/account/user-settings.md#notifications)\n\nIn **Notifications**, you can configure your personal settings for the following Sentry notifications:\n\n* Alerts (issue alerts only)\n* Deploy\n* Workflow\n* Weekly Reports\n* My Activity\n\nYou can also set your email routing here.\n\nLearn more in the [full Notifications documentation](https://docs.sentry.io/product/alerts/notifications.md).\n\n## [Emails](https://docs.sentry.io/account/user-settings.md#emails)\n\nThe email address used to log into your Sentry account is, by default, your primary email address. Add an alternative email address in the [Add Secondary Emails](https://sentry.io/settings/account/emails/) section. After verifying your secondary email, you can set it to become your primary email.\n\n## [Close Account](https://docs.sentry.io/account/user-settings.md#close-account)\n\nWarning: Deleting your account cannot be undone.\n\nClosing your Sentry account automatically [removes all data](https://sentry.io/security/#data-removal) associated with your account after a 24-hour waiting period to prevent accidental cancellation. If your account is the sole owner of an organization, this organization will be deleted. Organizations with multiple owners will remain unchanged. For details about termination of service, see [Term, Termination, and Effect of Termination](https://sentry.io/terms/#term-termination-and-effect-of-termination).\n" + }, + { + "path": "api.md", + "title": "API Reference", + "hierarchy": [ + "Api" + ], + "summary": "# API Reference", + "content": "# API Reference\n\nThe Sentry web API is used to access the Sentry platform programmatically. You can use the APIs to manage account-level resources, like organizations and teams, as well as manage and export data.\n\nIf you're looking for information about the API surface for Sentry's SDKs, see the [SDK Development](https://develop.sentry.dev/sdk/overview/) docs.\n\n## [Versioning](https://docs.sentry.io/api.md#versioning)\n\nThe current version of the Sentry's web API is considered **v0**. Our public endpoints are generally stable, but beta endpoints are subject to change.\n\n## [Getting Started](https://docs.sentry.io/api.md#getting-started)\n\n* [Authentication](https://docs.sentry.io/api/auth.md)\n* [Pagination](https://docs.sentry.io/api/pagination.md)\n* [Permissions](https://docs.sentry.io/api/permissions.md)\n* [Rate Limits](https://docs.sentry.io/api/ratelimits.md)\n* [Requests](https://docs.sentry.io/api/requests.md)\n\n### [Sentry API Tutorials](https://docs.sentry.io/api.md#sentry-api-tutorials)\n\n* [Tutorial: Create a Sentry Authentication Token](https://docs.sentry.io/api/guides/create-auth-token.md)\n* [Tutorial: Create and List Teams with the Sentry API](https://docs.sentry.io/api/guides/teams-tutorial.md)\n\n## [Choosing the Right API Base Domain](https://docs.sentry.io/api.md#choosing-the-right-api-base-domain)\n\nWhile many of our APIs use `sentry.io` as the host for API endpoints, if you want to indicate a specific [data storage location](https://docs.sentry.io/organization/data-storage-location.md#what-types-of-data-are-stored-where), you should use region-specific domains.\n\n* US region is hosted on `us.sentry.io`\n* DE region is hosted on `de.sentry.io`.\n\nTo find out which API resources are available on region-based domains, see [what types of data are stored where](https://docs.sentry.io/organization/data-storage-location.md#what-types-of-data-are-stored-where) for more information.\n" + }, + { + "path": "api/alerts.md", + "title": "Alerts & Notifications", + "hierarchy": [ + "Api", + "Alerts" + ], + "summary": "# Alerts & Notifications", + "content": "# Alerts & Notifications\n\n* #### [Create a Metric Alert Rule for an Organization](https://docs.sentry.io/api/alerts/create-a-metric-alert-rule-for-an-organization.md)\n* #### [Create a Spike Protection Notification Action](https://docs.sentry.io/api/alerts/create-a-spike-protection-notification-action.md)\n* #### [Create an Issue Alert Rule for a Project](https://docs.sentry.io/api/alerts/create-an-issue-alert-rule-for-a-project.md)\n* #### [Delete a Metric Alert Rule](https://docs.sentry.io/api/alerts/delete-a-metric-alert-rule.md)\n* #### [Delete a Spike Protection Notification Action](https://docs.sentry.io/api/alerts/delete-a-spike-protection-notification-action.md)\n* #### [Delete an Issue Alert Rule](https://docs.sentry.io/api/alerts/delete-an-issue-alert-rule.md)\n* #### [List a Project's Issue Alert Rules](https://docs.sentry.io/api/alerts/list-a-projects-issue-alert-rules.md)\n* #### [List an Organization's Metric Alert Rules](https://docs.sentry.io/api/alerts/list-an-organizations-metric-alert-rules.md)\n* #### [List Spike Protection Notifications](https://docs.sentry.io/api/alerts/list-spike-protection-notifications.md)\n* #### [Retrieve a Metric Alert Rule for an Organization](https://docs.sentry.io/api/alerts/retrieve-a-metric-alert-rule-for-an-organization.md)\n* #### [Retrieve a Spike Protection Notification Action](https://docs.sentry.io/api/alerts/retrieve-a-spike-protection-notification-action.md)\n* #### [Retrieve an Issue Alert Rule for a Project](https://docs.sentry.io/api/alerts/retrieve-an-issue-alert-rule-for-a-project.md)\n* #### [Update a Metric Alert Rule](https://docs.sentry.io/api/alerts/update-a-metric-alert-rule.md)\n* #### [Update a Spike Protection Notification Action](https://docs.sentry.io/api/alerts/update-a-spike-protection-notification-action.md)\n* #### [Update an Issue Alert Rule](https://docs.sentry.io/api/alerts/update-an-issue-alert-rule.md)\n" + }, + { + "path": "api/alerts/create-a-metric-alert-rule-for-an-organization.md", + "title": "Create a Metric Alert Rule for an Organization", + "hierarchy": [ + "Api", + "Alerts", + "Create A Metric Alert Rule For An Organization" + ], + "summary": "# Create a Metric Alert Rule for an Organization", + "content": "# Create a Metric Alert Rule for an Organization\n\nPOST /api/0/organizations/{organization\\_id\\_or\\_slug}/alert-rules/\n\nCreate a new metric alert rule for the given organization.\n\nA metric alert rule is a configuration that defines the conditions for triggering an alert. It specifies the metric type, function, time interval, and threshold values that determine when an alert should be triggered. Metric alert rules are used to monitor and notify you when certain metrics, like error count, latency, or failure rate, cross a predefined threshold. These rules help you proactively identify and address issues in your project.\n\n## Metric Alert Rule Types\n\nBelow are the types of metric alert rules you can create and the parameter values required to set them up. All other parameters can be customized based on how you want the alert rule to work. Scroll down to Body Parameters for more information. Visit the [Alert Types](https://docs.sentry.io/product/alerts/alert-types.md#metric-alerts) docs for more details on each metric alert rule type.\n\n### [Number of Errors](https://docs.sentry.io/product/alerts/alert-types.md#number-of-errors)\n\n* `eventTypes`: Any of `error` or `default`.\n\n```json\n{\n \"queryType\": 0,\n \"dataset\": \"events\",\n \"aggregate\": \"count()\",\n \"eventTypes\": [\"error\", \"default\"]\n}\n```\n\n### [Users Experiencing Errors](https://docs.sentry.io/product/alerts/alert-types.md#users-experiencing-errors)\n\n* `eventTypes`: Any of `error` or `default`.\n\n```json\n{\n \"queryType\": 0,\n \"dataset\": \"events\",\n \"aggregate\": \"count_unique(user)\"\n}\n```\n\n### [Crash Free Session Rate](https://docs.sentry.io/product/alerts/alert-types.md#crash-free-session-rate)\n\n```json\n{\n \"queryType\": 2,\n \"dataset\": \"metrics\",\n \"aggregate\": \"percentage(sessions_crashed, sessions) AS _crash_rate_alert_aggregate\"\n}\n```\n\n### [Crash Free User Rate](https://docs.sentry.io/product/alerts/alert-types.md#crash-free-user-rate)\n\n```json\n{\n \"queryType\": 2,\n \"dataset\": \"metrics\",\n \"aggregate\": \"percentage(users_crashed, users) AS _crash_rate_alert_aggregate\"\n}\n```\n\n### [Throughput](https://docs.sentry.io/product/alerts/alert-types.md#throughput)\n\n```json\n{\n \"queryType\": 1,\n \"dataset\": \"transactions\",\n \"aggregate\": \"count()\"\n}\n```\n\n### [Transaction Duration](https://docs.sentry.io/product/alerts/alert-types.md#transaction-duration)\n\n* `dataset`: If a custom percentile is used, `dataset` is `transactions`. Otherwise, `dataset` is `generic_metrics`.\n* `aggregate`: Valid values are `avg(transaction.duration)`, `p50(transaction.duration)`, `p75(transaction.duration)`, `p95(transaction.duration)`, `p99(transaction.duration)`, `p100(transaction.duration)`, and `percentile(transaction.duration,x)`, where `x` is your custom percentile.\n\n```json\n{\n \"queryType\": 1,\n \"dataset\": \"generic_metrics\",\n \"aggregate\": \"avg(transaction.duration)\"\n}\n```\n\n### [Apdex](https://docs.sentry.io/product/alerts/alert-types.md#apdex)\n\n* `aggregate`: `apdex(x)` where `x` is the value of the Apdex score.\n\n```json\n{\n \"queryType\": 1,\n \"dataset\": \"transactions\",\n \"aggregate\": \"apdex(300)\"\n}\n```\n\n### [Failure Rate](https://docs.sentry.io/product/alerts/alert-types.md#failure-rate)\n\n```json\n{\n \"queryType\": 1,\n \"dataset\": \"transactions\",\n \"aggregate\": \"failure_rate()\"\n}\n```\n\n### [Largest Contentful Paint](https://docs.sentry.io/product/alerts/alert-types.md#largest-contentful-display)\n\n* `dataset`: If a custom percentile is used, `dataset` is `transactions`. Otherwise, `dataset` is `generic_metrics`.\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 \"queryType\": 1,\n \"dataset\": \"generic_metrics\",\n \"aggregate\": \"p50(measurements.lcp)\"\n}\n```\n\n### [First Input Delay](https://docs.sentry.io/product/alerts/alert-types.md#first-" + }, + { + "path": "api/alerts/create-a-spike-protection-notification-action.md", + "title": "Create a Spike Protection Notification Action", + "hierarchy": [ + "Api", + "Alerts", + "Create A Spike Protection Notification Action" + ], + "summary": "# Create a Spike Protection Notification Action", + "content": "# Create a Spike Protection Notification Action\n\nPOST /api/0/organizations/{organization\\_id\\_or\\_slug}/notifications/actions/\n\nCreates 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. For example, organization owners and managers can receive an email when a spike occurs.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Body Parameters\n\n* `trigger_type`* (string)*\n\n REQUIRED\n\n Type of the trigger that causes the notification. The only supported trigger right now is: `spike-protection`.\n\n* `service_type`* (string)*\n\n REQUIRED\n\n Service that is used for sending the notification.\n\n * `email`\n * `slack`\n * `sentry_notification`\n * `pagerduty`\n * `opsgenie`\n\n* `integration_id`* (integer)*\n\n ID of the integration used as the notification service. See [List Integrations](https://docs.sentry.io/api/integrations/list-an-organizations-available-integrations.md) to retrieve a full list of integrations.\n\n Required if **service\\_type** is `slack`, `pagerduty` or `opsgenie`.\n\n* `target_identifier`* (string)*\n\n ID of the notification target, like a Slack channel ID.\n\n Required if **service\\_type** is `slack` or `opsgenie`.\n\n* `target_display`* (string)*\n\n Name of the notification target, like a Slack channel name.\n\n Required if **service\\_type** is `slack` or `opsgenie`.\n\n* `projects`* (array(string))*\n\n List of projects slugs that the Notification Action is created for.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/notifications/actions/ \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"836501735\",\n \"organizationId\": \"62848264\",\n \"serviceType\": \"sentry_notification\",\n \"targetDisplay\": \"default\",\n \"targetIdentifier\": \"default\",\n \"targetType\": \"specific\",\n \"triggerType\": \"spike-protection\",\n \"projects\": [\n 4505321021243392\n ]\n}\n```\n" + }, + { + "path": "api/alerts/create-an-issue-alert-rule-for-a-project.md", + "title": "Create an Issue Alert Rule for a Project", + "hierarchy": [ + "Api", + "Alerts", + "Create An Issue Alert Rule For A Project" + ], + "summary": "# Create an Issue Alert Rule for a Project", + "content": "# Create an Issue Alert Rule for a Project\n\nPOST /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/rules/\n\nCreate a new issue alert rule for the given project.\n\nAn issue alert rule triggers whenever a new event is received for any issue in a project that matches the specified alert conditions. These conditions can include a resolved issue re-appearing or an issue affecting many users. Alert conditions have three parts:\n\n* Triggers: specify what type of activity you'd like monitored or when an alert should be triggered.\n* Filters: help control noise by triggering an alert only if the issue matches the specified criteria.\n* Actions: specify what should happen when the trigger conditions are met and the filters match.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n### Body Parameters\n\n* `name`* (string)*\n\n REQUIRED\n\n The name for the rule.\n\n* `frequency`* (integer)*\n\n REQUIRED\n\n How often to perform the actions once for an issue, in minutes. The valid range is `5` to `43200`.\n\n* `actionMatch`* (string)*\n\n REQUIRED\n\n A string determining which of the conditions need to be true before any filters are evaluated.\n\n * `all` - All conditions must evaluate to true.\n * `any` - At least one of the conditions must evaluate to true.\n * `none` - All conditions must evaluate to false.\n\n* `conditions`* (array(object))*\n\n REQUIRED\n\n A list of triggers that determine when the rule fires. See below for a list of possible conditions.\n\n **A new issue is created**\n\n ```json\n {\n \"id\": \"sentry.rules.conditions.first_seen_event.FirstSeenEventCondition\"\n }\n ```\n\n **The issue changes state from resolved to unresolved**\n\n ```json\n {\n \"id\": \"sentry.rules.conditions.regression_event.RegressionEventCondition\"\n }\n ```\n\n **The issue is seen more than `value` times in `interval`**\n\n * `value` - An integer\n * `interval` - Valid values are `1m`, `5m`, `15m`, `1h`, `1d`, `1w` and `30d` (`m` for minutes, `h` for hours, `d` for days, and `w` for weeks).\n\n ```json\n {\n \"id\": \"sentry.rules.conditions.event_frequency.EventFrequencyCondition\",\n \"value\": 500,\n \"interval\": \"1h\"\n }\n ```\n\n **The issue is seen by more than `value` users in `interval`**\n\n * `value` - An integer\n * `interval` - Valid values are `1m`, `5m`, `15m`, `1h`, `1d`, `1w` and `30d` (`m` for minutes, `h` for hours, `d` for days, and `w` for weeks).\n\n ```json\n {\n \"id\": \"sentry.rules.conditions.event_frequency.EventUniqueUserFrequencyCondition\",\n \"value\": 1000,\n \"interval\": \"15m\"\n }\n ```\n\n **The issue affects more than `value` percent of sessions in `interval`**\n\n * `value` - A float\n * `interval` - Valid values are `5m`, `10m`, `30m`, and `1h` (`m` for minutes, `h` for hours).\n\n ```json\n {\n \"id\": \"sentry.rules.conditions.event_frequency.EventFrequencyPercentCondition\",\n \"value\": 50.0,\n \"interval\": \"10m\"\n }\n ```\n\n* `actions`* (array(object))*\n\n REQUIRED\n\n A list of actions that take place when all required conditions and filters for the rule are met. See below for a list of possible actions.\n\n **Send a notification to Suggested Assignees**\n\n * `fallthroughType` - Who the notification should be sent to if there are no suggested assignees. Valid values are `ActiveMembers`, `AllMembers`, and `NoOne`.\n\n ```json\n {\n \"id\" - \"sentry.mail.actions.NotifyEmailAction\",\n \"targetType\" - \"IssueOwners\",\n \"fallthroughType\" - \"ActiveMembers\"\n }\n ```\n\n **Send a notification to a Member or a Team**\n\n * `targetType` - One of `Member` or `Team`.\n * `fallthroughType` - Who the notif" + }, + { + "path": "api/alerts/delete-a-metric-alert-rule.md", + "title": "Delete a Metric Alert Rule", + "hierarchy": [ + "Api", + "Alerts", + "Delete A Metric Alert Rule" + ], + "summary": "# Delete a Metric Alert Rule", + "content": "# Delete a Metric Alert Rule\n\nDELETE /api/0/organizations/{organization\\_id\\_or\\_slug}/alert-rules/{alert\\_rule\\_id}/\n\nDelete a specific metric alert rule.\n\nA metric alert rule is a configuration that defines the conditions for triggering an alert. It specifies the metric type, function, time interval, and threshold values that determine when an alert should be triggered. Metric alert rules are used to monitor and notify you when certain metrics, like error count, latency, or failure rate, cross a predefined threshold. These rules help you proactively identify and address issues in your project.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `alert_rule_id`* (integer)*\n\n REQUIRED\n\n The ID of the rule you'd like to query.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `alerts:write`\n* `org:admin`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/alert-rules/{alert_rule_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nAccepted.\n```\n" + }, + { + "path": "api/alerts/delete-a-spike-protection-notification-action.md", + "title": "Delete a Spike Protection Notification Action", + "hierarchy": [ + "Api", + "Alerts", + "Delete A Spike Protection Notification Action" + ], + "summary": "# Delete a Spike Protection Notification Action", + "content": "# Delete a Spike Protection Notification Action\n\nDELETE /api/0/organizations/{organization\\_id\\_or\\_slug}/notifications/actions/{action\\_id}/\n\nDeletes 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. For example, organization owners and managers can receive an email when a spike occurs.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `action_id`* (integer)*\n\n REQUIRED\n\n ID of the notification action to retrieve\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/notifications/actions/{action_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nNo Content.\n```\n" + }, + { + "path": "api/alerts/delete-an-issue-alert-rule.md", + "title": "Delete an Issue Alert Rule", + "hierarchy": [ + "Api", + "Alerts", + "Delete An Issue Alert Rule" + ], + "summary": "# Delete an Issue Alert Rule", + "content": "# Delete an Issue Alert Rule\n\nDELETE /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/rules/{rule\\_id}/\n\nDelete a specific issue alert rule.\n\nAn issue alert rule triggers whenever a new event is received for any issue in a project that matches the specified alert conditions. These conditions can include a resolved issue re-appearing or an issue affecting many users. Alert conditions have three parts:\n\n* Triggers: specify what type of activity you'd like monitored or when an alert should be triggered.\n* Filters: help control noise by triggering an alert only if the issue matches the specified criteria.\n* Actions: specify what should happen when the trigger conditions are met and the filters match.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n* `rule_id`* (integer)*\n\n REQUIRED\n\n The ID of the rule you'd like to query.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `alerts:write`\n* `project:admin`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/rules/{rule_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nAccepted.\n```\n" + }, + { + "path": "api/alerts/list-a-projects-issue-alert-rules.md", + "title": "List a Project's Issue Alert Rules", + "hierarchy": [ + "Api", + "Alerts", + "List A Projects Issue Alert Rules" + ], + "summary": "# List a Project's Issue Alert Rules", + "content": "# List a Project's Issue Alert Rules\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/rules/\n\nReturn a list of active issue alert rules bound to a project.\n\nAn issue alert rule triggers whenever a new event is received for any issue in a project that matches the specified alert conditions. These conditions can include a resolved issue re-appearing or an issue affecting many users. Alert conditions have three parts:\n\n* Triggers: specify what type of activity you'd like monitored or when an alert should be triggered.\n* Filters: help control noise by triggering an alert only if the issue matches the specified criteria.\n* Actions: specify what should happen when the trigger conditions are met and the filters match.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `alerts:read`\n* `alerts:write`\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/rules/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"id\": \"3\",\n \"conditions\": [\n {\n \"interval\": \"1h\",\n \"id\": \"sentry.rules.conditions.event_frequency.EventFrequencyCondition\",\n \"value\": 1000\n }\n ],\n \"filters\": [\n {\n \"value\": \"1\",\n \"id\": \"sentry.rules.filters.issue_category.IssueCategoryFilter\"\n },\n {\n \"value\": \"2\",\n \"id\": \"sentry.rules.filters.issue_category.IssueCategoryFilter\"\n }\n ],\n \"actions\": [\n {\n \"targetType\": \"Team\",\n \"fallthroughType\": \"ActiveMembers\",\n \"id\": \"sentry.mail.actions.NotifyEmailAction\",\n \"targetIdentifier\": 4367234414355\n }\n ],\n \"actionMatch\": \"any\",\n \"filterMatch\": \"any\",\n \"frequency\": 60,\n \"name\": \"High Number of Issues with Production\",\n \"dateCreated\": \"2023-01-15T06:45:34.353346Z\",\n \"owner\": \"team:63562\",\n \"createdBy\": {\n \"id\": 2435786,\n \"name\": \"John Doe\",\n \"email\": \"john.doe@example.com\"\n },\n \"environment\": \"prod\",\n \"projects\": [\n \"melody\"\n ],\n \"status\": \"active\",\n \"lastTriggered\": \"2023-07-15T00:00:00.351236Z\",\n \"snooze\": false\n }\n]\n```\n" + }, + { + "path": "api/alerts/list-an-organizations-metric-alert-rules.md", + "title": "List an Organization's Metric Alert Rules", + "hierarchy": [ + "Api", + "Alerts", + "List An Organizations Metric Alert Rules" + ], + "summary": "# List an Organization's Metric Alert Rules", + "content": "# List an Organization's Metric Alert Rules\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/alert-rules/\n\nReturn a list of active metric alert rules bound to an organization.\n\nA metric alert rule is a configuration that defines the conditions for triggering an alert. It specifies the metric type, function, time interval, and threshold values that determine when an alert should be triggered. Metric alert rules are used to monitor and notify you when certain metrics, like error count, latency, or failure rate, cross a predefined threshold. These rules help you proactively identify and address issues in your project.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `alerts:read`\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/alert-rules/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"id\": \"7\",\n \"name\": \"Counting Bad Request and Unauthorized Errors in Prod\",\n \"organizationId\": \"237655244234\",\n \"queryType\": 0,\n \"dataset\": \"events\",\n \"query\": \"tags[http.status_code]:[400, 401]\",\n \"aggregate\": \"count()\",\n \"thresholdType\": 0,\n \"resolveThreshold\": null,\n \"timeWindow\": 1440,\n \"environment\": \"prod\",\n \"triggers\": [\n {\n \"id\": \"394289\",\n \"alertRuleId\": \"17723\",\n \"label\": \"critical\",\n \"thresholdType\": 0,\n \"alertThreshold\": 100,\n \"resolveThreshold\": null,\n \"dateCreated\": \"2023-09-25T22:15:26.375126Z\",\n \"actions\": [\n {\n \"id\": \"394280\",\n \"alertRuleTriggerId\": \"92481\",\n \"type\": \"slack\",\n \"targetType\": \"specific\",\n \"targetIdentifier\": \"30489048931789\",\n \"inputChannelId\": \"#my-channel\",\n \"integrationId\": \"8753467\",\n \"sentryAppId\": null,\n \"dateCreated\": \"2023-09-25T22:15:26.375126Z\"\n }\n ]\n }\n ],\n \"projects\": [\n \"super-cool-project\"\n ],\n \"owner\": \"user:53256\",\n \"originalAlertRuleId\": null,\n \"comparisonDelta\": null,\n \"dateModified\": \"2023-09-25T22:15:26.375126Z\",\n \"dateCreated\": \"2023-09-25T22:15:26.375126Z\",\n \"createdBy\": {\n \"id\": 983948,\n \"name\": \"John Doe\",\n \"email\": \"john.doe@sentry.io\"\n }\n }\n]\n```\n" + }, + { + "path": "api/alerts/list-spike-protection-notifications.md", + "title": "List Spike Protection Notifications", + "hierarchy": [ + "Api", + "Alerts", + "List Spike Protection Notifications" + ], + "summary": "# List Spike Protection Notifications", + "content": "# List Spike Protection Notifications\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/notifications/actions/\n\nReturns 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. For example, organization owners and managers can receive an email when a spike occurs.\n\nYou can use either the `project` or `projectSlug` query parameter to filter for certain projects. Note that if both are present, `projectSlug` takes priority.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Query Parameters:\n\n* `project`* (array(integer))*\n\n The IDs of projects to filter by. `-1` means all available projects. For example, the following are valid parameters:\n\n * `/?project=1234&project=56789`\n * `/?project=-1`\n\n* `project_id_or_slug`* (array(string))*\n\n The project slugs to filter by. Use `$all` to include all available projects. For example, the following are valid parameters:\n\n * `/?projectSlug=$all`\n * `/?projectSlug=android&projectSlug=javascript-react`\n\n* `triggerType`* (string)*\n\n Type of the trigger that causes the notification. The only supported value right now is: `spike-protection`\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/notifications/actions/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"836501735\",\n \"organizationId\": \"62848264\",\n \"serviceType\": \"sentry_notification\",\n \"targetDisplay\": \"default\",\n \"targetIdentifier\": \"default\",\n \"targetType\": \"specific\",\n \"triggerType\": \"spike-protection\",\n \"projects\": [\n 4505321021243392\n ]\n}\n```\n" + }, + { + "path": "api/alerts/retrieve-a-metric-alert-rule-for-an-organization.md", + "title": "Retrieve a Metric Alert Rule for an Organization", + "hierarchy": [ + "Api", + "Alerts", + "Retrieve A Metric Alert Rule For An Organization" + ], + "summary": "# Retrieve a Metric Alert Rule for an Organization", + "content": "# Retrieve a Metric Alert Rule for an Organization\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/alert-rules/{alert\\_rule\\_id}/\n\nReturn details on an individual metric alert rule.\n\nA metric alert rule is a configuration that defines the conditions for triggering an alert. It specifies the metric type, function, time interval, and threshold values that determine when an alert should be triggered. Metric alert rules are used to monitor and notify you when certain metrics, like error count, latency, or failure rate, cross a predefined threshold. These rules help you proactively identify and address issues in your project.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `alert_rule_id`* (integer)*\n\n REQUIRED\n\n The ID of the rule you'd like to query.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `alerts:read`\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/alert-rules/{alert_rule_id}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"177412243058\",\n \"name\": \"My Metric Alert Rule\",\n \"organizationId\": \"4505676595200000\",\n \"queryType\": 0,\n \"dataset\": \"events\",\n \"query\": \"\",\n \"aggregate\": \"count_unique(user)\",\n \"thresholdType\": 0,\n \"resolveThreshold\": null,\n \"timeWindow\": 60,\n \"environment\": null,\n \"triggers\": [\n {\n \"id\": \"294385908\",\n \"alertRuleId\": \"177412243058\",\n \"label\": \"critical\",\n \"thresholdType\": 0,\n \"alertThreshold\": 31,\n \"resolveThreshold\": null,\n \"dateCreated\": \"2023-09-26T22:14:17.557579Z\",\n \"actions\": []\n }\n ],\n \"projects\": [\n \"my-coolest-project\"\n ],\n \"owner\": \"team:29508397892374892\",\n \"dateModified\": \"2023-09-26T22:14:17.522166Z\",\n \"dateCreated\": \"2023-09-26T22:14:17.522196Z\",\n \"createdBy\": {\n \"id\": 2834985497897,\n \"name\": \"Somebody That I Used to Know\",\n \"email\": \"anon@sentry.io\"\n },\n \"eventTypes\": [\n \"default\",\n \"error\"\n ]\n}\n```\n" + }, + { + "path": "api/alerts/retrieve-a-spike-protection-notification-action.md", + "title": "Retrieve a Spike Protection Notification Action", + "hierarchy": [ + "Api", + "Alerts", + "Retrieve A Spike Protection Notification Action" + ], + "summary": "# Retrieve a Spike Protection Notification Action", + "content": "# Retrieve a Spike Protection Notification Action\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/notifications/actions/{action\\_id}/\n\nReturns 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. For example, organization owners and managers can receive an email when a spike occurs.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `action_id`* (integer)*\n\n REQUIRED\n\n ID of the notification action to retrieve\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/notifications/actions/{action_id}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"836501735\",\n \"organizationId\": \"62848264\",\n \"serviceType\": \"sentry_notification\",\n \"targetDisplay\": \"default\",\n \"targetIdentifier\": \"default\",\n \"targetType\": \"specific\",\n \"triggerType\": \"spike-protection\",\n \"projects\": [\n 4505321021243392\n ]\n}\n```\n" + }, + { + "path": "api/alerts/retrieve-an-issue-alert-rule-for-a-project.md", + "title": "Retrieve an Issue Alert Rule for a Project", + "hierarchy": [ + "Api", + "Alerts", + "Retrieve An Issue Alert Rule For A Project" + ], + "summary": "# Retrieve an Issue Alert Rule for a Project", + "content": "# Retrieve an Issue Alert Rule for a Project\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/rules/{rule\\_id}/\n\nReturn details on an individual issue alert rule.\n\nAn issue alert rule triggers whenever a new event is received for any issue in a project that matches the specified alert conditions. These conditions can include a resolved issue re-appearing or an issue affecting many users. Alert conditions have three parts:\n\n* Triggers - specify what type of activity you'd like monitored or when an alert should be triggered.\n* Filters - help control noise by triggering an alert only if the issue matches the specified criteria.\n* Actions - specify what should happen when the trigger conditions are met and the filters match.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n* `rule_id`* (integer)*\n\n REQUIRED\n\n The ID of the rule you'd like to query.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `alerts:read`\n* `alerts:write`\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/rules/{rule_id}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"7\",\n \"conditions\": [\n {\n \"id\": \"sentry.rules.conditions.regression_event.RegressionEventCondition\"\n }\n ],\n \"filters\": [\n {\n \"id\": \"sentry.rules.filters.age_comparison.AgeComparisonFilter\",\n \"comparison_type\": \"older\",\n \"value\": 4,\n \"time\": \"week\"\n },\n {\n \"id\": \"sentry.rules.filters.issue_occurrences.IssueOccurrencesFilter\",\n \"value\": 1000\n }\n ],\n \"actions\": [\n {\n \"id\": \"sentry.integrations.slack.notify_action.SlackNotifyServiceAction\",\n \"workspace\": 976462356,\n \"channel\": \"#fatal\",\n \"tags\": \"browser,release\"\n }\n ],\n \"actionMatch\": \"all\",\n \"filterMatch\": \"all\",\n \"frequency\": 60,\n \"name\": \"Many Old Regressions!\",\n \"dateCreated\": \"2023-02-17T18:31:14.246012Z\",\n \"owner\": \"user:635623\",\n \"createdBy\": {\n \"id\": 635623,\n \"name\": \"John Doe\",\n \"email\": \"john.doe@email.com\"\n },\n \"environment\": null,\n \"projects\": [\n \"javascript\"\n ],\n \"status\": \"active\",\n \"snooze\": false\n}\n```\n" + }, + { + "path": "api/alerts/update-a-metric-alert-rule.md", + "title": "Update a Metric Alert Rule", + "hierarchy": [ + "Api", + "Alerts", + "Update A Metric Alert Rule" + ], + "summary": "# Update a Metric Alert Rule", + "content": "# Update a Metric Alert Rule\n\nPUT /api/0/organizations/{organization\\_id\\_or\\_slug}/alert-rules/{alert\\_rule\\_id}/\n\nUpdates a metric alert rule. See **Metric Alert Rule Types** under [Create a Metric Alert Rule for an Organization](https://docs.sentry.io/api/alerts/create-a-metric-alert-rule-for-an-organization.md#metric-alert-rule-types) to see valid request body configurations for different types of metric alert rule types.\n\n> Warning: Calling this endpoint fully overwrites the specified metric alert.\n\nA metric alert rule is a configuration that defines the conditions for triggering an alert. It specifies the metric type, function, time interval, and threshold values that determine when an alert should be triggered. Metric alert rules are used to monitor and notify you when certain metrics, like error count, latency, or failure rate, cross a predefined threshold. These rules help you proactively identify and address issues in your project.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `alert_rule_id`* (integer)*\n\n REQUIRED\n\n The ID of the rule you'd like to query.\n\n### Body Parameters\n\n* `name`* (string)*\n\n REQUIRED\n\n The name for the rule.\n\n* `aggregate`* (string)*\n\n REQUIRED\n\n A string representing the aggregate function used in this alert rule. Valid aggregate functions are `count`, `count_unique`, `percentage`, `avg`, `apdex`, `failure_rate`, `p50`, `p75`, `p95`, `p99`, `p100`, and `percentile`. See **Metric Alert Rule Types** under [Create a Metric Alert Rule](https://docs.sentry.io/api/alerts/create-a-metric-alert-rule-for-an-organization.md#metric-alert-rule-types) for valid configurations.\n\n* `timeWindow`* (integer)*\n\n REQUIRED\n\n The time period to aggregate over.\n\n * `1` - 1 minute\n * `5` - 5 minutes\n * `10` - 10 minutes\n * `15` - 15 minutes\n * `30` - 30 minutes\n * `60` - 1 hour\n * `120` - 2 hours\n * `240` - 4 hours\n * `1440` - 24 hours\n\n* `projects`* (array(string))*\n\n REQUIRED\n\n The names of the projects to filter by.\n\n* `query`* (string)*\n\n REQUIRED\n\n An event search query to subscribe to and monitor for alerts. For example, to filter transactions so that only those with status code 400 are included, you could use `\"query\": \"http.status_code:400\"`. Use an empty string for no filter.\n\n* `thresholdType`* (integer)*\n\n REQUIRED\n\n The comparison operator for the critical and warning thresholds. The comparison operator for the resolved threshold is automatically set to the opposite operator. When a percentage change threshold is used, `0` is equivalent to \"Higher than\" and `1` is equivalent to \"Lower than\".\n\n * `0` - Above\n * `1` - Below\n\n* `triggers`* (array(undefined))*\n\n REQUIRED\n\n A list of triggers, where each trigger is an object with the following fields:\n\n * `label`: One of `critical` or `warning`. A `critical` trigger is always required.\n * `alertThreshold`: The value that the subscription needs to reach to trigger the alert rule.\n * `actions`: A list of actions that take place when the threshold is met.\n\n ```json\n triggers: [\n {\n \"label\": \"critical\",\n \"alertThreshold\": 100,\n \"actions\": [\n {\n \"type\": \"email\",\n \"targetType\": \"user\",\n \"targetIdentifier\": \"23489853\",\n \"inputChannelId\": None\n \"integrationId\": None,\n \"sentryAppId\": None\n }\n ]\n },\n {\n \"label\": \"warning\",\n \"alertThreshold\": 75,\n \"actions\": []\n }\n ]\n ```\n\n Metric alert rule trigger actions follow the following structure:\n\n * `type`: The type of t" + }, + { + "path": "api/alerts/update-a-spike-protection-notification-action.md", + "title": "Update a Spike Protection Notification Action", + "hierarchy": [ + "Api", + "Alerts", + "Update A Spike Protection Notification Action" + ], + "summary": "# Update a Spike Protection Notification Action", + "content": "# Update a Spike Protection Notification Action\n\nPUT /api/0/organizations/{organization\\_id\\_or\\_slug}/notifications/actions/{action\\_id}/\n\nUpdates 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. For example, organization owners and managers can receive an email when a spike occurs.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `action_id`* (integer)*\n\n REQUIRED\n\n ID of the notification action to retrieve\n\n### Body Parameters\n\n* `trigger_type`* (string)*\n\n REQUIRED\n\n Type of the trigger that causes the notification. The only supported trigger right now is: `spike-protection`.\n\n* `service_type`* (string)*\n\n REQUIRED\n\n Service that is used for sending the notification.\n\n * `email`\n * `slack`\n * `sentry_notification`\n * `pagerduty`\n * `opsgenie`\n\n* `integration_id`* (integer)*\n\n ID of the integration used as the notification service. See [List Integrations](https://docs.sentry.io/api/integrations/list-an-organizations-available-integrations.md) to retrieve a full list of integrations.\n\n Required if **service\\_type** is `slack`, `pagerduty` or `opsgenie`.\n\n* `target_identifier`* (string)*\n\n ID of the notification target, like a Slack channel ID.\n\n Required if **service\\_type** is `slack` or `opsgenie`.\n\n* `target_display`* (string)*\n\n Name of the notification target, like a Slack channel name.\n\n Required if **service\\_type** is `slack` or `opsgenie`.\n\n* `projects`* (array(string))*\n\n List of projects slugs that the Notification Action is created for.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/notifications/actions/{action_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"836501735\",\n \"organizationId\": \"62848264\",\n \"serviceType\": \"sentry_notification\",\n \"targetDisplay\": \"default\",\n \"targetIdentifier\": \"default\",\n \"targetType\": \"specific\",\n \"triggerType\": \"spike-protection\",\n \"projects\": [\n 4505321021243392\n ]\n}\n```\n" + }, + { + "path": "api/alerts/update-an-issue-alert-rule.md", + "title": "Update an Issue Alert Rule", + "hierarchy": [ + "Api", + "Alerts", + "Update An Issue Alert Rule" + ], + "summary": "# Update an Issue Alert Rule", + "content": "# Update an Issue Alert Rule\n\nPUT /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/rules/{rule\\_id}/\n\nUpdates an issue alert rule.\n\n> Warning: Calling this endpoint fully overwrites the specified issue alert.\n\nAn issue alert rule triggers whenever a new event is received for any issue in a project that matches the specified alert conditions. These conditions can include a resolved issue re-appearing or an issue affecting many users. Alert conditions have three parts:\n\n* Triggers - specify what type of activity you'd like monitored or when an alert should be triggered.\n* Filters - help control noise by triggering an alert only if the issue matches the specified criteria.\n* Actions - specify what should happen when the trigger conditions are met and the filters match.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n* `rule_id`* (integer)*\n\n REQUIRED\n\n The ID of the rule you'd like to query.\n\n### Body Parameters\n\n* `name`* (string)*\n\n REQUIRED\n\n The name for the rule.\n\n* `actionMatch`* (string)*\n\n REQUIRED\n\n A string determining which of the conditions need to be true before any filters are evaluated.\n\n * `all` - All conditions must evaluate to true.\n * `any` - At least one of the conditions must evaluate to true.\n * `none` - All conditions must evaluate to false.\n\n* `conditions`* (array(object))*\n\n REQUIRED\n\n A list of triggers that determine when the rule fires. See [Create an Issue Alert Rule](https://docs.sentry.io/api/alerts/create-an-issue-alert-rule-for-a-project.md) for valid conditions.\n\n* `actions`* (array(object))*\n\n REQUIRED\n\n A list of actions that take place when all required conditions and filters for the rule are met. See [Create an Issue Alert Rule](https://docs.sentry.io/api/alerts/create-an-issue-alert-rule-for-a-project.md) for valid actions.\n\n* `frequency`* (integer)*\n\n REQUIRED\n\n How often to perform the actions once for an issue, in minutes. The valid range is `5` to `43200`.\n\n* `environment`* (string)*\n\n The name of the environment to filter by.\n\n* `filterMatch`* (string)*\n\n A string determining which filters need to be true before any actions take place.\n\n * `all` - All filters must evaluate to true.\n * `any` - At least one of the filters must evaluate to true.\n * `none` - All filters must evaluate to false.\n\n* `filters`* (array(object))*\n\n A list of filters that determine if a rule fires after the necessary conditions have been met. See [Create an Issue Alert Rule](https://docs.sentry.io/api/alerts/create-an-issue-alert-rule-for-a-project.md) for valid filters.\n\n* `owner`* (string)*\n\n The ID of the team or user that owns the rule.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `alerts:write`\n* `project:admin`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/rules/{rule_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"7\",\n \"conditions\": [\n {\n \"id\": \"sentry.rules.conditions.regression_event.RegressionEventCondition\"\n }\n ],\n \"filters\": [\n {\n \"id\": \"sentry.rules.filters.age_comparison.AgeComparisonFilter\",\n \"comparison_type\": \"older\",\n \"value\": 4,\n \"time\": \"week\"\n },\n {\n \"id\": \"sentry.rules.filters.i" + }, + { + "path": "api/auth.md", + "title": "Authentication", + "hierarchy": [ + "Api", + "Auth" + ], + "summary": "# Authentication", + "content": "# Authentication\n\n## [Auth Tokens](https://docs.sentry.io/api/auth.md#auth-tokens)\n\nAuthentication tokens are passed using an auth header, and are used to authenticate as a user or organization account with the API. In our documentation, we have several placeholders that appear between curly braces or chevrons, such as `{API_KEY}` or ``, which you will need to replace with one of your authentication tokens in order to use the API call effectively.\n\nFor example, when the documentation says:\n\n```bash\ncurl -H 'Authorization: Bearer {TOKEN}' https://sentry.io/api/0/organizations/{organization_slug}/projects/\n```\n\nIf your authentication token is `1a2b3c`, and your organization slug is `acme` then the command should be:\n\n```bash\ncurl -H 'Authorization: Bearer 1a2b3c' https://sentry.io/api/0/organizations/acme/projects/\n```\n\nYou can create authentication tokens within Sentry by [creating an internal integration](https://docs.sentry.io/organization/integrations/integration-platform.md#internal-integrations). This is also available for self-hosted Sentry.\n\n### [User authentication tokens](https://docs.sentry.io/api/auth.md#user-authentication-tokens)\n\nSome API endpoints require an authentication token that's associated with your user account, rather than an authentication token from an internal integration. These auth tokens can be created within Sentry on the \"User settings\" page (**User settings > Personal Tokens**) and assigned specific scopes.\n\nThe endpoints that require a user authentication token are specific to your user, such as [Retrieve an Organization](https://docs.sentry.io/api/organizations/retrieve-an-organization.md).\n\n## [DSN Authentication](https://docs.sentry.io/api/auth.md#dsn-authentication)\n\nSome API endpoints may allow DSN-based authentication. This is generally very limited and an endpoint will describe if its supported. This works similar to Bearer token authentication, but uses your DSN (Client Key).\n\n```bash\ncurl -H 'Authorization: DSN {DSN}' https://sentry.io/api/0/{organization_slug}/{project_slug}/user-reports/\n```\n\n## [API Keys](https://docs.sentry.io/api/auth.md#api-keys)\n\n##### Note\n\nAPI keys are a legacy means of authenticating. They will still be supported but are disabled for new accounts. You should use **authentication tokens** wherever possible.\n\nAPI keys are passed using HTTP Basic auth where the username is your api key, and the password is an empty value.\n\nAs an example, to get information about the project which your key is bound to, you might make a request like so:\n\n```bash\ncurl -u {API_KEY}: https://sentry.io/api/0/organizations/{organization_slug}/projects/\n```\n\nYou **must** pass a value for the password, which is the reason the `:` is present in our example.\n" + }, + { + "path": "api/crons.md", + "title": "Crons", + "hierarchy": [ + "Api", + "Crons" + ], + "summary": "# Crons", + "content": "# Crons\n\n* #### [Create a Monitor](https://docs.sentry.io/api/crons/create-a-monitor.md)\n* #### [Delete a Monitor or Monitor Environments](https://docs.sentry.io/api/crons/delete-a-monitor-or-monitor-environments.md)\n* #### [Delete a Monitor or Monitor Environments for a Project](https://docs.sentry.io/api/crons/delete-a-monitor-or-monitor-environments-for-a-project.md)\n* #### [Retrieve a Monitor](https://docs.sentry.io/api/crons/retrieve-a-monitor.md)\n* #### [Retrieve a Monitor for a Project](https://docs.sentry.io/api/crons/retrieve-a-monitor-for-a-project.md)\n* #### [Retrieve Check-Ins for a Monitor](https://docs.sentry.io/api/crons/retrieve-checkins-for-a-monitor.md)\n* #### [Retrieve Check-Ins for a Monitor by Project](https://docs.sentry.io/api/crons/retrieve-checkins-for-a-monitor-by-project.md)\n* #### [Retrieve Monitors for an Organization](https://docs.sentry.io/api/crons/retrieve-monitors-for-an-organization.md)\n* #### [Update a Monitor](https://docs.sentry.io/api/crons/update-a-monitor.md)\n* #### [Update a Monitor for a Project](https://docs.sentry.io/api/crons/update-a-monitor-for-a-project.md)\n" + }, + { + "path": "api/crons/create-a-monitor.md", + "title": "Create a Monitor", + "hierarchy": [ + "Api", + "Crons", + "Create A Monitor" + ], + "summary": "# Create a Monitor", + "content": "# Create a Monitor\n\nPOST /api/0/organizations/{organization\\_id\\_or\\_slug}/monitors/\n\nCreate a new monitor.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Body Parameters\n\n* `project`* (string)*\n\n REQUIRED\n\n The project slug to associate the monitor to.\n\n* `name`* (string)*\n\n REQUIRED\n\n Name of the monitor. Used for notifications. If not set the slug will be derived from your monitor name.\n\n* `config`\n\n REQUIRED\n\n The configuration for the monitor.\n\n* `slug`* (string)*\n\n Uniquely identifies your monitor within your organization. Changing this slug will require updates to any instrumented check-in calls.\n\n* `status`* (string)*\n\n Status of the monitor. Disabled monitors will not accept events and will not count towards the monitor quota.\n\n * `active`\n * `disabled`\n\n* `owner`* (string)*\n\n The ID of the team or user that owns the monitor. (eg. user:51 or team:6)\n\n* `is_muted`* (boolean)*\n\n Disable creation of monitor incidents\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `alerts:write`\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/monitors/ \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n.\n```\n" + }, + { + "path": "api/crons/delete-a-monitor-or-monitor-environments-for-a-project.md", + "title": "Delete a Monitor or Monitor Environments for a Project", + "hierarchy": [ + "Api", + "Crons", + "Delete A Monitor Or Monitor Environments For A Project" + ], + "summary": "# Delete a Monitor or Monitor Environments for a Project", + "content": "# Delete a Monitor or Monitor Environments for a Project\n\nDELETE /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/monitors/{monitor\\_id\\_or\\_slug}/\n\nDelete a monitor or monitor environments.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n* `monitor_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the monitor.\n\n### Query Parameters:\n\n* `environment`* (array(string))*\n\n The name of environments to filter by.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `alerts:write`\n* `project:admin`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/monitors/{monitor_id_or_slug}/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nAccepted.\n```\n" + }, + { + "path": "api/crons/delete-a-monitor-or-monitor-environments.md", + "title": "Delete a Monitor or Monitor Environments", + "hierarchy": [ + "Api", + "Crons", + "Delete A Monitor Or Monitor Environments" + ], + "summary": "# Delete a Monitor or Monitor Environments", + "content": "# Delete a Monitor or Monitor Environments\n\nDELETE /api/0/organizations/{organization\\_id\\_or\\_slug}/monitors/{monitor\\_id\\_or\\_slug}/\n\nDelete a monitor or monitor environments.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `monitor_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the monitor.\n\n### Query Parameters:\n\n* `environment`* (array(string))*\n\n The name of environments to filter by.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `alerts:write`\n* `project:admin`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/monitors/{monitor_id_or_slug}/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nAccepted.\n```\n" + }, + { + "path": "api/crons/retrieve-a-monitor-for-a-project.md", + "title": "Retrieve a Monitor for a Project", + "hierarchy": [ + "Api", + "Crons", + "Retrieve A Monitor For A Project" + ], + "summary": "# Retrieve a Monitor for a Project", + "content": "# Retrieve a Monitor for a Project\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/monitors/{monitor\\_id\\_or\\_slug}/\n\nRetrieves details for a monitor.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n* `monitor_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the monitor.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `alerts:read`\n* `alerts:write`\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/monitors/{monitor_id_or_slug}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n.\n```\n" + }, + { + "path": "api/crons/retrieve-a-monitor.md", + "title": "Retrieve a Monitor", + "hierarchy": [ + "Api", + "Crons", + "Retrieve A Monitor" + ], + "summary": "# Retrieve a Monitor", + "content": "# Retrieve a Monitor\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/monitors/{monitor\\_id\\_or\\_slug}/\n\nRetrieves details for a monitor.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `monitor_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the monitor.\n\n### Query Parameters:\n\n* `environment`* (array(string))*\n\n The name of environments to filter by.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `alerts:read`\n* `alerts:write`\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/monitors/{monitor_id_or_slug}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n.\n```\n" + }, + { + "path": "api/crons/retrieve-checkins-for-a-monitor-by-project.md", + "title": "Retrieve Check-Ins for a Monitor by Project", + "hierarchy": [ + "Api", + "Crons", + "Retrieve Checkins For A Monitor By Project" + ], + "summary": "# Retrieve Check-Ins for a Monitor by Project", + "content": "# Retrieve Check-Ins for a Monitor by Project\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/monitors/{monitor\\_id\\_or\\_slug}/checkins/\n\nRetrieve a list of check-ins for a monitor\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n* `monitor_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the monitor.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `alerts:read`\n* `alerts:write`\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/monitors/{monitor_id_or_slug}/checkins/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n.\n```\n" + }, + { + "path": "api/crons/retrieve-checkins-for-a-monitor.md", + "title": "Retrieve Check-Ins for a Monitor", + "hierarchy": [ + "Api", + "Crons", + "Retrieve Checkins For A Monitor" + ], + "summary": "# Retrieve Check-Ins for a Monitor", + "content": "# Retrieve Check-Ins for a Monitor\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/monitors/{monitor\\_id\\_or\\_slug}/checkins/\n\nRetrieve a list of check-ins for a monitor\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `monitor_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the monitor.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `alerts:read`\n* `alerts:write`\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/monitors/{monitor_id_or_slug}/checkins/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n.\n```\n" + }, + { + "path": "api/crons/retrieve-monitors-for-an-organization.md", + "title": "Retrieve Monitors for an Organization", + "hierarchy": [ + "Api", + "Crons", + "Retrieve Monitors For An Organization" + ], + "summary": "# Retrieve Monitors for an Organization", + "content": "# Retrieve Monitors for an Organization\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/monitors/\n\nLists monitors, including nested monitor environments. May be filtered to a project or environment.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Query Parameters:\n\n* `project`* (array(integer))*\n\n The IDs of projects to filter by. `-1` means all available projects. For example, the following are valid parameters:\n\n * `/?project=1234&project=56789`\n * `/?project=-1`\n\n* `environment`* (array(string))*\n\n The name of environments to filter by.\n\n* `owner`* (string)*\n\n The owner of the monitor, in the format `user:id` or `team:id`. May be specified multiple times.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `alerts:read`\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/monitors/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n.\n```\n" + }, + { + "path": "api/crons/update-a-monitor-for-a-project.md", + "title": "Update a Monitor for a Project", + "hierarchy": [ + "Api", + "Crons", + "Update A Monitor For A Project" + ], + "summary": "# Update a Monitor for a Project", + "content": "# Update a Monitor for a Project\n\nPUT /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/monitors/{monitor\\_id\\_or\\_slug}/\n\nUpdate a monitor.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n* `monitor_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the monitor.\n\n### Body Parameters\n\n* `project`* (string)*\n\n REQUIRED\n\n The project slug to associate the monitor to.\n\n* `name`* (string)*\n\n REQUIRED\n\n Name of the monitor. Used for notifications. If not set the slug will be derived from your monitor name.\n\n* `config`\n\n REQUIRED\n\n The configuration for the monitor.\n\n* `slug`* (string)*\n\n Uniquely identifies your monitor within your organization. Changing this slug will require updates to any instrumented check-in calls.\n\n* `status`* (string)*\n\n Status of the monitor. Disabled monitors will not accept events and will not count towards the monitor quota.\n\n * `active`\n * `disabled`\n\n* `owner`* (string)*\n\n The ID of the team or user that owns the monitor. (eg. user:51 or team:6)\n\n* `is_muted`* (boolean)*\n\n Disable creation of monitor incidents\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `alerts:write`\n* `project:admin`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/monitors/{monitor_id_or_slug}/ \\\n -H 'Authorization: Bearer ' \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n.\n```\n" + }, + { + "path": "api/crons/update-a-monitor.md", + "title": "Update a Monitor", + "hierarchy": [ + "Api", + "Crons", + "Update A Monitor" + ], + "summary": "# Update a Monitor", + "content": "# Update a Monitor\n\nPUT /api/0/organizations/{organization\\_id\\_or\\_slug}/monitors/{monitor\\_id\\_or\\_slug}/\n\nUpdate a monitor.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `monitor_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the monitor.\n\n### Body Parameters\n\n* `project`* (string)*\n\n REQUIRED\n\n The project slug to associate the monitor to.\n\n* `name`* (string)*\n\n REQUIRED\n\n Name of the monitor. Used for notifications. If not set the slug will be derived from your monitor name.\n\n* `config`\n\n REQUIRED\n\n The configuration for the monitor.\n\n* `slug`* (string)*\n\n Uniquely identifies your monitor within your organization. Changing this slug will require updates to any instrumented check-in calls.\n\n* `status`* (string)*\n\n Status of the monitor. Disabled monitors will not accept events and will not count towards the monitor quota.\n\n * `active`\n * `disabled`\n\n* `owner`* (string)*\n\n The ID of the team or user that owns the monitor. (eg. user:51 or team:6)\n\n* `is_muted`* (boolean)*\n\n Disable creation of monitor incidents\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `alerts:write`\n* `project:admin`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/monitors/{monitor_id_or_slug}/ \\\n -H 'Authorization: Bearer ' \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n.\n```\n" + }, + { + "path": "api/dashboards.md", + "title": "Dashboards", + "hierarchy": [ + "Api", + "Dashboards" + ], + "summary": "# Dashboards", + "content": "# Dashboards\n\n* #### [Create a New Dashboard for an Organization](https://docs.sentry.io/api/dashboards/create-a-new-dashboard-for-an-organization.md)\n* #### [Delete an Organization's Custom Dashboard](https://docs.sentry.io/api/dashboards/delete-an-organizations-custom-dashboard.md)\n* #### [Edit an Organization's Custom Dashboard](https://docs.sentry.io/api/dashboards/edit-an-organizations-custom-dashboard.md)\n* #### [List an Organization's Custom Dashboards](https://docs.sentry.io/api/dashboards/list-an-organizations-custom-dashboards.md)\n* #### [Retrieve an Organization's Custom Dashboard](https://docs.sentry.io/api/dashboards/retrieve-an-organizations-custom-dashboard.md)\n" + }, + { + "path": "api/dashboards/create-a-new-dashboard-for-an-organization.md", + "title": "Create a New Dashboard for an Organization", + "hierarchy": [ + "Api", + "Dashboards", + "Create A New Dashboard For An Organization" + ], + "summary": "# Create a New Dashboard for an Organization", + "content": "# Create a New Dashboard for an Organization\n\nPOST /api/0/organizations/{organization\\_id\\_or\\_slug}/dashboards/\n\nCreate a new dashboard for the given Organization\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Body Parameters\n\n* `title`* (string)*\n\n REQUIRED\n\n The user defined title for this dashboard.\n\n* `id`* (string)*\n\n A dashboard's unique id.\n\n* `widgets`* (array(object))*\n\n A json list of widgets saved in this dashboard.\n\n* `projects`* (array(integer))*\n\n The saved projects filter for this dashboard.\n\n* `environment`* (array(string))*\n\n The saved environment filter for this dashboard.\n\n* `period`* (string)*\n\n The saved time range period for this dashboard.\n\n* `start`* (string)*\n\n The saved start time for this dashboard.\n\n* `end`* (string)*\n\n The saved end time for this dashboard.\n\n* `filters`* (object)*\n\n The saved filters for this dashboard.\n\n* `utc`* (boolean)*\n\n Setting that lets you display saved time range for this dashboard in UTC.\n\n* `permissions`\n\n Permissions that restrict users from editing dashboards\n\n* `is_favorited`* (boolean)*\n\n Favorite the dashboard automatically for the request user\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/dashboards/ \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"1\",\n \"title\": \"Dashboard\",\n \"dateCreated\": \"2024-06-20T14:38:03.498574Z\",\n \"createdBy\": {\n \"id\": \"1\",\n \"name\": \"Admin\",\n \"username\": \"admin\",\n \"email\": \"admin@sentry.io\",\n \"avatarUrl\": \"www.example.com\",\n \"isActive\": true,\n \"hasPasswordAuth\": true,\n \"isManaged\": false,\n \"dateJoined\": \"2021-10-25T17:07:33.190596Z\",\n \"lastLogin\": \"2024-07-16T15:28:39.261659Z\",\n \"has2fa\": true,\n \"lastActive\": \"2024-07-16T20:45:49.364197Z\",\n \"isSuperuser\": false,\n \"isStaff\": false,\n \"experiments\": {},\n \"emails\": [\n {\n \"id\": \"1\",\n \"email\": \"admin@sentry.io\",\n \"is_verified\": true\n }\n ],\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null,\n \"avatarUrl\": \"www.example.com\"\n }\n },\n \"widgets\": [\n {\n \"id\": \"658714\",\n \"title\": \"Custom Widget\",\n \"description\": null,\n \"displayType\": \"table\",\n \"thresholds\": null,\n \"interval\": \"5m\",\n \"dateCreated\": \"2024-07-16T15:36:46.048343Z\",\n \"dashboardId\": \"1\",\n \"datasetSource\": \"user\",\n \"queries\": [\n {\n \"id\": \"1\",\n \"name\": \"\",\n \"fields\": [\n \"avg(transaction.duration)\",\n \"transaction\"\n ],\n \"aggregates\": [\n \"avg(transaction.duration)\"\n ],\n \"columns\": [\n \"transaction\"\n ],\n \"fieldAliases\": [\n \"\",\n \"\"\n ],\n \"conditions\": \"\",\n \"orderby\": \"-avg(transaction.duration)\",\n \"widgetId\": \"1\",\n \"onDemand\": [\n {\n \"enabled\": false,\n \"extractionState\": \"disabled:not-applicable\",\n \"dashboardWidgetQueryId\": 1\n }\n ],\n \"isHidden\": false,\n \"selectedAggregate\": null\n }\n ],\n \"limit\": null,\n \"widgetType\": \"transaction-like\",\n \"layout\": {\n \"w\": 2,\n \"y\": 0,\n \"h\": 2,\n " + }, + { + "path": "api/dashboards/delete-an-organizations-custom-dashboard.md", + "title": "Delete an Organization's Custom Dashboard", + "hierarchy": [ + "Api", + "Dashboards", + "Delete An Organizations Custom Dashboard" + ], + "summary": "# Delete an Organization's Custom Dashboard", + "content": "# Delete an Organization's Custom Dashboard\n\nDELETE /api/0/organizations/{organization\\_id\\_or\\_slug}/dashboards/{dashboard\\_id}/\n\nDelete an organization's custom dashboard, or tombstone a pre-built dashboard which effectively deletes it.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `dashboard_id`* (integer)*\n\n REQUIRED\n\n The ID of the dashboard you'd like to retrieve.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/dashboards/{dashboard_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nNo Content.\n```\n" + }, + { + "path": "api/dashboards/edit-an-organizations-custom-dashboard.md", + "title": "Edit an Organization's Custom Dashboard", + "hierarchy": [ + "Api", + "Dashboards", + "Edit An Organizations Custom Dashboard" + ], + "summary": "# Edit an Organization's Custom Dashboard", + "content": "# Edit an Organization's Custom Dashboard\n\nPUT /api/0/organizations/{organization\\_id\\_or\\_slug}/dashboards/{dashboard\\_id}/\n\nEdit an organization's custom dashboard as well as any bulk edits on widgets that may have been made. (For example, widgets that have been rearranged, updated queries and fields, specific display types, and so on.)\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `dashboard_id`* (integer)*\n\n REQUIRED\n\n The ID of the dashboard you'd like to retrieve.\n\n### Body Parameters\n\n* `id`* (string)*\n\n A dashboard's unique id.\n\n* `title`* (string)*\n\n The user-defined dashboard title.\n\n* `widgets`* (array(object))*\n\n A json list of widgets saved in this dashboard.\n\n* `projects`* (array(integer))*\n\n The saved projects filter for this dashboard.\n\n* `environment`* (array(string))*\n\n The saved environment filter for this dashboard.\n\n* `period`* (string)*\n\n The saved time range period for this dashboard.\n\n* `start`* (string)*\n\n The saved start time for this dashboard.\n\n* `end`* (string)*\n\n The saved end time for this dashboard.\n\n* `filters`* (object)*\n\n The saved filters for this dashboard.\n\n* `utc`* (boolean)*\n\n Setting that lets you display saved time range for this dashboard in UTC.\n\n* `permissions`\n\n Permissions that restrict users from editing dashboards\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/dashboards/{dashboard_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"1\",\n \"title\": \"Dashboard\",\n \"dateCreated\": \"2024-06-20T14:38:03.498574Z\",\n \"createdBy\": {\n \"id\": \"1\",\n \"name\": \"Admin\",\n \"username\": \"admin\",\n \"email\": \"admin@sentry.io\",\n \"avatarUrl\": \"www.example.com\",\n \"isActive\": true,\n \"hasPasswordAuth\": true,\n \"isManaged\": false,\n \"dateJoined\": \"2021-10-25T17:07:33.190596Z\",\n \"lastLogin\": \"2024-07-16T15:28:39.261659Z\",\n \"has2fa\": true,\n \"lastActive\": \"2024-07-16T20:45:49.364197Z\",\n \"isSuperuser\": false,\n \"isStaff\": false,\n \"experiments\": {},\n \"emails\": [\n {\n \"id\": \"1\",\n \"email\": \"admin@sentry.io\",\n \"is_verified\": true\n }\n ],\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null,\n \"avatarUrl\": \"www.example.com\"\n }\n },\n \"widgets\": [\n {\n \"id\": \"658714\",\n \"title\": \"Custom Widget\",\n \"description\": null,\n \"displayType\": \"table\",\n \"thresholds\": null,\n \"interval\": \"5m\",\n \"dateCreated\": \"2024-07-16T15:36:46.048343Z\",\n \"dashboardId\": \"1\",\n \"datasetSource\": \"user\",\n \"queries\": [\n {\n \"id\": \"1\",\n \"name\": \"\",\n \"fields\": [\n \"avg(transaction.duration)\",\n \"transaction\"\n ],\n \"aggregates\": [\n \"avg(transaction.duration)\"\n ],\n \"columns\": [\n \"transaction\"\n ],\n \"fieldAliases\": [\n \"\",\n \"\"\n ],\n \"conditions\": \"\",\n \"orderby\": \"-avg(transaction.duration)\",\n \"widgetId\": \"1\",\n \"onDemand\": [\n {\n \"enabled\": false,\n \"extractionState\": \"disabled:not-applicable\",\n \"dashboardWidgetQueryId\": 1\n }\n ],\n \"isHidden\": false,\n " + }, + { + "path": "api/dashboards/list-an-organizations-custom-dashboards.md", + "title": "List an Organization's Custom Dashboards", + "hierarchy": [ + "Api", + "Dashboards", + "List An Organizations Custom Dashboards" + ], + "summary": "# List an Organization's Custom Dashboards", + "content": "# List an Organization's Custom Dashboards\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/dashboards/\n\nRetrieve a list of custom dashboards that are associated with the given organization.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Query Parameters:\n\n* `per_page`* (integer)*\n\n Limit the number of rows to return in the result. Default and maximum allowed is 100.\n\n* `cursor`* (string)*\n\n A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/dashboards/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"id\": \"1\",\n \"title\": \"Dashboard\",\n \"dateCreated\": \"2024-06-20T14:38:03.498574Z\",\n \"lastVisited\": \"2024-06-20T14:38:03.498574Z\",\n \"projects\": [\n 1\n ],\n \"environment\": [\n \"alpha\"\n ],\n \"filters\": {\n \"release\": [\n \"frontend@a02311a400636ff9640b3e4ca2991ee153dbbdcc\",\n \"frontend@36934c05140c16df93aa8ebf671f9386e916b501\"\n ]\n },\n \"createdBy\": {\n \"id\": \"1\",\n \"name\": \"Admin\",\n \"username\": \"admin\",\n \"email\": \"admin@sentry.io\",\n \"avatarUrl\": \"www.example.com\",\n \"isActive\": true,\n \"hasPasswordAuth\": true,\n \"isManaged\": false,\n \"dateJoined\": \"2021-10-25T17:07:33.190596Z\",\n \"lastLogin\": \"2024-07-16T15:28:39.261659Z\",\n \"has2fa\": true,\n \"lastActive\": \"2024-07-16T20:45:49.364197Z\",\n \"isSuperuser\": false,\n \"isStaff\": false,\n \"experiments\": {},\n \"emails\": [\n {\n \"id\": \"1\",\n \"email\": \"admin@sentry.io\",\n \"is_verified\": true\n }\n ],\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null,\n \"avatarUrl\": \"www.example.com\"\n }\n },\n \"widgetDisplay\": [],\n \"widgetPreview\": [],\n \"permissions\": {\n \"isEditableByEveryone\": true,\n \"teamsWithEditAccess\": []\n },\n \"isFavorited\": false\n },\n {\n \"id\": \"2\",\n \"title\": \"Dashboard\",\n \"dateCreated\": \"2024-06-20T14:38:03.498574Z\",\n \"lastVisited\": \"2024-06-20T14:38:03.498574Z\",\n \"projects\": [],\n \"environment\": [\n \"alpha\"\n ],\n \"filters\": {\n \"release\": [\n \"frontend@a02311a400636ff9640b3e4ca2991ee153dbbdcc\",\n \"frontend@36934c05140c16df93aa8ebf671f9386e916b501\"\n ]\n },\n \"createdBy\": {\n \"id\": \"1\",\n \"name\": \"Admin\",\n \"username\": \"admin\",\n \"email\": \"admin@sentry.io\",\n \"avatarUrl\": \"www.example.com\",\n \"isActive\": true,\n \"hasPasswordAuth\": true,\n \"isManaged\": false,\n \"dateJoined\": \"2021-10-25T17:07:33.190596Z\",\n \"lastLogin\": \"2024-07-16T15:28:39.261659Z\",\n \"has2fa\": true,\n \"lastActive\": \"2024-07-16T20:45:49.364197Z\",\n \"isSuperuser\": false,\n \"isStaff\": false,\n \"experiments\": {},\n \"emails\": [\n {\n \"id\": \"1\",\n \"email\": \"admin@sentry.io\",\n \"is_verified\": true\n }\n ],\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null,\n \"avatarUrl\": \"www.example.com\"\n }\n },\n \"widgetDisplay\": [],\n \"widgetPreview\": [],\n \"permissions\": null,\n \"isFavorited\": false\n }\n]\n```\n" + }, + { + "path": "api/dashboards/retrieve-an-organizations-custom-dashboard.md", + "title": "Retrieve an Organization's Custom Dashboard", + "hierarchy": [ + "Api", + "Dashboards", + "Retrieve An Organizations Custom Dashboard" + ], + "summary": "# Retrieve an Organization's Custom Dashboard", + "content": "# Retrieve an Organization's Custom Dashboard\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/dashboards/{dashboard\\_id}/\n\nReturn details about an organization's custom dashboard.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `dashboard_id`* (integer)*\n\n REQUIRED\n\n The ID of the dashboard you'd like to retrieve.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/dashboards/{dashboard_id}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"1\",\n \"title\": \"Dashboard\",\n \"dateCreated\": \"2024-06-20T14:38:03.498574Z\",\n \"createdBy\": {\n \"id\": \"1\",\n \"name\": \"Admin\",\n \"username\": \"admin\",\n \"email\": \"admin@sentry.io\",\n \"avatarUrl\": \"www.example.com\",\n \"isActive\": true,\n \"hasPasswordAuth\": true,\n \"isManaged\": false,\n \"dateJoined\": \"2021-10-25T17:07:33.190596Z\",\n \"lastLogin\": \"2024-07-16T15:28:39.261659Z\",\n \"has2fa\": true,\n \"lastActive\": \"2024-07-16T20:45:49.364197Z\",\n \"isSuperuser\": false,\n \"isStaff\": false,\n \"experiments\": {},\n \"emails\": [\n {\n \"id\": \"1\",\n \"email\": \"admin@sentry.io\",\n \"is_verified\": true\n }\n ],\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null,\n \"avatarUrl\": \"www.example.com\"\n }\n },\n \"widgets\": [\n {\n \"id\": \"658714\",\n \"title\": \"Custom Widget\",\n \"description\": null,\n \"displayType\": \"table\",\n \"thresholds\": null,\n \"interval\": \"5m\",\n \"dateCreated\": \"2024-07-16T15:36:46.048343Z\",\n \"dashboardId\": \"1\",\n \"datasetSource\": \"user\",\n \"queries\": [\n {\n \"id\": \"1\",\n \"name\": \"\",\n \"fields\": [\n \"avg(transaction.duration)\",\n \"transaction\"\n ],\n \"aggregates\": [\n \"avg(transaction.duration)\"\n ],\n \"columns\": [\n \"transaction\"\n ],\n \"fieldAliases\": [\n \"\",\n \"\"\n ],\n \"conditions\": \"\",\n \"orderby\": \"-avg(transaction.duration)\",\n \"widgetId\": \"1\",\n \"onDemand\": [\n {\n \"enabled\": false,\n \"extractionState\": \"disabled:not-applicable\",\n \"dashboardWidgetQueryId\": 1\n }\n ],\n \"isHidden\": false,\n \"selectedAggregate\": null\n }\n ],\n \"limit\": null,\n \"widgetType\": \"transaction-like\",\n \"layout\": {\n \"w\": 2,\n \"y\": 0,\n \"h\": 2,\n \"minH\": 2,\n \"x\": 0\n }\n }\n ],\n \"projects\": [\n 1\n ],\n \"filters\": {},\n \"environment\": [\n \"alpha\"\n ],\n \"period\": \"7d\",\n \"permissions\": {\n \"isEditableByEveryone\": true,\n \"teamsWithEditAccess\": []\n },\n \"isFavorited\": false\n}\n```\n" + }, + { + "path": "api/discover.md", + "title": "Discover & Performance", + "hierarchy": [ + "Api", + "Discover" + ], + "summary": "# Discover & Performance", + "content": "# Discover & Performance\n\nDiscover and Performance allow you to slice and dice your Error and Transaction events\n\n* #### [Create a New Saved Query](https://docs.sentry.io/api/discover/create-a-new-saved-query.md)\n* #### [Delete an Organization's Discover Saved Query](https://docs.sentry.io/api/discover/delete-an-organizations-discover-saved-query.md)\n* #### [Edit an Organization's Discover Saved Query](https://docs.sentry.io/api/discover/edit-an-organizations-discover-saved-query.md)\n* #### [List an Organization's Discover Saved Queries](https://docs.sentry.io/api/discover/list-an-organizations-discover-saved-queries.md)\n* #### [Query Discover Events in Table Format](https://docs.sentry.io/api/discover/query-discover-events-in-table-format.md)\n* #### [Retrieve an Organization's Discover Saved Query](https://docs.sentry.io/api/discover/retrieve-an-organizations-discover-saved-query.md)\n" + }, + { + "path": "api/discover/create-a-new-saved-query.md", + "title": "Create a New Saved Query", + "hierarchy": [ + "Api", + "Discover", + "Create A New Saved Query" + ], + "summary": "# Create a New Saved Query", + "content": "# Create a New Saved Query\n\nPOST /api/0/organizations/{organization\\_id\\_or\\_slug}/discover/saved/\n\nCreate a new saved query for the given organization.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Body Parameters\n\n* `name`* (string)*\n\n REQUIRED\n\n The user-defined saved query name.\n\n* `projects`* (array(integer))*\n\n The saved projects filter for this query.\n\n* `queryDataset`* (string)*\n\n 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`\n\n* `start`* (string)*\n\n The saved start time for this saved query.\n\n* `end`* (string)*\n\n The saved end time for this saved query.\n\n* `range`* (string)*\n\n The saved time range period for this saved query.\n\n* `fields`* (array(string))*\n\n 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\n * A built-in key field. See possible fields in the [properties table](https://docs.sentry.io/product/sentry-basics/search/searchable-properties.md#properties-table), under any field that is an event property.\n \n * example: `field=transaction`\n\n * A tag. Tags should use the `tag[]` formatting to avoid ambiguity with any fields\n \n * example: `field=tag[isEnterprise]`\n\n * A function which will be in the format of `function_name(parameters,...)`. See possible functions in the [query builder documentation](https://docs.sentry.io/product/discover-queries/query-builder.md#stacking-functions).\n\n \n\n * when a function is included, Discover will group by any tags or fields\n * example: `field=count_if(transaction.duration,greater,300)`\n\n * An equation when prefixed with `equation|`. Read more about [equations here](https://docs.sentry.io/product/discover-queries/query-builder/query-equations.md).\n \n * example: `field=equation|count_if(transaction.duration,greater,300) / count() * 100`\n\n* `orderby`* (string)*\n\n How to order the query results. Must be something in the `field` list, excluding equations.\n\n* `environment`* (array(string))*\n\n The name of environments to filter by.\n\n* `query`* (string)*\n\n Filters results by using [query syntax](https://docs.sentry.io/product/sentry-basics/search.md).\n\n* `yAxis`* (array(string))*\n\n Aggregate functions to be plotted on the chart.\n\n* `display`* (string)*\n\n Visualization type for saved query chart. Allowed values are:\n\n * default\n * previous\n * top5\n * daily\n * dailytop5\n * bar\n\n* `topEvents`* (integer)*\n\n Number of top events' timeseries to be visualized.\n\n* `interval`* (string)*\n\n Resolution of the time series.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/discover/saved/ \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"1\",\n \"name\": \"Transactions by Volume\",\n \"projects\": [],\n \"version\": 2,\n \"queryDataset\": \"transaction-like\",\n \"datasetSource\": \"unknown\",\n \"expired\": false,\n \"dateCreated\": \"2024-07-25T19:35:38.422859Z\",\n \"dateUpdated\": \"2024-07-25T19:35:38.422874Z\",\n \"environme" + }, + { + "path": "api/discover/delete-an-organizations-discover-saved-query.md", + "title": "Delete an Organization's Discover Saved Query", + "hierarchy": [ + "Api", + "Discover", + "Delete An Organizations Discover Saved Query" + ], + "summary": "# Delete an Organization's Discover Saved Query", + "content": "# Delete an Organization's Discover Saved Query\n\nDELETE /api/0/organizations/{organization\\_id\\_or\\_slug}/discover/saved/{query\\_id}/\n\nDelete a saved query.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `query_id`* (integer)*\n\n REQUIRED\n\n The ID of the Discover query you'd like to retrieve.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/discover/saved/{query_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nNo Content.\n```\n" + }, + { + "path": "api/discover/edit-an-organizations-discover-saved-query.md", + "title": "Edit an Organization's Discover Saved Query", + "hierarchy": [ + "Api", + "Discover", + "Edit An Organizations Discover Saved Query" + ], + "summary": "# Edit an Organization's Discover Saved Query", + "content": "# Edit an Organization's Discover Saved Query\n\nPUT /api/0/organizations/{organization\\_id\\_or\\_slug}/discover/saved/{query\\_id}/\n\nModify a saved query.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `query_id`* (integer)*\n\n REQUIRED\n\n The ID of the Discover query you'd like to retrieve.\n\n### Body Parameters\n\n* `name`* (string)*\n\n REQUIRED\n\n The user-defined saved query name.\n\n* `projects`* (array(integer))*\n\n The saved projects filter for this query.\n\n* `queryDataset`* (string)*\n\n 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`\n\n* `start`* (string)*\n\n The saved start time for this saved query.\n\n* `end`* (string)*\n\n The saved end time for this saved query.\n\n* `range`* (string)*\n\n The saved time range period for this saved query.\n\n* `fields`* (array(string))*\n\n 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\n * A built-in key field. See possible fields in the [properties table](https://docs.sentry.io/product/sentry-basics/search/searchable-properties.md#properties-table), under any field that is an event property.\n \n * example: `field=transaction`\n\n * A tag. Tags should use the `tag[]` formatting to avoid ambiguity with any fields\n \n * example: `field=tag[isEnterprise]`\n\n * A function which will be in the format of `function_name(parameters,...)`. See possible functions in the [query builder documentation](https://docs.sentry.io/product/discover-queries/query-builder.md#stacking-functions).\n\n \n\n * when a function is included, Discover will group by any tags or fields\n * example: `field=count_if(transaction.duration,greater,300)`\n\n * An equation when prefixed with `equation|`. Read more about [equations here](https://docs.sentry.io/product/discover-queries/query-builder/query-equations.md).\n \n * example: `field=equation|count_if(transaction.duration,greater,300) / count() * 100`\n\n* `orderby`* (string)*\n\n How to order the query results. Must be something in the `field` list, excluding equations.\n\n* `environment`* (array(string))*\n\n The name of environments to filter by.\n\n* `query`* (string)*\n\n Filters results by using [query syntax](https://docs.sentry.io/product/sentry-basics/search.md).\n\n* `yAxis`* (array(string))*\n\n Aggregate functions to be plotted on the chart.\n\n* `display`* (string)*\n\n Visualization type for saved query chart. Allowed values are:\n\n * default\n * previous\n * top5\n * daily\n * dailytop5\n * bar\n\n* `topEvents`* (integer)*\n\n Number of top events' timeseries to be visualized.\n\n* `interval`* (string)*\n\n Resolution of the time series.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/discover/saved/{query_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"1\",\n \"name\": \"Transactions by Volume\",\n \"projects\": [],\n \"version\": 2,\n \"queryDataset\": \"transaction-like\",\n \"datasetSourc" + }, + { + "path": "api/discover/list-an-organizations-discover-saved-queries.md", + "title": "List an Organization's Discover Saved Queries", + "hierarchy": [ + "Api", + "Discover", + "List An Organizations Discover Saved Queries" + ], + "summary": "# List an Organization's Discover Saved Queries", + "content": "# List an Organization's Discover Saved Queries\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/discover/saved/\n\nRetrieve a list of saved queries that are associated with the given organization.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Query Parameters:\n\n* `per_page`* (integer)*\n\n Limit the number of rows to return in the result. Default and maximum allowed is 100.\n\n* `cursor`* (string)*\n\n A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.\n\n* `query`* (string)*\n\n The name of the Discover query you'd like to filter by.\n\n* `sortBy`* (string)*\n\n The property to sort results by. If not specified, the results are sorted by query name.\n\n Available fields are:\n\n * `name`\n * `dateCreated`\n * `dateUpdated`\n * `mostPopular`\n * `recentlyViewed`\n * `myqueries`\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/discover/saved/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"id\": \"1\",\n \"name\": \"Transactions by Volume\",\n \"projects\": [],\n \"version\": 2,\n \"queryDataset\": \"transaction-like\",\n \"datasetSource\": \"unknown\",\n \"expired\": false,\n \"dateCreated\": \"2024-07-25T19:35:38.422859Z\",\n \"dateUpdated\": \"2024-07-25T19:35:38.422874Z\",\n \"environment\": [],\n \"query\": \"\",\n \"fields\": [\n \"id\",\n \"transaction\",\n \"timestamp\"\n ],\n \"widths\": [],\n \"range\": \"24h\",\n \"orderby\": \"-timestamp\",\n \"yAxis\": [\n \"count()\"\n ],\n \"createdBy\": {\n \"id\": \"1\",\n \"name\": \"Admin\",\n \"username\": \"admin\",\n \"email\": \"admin@sentry.io\",\n \"avatarUrl\": \"www.example.com\",\n \"isActive\": true,\n \"hasPasswordAuth\": true,\n \"isManaged\": false,\n \"dateJoined\": \"2021-10-25T17:07:33.190596Z\",\n \"lastLogin\": \"2024-07-16T15:28:39.261659Z\",\n \"has2fa\": true,\n \"lastActive\": \"2024-07-16T20:45:49.364197Z\",\n \"isSuperuser\": false,\n \"isStaff\": false,\n \"experiments\": {},\n \"emails\": [\n {\n \"id\": \"1\",\n \"email\": \"admin@sentry.io\",\n \"is_verified\": true\n }\n ],\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null,\n \"avatarUrl\": \"www.example.com\"\n }\n }\n },\n {\n \"id\": \"2\",\n \"name\": \"All Events\",\n \"projects\": [],\n \"version\": 2,\n \"queryDataset\": \"transaction-like\",\n \"datasetSource\": \"unknown\",\n \"expired\": false,\n \"dateCreated\": \"2024-07-25T19:35:38.422859Z\",\n \"dateUpdated\": \"2024-07-25T19:35:38.422874Z\",\n \"environment\": [],\n \"query\": \"transaction:/api/foo\",\n \"fields\": [\n \"transaction\",\n \"project\",\n \"count()\",\n \"avg(transaction.duration)\",\n \"p75()\",\n \"p95()\"\n ],\n \"widths\": [],\n \"range\": \"24h\",\n \"orderby\": \"-count\",\n \"yAxis\": [\n \"count()\"\n ],\n \"createdBy\": {\n \"id\": \"1\",\n \"name\": \"Admin\",\n \"username\": \"admin\",\n \"email\": \"admin@sentry.io\",\n \"avatarUrl\": \"www.example.com\",\n \"isActive\": true,\n \"hasPasswordAuth\": true,\n \"isManaged\": false,\n \"dateJoined\": \"2021-10-25T17:07:33.190596Z\",\n \"lastLogin\": \"2024-07-16T15:28:39.261659Z\",\n \"has2fa\": true,\n \"lastActive\": \"2024-07-16T20:45:49.364197Z\",\n \"isSuperuser\": false,\n \"isStaff\": false,\n \"experiments\": {},\n \"emails\": [\n {\n \"id\": \"1\",\n \"email\": \"admin@sentry.io\",\n \"is_verified\": true\n }\n ],\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": n" + }, + { + "path": "api/discover/query-discover-events-in-table-format.md", + "title": "Query Discover Events in Table Format", + "hierarchy": [ + "Api", + "Discover", + "Query Discover Events In Table Format" + ], + "summary": "# Query Discover Events in Table Format", + "content": "# Query Discover Events in Table Format\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/events/\n\nRetrieves discover (also known as events) data for a given organization.\n\n**Eventsv2 Deprecation Note**: Users who may be using the `eventsv2` endpoint should update their requests to the `events` endpoint outline in this document. The `eventsv2` endpoint is not a public endpoint and has no guaranteed availability. If you are not making any API calls to `eventsv2`, you can safely ignore this. Changes between `eventsv2` and `events` include:\n\n* Field keys in the response now match the keys in the requested `field` param exactly.\n* The `meta` object in the response now shows types in the nested `field` object.\n\nAside from the url change, there are no changes to the request payload itself.\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 Sentry.\n\nThe `field` query parameter determines what fields will be selected in the `data` and `meta` keys of the endpoint response.\n\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\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Query Parameters:\n\n* `field`* (array(string))*\n\n REQUIRED\n\n 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\n * A built-in key field. See possible fields in the [properties table](https://docs.sentry.io/product/sentry-basics/search/searchable-properties.md#properties-table), under any field that is an event property.\n \n * example: `field=transaction`\n\n * A tag. Tags should use the `tag[]` formatting to avoid ambiguity with any fields\n \n * example: `field=tag[isEnterprise]`\n\n * A function which will be in the format of `function_name(parameters,...)`. See possible functions in the [query builder documentation](https://docs.sentry.io/product/discover-queries/query-builder.md#stacking-functions).\n\n \n\n * when a function is included, Discover will group by any tags or fields\n * example: `field=count_if(transaction.duration,greater,300)`\n\n * An equation when prefixed with `equation|`. Read more about [equations here](https://docs.sentry.io/product/discover-queries/query-builder/query-equations.md).\n \n * example: `field=equation|count_if(transaction.duration,greater,300) / count() * 100`\n\n* `end`* (string)*\n\n The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`.\n\n* `environment`* (array(string))*\n\n The name of environments to filter by.\n\n* `project`* (array(integer))*\n\n The IDs of projects to filter by. `-1` means all available projects. For example, the following are valid parameters:\n\n * `/?project=1234&project=56789`\n * `/?project=-1`\n\n* `start`* (string)*\n\n The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`.\n\n* `statsPeriod`* (string)*\n\n The period of time for the query, will override the start & end parameters, a number followed by one of:\n\n * `d` for days\n * `h` for hours\n * `m` for minutes\n * `s` for seconds\n * `w` for weeks\n\n For example, `24h`, to mean query data starting from 24 hours ago to now.\n\n* `per_page`* (integer)*\n\n Limit the number of rows to return in the result. Default and maximum allowed is 100.\n\n* `query`* (string)*\n\n Filters results by using [query syntax](https://doc" + }, + { + "path": "api/discover/retrieve-an-organizations-discover-saved-query.md", + "title": "Retrieve an Organization's Discover Saved Query", + "hierarchy": [ + "Api", + "Discover", + "Retrieve An Organizations Discover Saved Query" + ], + "summary": "# Retrieve an Organization's Discover Saved Query", + "content": "# Retrieve an Organization's Discover Saved Query\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/discover/saved/{query\\_id}/\n\nRetrieve a saved query.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `query_id`* (integer)*\n\n REQUIRED\n\n The ID of the Discover query you'd like to retrieve.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/discover/saved/{query_id}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"1\",\n \"name\": \"Transactions by Volume\",\n \"projects\": [],\n \"version\": 2,\n \"queryDataset\": \"transaction-like\",\n \"datasetSource\": \"unknown\",\n \"expired\": false,\n \"dateCreated\": \"2024-07-25T19:35:38.422859Z\",\n \"dateUpdated\": \"2024-07-25T19:35:38.422874Z\",\n \"environment\": [],\n \"query\": \"transaction:/api/foo\",\n \"fields\": [\n \"transaction\",\n \"project\",\n \"count()\",\n \"avg(transaction.duration)\",\n \"p75()\",\n \"p95()\"\n ],\n \"widths\": [],\n \"range\": \"24h\",\n \"orderby\": \"-count\",\n \"yAxis\": [\n \"count()\"\n ],\n \"createdBy\": {\n \"id\": \"1\",\n \"name\": \"Admin\",\n \"username\": \"admin\",\n \"email\": \"admin@sentry.io\",\n \"avatarUrl\": \"www.example.com\",\n \"isActive\": true,\n \"hasPasswordAuth\": true,\n \"isManaged\": false,\n \"dateJoined\": \"2021-10-25T17:07:33.190596Z\",\n \"lastLogin\": \"2024-07-16T15:28:39.261659Z\",\n \"has2fa\": true,\n \"lastActive\": \"2024-07-16T20:45:49.364197Z\",\n \"isSuperuser\": false,\n \"isStaff\": false,\n \"experiments\": {},\n \"emails\": [\n {\n \"id\": \"1\",\n \"email\": \"admin@sentry.io\",\n \"is_verified\": true\n }\n ],\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null,\n \"avatarUrl\": \"www.example.com\"\n }\n }\n}\n```\n" + }, + { + "path": "api/environments.md", + "title": "Environments", + "hierarchy": [ + "Api", + "Environments" + ], + "summary": "# Environments", + "content": "# Environments\n\n* #### [List a Project's Environments](https://docs.sentry.io/api/environments/list-a-projects-environments.md)\n* #### [List an Organization's Environments](https://docs.sentry.io/api/environments/list-an-organizations-environments.md)\n* #### [Retrieve a Project Environment](https://docs.sentry.io/api/environments/retrieve-a-project-environment.md)\n* #### [Update a Project Environment](https://docs.sentry.io/api/environments/update-a-project-environment.md)\n" + }, + { + "path": "api/environments/list-a-projects-environments.md", + "title": "List a Project's Environments", + "hierarchy": [ + "Api", + "Environments", + "List A Projects Environments" + ], + "summary": "# List a Project's Environments", + "content": "# List a Project's Environments\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/environments/\n\nLists a project's environments.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n### Query Parameters:\n\n* `visibility`* (string)*\n\n **choices**:\n\n * `all\n hidden\n visible`\n\n The visibility of the environments to filter by. Defaults to `visible`.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/environments/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"id\": \"1\",\n \"name\": \"Production\",\n \"isHidden\": false\n },\n {\n \"id\": \"2\",\n \"name\": \"Staging\",\n \"isHidden\": true\n }\n]\n```\n" + }, + { + "path": "api/environments/list-an-organizations-environments.md", + "title": "List an Organization's Environments", + "hierarchy": [ + "Api", + "Environments", + "List An Organizations Environments" + ], + "summary": "# List an Organization's Environments", + "content": "# List an Organization's Environments\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/environments/\n\nLists an organization's environments.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Query Parameters:\n\n* `visibility`* (string)*\n\n **choices**:\n\n * `all\n hidden\n visible`\n\n The visibility of the environments to filter by. Defaults to `visible`.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/environments/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"id\": \"1\",\n \"name\": \"Production\"\n },\n {\n \"id\": \"2\",\n \"name\": \"Staging\"\n }\n]\n```\n" + }, + { + "path": "api/environments/retrieve-a-project-environment.md", + "title": "Retrieve a Project Environment", + "hierarchy": [ + "Api", + "Environments", + "Retrieve A Project Environment" + ], + "summary": "# Retrieve a Project Environment", + "content": "# Retrieve a Project Environment\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/environments/{environment}/\n\nReturn details on a project environment.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n* `environment`* (string)*\n\n REQUIRED\n\n The name of the environment.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/environments/{environment}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"1\",\n \"name\": \"Production\",\n \"isHidden\": false\n}\n```\n" + }, + { + "path": "api/environments/update-a-project-environment.md", + "title": "Update a Project Environment", + "hierarchy": [ + "Api", + "Environments", + "Update A Project Environment" + ], + "summary": "# Update a Project Environment", + "content": "# Update a Project Environment\n\nPUT /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/environments/{environment}/\n\nUpdate the visibility for a project environment.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n* `environment`* (string)*\n\n REQUIRED\n\n The name of the environment.\n\n### Body Parameters\n\n* `isHidden`* (boolean)*\n\n REQUIRED\n\n Specify `true` to make the environment visible or `false` to make the environment hidden.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/environments/{environment}/ \\\n -H 'Authorization: Bearer ' \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"1\",\n \"name\": \"Production\",\n \"isHidden\": false\n}\n```\n" + }, + { + "path": "api/events.md", + "title": "Events & Issues", + "hierarchy": [ + "Api", + "Events" + ], + "summary": "# Events & Issues", + "content": "# Events & Issues\n\n* #### [Bulk Mutate a List of Issues](https://docs.sentry.io/api/events/bulk-mutate-a-list-of-issues.md)\n* #### [Bulk Mutate an Organization's Issues](https://docs.sentry.io/api/events/bulk-mutate-an-organizations-issues.md)\n* #### [Bulk Remove a List of Issues](https://docs.sentry.io/api/events/bulk-remove-a-list-of-issues.md)\n* #### [Bulk Remove an Organization's Issues](https://docs.sentry.io/api/events/bulk-remove-an-organizations-issues.md)\n* #### [Debug Issues Related to Source Maps for a Given Event](https://docs.sentry.io/api/events/debug-issues-related-to-source-maps-for-a-given-event.md)\n* #### [List a Project's Error Events](https://docs.sentry.io/api/events/list-a-projects-error-events.md)\n* #### [List a Project's Issues](https://docs.sentry.io/api/events/list-a-projects-issues.md)\n* #### [List a Tag's Values for an Issue](https://docs.sentry.io/api/events/list-a-tags-values-for-an-issue.md)\n* #### [List an Issue's Events](https://docs.sentry.io/api/events/list-an-issues-events.md)\n* #### [List an Issue's Hashes](https://docs.sentry.io/api/events/list-an-issues-hashes.md)\n* #### [List an Organization's Issues](https://docs.sentry.io/api/events/list-an-organizations-issues.md)\n* #### [Remove an Issue](https://docs.sentry.io/api/events/remove-an-issue.md)\n* #### [Retrieve an Event for a Project](https://docs.sentry.io/api/events/retrieve-an-event-for-a-project.md)\n* #### [Retrieve an Issue](https://docs.sentry.io/api/events/retrieve-an-issue.md)\n* #### [Retrieve an Issue Event](https://docs.sentry.io/api/events/retrieve-an-issue-event.md)\n* #### [Retrieve Tag Details](https://docs.sentry.io/api/events/retrieve-tag-details.md)\n* #### [Update an Issue](https://docs.sentry.io/api/events/update-an-issue.md)\n" + }, + { + "path": "api/events/bulk-mutate-a-list-of-issues.md", + "title": "Bulk Mutate a List of Issues", + "hierarchy": [ + "Api", + "Events", + "Bulk Mutate A List Of Issues" + ], + "summary": "# Bulk Mutate a List of Issues", + "content": "# Bulk Mutate a List of Issues\n\nPUT /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/issues/\n\nBulk 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 for a batch \"update all\" query.\n* An optional `status` query parameter may be used to restrict mutations 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.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the issues belong to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the issues belong to.\n\n### Query Parameters:\n\n* `id`* (integer)*\n\n 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.\n\n* `status`* (string)*\n\n Optionally limits the query to issues of the specified status. Valid values are `\"resolved\"`, `\"reprocessing\"`, `\"unresolved\"`, and `\"ignored\"`.\n\n### Body Parameters\n\n* `status`* (string)*\n\n The new status for the issues. Valid values are `\"resolved\"`, `\"resolvedInNextRelease\"`, `\"unresolved\"`, and `\"ignored\"`.\n\n* `statusDetails`* (object)*\n\n Additional details about the resolution. Valid values are `\"inRelease\"`, `\"inNextRelease\"`, `\"inCommit\"`, `\"ignoreDuration\"`, `\"ignoreCount\"`, `\"ignoreWindow\"`, `\"ignoreUserCount\"`, and `\"ignoreUserWindow\"`.\n\n* `ignoreDuration`* (integer)*\n\n The number of minutes to ignore this issue.\n\n* `isPublic`* (boolean)*\n\n Sets the issue to public or private.\n\n* `merge`* (boolean)*\n\n Allows to merge or unmerge different issues.\n\n* `assignedTo`* (string)*\n\n The actor ID (or username) of the user or team that should be assigned to this issue.\n\n* `hasSeen`* (boolean)*\n\n 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.\n\n* `isBookmarked`* (boolean)*\n\n In case this API call is invoked with a user context this allows changing of the bookmark flag.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `event:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/issues/ \\\n -H 'Authorization: Bearer ' \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -d '{\"isPublic\":false,\"status\":\"unresolved\"}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"isPublic\": false,\n \"status\": \"unresolved\",\n \"statusDetails\": {}\n}\n```\n" + }, + { + "path": "api/events/bulk-mutate-an-organizations-issues.md", + "title": "Bulk Mutate an Organization's Issues", + "hierarchy": [ + "Api", + "Events", + "Bulk Mutate An Organizations Issues" + ], + "summary": "# Bulk Mutate an Organization's Issues", + "content": "# Bulk Mutate an Organization's Issues\n\nPUT /api/0/organizations/{organization\\_id\\_or\\_slug}/issues/\n\nBulk mutate various attributes on a maxmimum of 1000 issues.\n\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. 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.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Query Parameters:\n\n* `environment`* (array(string))*\n\n The name of environments to filter by.\n\n* `project`* (array(integer))*\n\n The IDs of projects to filter by. `-1` means all available projects. For example, the following are valid parameters:\n\n * `/?project=1234&project=56789`\n * `/?project=-1`\n\n* `id`* (array(integer))*\n\n The list of issue IDs to mutate. It is optional for status updates, in which an implicit `update all` is assumed.\n\n* `query`* (string)*\n\n 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.\n\n* `viewId`* (string)*\n\n The ID of the view to use. If no query is present, the view's query and filters will be applied.\n\n* `sort`* (string)*\n\n **choices**:\n\n * `date\n freq\n inbox\n new\n trends\n user`\n\n The sort order of the view. Options include 'Last Seen' (`date`), 'First Seen' (`new`), 'Trends' (`trends`), 'Events' (`freq`), 'Users' (`user`), and 'Date Added' (`inbox`).\n\n* `limit`* (integer)*\n\n The maximum number of issues to affect. The maximum is 100.\n\n### Body Parameters\n\n* `inbox`* (boolean)*\n\n REQUIRED\n\n If true, marks the issue as reviewed by the requestor.\n\n* `status`* (string)*\n\n REQUIRED\n\n Limit mutations to only issues with the given status.\n\n * `resolved`\n * `unresolved`\n * `ignored`\n * `resolvedInNextRelease`\n * `muted`\n\n* `statusDetails`\n\n REQUIRED\n\n Additional details about the resolution. Status detail updates that include release data are only allowed for issues within a single project.\n\n* `substatus`* (string)*\n\n REQUIRED\n\n 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`\n\n* `hasSeen`* (boolean)*\n\n REQUIRED\n\n If true, marks the issue as seen by the requestor.\n\n* `isBookmarked`* (boolean)*\n\n REQUIRED\n\n If true, bookmarks the issue for the requestor.\n\n* `isPublic`* (boolean)*\n\n REQUIRED\n\n If true, publishes the issue.\n\n* `isSubscribed`* (boolean)*\n\n REQUIRED\n\n If true, subscribes the requestor to the issue.\n\n* `merge`* (boolean)*\n\n REQUIRED\n\n If true, merges the issues together.\n\n* `discard`* (boolean)*\n\n REQUIRED\n\n If true, discards the issues instead of updating them.\n\n* `assignedTo`* (string)*\n\n REQUIRED\n\n The user or team that should be assigned to the issues. Values take the form of ``, `user:`, ``, ``, or `team:`.\n\n* `priority`* (string)*\n\n REQUIRED\n\n The priority that should be set for the issues\n\n * `low`\n * `medium`\n * `high`\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n" + }, + { + "path": "api/events/bulk-remove-a-list-of-issues.md", + "title": "Bulk Remove a List of Issues", + "hierarchy": [ + "Api", + "Events", + "Bulk Remove A List Of Issues" + ], + "summary": "# Bulk Remove a List of Issues", + "content": "# Bulk Remove a List of Issues\n\nDELETE /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/issues/\n\nPermanently 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.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the issues belong to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the issues belong to.\n\n### Query Parameters:\n\n* `id`* (integer)*\n\n 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.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `event:admin`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/issues/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nSuccess.\n```\n" + }, + { + "path": "api/events/bulk-remove-an-organizations-issues.md", + "title": "Bulk Remove an Organization's Issues", + "hierarchy": [ + "Api", + "Events", + "Bulk Remove An Organizations Issues" + ], + "summary": "# Bulk Remove an Organization's Issues", + "content": "# Bulk Remove an Organization's Issues\n\nDELETE /api/0/organizations/{organization\\_id\\_or\\_slug}/issues/\n\nPermanently 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.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Query Parameters:\n\n* `environment`* (array(string))*\n\n The name of environments to filter by.\n\n* `project`* (array(integer))*\n\n The IDs of projects to filter by. `-1` means all available projects. For example, the following are valid parameters:\n\n * `/?project=1234&project=56789`\n * `/?project=-1`\n\n* `id`* (array(integer))*\n\n The list of issue IDs to be removed. If not provided, it will attempt to remove the first 1000 issues.\n\n* `query`* (string)*\n\n 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.\n\n* `viewId`* (string)*\n\n The ID of the view to use. If no query is present, the view's query and filters will be applied.\n\n* `sort`* (string)*\n\n **choices**:\n\n * `date\n freq\n inbox\n new\n trends\n user`\n\n The sort order of the view. Options include 'Last Seen' (`date`), 'First Seen' (`new`), 'Trends' (`trends`), 'Events' (`freq`), 'Users' (`user`), and 'Date Added' (`inbox`).\n\n* `limit`* (integer)*\n\n The maximum number of issues to affect. The maximum is 100.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `event:admin`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/issues/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nNo Content.\n```\n" + }, + { + "path": "api/events/debug-issues-related-to-source-maps-for-a-given-event.md", + "title": "Debug Issues Related to Source Maps for a Given Event", + "hierarchy": [ + "Api", + "Events", + "Debug Issues Related To Source Maps For A Given Event" + ], + "summary": "# Debug Issues Related to Source Maps for a Given Event", + "content": "# Debug Issues Related to Source Maps for a Given Event\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/events/{event\\_id}/source-map-debug/\n\nReturn a list of source map errors for a given event.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n* `event_id`* (string)*\n\n REQUIRED\n\n The ID of the event.\n\n### Query Parameters:\n\n* `frame_idx`* (integer)*\n\n REQUIRED\n\n Index of the frame that should be used for source map resolution.\n\n* `exception_idx`* (integer)*\n\n REQUIRED\n\n Index of the exception that should be used for source map resolution.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/events/{event_id}/source-map-debug/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n.\n```\n" + }, + { + "path": "api/events/list-a-projects-error-events.md", + "title": "List a Project's Error Events", + "hierarchy": [ + "Api", + "Events", + "List A Projects Error Events" + ], + "summary": "# List a Project's Error Events", + "content": "# List a Project's Error Events\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/events/\n\nReturn a list of events bound to a project.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n### Query Parameters:\n\n* `statsPeriod`* (string)*\n\n The period of time for the query, will override the start & end parameters, a number followed by one of:\n\n * `d` for days\n * `h` for hours\n * `m` for minutes\n * `s` for seconds\n * `w` for weeks\n\n For example, `24h`, to mean query data starting from 24 hours ago to now.\n\n* `start`* (string)*\n\n The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`.\n\n* `end`* (string)*\n\n The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`.\n\n* `cursor`* (string)*\n\n A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.\n\n* `full`* (boolean)*\n\n Specify true to include the full event body, including the stacktrace, in the event payload.\n\n* `sample`* (boolean)*\n\n Return events in pseudo-random order. This is deterministic so an identical query will always return the same events in the same order.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/events/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"eventID\": \"9fac2ceed9344f2bbfdd1fdacb0ed9b1\",\n \"tags\": [\n {\n \"key\": \"browser\",\n \"value\": \"Chrome 60.0\"\n },\n {\n \"key\": \"device\",\n \"value\": \"Other\"\n },\n {\n \"key\": \"environment\",\n \"value\": \"production\"\n },\n {\n \"value\": \"fatal\",\n \"key\": \"level\"\n },\n {\n \"key\": \"os\",\n \"value\": \"Mac OS X 10.12.6\"\n },\n {\n \"value\": \"CPython 2.7.16\",\n \"key\": \"runtime\"\n },\n {\n \"key\": \"release\",\n \"value\": \"17642328ead24b51867165985996d04b29310337\"\n },\n {\n \"key\": \"server_name\",\n \"value\": \"web1.example.com\"\n }\n ],\n \"dateCreated\": \"2020-09-11T17:46:36Z\",\n \"user\": null,\n \"message\": \"\",\n \"title\": \"This is an example Python exception\",\n \"id\": \"dfb1a2d057194e76a4186cc8a5271553\",\n \"platform\": \"python\",\n \"event.type\": \"error\",\n \"groupID\": \"1889724436\",\n \"crashFile\": null,\n \"location\": \"example.py:123\",\n \"culprit\": \"/books/new/\",\n \"projectID\": \"49271\",\n \"metadata\": null\n }\n]\n```\n" + }, + { + "path": "api/events/list-a-projects-issues.md", + "title": "List a Project's Issues", + "hierarchy": [ + "Api", + "Events", + "List A Projects Issues" + ], + "summary": "# List a Project's Issues", + "content": "# List a Project's Issues\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/issues/\n\n**Deprecated**: This endpoint has been replaced with the [Organization Issues endpoint](https://docs.sentry.io/api/events/list-an-organizations-issues.md) which supports 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\nA 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.md#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`.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the issues belong to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the issues belong to.\n\n### Query Parameters:\n\n* `statsPeriod`* (string)*\n\n An optional stat period (can be one of `\"24h\"`, `\"14d\"`, and `\"\"`), defaults to \"24h\" if not provided.\n\n* `shortIdLookup`* (boolean)*\n\n 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.\n\n* `query`* (string)*\n\n An optional Sentry structured search query. If not provided an implied `\"is:unresolved\"` is assumed.\n\n* `hashes`* (string)*\n\n 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.\n\n* `cursor`* (string)*\n\n A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `event:read`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/issues/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"annotations\": [],\n \"assignedTo\": null,\n \"count\": \"1\",\n \"culprit\": \"raven.scripts.runner in main\",\n \"firstSeen\": \"2018-11-06T21:19:55Z\",\n \"hasSeen\": false,\n \"id\": \"1\",\n \"isBookmarked\": false,\n \"isPublic\": false,\n \"isSubscribed\": true,\n \"lastSeen\": \"2018-11-06T21:19:55Z\",\n \"level\": \"error\",\n \"logger\": null,\n \"metadata\": {\n \"title\": \"This is an example Python exception\"\n },\n \"numComments\": 0,\n \"permalink\": \"https://sentry.io/the-interstellar-jurisdiction/pump-station/issues/1/\",\n \"project\": {\n \"id\": \"2\",\n \"name\": \"Pump Station\",\n \"slug\": \"pump-station\"\n },\n \"shareId\": null,\n \"shortId\": \"PUMP-STATION-1\",\n \"stats\": {\n \"24h\": [\n [\n 1541455200,\n 473\n ],\n [\n 1541458800,\n 914\n ],\n [\n 1541462400,\n 991\n ],\n [\n 1541466000,\n 925\n ],\n [\n 1541469600,\n 881\n ],\n [\n 1541473200,\n 182\n ],\n [\n 1541476800,\n 490\n ],\n [\n 1541480400,\n 820\n ],\n [\n 1541484000,\n 322\n ],\n [\n 1541487600,\n 836\n ],\n [\n 1541491200,\n " + }, + { + "path": "api/events/list-a-tags-values-for-an-issue.md", + "title": "List a Tag's Values for an Issue", + "hierarchy": [ + "Api", + "Events", + "List A Tags Values For An Issue" + ], + "summary": "# List a Tag's Values for an Issue", + "content": "# List a Tag's Values for an Issue\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/issues/{issue\\_id}/tags/{key}/values/\n\nReturns a list of values associated with this key for an issue. Returns at most 1000 values when paginated.\n\n### Path Parameters\n\n* `issue_id`* (integer)*\n\n REQUIRED\n\n The ID of the issue you'd like to query.\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `key`* (string)*\n\n REQUIRED\n\n The tag key to look the values up for.\n\n### Query Parameters:\n\n* `sort`* (string)*\n\n **choices**:\n\n * `age\n count\n date\n id`\n\n Sort order of the resulting tag values. Prefix with '-' for descending order. Default is '-id'.\n\n* `environment`* (array(string))*\n\n The name of environments to filter by.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `event:admin`\n* `event:read`\n* `event:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/tags/{key}/values/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"key\": \"strawberry\",\n \"name\": \"Strawberry\",\n \"value\": \"strawberry\",\n \"count\": 2,\n \"lastSeen\": \"2024-01-01T00:00:00Z\",\n \"firstSeen\": \"2024-01-01T00:00:00Z\"\n },\n {\n \"key\": \"vanilla\",\n \"name\": \"Vanilla\",\n \"value\": \"vanilla\",\n \"count\": 1,\n \"lastSeen\": \"2024-01-01T00:00:00Z\",\n \"firstSeen\": \"2024-01-01T00:00:00Z\"\n },\n {\n \"key\": \"chocolate\",\n \"name\": \"Chocolate\",\n \"value\": \"chocolate\",\n \"count\": 1,\n \"lastSeen\": \"2024-01-01T00:00:00Z\",\n \"firstSeen\": \"2024-01-01T00:00:00Z\"\n },\n {\n \"key\": \"Neopolitan\",\n \"name\": \"Neopolitan\",\n \"value\": \"neopolitan\",\n \"count\": 1,\n \"lastSeen\": \"2024-01-01T00:00:00Z\",\n \"firstSeen\": \"2024-01-01T00:00:00Z\"\n }\n]\n```\n" + }, + { + "path": "api/events/list-an-issues-events.md", + "title": "List an Issue's Events", + "hierarchy": [ + "Api", + "Events", + "List An Issues Events" + ], + "summary": "# List an Issue's Events", + "content": "# List an Issue's Events\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/issues/{issue\\_id}/events/\n\nReturn a list of error events bound to an issue\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `issue_id`* (integer)*\n\n REQUIRED\n\n The ID of the issue you'd like to query.\n\n### Query Parameters:\n\n* `start`* (string)*\n\n The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`.\n\n* `end`* (string)*\n\n The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`.\n\n* `statsPeriod`* (string)*\n\n The period of time for the query, will override the start & end parameters, a number followed by one of:\n\n * `d` for days\n * `h` for hours\n * `m` for minutes\n * `s` for seconds\n * `w` for weeks\n\n For example, `24h`, to mean query data starting from 24 hours ago to now.\n\n* `environment`* (array(string))*\n\n The name of environments to filter by.\n\n* `full`* (boolean)*\n\n Specify true to include the full event body, including the stacktrace, in the event payload.\n\n* `sample`* (boolean)*\n\n Return events in pseudo-random order. This is deterministic so an identical query will always return the same events in the same order.\n\n* `query`* (string)*\n\n An optional search query for filtering events.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `event:admin`\n* `event:read`\n* `event:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/events/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"eventID\": \"9fac2ceed9344f2bbfdd1fdacb0ed9b1\",\n \"tags\": [\n {\n \"key\": \"browser\",\n \"value\": \"Chrome 60.0\"\n },\n {\n \"key\": \"device\",\n \"value\": \"Other\"\n },\n {\n \"key\": \"environment\",\n \"value\": \"production\"\n },\n {\n \"value\": \"fatal\",\n \"key\": \"level\"\n },\n {\n \"key\": \"os\",\n \"value\": \"Mac OS X 10.12.6\"\n },\n {\n \"value\": \"CPython 2.7.16\",\n \"key\": \"runtime\"\n },\n {\n \"key\": \"release\",\n \"value\": \"17642328ead24b51867165985996d04b29310337\"\n },\n {\n \"key\": \"server_name\",\n \"value\": \"web1.example.com\"\n }\n ],\n \"dateCreated\": \"2020-09-11T17:46:36Z\",\n \"user\": null,\n \"message\": \"\",\n \"title\": \"This is an example Python exception\",\n \"id\": \"dfb1a2d057194e76a4186cc8a5271553\",\n \"platform\": \"python\",\n \"event.type\": \"error\",\n \"groupID\": \"1889724436\",\n \"crashFile\": null,\n \"location\": \"example.py:123\",\n \"culprit\": \"/books/new/\",\n \"projectID\": \"49271\",\n \"metadata\": null\n }\n]\n```\n" + }, + { + "path": "api/events/list-an-issues-hashes.md", + "title": "List an Issue's Hashes", + "hierarchy": [ + "Api", + "Events", + "List An Issues Hashes" + ], + "summary": "# List an Issue's Hashes", + "content": "# List an Issue's Hashes\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/issues/{issue\\_id}/hashes/\n\nThis endpoint lists an issue's hashes, which are the generated checksums used to aggregate individual events.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the event belongs to.\n\n* `issue_id`* (string)*\n\n REQUIRED\n\n The ID of the issue to retrieve.\n\n### Query Parameters:\n\n* `full`* (boolean)*\n\n If this is set to true, the event payload will include the full event body, including the stacktrace. Set to 1 to enable.\n\n* `cursor`* (string)*\n\n A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `event:read`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/hashes/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"id\": \"9999aaaaca8b46d797c23c6077c6ff01\",\n \"latestEvent\": {\n \"eventID\": \"9999aaaaca8b46d797c23c6077c6ff01\",\n \"dist\": null,\n \"message\": \"\",\n \"title\": \"This is an example Python exception\",\n \"id\": \"9999aaafcc8b46d797c23c6077c6ff01\",\n \"size\": 107762,\n \"errors\": [\n {\n \"data\": {\n \"column\": 8,\n \"source\": \"https://s1.sentry-cdn.com/_static/bloopbloop/sentry/dist/app.js.map\",\n \"row\": 15\n },\n \"message\": \"Invalid location in sourcemap\",\n \"type\": \"js_invalid_sourcemap_location\"\n }\n ],\n \"platform\": \"javascript\",\n \"type\": \"error\",\n \"metadata\": {\n \"type\": \"ForbiddenError\",\n \"value\": \"GET /organizations/hellboy-meowmeow/users/ 403\"\n },\n \"tags\": [\n {\n \"value\": \"Chrome 83.0.4103\",\n \"key\": \"browser\",\n \"_meta\": null\n },\n {\n \"value\": \"Chrome\",\n \"key\": \"browser.name\",\n \"_meta\": null\n },\n {\n \"value\": \"prod\",\n \"key\": \"environment\",\n \"_meta\": null\n },\n {\n \"value\": \"yes\",\n \"key\": \"handled\",\n \"_meta\": null\n },\n {\n \"value\": \"error\",\n \"key\": \"level\",\n \"_meta\": null\n },\n {\n \"value\": \"generic\",\n \"key\": \"mechanism\",\n \"_meta\": null\n }\n ],\n \"dateCreated\": \"2020-06-17T22:26:56.098086Z\",\n \"dateReceived\": \"2020-06-17T22:26:56.428721Z\",\n \"user\": {\n \"username\": null,\n \"name\": \"Hell Boy\",\n \"ip_address\": \"192.168.1.1\",\n \"email\": \"hell@boy.cat\",\n \"data\": {\n \"isStaff\": false\n },\n \"id\": \"550747\"\n },\n \"entries\": [\n {\n \"type\": \"exception\",\n \"data\": {\n \"values\": [\n {\n \"stacktrace\": {\n \"frames\": [\n {\n \"function\": \"ignoreOnError\",\n \"errors\": null,\n \"colNo\": 23,\n \"vars\": null,\n \"package\": null,\n \"absPath\": \"webpack:////usr/src/getsentry/src/sentry/node_modules/@sentry/browser/esm/helpers.js\",\n \"inApp\": false,\n \"lineNo\": 71,\n \"module\": \"usr/src/getsentry/src/sentry/node_modules/@sentry/browser/esm/helpers\",\n \"filename\": \"/usr/src/getsentry/src/sentry/node_modules/@sentry/browser/esm/helpers.js\",\n \"platform\": null,\n \"instructionAddr\": null,\n \"context\": [\n [\n 66,\n \" }\"\n" + }, + { + "path": "api/events/list-an-organizations-issues.md", + "title": "List an Organization's Issues", + "hierarchy": [ + "Api", + "Events", + "List An Organizations Issues" + ], + "summary": "# List an Organization's Issues", + "content": "# List an Organization's Issues\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/issues/\n\nReturn a list of issues for an organization. All parameters are supplied as query string parameters. A default query of `is:unresolved issue.priority:[high,medium]` is applied. To return all results, use an empty query value (i.e. \\`\\`?query=\\`).\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Query Parameters:\n\n* `environment`* (array(string))*\n\n The name of environments to filter by.\n\n* `project`* (array(integer))*\n\n The IDs of projects to filter by. `-1` means all available projects. For example, the following are valid parameters:\n\n * `/?project=1234&project=56789`\n * `/?project=-1`\n\n* `statsPeriod`* (string)*\n\n The period of time for the query, will override the start & end parameters, a number followed by one of:\n\n * `d` for days\n * `h` for hours\n * `m` for minutes\n * `s` for seconds\n * `w` for weeks\n\n For example, `24h`, to mean query data starting from 24 hours ago to now.\n\n* `start`* (string)*\n\n The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`.\n\n* `end`* (string)*\n\n The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`.\n\n* `groupStatsPeriod`* (string)*\n\n **choices**:\n\n * `14d\n 24h\n auto`\n\n The timeline on which stats for the groups should be presented.\n\n* `shortIdLookup`* (string)*\n\n **choices**:\n\n * `0\n 1`\n\n 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.\n\n* `query`* (string)*\n\n 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.\n\n* `viewId`* (string)*\n\n The ID of the view to use. If no query is present, the view's query and filters will be applied.\n\n* `sort`* (string)*\n\n **choices**:\n\n * `date\n freq\n inbox\n new\n trends\n user`\n\n The sort order of the view. Options include 'Last Seen' (`date`), 'First Seen' (`new`), 'Trends' (`trends`), 'Events' (`freq`), 'Users' (`user`), and 'Date Added' (`inbox`).\n\n* `limit`* (integer)*\n\n The maximum number of issues to affect. The maximum is 100.\n\n* `expand`* (array(string))*\n\n **choices**:\n\n * `inbox\n integrationIssues\n latestEventHasAttachments\n owners\n pluginActions\n pluginIssues\n sentryAppIssues\n sessions`\n\n Additional data to include in the response.\n\n* `collapse`* (array(string))*\n\n **choices**:\n\n * `base\n filtered\n lifetime\n stats\n unhandled`\n\n Fields to remove from the response to improve query performance.\n\n* `cursor`* (string)*\n\n A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `event:admin`\n* `event:read`\n* `event:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/issues/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"annotations\": [],\n \"assignedTo\": {\n \"id\": \"1\",\n \"name\": \"John Doe\",\n \"email\": \"john.doe@example.com\",\n \"username\": \"john.doe\",\n \"avatarUrl\": \"https://example.com/avatar.png\",\n \"isActive\": tr" + }, + { + "path": "api/events/remove-an-issue.md", + "title": "Remove an Issue", + "hierarchy": [ + "Api", + "Events", + "Remove An Issue" + ], + "summary": "# Remove an Issue", + "content": "# Remove an Issue\n\nDELETE /api/0/organizations/{organization\\_id\\_or\\_slug}/issues/{issue\\_id}/\n\nRemoves an individual issue.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the issue belongs to.\n\n* `issue_id`* (string)*\n\n REQUIRED\n\n The ID of the issue to delete.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `event:admin`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nSuccess.\n```\n" + }, + { + "path": "api/events/retrieve-an-event-for-a-project.md", + "title": "Retrieve an Event for a Project", + "hierarchy": [ + "Api", + "Events", + "Retrieve An Event For A Project" + ], + "summary": "# Retrieve an Event for a Project", + "content": "# Retrieve an Event for a Project\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/events/{event\\_id}/\n\nReturn details on an individual event.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the event belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the event belongs to.\n\n* `event_id`* (string)*\n\n REQUIRED\n\n The ID of the event to retrieve. It is the hexadecimal ID as reported by the client.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:read`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/events/{event_id}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"eventID\": \"9999aaaaca8b46d797c23c6077c6ff01\",\n \"dist\": null,\n \"userReport\": null,\n \"previousEventID\": null,\n \"message\": \"\",\n \"title\": \"This is an example Python exception\",\n \"id\": \"9999aaafcc8b46d797c23c6077c6ff01\",\n \"size\": 107762,\n \"errors\": [\n {\n \"data\": {\n \"column\": 8,\n \"source\": \"https://s1.sentry-cdn.com/_static/bloopbloop/sentry/dist/app.js.map\",\n \"row\": 15\n },\n \"message\": \"Invalid location in sourcemap\",\n \"type\": \"js_invalid_sourcemap_location\"\n }\n ],\n \"platform\": \"javascript\",\n \"nextEventID\": \"99f9e199e9a74a14bfef6196ad741619\",\n \"type\": \"error\",\n \"metadata\": {\n \"type\": \"ForbiddenError\",\n \"value\": \"GET /organizations/hellboy-meowmeow/users/ 403\"\n },\n \"tags\": [\n {\n \"value\": \"Chrome 83.0.4103\",\n \"key\": \"browser\",\n \"_meta\": null\n },\n {\n \"value\": \"Chrome\",\n \"key\": \"browser.name\",\n \"_meta\": null\n },\n {\n \"value\": \"prod\",\n \"key\": \"environment\",\n \"_meta\": null\n },\n {\n \"value\": \"yes\",\n \"key\": \"handled\",\n \"_meta\": null\n },\n {\n \"value\": \"error\",\n \"key\": \"level\",\n \"_meta\": null\n },\n {\n \"value\": \"generic\",\n \"key\": \"mechanism\",\n \"_meta\": null\n }\n ],\n \"dateCreated\": \"2020-06-17T22:26:56.098086Z\",\n \"dateReceived\": \"2020-06-17T22:26:56.428721Z\",\n \"user\": {\n \"username\": null,\n \"name\": \"Hell Boy\",\n \"ip_address\": \"192.168.1.1\",\n \"email\": \"hell@boy.cat\",\n \"data\": {\n \"isStaff\": false\n },\n \"id\": \"550747\"\n },\n \"entries\": [\n {\n \"type\": \"exception\",\n \"data\": {\n \"values\": [\n {\n \"stacktrace\": {\n \"frames\": [\n {\n \"function\": \"ignoreOnError\",\n \"errors\": null,\n \"colNo\": 23,\n \"vars\": null,\n \"package\": null,\n \"absPath\": \"webpack:////usr/src/getsentry/src/sentry/node_modules/@sentry/browser/esm/helpers.js\",\n \"inApp\": false,\n \"lineNo\": 71,\n \"module\": \"usr/src/getsentry/src/sentry/node_modules/@sentry/browser/esm/helpers\",\n \"filename\": \"/usr/src/getsentry/src/sentry/node_modules/@sentry/browser/esm/helpers.js\",\n \"platform\": null,\n \"instructionAddr\": null,\n \"context\": [\n [\n 66,\n \" }\"\n ],\n [\n 67,\n \" // Attempt to invoke user-land function\"\n ],\n [\n 68,\n \" // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\"\n ],\n [\n 69,\n \" // means the sentry.javascript SDK caught an error invoking your application code. This\"\n ]" + }, + { + "path": "api/events/retrieve-an-issue-event.md", + "title": "Retrieve an Issue Event", + "hierarchy": [ + "Api", + "Events", + "Retrieve An Issue Event" + ], + "summary": "# Retrieve an Issue Event", + "content": "# Retrieve an Issue Event\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/issues/{issue\\_id}/events/{event\\_id}/\n\nRetrieves the details of an issue event.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `issue_id`* (integer)*\n\n REQUIRED\n\n The ID of the issue you'd like to query.\n\n* `event_id`* (string)*\n\n REQUIRED\n\n **choices**:\n\n * `latest\n oldest\n recommended`\n\n The ID of the event to retrieve, or 'latest', 'oldest', or 'recommended'.\n\n### Query Parameters:\n\n* `environment`* (array(string))*\n\n The name of environments to filter by.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `event:admin`\n* `event:read`\n* `event:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/events/{event_id}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"groupID\": \"1341191803\",\n \"eventID\": \"9999aaaaca8b46d797c23c6077c6ff01\",\n \"dist\": null,\n \"userReport\": null,\n \"previousEventID\": null,\n \"message\": \"\",\n \"title\": \"This is an example Python exception\",\n \"id\": \"9999aaafcc8b46d797c23c6077c6ff01\",\n \"size\": 107762,\n \"errors\": [\n {\n \"data\": {\n \"column\": 8,\n \"source\": \"https://s1.sentry-cdn.com/_static/bloopbloop/sentry/dist/app.js.map\",\n \"row\": 15\n },\n \"message\": \"Invalid location in sourcemap\",\n \"type\": \"js_invalid_sourcemap_location\"\n }\n ],\n \"platform\": \"javascript\",\n \"nextEventID\": \"99f9e199e9a74a14bfef6196ad741619\",\n \"type\": \"error\",\n \"metadata\": {\n \"type\": \"ForbiddenError\",\n \"value\": \"GET /organizations/hellboy-meowmeow/users/ 403\"\n },\n \"tags\": [\n {\n \"value\": \"Chrome 83.0.4103\",\n \"key\": \"browser\"\n },\n {\n \"value\": \"Chrome\",\n \"key\": \"browser.name\"\n },\n {\n \"value\": \"prod\",\n \"key\": \"environment\"\n },\n {\n \"value\": \"yes\",\n \"key\": \"handled\"\n },\n {\n \"value\": \"error\",\n \"key\": \"level\"\n },\n {\n \"value\": \"generic\",\n \"key\": \"mechanism\"\n }\n ],\n \"dateCreated\": \"2020-06-17T22:26:56.098086Z\",\n \"dateReceived\": \"2020-06-17T22:26:56.428721Z\",\n \"user\": {\n \"username\": null,\n \"name\": \"Hell Boy\",\n \"ip_address\": \"192.168.1.1\",\n \"email\": \"hell@boy.cat\",\n \"data\": {\n \"isStaff\": false\n },\n \"id\": \"550747\"\n },\n \"entries\": [\n {\n \"type\": \"exception\",\n \"data\": {\n \"values\": [\n {\n \"stacktrace\": {\n \"frames\": [\n {\n \"function\": \"ignoreOnError\",\n \"errors\": null,\n \"colNo\": 23,\n \"vars\": null,\n \"package\": null,\n \"absPath\": \"webpack:////usr/src/getsentry/src/sentry/node_modules/@sentry/browser/esm/helpers.js\",\n \"inApp\": false,\n \"lineNo\": 71,\n \"module\": \"usr/src/getsentry/src/sentry/node_modules/@sentry/browser/esm/helpers\",\n \"filename\": \"/usr/src/getsentry/src/sentry/node_modules/@sentry/browser/esm/helpers.js\",\n \"platform\": null,\n \"instructionAddr\": null,\n \"context\": [\n [\n 66,\n \" }\"\n ],\n [\n 67,\n \" // Attempt to invoke user-land function\"\n ],\n [\n 68,\n \" // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\"\n ],\n [\n 69,\n \" // means the sent" + }, + { + "path": "api/events/retrieve-an-issue.md", + "title": "Retrieve an Issue", + "hierarchy": [ + "Api", + "Events", + "Retrieve An Issue" + ], + "summary": "# Retrieve an Issue", + "content": "# Retrieve an Issue\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/issues/{issue\\_id}/\n\nReturn details on an individual issue. This returns the basic stats for the issue (title, last seen, first seen), some overall numbers (number of comments, user reports) as well as the summarized event data.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the issue belongs to.\n\n* `issue_id`* (string)*\n\n REQUIRED\n\n The ID of the issue to retrieve.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `event:read`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"activity\": [\n {\n \"data\": {},\n \"dateCreated\": \"2018-11-06T21:19:55Z\",\n \"id\": \"0\",\n \"type\": \"first_seen\",\n \"user\": null\n }\n ],\n \"annotations\": [],\n \"assignedTo\": null,\n \"count\": \"1\",\n \"culprit\": \"raven.scripts.runner in main\",\n \"firstRelease\": {\n \"authors\": [],\n \"commitCount\": 0,\n \"data\": {},\n \"dateCreated\": \"2018-11-06T21:19:55.146Z\",\n \"dateReleased\": null,\n \"deployCount\": 0,\n \"firstEvent\": \"2018-11-06T21:19:55.271Z\",\n \"lastCommit\": null,\n \"lastDeploy\": null,\n \"lastEvent\": \"2018-11-06T21:19:55.271Z\",\n \"newGroups\": 0,\n \"owner\": null,\n \"projects\": [\n {\n \"name\": \"Pump Station\",\n \"slug\": \"pump-station\"\n }\n ],\n \"ref\": null,\n \"shortVersion\": \"1764232\",\n \"url\": null,\n \"version\": \"17642328ead24b51867165985996d04b29310337\"\n },\n \"firstSeen\": \"2018-11-06T21:19:55Z\",\n \"hasSeen\": false,\n \"id\": \"1\",\n \"isBookmarked\": false,\n \"isPublic\": false,\n \"isSubscribed\": true,\n \"lastRelease\": null,\n \"lastSeen\": \"2018-11-06T21:19:55Z\",\n \"level\": \"error\",\n \"logger\": null,\n \"metadata\": {\n \"title\": \"This is an example Python exception\"\n },\n \"numComments\": 0,\n \"participants\": [],\n \"permalink\": \"https://sentry.io/the-interstellar-jurisdiction/pump-station/issues/1/\",\n \"pluginActions\": [],\n \"pluginContexts\": [],\n \"pluginIssues\": [],\n \"project\": {\n \"id\": \"2\",\n \"name\": \"Pump Station\",\n \"slug\": \"pump-station\"\n },\n \"seenBy\": [],\n \"shareId\": null,\n \"shortId\": \"PUMP-STATION-1\",\n \"stats\": {\n \"24h\": [\n [\n 1541451600,\n 557\n ],\n [\n 1541455200,\n 473\n ],\n [\n 1541458800,\n 914\n ],\n [\n 1541462400,\n 991\n ],\n [\n 1541466000,\n 925\n ],\n [\n 1541469600,\n 881\n ],\n [\n 1541473200,\n 182\n ],\n [\n 1541476800,\n 490\n ],\n [\n 1541480400,\n 820\n ],\n [\n 1541484000,\n 322\n ],\n [\n 1541487600,\n 836\n ],\n [\n 1541491200,\n 565\n ],\n [\n 1541494800,\n 758\n ],\n [\n 1541498400,\n 880\n ],\n [\n 1541502000,\n 677\n ],\n [\n 1541505600,\n 381\n ],\n [\n 1541509200,\n 814\n ],\n [\n 1541512800,\n 329\n ],\n [\n 1541516400,\n 446\n ],\n [\n 1541520000,\n 731\n ],\n [\n 1541523600,\n 111\n ],\n [\n 1541527200,\n 926\n ],\n [\n 1541530800,\n 772\n ],\n [\n 1541534400,\n 400\n ],\n [\n 1541538000,\n 943\n ]\n ],\n \"30d\": [\n [\n 1538870400,\n 565\n ],\n [\n 1538956800,\n 12862\n ],\n [\n 1539043200,\n 15617\n ],\n [\n 1539129600,\n 10809\n ],\n [\n 1539216000,\n 15065\n ],\n [\n 1539302400,\n 12927\n ],\n " + }, + { + "path": "api/events/retrieve-tag-details.md", + "title": "Retrieve Tag Details", + "hierarchy": [ + "Api", + "Events", + "Retrieve Tag Details" + ], + "summary": "# Retrieve Tag Details", + "content": "# Retrieve Tag Details\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/issues/{issue\\_id}/tags/{key}/\n\nReturn a list of values associated with this key for an issue. When paginated can return at most 1000 values.\n\n### Path Parameters\n\n* `issue_id`* (integer)*\n\n REQUIRED\n\n The ID of the issue you'd like to query.\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `key`* (string)*\n\n REQUIRED\n\n The tag key to look the values up for.\n\n### Query Parameters:\n\n* `environment`* (array(string))*\n\n The name of environments to filter by.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `event:admin`\n* `event:read`\n* `event:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/tags/{key}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"key\": \"flavors\",\n \"name\": \"Flavors\",\n \"uniqueValues\": 2,\n \"totalValues\": 3,\n \"topValues\": [\n {\n \"key\": \"strawberry\",\n \"name\": \"Strawberry\",\n \"value\": \"strawberry\",\n \"count\": 2,\n \"lastSeen\": \"2024-01-01T00:00:00Z\",\n \"firstSeen\": \"2024-01-01T00:00:00Z\"\n },\n {\n \"key\": \"vanilla\",\n \"name\": \"Vanilla\",\n \"value\": \"vanilla\",\n \"count\": 1,\n \"lastSeen\": \"2024-01-01T00:00:00Z\",\n \"firstSeen\": \"2024-01-01T00:00:00Z\"\n }\n ]\n}\n```\n" + }, + { + "path": "api/events/update-an-issue.md", + "title": "Update an Issue", + "hierarchy": [ + "Api", + "Events", + "Update An Issue" + ], + "summary": "# Update an Issue", + "content": "# Update an Issue\n\nPUT /api/0/organizations/{organization\\_id\\_or\\_slug}/issues/{issue\\_id}/\n\nUpdates an individual issue's attributes. Only the attributes submitted are modified.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the issue belongs to.\n\n* `issue_id`* (string)*\n\n REQUIRED\n\n The ID of the group to retrieve.\n\n### Body Parameters\n\n* `status`* (string)*\n\n The new status for the issues. Valid values are `\"resolved\"`, `\"resolvedInNextRelease\"`, `\"unresolved\"`, and `\"ignored\"`.\n\n* `statusDetails`* (object)*\n\n Additional details about the resolution. Supported values are `\"inRelease\"`, `\"inNextRelease\"`, `\"inCommit\"`, `\"ignoreDuration\"`, `\"ignoreCount\"`, `\"ignoreWindow\"`, `\"ignoreUserCount\"`, and `\"ignoreUserWindow\"`.\n\n* `assignedTo`* (string)*\n\n The actor id (or username) of the user or team that should be assigned to this issue.\n\n* `hasSeen`* (boolean)*\n\n 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.\n\n* `isBookmarked`* (boolean)*\n\n In case this API call is invoked with a user context this allows changing of the bookmark flag.\n\n* `isSubscribed`* (boolean)*\n\n In case this API call is invoked with a user context this allows the user to subscribe to workflow notications for this issue.\n\n* `isPublic`* (boolean)*\n\n Sets the issue to public or private.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `event:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -d '{\"status\":\"unresolved\"}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"annotations\": [],\n \"assignedTo\": null,\n \"count\": \"1\",\n \"culprit\": \"raven.scripts.runner in main\",\n \"firstSeen\": \"2018-11-06T21:19:55Z\",\n \"hasSeen\": false,\n \"id\": \"1\",\n \"isBookmarked\": false,\n \"isPublic\": false,\n \"isSubscribed\": true,\n \"lastSeen\": \"2018-11-06T21:19:55Z\",\n \"level\": \"error\",\n \"logger\": null,\n \"metadata\": {\n \"title\": \"This is an example Python exception\"\n },\n \"numComments\": 0,\n \"permalink\": \"https://sentry.io/the-interstellar-jurisdiction/pump-station/issues/1/\",\n \"project\": {\n \"id\": \"2\",\n \"name\": \"Pump Station\",\n \"slug\": \"pump-station\"\n },\n \"shareId\": null,\n \"shortId\": \"PUMP-STATION-1\",\n \"status\": \"unresolved\",\n \"statusDetails\": {},\n \"subscriptionDetails\": null,\n \"title\": \"This is an example Python exception\",\n \"type\": \"default\",\n \"userCount\": 0\n}\n```\n" + }, + { + "path": "api/guides/create-auth-token.md", + "title": "Tutorial: Create a Sentry Authentication Token", + "hierarchy": [ + "Api", + "Guides", + "Create Auth Token" + ], + "summary": "# Tutorial: Create a Sentry Authentication Token", + "content": "# Tutorial: Create a Sentry Authentication Token\n\nTo use Sentry's APIs, you must have an authentication token. This tutorial walks you through creating an organizational auth token through an internal integration. Sentry recommends using organizational auth tokens whenever possible, as they aren't linked to specific user accounts.\n\nSee our documentation on [authentication](https://docs.sentry.io/api/auth.md) to learn more about the different types of authentication tokens available.\n\n## [Prerequisites](https://docs.sentry.io/api/guides/create-auth-token.md#prerequisites)\n\n* A Sentry account with an organization-level role of Manager or Admin.\n\n## [Create an Internal Integration](https://docs.sentry.io/api/guides/create-auth-token.md#create-an-internal-integration)\n\n[Internal integrations](https://docs.sentry.io/organization/integrations/integration-platform/internal-integration.md) are used to create custom Sentry integrations for your organization. They can also be used to create and manage your organization tokens.\n\n1. Open [sentry.io](https://sentry.io/)\n\n2. Click \"Settings\" in the left menu to open the **Organization Settings** page.\n\n3. Click \"Custom Integrations\" in the left side panel to create a new internal integration and org-level auth token.\n\n4. Press the \"Create New Integration\" button.\n\n5. Make sure \"Internal Integration\" is selected in the modal and press \"Next\".\n\n6. Enter a name for your integration.\n\n## [Create a API Authentication Token](https://docs.sentry.io/api/guides/create-auth-token.md#create-a-api-authentication-token)\n\n1. Under \"Permissions\" select the permissions required for the APIs you wish to call.\n\n Each API endpoint docs page lists the required permissions, in the \"Scopes\" section. For example, the [Create a New Project](https://docs.sentry.io/api/projects/create-a-new-project.md) endpoint requires project:write permissions or higher.\n\n2. Click \"Save Changes\".\n\n3. Scroll down to the bottom of the page and copy the generated token under \"Tokens\".\n\nKeep your auth token around on your clipboard or in an environment variable to use in API calls.\n" + }, + { + "path": "api/guides/teams-tutorial.md", + "title": "Tutorial: Create and List Teams with the Sentry API", + "hierarchy": [ + "Api", + "Guides", + "Teams Tutorial" + ], + "summary": "# Tutorial: Create and List Teams with the Sentry API", + "content": "# Tutorial: Create and List Teams with the Sentry API\n\nThis guide walks you through the basics of using Sentry's API to list the teams in an organization and create a new team.\n\nAPIs used in this tutorial:\n\n* [List an Organization's Teams](https://docs.sentry.io/api/teams/list-an-organizations-teams.md)\n* [Create a New Team](https://docs.sentry.io/api/teams/create-a-new-team.md)\n\n## [Prerequisites](https://docs.sentry.io/api/guides/teams-tutorial.md#prerequisites)\n\n* A Sentry authentication token with team:write scopes or higher and project:read scopes or higher.\n\n > If you don't have an authentication token, follow the [Create a Sentry Authentication Token](https://docs.sentry.io/api/guides/create-auth-token.md) tutorial to create an organization token with the following permissions, or higher:\n >\n > * Organization: Read\n > * Team: Write\n\nWe recommend using a free [Sentry developer account](https://sentry.io/pricing/) for this tutorial.\n\n## [List an Organization's Teams](https://docs.sentry.io/api/guides/teams-tutorial.md#list-an-organizations-teams)\n\nFirst, you will use the [List an Organization's Teams](https://docs.sentry.io/api/teams/list-an-organizations-teams.md) API to list all the teams in your organization.\n\n### [Find your organization ID](https://docs.sentry.io/api/guides/teams-tutorial.md#find-your-organization-id)\n\nThe list teams API requires you to pass in the an organization id to list teams for.\n\nYou can find your organization ID in the browser URL of your Sentry instance. For example, .\n\n### [Make the cURL call](https://docs.sentry.io/api/guides/teams-tutorial.md#make-the-curl-call)\n\n1. Open your terminal.\n\n2. Save your auth token and organization ID as environment variables for ease of use. Paste the following commands into your terminal, replacing `` with your organization ID and `` with the auth token you copied previously:\n\n ```bash\n export SENTRY_ORG_ID=\n export SENTRY_AUTH_TOKEN=\n ```\n\n3. Paste the following cURL command into your terminal:\n\n ```bash\n curl \"https://sentry.io/api/0/organizations/$SENTRY_ORG_ID/teams/?detailed=0\" \\\n -H 'Authorization: Bearer $SENTRY_AUTH_TOKEN'\n ```\n\n4. Here's an example of what the output of the command should be, for an organization that has a team called \"test-team\":\n\n ```json\n [\n {\n \"id\": \"4505449964175360\",\n \"slug\": \"test-team\",\n \"name\": \"test-team\",\n \"dateCreated\": \"2023-06-30T18:44:59.196618Z\",\n \"isMember\": false,\n \"teamRole\": null,\n \"flags\": {\n \"idp:provisioned\": false\n },\n \"access\": [\n \"alerts:read\",\n \"team:read\",\n \"member:read\",\n \"org:read\",\n \"project:releases\",\n \"project:read\",\n \"event:write\",\n \"event:read\"\n ],\n \"hasAccess\": true,\n \"isPending\": false,\n \"memberCount\": 1,\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n },\n \"orgRole\": null\n }\n ]\n ```\n\n The output gives you details about the teams within the specified organization.\n\n If your organization has enough teams, the API will return paginated results. See Sentry's docs on [Pagination](https://docs.sentry.io/api/pagination.md) to learn how to handle paginated results.\n\n5. \\[Optional] To list information about the projects associated with each team you can set the `detailed` query parameter to `1`:\n\n ```bash\n curl \"https://sentry.io/api/0/organizations/$SENTRY_ORG_ID/teams/?detailed=1\" \\\n -H 'Authorization: Bearer $SENTRY_AUTH_TOKEN'\n ```\n\n Here's an example of what that output might look like if \"test-team\" has one associated project named \"test-project\":\n\n ```json\n [\n {\n ...\n \"orgRole\": null,\n \"externalTeams\": [],\n \"projects\": [\n {\n \"id\": \"4505506997403648\",\n \"slug\": \"test" + }, + { + "path": "api/integration.md", + "title": "Integration Platform", + "hierarchy": [ + "Api", + "Integration" + ], + "summary": "# Integration Platform", + "content": "# Integration Platform\n\n* #### [Create or update an External Issue](https://docs.sentry.io/api/integration/create-or-update-an-external-issue.md)\n* #### [Delete a custom integration.](https://docs.sentry.io/api/integration/delete-a-custom-integration.md)\n* #### [Delete an External Issue](https://docs.sentry.io/api/integration/delete-an-external-issue.md)\n* #### [List an Organization's Integration Platform Installations](https://docs.sentry.io/api/integration/list-an-organizations-integration-platform-installations.md)\n* #### [Retrieve a custom integration by ID or slug.](https://docs.sentry.io/api/integration/retrieve-a-custom-integration-by-id-or-slug.md)\n* #### [Retrieve custom integration issue links for the given Sentry issue](https://docs.sentry.io/api/integration/retrieve-custom-integration-issue-links-for-the-given-sentry-issue.md)\n* #### [Retrieve the custom integrations created by an organization](https://docs.sentry.io/api/integration/retrieve-the-custom-integrations-created-by-an-organization.md)\n* #### [Update an existing custom integration.](https://docs.sentry.io/api/integration/update-an-existing-custom-integration.md)\n" + }, + { + "path": "api/integration/create-or-update-an-external-issue.md", + "title": "Create or update an External Issue", + "hierarchy": [ + "Api", + "Integration", + "Create Or Update An External Issue" + ], + "summary": "# Create or update an External Issue", + "content": "# Create or update an External Issue\n\nPOST /api/0/sentry-app-installations/{uuid}/external-issues/\n\nCreate or update an external issue from an integration platform integration.\n\n### Path Parameters\n\n* `uuid`* (string)*\n\n REQUIRED\n\n The uuid of the integration platform integration.\n\n### Body Parameters\n\n* `issueId`* (integer)*\n\n REQUIRED\n\n The ID of the Sentry issue to link the external issue to.\n\n* `webUrl`* (string)*\n\n REQUIRED\n\n The URL of the external service to link the issue to.\n\n* `project`* (string)*\n\n REQUIRED\n\n The external service's project.\n\n* `identifier`* (string)*\n\n REQUIRED\n\n A unique identifier of the external issue.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `event:write`\n\n```\ncurl https://sentry.io/api/0/sentry-app-installations/{uuid}/external-issues/ \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/json' \\\n -d '{\"issueId\":1,\"webUrl\":\"https://somerandom.io/project/issue-id\",\"project\":\"ExternalProj\",\"identifier\":\"issue-1\"}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"1\",\n \"issueId\": \"1\",\n \"serviceType\": \"testing\",\n \"displayName\": \"ExternalProj#issue-1\",\n \"webUrl\": \"https://somerandom.io/project/issue-id\"\n}\n```\n" + }, + { + "path": "api/integration/delete-a-custom-integration.md", + "title": "Delete a custom integration.", + "hierarchy": [ + "Api", + "Integration", + "Delete A Custom Integration" + ], + "summary": "# Delete a custom integration.", + "content": "# Delete a custom integration.\n\nDELETE /api/0/sentry-apps/{sentry\\_app\\_id\\_or\\_slug}/\n\nDelete a custom integration.\n\n### Path Parameters\n\n* `sentry_app_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the custom integration.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n\n```\ncurl https://sentry.io/api/0/sentry-apps/{sentry_app_id_or_slug}/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nNo Content.\n```\n" + }, + { + "path": "api/integration/delete-an-external-issue.md", + "title": "Delete an External Issue", + "hierarchy": [ + "Api", + "Integration", + "Delete An External Issue" + ], + "summary": "# Delete an External Issue", + "content": "# Delete an External Issue\n\nDELETE /api/0/sentry-app-installations/{uuid}/external-issues/{external\\_issue\\_id}/\n\nDelete an external issue.\n\n### Path Parameters\n\n* `uuid`* (string)*\n\n REQUIRED\n\n The uuid of the integration platform integration.\n\n* `external_issue_id`* (string)*\n\n REQUIRED\n\n The ID of the external issue.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `event:admin`\n\n```\ncurl https://sentry.io/api/0/sentry-app-installations/{uuid}/external-issues/{external_issue_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nSuccess.\n```\n" + }, + { + "path": "api/integration/list-an-organizations-integration-platform-installations.md", + "title": "List an Organization's Integration Platform Installations", + "hierarchy": [ + "Api", + "Integration", + "List An Organizations Integration Platform Installations" + ], + "summary": "# List an Organization's Integration Platform Installations", + "content": "# List an Organization's Integration Platform Installations\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/sentry-app-installations/\n\nReturn a list of integration platform installations for a given organization.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The organization short name.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:read`\n* `org:integrations`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/sentry-app-installations/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"app\": {\n \"uuid\": \"a9988ad6-meow-4905-bb93-f7cbf4c96bbb\",\n \"slug\": \"cat-75c19a\"\n },\n \"organization\": {\n \"slug\": \"sentry\"\n },\n \"uuid\": \"01635075-m30w-4f96-8fc8-ff9680780a13\",\n \"status\": \"installed\"\n }\n]\n```\n" + }, + { + "path": "api/integration/retrieve-a-custom-integration-by-id-or-slug.md", + "title": "Retrieve a custom integration by ID or slug.", + "hierarchy": [ + "Api", + "Integration", + "Retrieve A Custom Integration By Id Or Slug" + ], + "summary": "# Retrieve a custom integration by ID or slug.", + "content": "# Retrieve a custom integration by ID or slug.\n\nGET /api/0/sentry-apps/{sentry\\_app\\_id\\_or\\_slug}/\n\nRetrieve a custom integration.\n\n### Path Parameters\n\n* `sentry_app_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the custom integration.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `event:admin`\n* `event:read`\n* `event:write`\n* `member:read`\n* `org:read`\n* `project:read`\n* `project:releases`\n* `team:read`\n\n```\ncurl https://sentry.io/api/0/sentry-apps/{sentry_app_id_or_slug}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"allowedOrigins\": [],\n \"author\": \"ACME Corp\",\n \"avatars\": [\n {\n \"avatarType\": \"avatar\",\n \"avatarUuid\": \"6c25b771-a576-4c18-a1c3-ab059c1d42ba\",\n \"avatarUrl\": \"https://example.com/avatar.png\",\n \"color\": false,\n \"photoType\": \"icon\"\n }\n ],\n \"events\": [\n \"issue\"\n ],\n \"isAlertable\": false,\n \"metadata\": \"\",\n \"name\": \"ACME Corp Integration\",\n \"overview\": null,\n \"popularity\": 27,\n \"redirectUrl\": null,\n \"featureData\": [],\n \"schema\": \"\",\n \"scopes\": [\n \"event:read\",\n \"org:read\"\n ],\n \"slug\": \"acme-corp-integration\",\n \"status\": \"unpublished\",\n \"uuid\": \"77cebea3-019e-484d-8673-6c3969698827\",\n \"verifyInstall\": true,\n \"webhookUrl\": \"https://example.com/webhook\",\n \"clientId\": \"ed06141686bb60102d878c607eff449fa9907fa7a8cb70f0d337a8fb0b6566c3\",\n \"clientSecret\": \"**********\",\n \"owner\": {\n \"id\": 42,\n \"slug\": \"acme-corp\"\n }\n}\n```\n" + }, + { + "path": "api/integration/retrieve-custom-integration-issue-links-for-the-given-sentry-issue.md", + "title": "Retrieve custom integration issue links for the given Sentry issue", + "hierarchy": [ + "Api", + "Integration", + "Retrieve Custom Integration Issue Links For The Given Sentry Issue" + ], + "summary": "# Retrieve custom integration issue links for the given Sentry issue", + "content": "# Retrieve custom integration issue links for the given Sentry issue\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/issues/{issue\\_id}/external-issues/\n\nRetrieve custom integration issue links for the given Sentry issue\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `issue_id`* (integer)*\n\n REQUIRED\n\n The ID of the issue you'd like to query.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `event:admin`\n* `event:read`\n* `event:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/external-issues/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"id\": \"123456\",\n \"issueId\": \"1234567890\",\n \"serviceType\": \"example-app\",\n \"displayName\": \"example-issue#2\",\n \"webUrl\": \"https://example.com/my-test-project/issue/example-issue-2/this-is-an-example-python-exception\"\n }\n]\n```\n" + }, + { + "path": "api/integration/retrieve-the-custom-integrations-created-by-an-organization.md", + "title": "Retrieve the custom integrations created by an organization", + "hierarchy": [ + "Api", + "Integration", + "Retrieve The Custom Integrations Created By An Organization" + ], + "summary": "# Retrieve the custom integrations created by an organization", + "content": "# Retrieve the custom integrations created by an organization\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/sentry-apps/\n\nRetrieve the custom integrations for an organization\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/sentry-apps/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"allowedOrigins\": [],\n \"author\": \"ACME Corp\",\n \"avatars\": [\n {\n \"avatarType\": \"avatar\",\n \"avatarUuid\": \"6c25b771-a576-4c18-a1c3-ab059c1d42ba\",\n \"avatarUrl\": \"https://example.com/avatar.png\",\n \"color\": false,\n \"photoType\": \"icon\"\n }\n ],\n \"events\": [\n \"issue\"\n ],\n \"isAlertable\": false,\n \"metadata\": \"\",\n \"name\": \"ACME Corp Integration\",\n \"overview\": null,\n \"popularity\": 27,\n \"redirectUrl\": null,\n \"featureData\": [],\n \"schema\": \"\",\n \"scopes\": [\n \"event:read\",\n \"org:read\"\n ],\n \"slug\": \"acme-corp-integration\",\n \"status\": \"unpublished\",\n \"uuid\": \"77cebea3-019e-484d-8673-6c3969698827\",\n \"verifyInstall\": true,\n \"webhookUrl\": \"https://example.com/webhook\",\n \"clientId\": \"ed06141686bb60102d878c607eff449fa9907fa7a8cb70f0d337a8fb0b6566c3\",\n \"clientSecret\": \"**********\",\n \"owner\": {\n \"id\": 42,\n \"slug\": \"acme-corp\"\n }\n },\n {\n \"allowedOrigins\": [],\n \"author\": \"ACME Corp\",\n \"avatars\": [],\n \"events\": [\n \"issue\",\n \"event\"\n ],\n \"isAlertable\": false,\n \"metadata\": \"\",\n \"name\": \"ACME Corp Integration v2\",\n \"overview\": null,\n \"popularity\": 0,\n \"redirectUrl\": \"example.com\",\n \"featureData\": [],\n \"schema\": \"\",\n \"scopes\": [\n \"event:admin\",\n \"org:admin\"\n ],\n \"slug\": \"acme-corp-integration-v2\",\n \"status\": \"unpublished\",\n \"uuid\": \"77cebea3-019e-484d-8673-123124234\",\n \"verifyInstall\": true,\n \"webhookUrl\": \"https://example.com/webhook\",\n \"clientId\": \"2730a92919437a7b052e6827cd2c9f119be37101asdasdad123131231231231\",\n \"clientSecret\": \"**********\",\n \"owner\": {\n \"id\": 42,\n \"slug\": \"acme-corp\"\n }\n }\n]\n```\n" + }, + { + "path": "api/integration/update-an-existing-custom-integration.md", + "title": "Update an existing custom integration.", + "hierarchy": [ + "Api", + "Integration", + "Update An Existing Custom Integration" + ], + "summary": "# Update an existing custom integration.", + "content": "# Update an existing custom integration.\n\nPUT /api/0/sentry-apps/{sentry\\_app\\_id\\_or\\_slug}/\n\nUpdate an existing custom integration.\n\n### Path Parameters\n\n* `sentry_app_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the custom integration.\n\n### Body Parameters\n\n* `name`* (string)*\n\n REQUIRED\n\n The name of the custom integration.\n\n* `scopes`* (array(string))*\n\n REQUIRED\n\n The custom integration's permission scopes for API access.\n\n* `author`* (string)*\n\n The custom integration's author.\n\n* `events`* (array(string))*\n\n Webhook events the custom integration is subscribed to.\n\n* `schema`* (object)*\n\n 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.md) for more information.\n\n* `webhookUrl`* (string)*\n\n The webhook destination URL.\n\n* `redirectUrl`* (string)*\n\n The post-installation redirect URL.\n\n* `isInternal`* (boolean)*\n\n Whether or not the integration is internal only. False means the integration is public.\n\n* `isAlertable`* (boolean)*\n\n Marks whether or not the custom integration can be used in an alert rule.\n\n* `overview`* (string)*\n\n The custom integration's description.\n\n* `verifyInstall`* (boolean)*\n\n Whether or not an installation of the custom integration should be verified.\n\n* `allowedOrigins`* (array(string))*\n\n The list of allowed origins for CORS.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/sentry-apps/{sentry_app_id_or_slug}/ \\\n -H 'Authorization: Bearer ' \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"allowedOrigins\": [],\n \"author\": \"ACME Corp\",\n \"avatars\": [\n {\n \"avatarType\": \"avatar\",\n \"avatarUuid\": \"6c25b771-a576-4c18-a1c3-ab059c1d42ba\",\n \"avatarUrl\": \"https://example.com/avatar.png\",\n \"color\": false,\n \"photoType\": \"icon\"\n }\n ],\n \"events\": [\n \"issue\"\n ],\n \"isAlertable\": false,\n \"metadata\": \"\",\n \"name\": \"ACME Corp Integration\",\n \"overview\": null,\n \"popularity\": 27,\n \"redirectUrl\": null,\n \"featureData\": [],\n \"schema\": \"\",\n \"scopes\": [\n \"event:read\",\n \"org:read\"\n ],\n \"slug\": \"acme-corp-integration\",\n \"status\": \"unpublished\",\n \"uuid\": \"77cebea3-019e-484d-8673-6c3969698827\",\n \"verifyInstall\": true,\n \"webhookUrl\": \"https://example.com/webhook\",\n \"clientId\": \"ed06141686bb60102d878c607eff449fa9907fa7a8cb70f0d337a8fb0b6566c3\",\n \"clientSecret\": \"**********\",\n \"owner\": {\n \"id\": 42,\n \"slug\": \"acme-corp\"\n }\n}\n```\n" + }, + { + "path": "api/integrations.md", + "title": "Integrations", + "hierarchy": [ + "Api", + "Integrations" + ], + "summary": "# Integrations", + "content": "# Integrations\n\n* #### [Create an External Team](https://docs.sentry.io/api/integrations/create-an-external-team.md)\n* #### [Create an External User](https://docs.sentry.io/api/integrations/create-an-external-user.md)\n* #### [Delete an External Team](https://docs.sentry.io/api/integrations/delete-an-external-team.md)\n* #### [Delete an External User](https://docs.sentry.io/api/integrations/delete-an-external-user.md)\n* #### [Delete an Integration for an Organization](https://docs.sentry.io/api/integrations/delete-an-integration-for-an-organization.md)\n* #### [Get Integration Provider Information](https://docs.sentry.io/api/integrations/get-integration-provider-information.md)\n* #### [List an Organization's Available Integrations](https://docs.sentry.io/api/integrations/list-an-organizations-available-integrations.md)\n* #### [Retrieve an Integration for an Organization](https://docs.sentry.io/api/integrations/retrieve-an-integration-for-an-organization.md)\n* #### [Update an External Team](https://docs.sentry.io/api/integrations/update-an-external-team.md)\n* #### [Update an External User](https://docs.sentry.io/api/integrations/update-an-external-user.md)\n" + }, + { + "path": "api/integrations/create-an-external-team.md", + "title": "Create an External Team", + "hierarchy": [ + "Api", + "Integrations", + "Create An External Team" + ], + "summary": "# Create an External Team", + "content": "# Create an External Team\n\nPOST /api/0/teams/{organization\\_id\\_or\\_slug}/{team\\_id\\_or\\_slug}/external-teams/\n\nLink a team from an external provider to a Sentry team.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `team_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the team the resource belongs to.\n\n### Body Parameters\n\n* `external_name`* (string)*\n\n REQUIRED\n\n The associated name for the provider.\n\n* `provider`* (string)*\n\n REQUIRED\n\n The provider of the external actor.\n\n * `github`\n * `github_enterprise`\n * `jira_server`\n * `slack`\n * `gitlab`\n * `msteams`\n * `custom_scm`\n\n* `integration_id`* (integer)*\n\n REQUIRED\n\n The Integration ID.\n\n* `external_id`* (string)*\n\n The associated user ID for provider.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `team:admin`\n* `team:write`\n\n```\ncurl https://sentry.io/api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/external-teams/ \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"externalId\": \"asdf\",\n \"externalName\": \"@team-foo\",\n \"provider\": \"slack\",\n \"integrationId\": \"1\",\n \"id\": \"1\",\n \"teamId\": \"2\"\n}\n```\n" + }, + { + "path": "api/integrations/create-an-external-user.md", + "title": "Create an External User", + "hierarchy": [ + "Api", + "Integrations", + "Create An External User" + ], + "summary": "# Create an External User", + "content": "# Create an External User\n\nPOST /api/0/organizations/{organization\\_id\\_or\\_slug}/external-users/\n\nLink a user from an external provider to a Sentry user.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Body Parameters\n\n* `user_id`* (integer)*\n\n REQUIRED\n\n The user ID in Sentry.\n\n* `external_name`* (string)*\n\n REQUIRED\n\n The associated name for the provider.\n\n* `provider`* (string)*\n\n REQUIRED\n\n The provider of the external actor.\n\n * `github`\n * `github_enterprise`\n * `jira_server`\n * `slack`\n * `gitlab`\n * `msteams`\n * `custom_scm`\n\n* `integration_id`* (integer)*\n\n REQUIRED\n\n The Integration ID.\n\n* `id`* (integer)*\n\n REQUIRED\n\n The external actor ID.\n\n* `external_id`* (string)*\n\n The associated user ID for provider.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/external-users/ \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"externalName\": \"@Billybob\",\n \"provider\": \"github\",\n \"userId\": \"1\",\n \"integrationId\": \"1\",\n \"id\": \"1\"\n}\n```\n" + }, + { + "path": "api/integrations/delete-an-external-team.md", + "title": "Delete an External Team", + "hierarchy": [ + "Api", + "Integrations", + "Delete An External Team" + ], + "summary": "# Delete an External Team", + "content": "# Delete an External Team\n\nDELETE /api/0/teams/{organization\\_id\\_or\\_slug}/{team\\_id\\_or\\_slug}/external-teams/{external\\_team\\_id}/\n\nDelete the link between a team from an external provider and a Sentry team.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `team_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the team the resource belongs to.\n\n* `external_team_id`* (integer)*\n\n REQUIRED\n\n The ID of the external team object. This is returned when creating an external team.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `team:admin`\n\n```\ncurl https://sentry.io/api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/external-teams/{external_team_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nNo Content.\n```\n" + }, + { + "path": "api/integrations/delete-an-external-user.md", + "title": "Delete an External User", + "hierarchy": [ + "Api", + "Integrations", + "Delete An External User" + ], + "summary": "# Delete an External User", + "content": "# Delete an External User\n\nDELETE /api/0/organizations/{organization\\_id\\_or\\_slug}/external-users/{external\\_user\\_id}/\n\nDelete the link between a user from an external provider and a Sentry user.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `external_user_id`* (integer)*\n\n REQUIRED\n\n The ID of the external user object. This is returned when creating an external user.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/external-users/{external_user_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nNo Content.\n```\n" + }, + { + "path": "api/integrations/delete-an-integration-for-an-organization.md", + "title": "Delete an Integration for an Organization", + "hierarchy": [ + "Api", + "Integrations", + "Delete An Integration For An Organization" + ], + "summary": "# Delete an Integration for an Organization", + "content": "# Delete an Integration for an Organization\n\nDELETE /api/0/organizations/{organization\\_id\\_or\\_slug}/integrations/{integration\\_id}/\n\nOrganizationIntegrationBaseEndpoints expect both Integration and OrganizationIntegration DB entries to exist for a given organization and integration\\_id.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `integration_id`* (string)*\n\n REQUIRED\n\n The ID of the integration installed on the organization.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:integrations`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/integrations/{integration_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nNo Content.\n```\n" + }, + { + "path": "api/integrations/get-integration-provider-information.md", + "title": "Get Integration Provider Information", + "hierarchy": [ + "Api", + "Integrations", + "Get Integration Provider Information" + ], + "summary": "# Get Integration Provider Information", + "content": "# Get Integration Provider Information\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/config/integrations/\n\nGet integration provider information about all available integrations for an organization.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Query Parameters:\n\n* `providerKey`* (string)*\n\n Specific integration provider to filter by such as `slack`. See our [Integrations Documentation](https://docs.sentry.io/product/integrations.md) for an updated list of providers.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/config/integrations/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"providers\": [\n {\n \"key\": \"aws_lambda\",\n \"slug\": \"aws_lambda\",\n \"name\": \"AWS Lambda\",\n \"metadata\": {\n \"description\": \"The AWS Lambda integration will automatically instrument your Lambda functions without any code changes. We use CloudFormation Stack ([Learn more about CloudFormation](https://aws.amazon.com/cloudformation/)) to create Sentry role and enable errors and transactions capture from your Lambda functions.\",\n \"features\": [\n {\n \"description\": \"Instrument your serverless code automatically.\",\n \"featureGate\": \"integrations-serverless\"\n }\n ],\n \"author\": \"The Sentry Team\",\n \"noun\": \"Installation\",\n \"issue_url\": \"https://github.com/getsentry/sentry/issues/new?assignees=&labels=Component:%20Integrations&template=bug.yml&title=AWS%20Lambda%20Problem\",\n \"source_url\": \"https://github.com/getsentry/sentry/tree/master/src/sentry/integrations/aws_lambda\",\n \"aspects\": {}\n },\n \"canAdd\": true,\n \"canDisable\": false,\n \"features\": [\n \"serverless\"\n ],\n \"setupDialog\": {\n \"url\": \"/organizations/devsentry-ecosystem/integrations/aws_lambda/setup/\",\n \"width\": 600,\n \"height\": 600\n }\n },\n {\n \"key\": \"bitbucket\",\n \"slug\": \"bitbucket\",\n \"name\": \"Bitbucket\",\n \"metadata\": {\n \"description\": \"Connect your Sentry organization to Bitbucket, enabling the following features:\",\n \"features\": [\n {\n \"description\": \"Track commits and releases (learn more\\n [here](https://docs.sentry.io/learn/releases/))\",\n \"featureGate\": \"integrations-commits\"\n },\n {\n \"description\": \"Resolve Sentry issues via Bitbucket commits by\\n including `Fixes PROJ-ID` in the message\",\n \"featureGate\": \"integrations-commits\"\n },\n {\n \"description\": \"Create Bitbucket issues from Sentry\",\n \"featureGate\": \"integrations-issue-basic\"\n },\n {\n \"description\": \"Link Sentry issues to existing Bitbucket issues\",\n \"featureGate\": \"integrations-issue-basic\"\n },\n {\n \"description\": \"Link your Sentry stack traces back to your Bitbucket source code with stack\\n trace linking.\",\n \"featureGate\": \"integrations-stacktrace-link\"\n }\n ],\n \"author\": \"The Sentry Team\",\n \"noun\": \"Installation\",\n \"issue_url\": \"https://github.com/getsentry/sentry/issues/new?assignees=&labels=Component:%20Integrations&template=bug.yml&title=Bitbucket%20Integration%20Problem\",\n \"source_url\": \"https://github.com/getsentry/sentry/tree/master/src/sentry/integrations/bitbucket\",\n \"aspects\": {}\n },\n \"canAdd\": true,\n \"canDisable\": false,\n \"features\": [\n \"issue-basic\",\n \"commits\",\n \"stacktrace-link\"\n ],\n \"setupDialog\": {\n \"url\":" + }, + { + "path": "api/integrations/list-an-organizations-available-integrations.md", + "title": "List an Organization's Available Integrations", + "hierarchy": [ + "Api", + "Integrations", + "List An Organizations Available Integrations" + ], + "summary": "# List an Organization's Available Integrations", + "content": "# List an Organization's Available Integrations\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/integrations/\n\nLists all the available Integrations for an Organization.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Query Parameters:\n\n* `providerKey`* (string)*\n\n Specific integration provider to filter by such as `slack`. See our [Integrations Documentation](https://docs.sentry.io/product/integrations.md) for an updated list of providers.\n\n* `features`* (array(string))*\n\n Integration features to filter by. See our [Integrations Documentation](https://docs.sentry.io/product/integrations.md) for an updated list of features. Current available ones are:\n\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\n* `includeConfig`* (boolean)*\n\n Specify `True` to fetch third-party integration configurations. Note that this can add several seconds to the response time.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:integrations`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/integrations/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"id\": \"24817\",\n \"name\": \"Alphabet Soup Factory\",\n \"icon\": \"https://avatars.slack-edge.com/alphabet-soup\",\n \"domainName\": \"alphabet-soup.slack.com\",\n \"accountType\": null,\n \"scopes\": [\n \"channels:read\",\n \"chat:write\",\n \"chat:write.customize\",\n \"chat:write.public\",\n \"commands\",\n \"groups:read\",\n \"im:history\",\n \"im:read\",\n \"links:read\",\n \"links:write\",\n \"team:read\",\n \"users:read\"\n ],\n \"status\": \"active\",\n \"provider\": {\n \"key\": \"slack\",\n \"slug\": \"slack\",\n \"name\": \"Slack\",\n \"canAdd\": true,\n \"canDisable\": false,\n \"features\": [\n \"alert-rule\",\n \"chat-unfurl\"\n ],\n \"aspects\": {\n \"alerts\": [\n {\n \"type\": \"info\",\n \"text\": \"The Slack integration adds a new Alert Rule action to all projects. To enable automatic notifications sent to Slack you must create a rule using the slack workspace action in your project settings.\"\n }\n ]\n }\n },\n \"configOrganization\": [],\n \"configData\": {\n \"installationType\": \"born_as_bot\"\n },\n \"externalId\": \"7252394\",\n \"organizationId\": 6234528,\n \"organizationIntegrationStatus\": \"active\",\n \"gracePeriodEnd\": null\n }\n]\n```\n" + }, + { + "path": "api/integrations/retrieve-an-integration-for-an-organization.md", + "title": "Retrieve an Integration for an Organization", + "hierarchy": [ + "Api", + "Integrations", + "Retrieve An Integration For An Organization" + ], + "summary": "# Retrieve an Integration for an Organization", + "content": "# Retrieve an Integration for an Organization\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/integrations/{integration\\_id}/\n\nOrganizationIntegrationBaseEndpoints expect both Integration and OrganizationIntegration DB entries to exist for a given organization and integration\\_id.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `integration_id`* (string)*\n\n REQUIRED\n\n The ID of the integration installed on the organization.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:integrations`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/integrations/{integration_id}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"24817\",\n \"name\": \"Alphabet Soup Factory\",\n \"icon\": \"https://avatars.slack-edge.com/alphabet-soup\",\n \"domainName\": \"alphabet-soup.slack.com\",\n \"accountType\": null,\n \"scopes\": [\n \"channels:read\",\n \"chat:write\",\n \"chat:write.customize\",\n \"chat:write.public\",\n \"commands\",\n \"groups:read\",\n \"im:history\",\n \"im:read\",\n \"links:read\",\n \"links:write\",\n \"team:read\",\n \"users:read\"\n ],\n \"status\": \"active\",\n \"provider\": {\n \"key\": \"slack\",\n \"slug\": \"slack\",\n \"name\": \"Slack\",\n \"canAdd\": true,\n \"canDisable\": false,\n \"features\": [\n \"alert-rule\",\n \"chat-unfurl\"\n ],\n \"aspects\": {\n \"alerts\": [\n {\n \"type\": \"info\",\n \"text\": \"The Slack integration adds a new Alert Rule action to all projects. To enable automatic notifications sent to Slack you must create a rule using the slack workspace action in your project settings.\"\n }\n ]\n }\n },\n \"configOrganization\": [],\n \"configData\": {\n \"installationType\": \"born_as_bot\"\n },\n \"externalId\": \"7252394\",\n \"organizationId\": 6234528,\n \"organizationIntegrationStatus\": \"active\",\n \"gracePeriodEnd\": null\n}\n```\n" + }, + { + "path": "api/integrations/update-an-external-team.md", + "title": "Update an External Team", + "hierarchy": [ + "Api", + "Integrations", + "Update An External Team" + ], + "summary": "# Update an External Team", + "content": "# Update an External Team\n\nPUT /api/0/teams/{organization\\_id\\_or\\_slug}/{team\\_id\\_or\\_slug}/external-teams/{external\\_team\\_id}/\n\nUpdate a team in an external provider that is currently linked to a Sentry team.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `team_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the team the resource belongs to.\n\n* `external_team_id`* (integer)*\n\n REQUIRED\n\n The ID of the external team object. This is returned when creating an external team.\n\n### Body Parameters\n\n* `external_name`* (string)*\n\n REQUIRED\n\n The associated name for the provider.\n\n* `provider`* (string)*\n\n REQUIRED\n\n The provider of the external actor.\n\n * `github`\n * `github_enterprise`\n * `jira_server`\n * `slack`\n * `gitlab`\n * `msteams`\n * `custom_scm`\n\n* `integration_id`* (integer)*\n\n REQUIRED\n\n The Integration ID.\n\n* `external_id`* (string)*\n\n The associated user ID for provider.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `team:admin`\n* `team:write`\n\n```\ncurl https://sentry.io/api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/external-teams/{external_team_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"externalId\": \"asdf\",\n \"externalName\": \"@team-foo\",\n \"provider\": \"slack\",\n \"integrationId\": \"1\",\n \"id\": \"1\",\n \"teamId\": \"2\"\n}\n```\n" + }, + { + "path": "api/integrations/update-an-external-user.md", + "title": "Update an External User", + "hierarchy": [ + "Api", + "Integrations", + "Update An External User" + ], + "summary": "# Update an External User", + "content": "# Update an External User\n\nPUT /api/0/organizations/{organization\\_id\\_or\\_slug}/external-users/{external\\_user\\_id}/\n\nUpdate a user in an external provider that is currently linked to a Sentry user.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `external_user_id`* (integer)*\n\n REQUIRED\n\n The ID of the external user object. This is returned when creating an external user.\n\n### Body Parameters\n\n* `user_id`* (integer)*\n\n REQUIRED\n\n The user ID in Sentry.\n\n* `external_name`* (string)*\n\n REQUIRED\n\n The associated name for the provider.\n\n* `provider`* (string)*\n\n REQUIRED\n\n The provider of the external actor.\n\n * `github`\n * `github_enterprise`\n * `jira_server`\n * `slack`\n * `gitlab`\n * `msteams`\n * `custom_scm`\n\n* `integration_id`* (integer)*\n\n REQUIRED\n\n The Integration ID.\n\n* `id`* (integer)*\n\n REQUIRED\n\n The external actor ID.\n\n* `external_id`* (string)*\n\n The associated user ID for provider.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/external-users/{external_user_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"externalName\": \"@Billybob\",\n \"provider\": \"github\",\n \"userId\": \"1\",\n \"integrationId\": \"1\",\n \"id\": \"1\"\n}\n```\n" + }, + { + "path": "api/organizations.md", + "title": "Organizations", + "hierarchy": [ + "Api", + "Organizations" + ], + "summary": "# Organizations", + "content": "# Organizations\n\n* #### [Add a Member to an Organization](https://docs.sentry.io/api/organizations/add-a-member-to-an-organization.md)\n* #### [Delete an Organization Member](https://docs.sentry.io/api/organizations/delete-an-organization-member.md)\n* #### [List a Repository's Commits](https://docs.sentry.io/api/organizations/list-a-repositorys-commits.md)\n* #### [List an Organization's Members](https://docs.sentry.io/api/organizations/list-an-organizations-members.md)\n* #### [List an Organization's Projects](https://docs.sentry.io/api/organizations/list-an-organizations-projects.md)\n* #### [List an Organization's Repositories](https://docs.sentry.io/api/organizations/list-an-organizations-repositories.md)\n* #### [List an Organization's trusted Relays](https://docs.sentry.io/api/organizations/list-an-organizations-trusted-relays.md)\n* #### [Resolve a Short ID](https://docs.sentry.io/api/organizations/resolve-a-short-id.md)\n* #### [Resolve an Event ID](https://docs.sentry.io/api/organizations/resolve-an-event-id.md)\n* #### [Retrieve an Organization](https://docs.sentry.io/api/organizations/retrieve-an-organization.md)\n* #### [Retrieve an Organization Member](https://docs.sentry.io/api/organizations/retrieve-an-organization-member.md)\n* #### [Retrieve an Organization's Events Count by Project](https://docs.sentry.io/api/organizations/retrieve-an-organizations-events-count-by-project.md)\n* #### [Retrieve Event Counts for an Organization (v2)](https://docs.sentry.io/api/organizations/retrieve-event-counts-for-an-organization-v2.md)\n* #### [Update an Organization](https://docs.sentry.io/api/organizations/update-an-organization.md)\n* #### [Update an Organization Member's Roles](https://docs.sentry.io/api/organizations/update-an-organization-members-roles.md)\n" + }, + { + "path": "api/organizations/add-a-member-to-an-organization.md", + "title": "Add a Member to an Organization", + "hierarchy": [ + "Api", + "Organizations", + "Add A Member To An Organization" + ], + "summary": "# Add a Member to an Organization", + "content": "# Add a Member to an Organization\n\nPOST /api/0/organizations/{organization\\_id\\_or\\_slug}/members/\n\nAdd or invite a member to an organization.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Body Parameters\n\n* `email`* (string)*\n\n REQUIRED\n\n The email address to send the invitation to.\n\n* `orgRole`* (string)*\n\n 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 the organization's membership.\n * `owner` - Has 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.\n * `admin` - Can edit global integrations, manage projects, and add/remove teams. They automatically assume the Team Admin role for teams they join. Note: This role can no longer be assigned in Business and Enterprise plans. Use `TeamRoles` instead.\n\n* `teamRoles`* (array(object))*\n\n The team and team-roles assigned to the member. Team roles can be either:\n\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\n* `sendInvite`* (boolean)*\n\n Whether or not to send an invite notification through email. Defaults to True.\n\n* `reinvite`* (boolean)*\n\n Whether or not to re-invite a user who has already been invited to the organization. Defaults to True.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `member:admin`\n* `member:invite`\n* `member:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/members/ \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"57377908164\",\n \"email\": \"sirpenguin@antarcticarocks.com\",\n \"name\": \"Sir Penguin\",\n \"user\": {\n \"id\": \"280094367316\",\n \"name\": \"Sir Penguin\",\n \"username\": \"sirpenguin@antarcticarocks.com\",\n \"email\": \"sirpenguin@antarcticarocks.com\",\n \"avatarUrl\": \"https://secure.gravatar.com/avatar/16aeb26c5fdba335c7078e9e9ddb5149?s=32&d=mm\",\n \"isActive\": true,\n \"hasPasswordAuth\": true,\n \"isManaged\": false,\n \"dateJoined\": \"2021-07-06T21:13:58.375239Z\",\n \"lastLogin\": \"2021-08-02T18:25:00.051182Z\",\n \"has2fa\": false,\n \"lastActive\": \"2021-08-02T21:32:18.836829Z\",\n \"isSuperuser\": false,\n \"isStaff\": false,\n \"experiments\": {},\n \"emails\": [\n {\n \"id\": \"2153450836\",\n \"email\": \"sirpenguin@antarcticarocks.com\",\n \"is_verified\": true\n }\n ],\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n },\n \"canReset2fa\": true\n },\n \"orgRole\": \"member\",\n \"pending\": false,\n \"expired\": false,\n \"flags\": {\n \"idp:provisioned\": false,\n \"idp:role-restricted\": false,\n \"sso:linked\": false,\n \"sso:invalid\": false,\n \"member-limit:restricted\": false,\n \"partnership:restricted\": false\n },\n \"dateCreated\": \"2021-07-06T21:13:01.120263Z\",\n \"inviteStatus\": \"approved\",\n \"inviterName\": \"maininviter@antarcticarocks.com\"\n}\n```\n" + }, + { + "path": "api/organizations/delete-an-organization-member.md", + "title": "Delete an Organization Member", + "hierarchy": [ + "Api", + "Organizations", + "Delete An Organization Member" + ], + "summary": "# Delete an Organization Member", + "content": "# Delete an Organization Member\n\nDELETE /api/0/organizations/{organization\\_id\\_or\\_slug}/members/{member\\_id}/\n\nRemove an organization member.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `member_id`* (string)*\n\n REQUIRED\n\n The ID of the member to delete.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `member:admin`\n* `member:read`\n* `member:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/members/{member_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nNo Content.\n```\n" + }, + { + "path": "api/organizations/list-a-repositorys-commits.md", + "title": "List a Repository's Commits", + "hierarchy": [ + "Api", + "Organizations", + "List A Repositorys Commits" + ], + "summary": "# List a Repository's Commits", + "content": "# List a Repository's Commits\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/repos/{repo\\_id}/commits/\n\nList a Repository's Commits\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `repo_id`* (string)*\n\n REQUIRED\n\n The repository ID.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/repos/{repo_id}/commits/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"dateCreated\": \"2018-11-06T21:19:58.536Z\",\n \"id\": \"acbafc639127fd89d10f474520104517ff1d709e\",\n \"message\": \"Initial commit from Create Next App\",\n \"suspectCommitType\": \"\",\n \"pullRequest\": null\n }\n]\n```\n" + }, + { + "path": "api/organizations/list-an-organizations-members.md", + "title": "List an Organization's Members", + "hierarchy": [ + "Api", + "Organizations", + "List An Organizations Members" + ], + "summary": "# List an Organization's Members", + "content": "# List an Organization's Members\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/members/\n\nList all organization members.\n\nResponse includes pending invites that are approved by organization owners or managers but waiting to be accepted by the invitee.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `member:admin`\n* `member:read`\n* `member:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/members/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"id\": \"57377908164\",\n \"email\": \"sirpenguin@antarcticarocks.com\",\n \"name\": \"Sir Penguin\",\n \"user\": {\n \"id\": \"280094367316\",\n \"name\": \"Sir Penguin\",\n \"username\": \"sirpenguin@antarcticarocks.com\",\n \"email\": \"sirpenguin@antarcticarocks.com\",\n \"avatarUrl\": \"https://secure.gravatar.com/avatar/16aeb26c5fdba335c7078e9e9ddb5149?s=32&d=mm\",\n \"isActive\": true,\n \"hasPasswordAuth\": true,\n \"isManaged\": false,\n \"dateJoined\": \"2021-07-06T21:13:58.375239Z\",\n \"lastLogin\": \"2021-08-02T18:25:00.051182Z\",\n \"has2fa\": false,\n \"lastActive\": \"2021-08-02T21:32:18.836829Z\",\n \"isSuperuser\": false,\n \"isStaff\": false,\n \"experiments\": {},\n \"emails\": [\n {\n \"id\": \"2153450836\",\n \"email\": \"sirpenguin@antarcticarocks.com\",\n \"is_verified\": true\n }\n ],\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n },\n \"canReset2fa\": true\n },\n \"orgRole\": \"member\",\n \"pending\": false,\n \"expired\": false,\n \"flags\": {\n \"idp:provisioned\": false,\n \"idp:role-restricted\": false,\n \"sso:linked\": false,\n \"sso:invalid\": false,\n \"member-limit:restricted\": false,\n \"partnership:restricted\": false\n },\n \"dateCreated\": \"2021-07-06T21:13:01.120263Z\",\n \"inviteStatus\": \"approved\",\n \"inviterName\": \"maininviter@antarcticarocks.com\"\n },\n {\n \"id\": \"57377908165\",\n \"email\": \"rockhopper@antarcticarocks.com\",\n \"name\": \"Rockhopper\",\n \"orgRole\": \"member\",\n \"pending\": true,\n \"expired\": false,\n \"flags\": {\n \"idp:provisioned\": false,\n \"idp:role-restricted\": false,\n \"sso:linked\": false,\n \"sso:invalid\": false,\n \"member-limit:restricted\": false,\n \"partnership:restricted\": false\n },\n \"dateCreated\": \"2021-07-07T21:13:01.120263Z\",\n \"inviteStatus\": \"pending\",\n \"inviterName\": \"maininviter@antarcticarocks.com\"\n }\n]\n```\n" + }, + { + "path": "api/organizations/list-an-organizations-projects.md", + "title": "List an Organization's Projects", + "hierarchy": [ + "Api", + "Organizations", + "List An Organizations Projects" + ], + "summary": "# List an Organization's Projects", + "content": "# List an Organization's Projects\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/projects/\n\nReturn a list of projects bound to a organization.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Query Parameters:\n\n* `cursor`* (string)*\n\n A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/projects/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"slug\": \"prime-mover\",\n \"name\": \"Prime Mover\",\n \"dateCreated\": \"2018-11-06T21:19:58.536Z\",\n \"firstEvent\": null,\n \"access\": [],\n \"hasAccess\": true,\n \"id\": \"3\",\n \"isBookmarked\": false,\n \"isMember\": true,\n \"platform\": \"\",\n \"platforms\": [],\n \"team\": {\n \"id\": \"2\",\n \"name\": \"Powerful Abolitionist\",\n \"slug\": \"powerful-abolitionist\"\n },\n \"teams\": [\n {\n \"id\": \"2\",\n \"name\": \"Powerful Abolitionist\",\n \"slug\": \"powerful-abolitionist\"\n }\n ],\n \"environments\": [\n \"local\"\n ],\n \"features\": [\n \"releases\"\n ],\n \"firstTransactionEvent\": true,\n \"hasSessions\": true,\n \"hasProfiles\": true,\n \"hasReplays\": true,\n \"hasFlags\": true,\n \"hasMinifiedStackTrace\": false,\n \"hasMonitors\": true,\n \"hasFeedbacks\": false,\n \"hasNewFeedbacks\": false,\n \"hasUserReports\": false,\n \"hasInsightsHttp\": true,\n \"hasInsightsDb\": false,\n \"hasInsightsAssets\": true,\n \"hasInsightsAppStart\": false,\n \"hasInsightsScreenLoad\": false,\n \"hasInsightsVitals\": false,\n \"hasInsightsCaches\": false,\n \"hasInsightsQueues\": false,\n \"hasInsightsLlmMonitoring\": false,\n \"hasInsightsAgentMonitoring\": false,\n \"hasInsightsMCP\": false,\n \"hasLogs\": false,\n \"latestRelease\": null\n }\n]\n```\n" + }, + { + "path": "api/organizations/list-an-organizations-repositories.md", + "title": "List an Organization's Repositories", + "hierarchy": [ + "Api", + "Organizations", + "List An Organizations Repositories" + ], + "summary": "# List an Organization's Repositories", + "content": "# List an Organization's Repositories\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/repos/\n\nReturn a list of version control repositories for a given organization.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The organization short name.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org: read`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/repos/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"dateCreated\": \"2018-11-06T21:19:58.536Z\",\n \"id\": \"3\",\n \"name\": \"sentry/sentry\"\n }\n]\n```\n" + }, + { + "path": "api/organizations/list-an-organizations-trusted-relays.md", + "title": "List an Organization's trusted Relays", + "hierarchy": [ + "Api", + "Organizations", + "List An Organizations Trusted Relays" + ], + "summary": "# List an Organization's trusted Relays", + "content": "# List an Organization's trusted Relays\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/relay\\_usage/\n\nReturn a list of trusted relays bound to an organization.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/relay_usage/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"relayId\": \"0123abcd-4567-efgh-ij89-012aaa456bbb\",\n \"version\": \"23.11.2\",\n \"firstSeen\": \"2023-12-10T00:00:00.000000Z\",\n \"lastSeen\": \"2023-12-20T22:22:22.222222Z\",\n \"publicKey\": \"asdfa54g9987ga9dfha0f8adfhkj324-dafd78321-I\"\n }\n]\n```\n" + }, + { + "path": "api/organizations/resolve-a-short-id.md", + "title": "Resolve a Short ID", + "hierarchy": [ + "Api", + "Organizations", + "Resolve A Short Id" + ], + "summary": "# Resolve a Short ID", + "content": "# Resolve a Short ID\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/shortids/{issue\\_id}/\n\nResolve a short ID to the project slug and group details.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `issue_id`* (string)*\n\n REQUIRED\n\n The short ID of the issue to resolve.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `event:admin`\n* `event:read`\n* `event:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/shortids/{issue_id}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"group\": {\n \"annotations\": [],\n \"assignedTo\": {\n \"id\": \"1\",\n \"name\": \"John Doe\",\n \"username\": \"johndoe\",\n \"email\": \"john@example.com\",\n \"avatarUrl\": \"https://secure.gravatar.com/avatar/1234567890abcdef\",\n \"isActive\": true,\n \"hasPasswordAuth\": true,\n \"isManaged\": false,\n \"dateJoined\": \"2018-01-01T00:00:00Z\",\n \"lastLogin\": \"2023-12-01T10:00:00Z\",\n \"has2fa\": false,\n \"lastActive\": \"2023-12-01T10:00:00Z\",\n \"isSuperuser\": false,\n \"isStaff\": false,\n \"experiments\": {},\n \"emails\": [\n {\n \"id\": \"1\",\n \"email\": \"john@example.com\",\n \"is_verified\": true\n }\n ],\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null,\n \"avatarUrl\": null\n }\n },\n \"count\": \"1\",\n \"culprit\": \"raven.scripts.runner in main\",\n \"firstSeen\": \"2018-11-06T21:19:55Z\",\n \"hasSeen\": false,\n \"id\": \"1\",\n \"isBookmarked\": false,\n \"isPublic\": false,\n \"isSubscribed\": true,\n \"lastSeen\": \"2018-11-06T21:19:55Z\",\n \"level\": \"error\",\n \"logger\": null,\n \"metadata\": {\n \"title\": \"This is an example Python exception\"\n },\n \"numComments\": 0,\n \"permalink\": \"https://sentry.io/the-interstellar-jurisdiction/pump-station/issues/1/\",\n \"project\": {\n \"id\": \"2\",\n \"name\": \"Pump Station\",\n \"slug\": \"pump-station\",\n \"platform\": \"python\"\n },\n \"shareId\": \"abc123\",\n \"shortId\": \"PUMP-STATION-1\",\n \"status\": \"unresolved\",\n \"statusDetails\": {},\n \"subscriptionDetails\": null,\n \"title\": \"This is an example Python exception\",\n \"type\": \"default\",\n \"userCount\": 0,\n \"issueCategory\": \"error\",\n \"issueType\": \"error\",\n \"platform\": \"python\",\n \"priority\": \"medium\",\n \"priorityLockedAt\": null,\n \"seerFixabilityScore\": 0.5,\n \"seerAutofixLastTriggered\": null,\n \"substatus\": \"ongoing\"\n },\n \"groupId\": \"1\",\n \"organizationSlug\": \"the-interstellar-jurisdiction\",\n \"projectSlug\": \"pump-station\",\n \"shortId\": \"PUMP-STATION-1\"\n}\n```\n" + }, + { + "path": "api/organizations/resolve-an-event-id.md", + "title": "Resolve an Event ID", + "hierarchy": [ + "Api", + "Organizations", + "Resolve An Event Id" + ], + "summary": "# Resolve an Event ID", + "content": "# Resolve an Event ID\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/eventids/{event\\_id}/\n\nThis resolves an event ID to the project slug and internal issue ID and internal event ID.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `event_id`* (string)*\n\n REQUIRED\n\n The event ID to look up.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/eventids/{event_id}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"event\": {\n \"_meta\": {\n \"context\": null,\n \"contexts\": null,\n \"entries\": {},\n \"message\": null,\n \"packages\": null,\n \"sdk\": null,\n \"tags\": {},\n \"user\": null\n },\n \"context\": {\n \"length\": 10837790,\n \"results\": [\n 1,\n 2,\n 3,\n 4,\n 5\n ],\n \"session\": {\n \"foo\": \"bar\"\n },\n \"unauthorized\": false,\n \"url\": \"http://example.org/foo/bar/\"\n },\n \"contexts\": {},\n \"dateCreated\": \"2018-11-06T21:19:55Z\",\n \"dateReceived\": \"2018-11-06T21:19:55Z\",\n \"dist\": null,\n \"entries\": [\n {\n \"type\": \"request\",\n \"data\": {\n \"fragment\": null,\n \"cookies\": [],\n \"inferredContentType\": null,\n \"env\": null,\n \"headers\": [\n [\n \"User-Agent\",\n \"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\"\n ]\n ],\n \"url\": \"http://example.com/foo\",\n \"query\": [],\n \"data\": null,\n \"method\": null\n }\n }\n ],\n \"errors\": [],\n \"eventID\": \"9fac2ceed9344f2bbfdd1fdacb0ed9b1\",\n \"fingerprints\": [\n \"c4a4d06bc314205bb3b6bdb612dde7f1\"\n ],\n \"groupID\": \"1\",\n \"id\": \"1\",\n \"location\": \"example.py:42\",\n \"message\": \"\",\n \"title\": \"This is an example Python exception\",\n \"metadata\": {\n \"title\": \"This is an example Python exception\"\n },\n \"occurrence\": {\n \"evidenceData\": {},\n \"evidenceDisplay\": [],\n \"fingerprint\": \"c4a4d06bc314205bb3b6bdb612dde7f1\",\n \"id\": \"1\",\n \"issueTitle\": \"This is an example Python exception\",\n \"subtitle\": \"example.py:42\",\n \"resourceId\": \"example.py:42\",\n \"detectionTime\": \"2018-11-06T21:19:55Z\",\n \"eventId\": \"9fac2ceed9344f2bbfdd1fdacb0ed9b1\"\n },\n \"packages\": {\n \"my.package\": \"1.0.0\"\n },\n \"platform\": \"python\",\n \"projectID\": \"1\",\n \"sdk\": {},\n \"size\": 7055,\n \"tags\": [\n {\n \"key\": \"browser\",\n \"value\": \"Chrome 28.0\"\n },\n {\n \"key\": \"device\",\n \"value\": \"Other\"\n },\n {\n \"key\": \"level\",\n \"value\": \"error\"\n },\n {\n \"key\": \"os\",\n \"value\": \"Windows 8\"\n },\n {\n \"key\": \"release\",\n \"value\": \"17642328ead24b51867165985996d04b29310337\"\n },\n {\n \"key\": \"url\",\n \"value\": \"http://example.com/foo\"\n },\n {\n \"key\": \"user\",\n \"value\": \"id:1\"\n }\n ],\n \"type\": \"default\",\n \"user\": {\n \"data\": {},\n \"email\": \"sentry@example.com\",\n \"id\": \"1\",\n \"ip_address\": \"127.0.0.1\",\n \"name\": \"Sentry\",\n \"username\": \"sentry\"\n }\n },\n \"eventId\": \"1\",\n \"groupId\": \"1\",\n \"organizationSlug\": \"the-interstellar-jurisdiction\",\n \"projectSlug\": \"pump-station\"\n}\n```\n" + }, + { + "path": "api/organizations/retrieve-an-organization-member.md", + "title": "Retrieve an Organization Member", + "hierarchy": [ + "Api", + "Organizations", + "Retrieve An Organization Member" + ], + "summary": "# Retrieve an Organization Member", + "content": "# Retrieve an Organization Member\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/members/{member\\_id}/\n\nRetrieve 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.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `member_id`* (string)*\n\n REQUIRED\n\n The ID of the organization member.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `member:admin`\n* `member:read`\n* `member:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/members/{member_id}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"57377908164\",\n \"email\": \"sirpenguin@antarcticarocks.com\",\n \"name\": \"Sir Penguin\",\n \"user\": {\n \"id\": \"280094367316\",\n \"name\": \"Sir Penguin\",\n \"username\": \"sirpenguin@antarcticarocks.com\",\n \"email\": \"sirpenguin@antarcticarocks.com\",\n \"avatarUrl\": \"https://secure.gravatar.com/avatar/16aeb26c5fdba335c7078e9e9ddb5149?s=32&d=mm\",\n \"isActive\": true,\n \"hasPasswordAuth\": true,\n \"isManaged\": false,\n \"dateJoined\": \"2021-07-06T21:13:58.375239Z\",\n \"lastLogin\": \"2021-08-02T18:25:00.051182Z\",\n \"has2fa\": false,\n \"lastActive\": \"2021-08-02T21:32:18.836829Z\",\n \"isSuperuser\": false,\n \"isStaff\": false,\n \"experiments\": {},\n \"emails\": [\n {\n \"id\": \"2153450836\",\n \"email\": \"sirpenguin@antarcticarocks.com\",\n \"is_verified\": true\n }\n ],\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n },\n \"authenticators\": [],\n \"canReset2fa\": true\n },\n \"role\": \"member\",\n \"orgRole\": \"member\",\n \"roleName\": \"Member\",\n \"pending\": false,\n \"expired\": false,\n \"flags\": {\n \"idp:provisioned\": false,\n \"idp:role-restricted\": false,\n \"sso:linked\": false,\n \"sso:invalid\": false,\n \"member-limit:restricted\": false,\n \"partnership:restricted\": false\n },\n \"dateCreated\": \"2021-07-06T21:13:01.120263Z\",\n \"inviteStatus\": \"approved\",\n \"inviterName\": \"maininviter@antarcticarocks.com\",\n \"teams\": [\n \"cool-team\",\n \"ancient-gabelers\"\n ],\n \"teamRoles\": [\n {\n \"teamSlug\": \"ancient-gabelers\",\n \"role\": \"admin\"\n },\n {\n \"teamSlug\": \"powerful-abolitionist\",\n \"role\": \"contributor\"\n }\n ],\n \"invite_link\": null,\n \"isOnlyOwner\": false,\n \"orgRoleList\": [\n {\n \"id\": \"billing\",\n \"name\": \"Billing\",\n \"desc\": \"Can manage subscription and billing details.\",\n \"scopes\": [\n \"org:billing\"\n ],\n \"allowed\": true,\n \"isAllowed\": true,\n \"isRetired\": false,\n \"is_global\": false,\n \"isGlobal\": false,\n \"isTeamRolesAllowed\": false,\n \"minimumTeamRole\": \"contributor\"\n },\n {\n \"id\": \"member\",\n \"name\": \"Member\",\n \"desc\": \"Members can view and act on events, as well as view most other data within the organization.\",\n \"scopes\": [\n \"team:read\",\n \"project:releases\",\n \"org:read\",\n \"event:read\",\n \"alerts:write\",\n \"member:read\",\n \"alerts:read\",\n \"event:admin\",\n \"project:read\",\n \"event:write\"\n ],\n \"allowed\": true,\n \"isAllowed\": true,\n \"isRetired\": false,\n \"is_global\": false,\n \"isGlobal\": false,\n \"isTeamRolesAllowed\": true,\n \"minimumTeamRole\": \"contributor\"\n },\n {\n \"id\": \"admin\",\n \"name\": \"Admin\",\n \"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 " + }, + { + "path": "api/organizations/retrieve-an-organization.md", + "title": "Retrieve an Organization", + "hierarchy": [ + "Api", + "Organizations", + "Retrieve An Organization" + ], + "summary": "# Retrieve an Organization", + "content": "# Retrieve an Organization\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/\n\nReturn details on an individual organization, including various details such as membership access and teams.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Query Parameters:\n\n* `detailed`* (string)*\n\n Specify `\"0\"` to return organization details that do not include projects or teams.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n },\n \"dateCreated\": \"2018-11-06T21:19:55.101Z\",\n \"hasAuthProvider\": false,\n \"id\": \"2\",\n \"isEarlyAdopter\": false,\n \"allowMemberInvite\": true,\n \"allowMemberProjectCreation\": true,\n \"allowSuperuserAccess\": false,\n \"links\": {\n \"organizationUrl\": \"https://the-interstellar-jurisdiction.sentry.io\",\n \"regionUrl\": \"https://us.sentry.io\"\n },\n \"name\": \"The Interstellar Jurisdiction\",\n \"require2FA\": false,\n \"slug\": \"the-interstellar-jurisdiction\",\n \"status\": {\n \"id\": \"active\",\n \"name\": \"active\"\n }\n}\n```\n" + }, + { + "path": "api/organizations/retrieve-an-organizations-events-count-by-project.md", + "title": "Retrieve an Organization's Events Count by Project", + "hierarchy": [ + "Api", + "Organizations", + "Retrieve An Organizations Events Count By Project" + ], + "summary": "# Retrieve an Organization's Events Count by Project", + "content": "# Retrieve an Organization's Events Count by Project\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/stats-summary/\n\nQuery 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.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Query Parameters:\n\n* `field`* (string)*\n\n REQUIRED\n\n **choices**:\n\n * `sum(quantity)\n sum(times_seen)`\n\n 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Β `sum(quantity)`Β for 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)`\n\n* `statsPeriod`* (string)*\n\n 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`.\n\n* `interval`* (string)*\n\n 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.\n\n* `start`* (string)*\n\n 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`.\n\n* `end`* (string)*\n\n 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`.\n\n* `project`* (array(undefined))*\n\n The ID of the projects to filter by.\n\n* `category`* (string)*\n\n **choices**:\n\n * `error\n transaction\n attachment\n replays\n profiles`\n\n If filtering by attachments, you cannot filter by any other category due to quantity values becoming nonsensical (combining bytes and event counts).\n\n If filtering byΒ `error`, it will automatically addΒ `default`Β andΒ `security`Β as we currently roll those two categories intoΒ `error`Β for displaying.\n\n * `error`\n * `transaction`\n * `attachment`\n * `replays`\n * `profiles`\n\n* `outcome`* (string)*\n\n **choices**:\n\n * `accepted\n filtered\n rate_limited\n invalid\n abuse\n client_discard\n cardinality_limited`\n\n 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`\n\n* `reason`* (string)*\n\n The reason field will contain why an event was filtered/dropped.\n\n* `download`* (boolean)*\n\n Download the API response in as a csv file\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/stats-summary/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"start\": \"2023-09-19T13:00:00Z\",\n \"end\": \"2023-09-19T12:28:00Z\",\n \"projects\": [\n {\n " + }, + { + "path": "api/organizations/retrieve-event-counts-for-an-organization-v2.md", + "title": "Retrieve Event Counts for an Organization (v2)", + "hierarchy": [ + "Api", + "Organizations", + "Retrieve Event Counts For An Organization V2" + ], + "summary": "# Retrieve Event Counts for an Organization (v2)", + "content": "# Retrieve Event Counts for an Organization (v2)\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/stats\\_v2/\n\nQuery event counts for your Organization. Select a field, define a date range, and group or filter by columns.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Query Parameters:\n\n* `groupBy`* (array(string))*\n\n REQUIRED\n\n **choices**:\n\n * `outcome\n category\n reason\n project`\n\n can pass multiple groupBy parameters to group by multiple, e.g.Β `groupBy=project&groupBy=outcome`Β to 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.\n\n* `field`* (string)*\n\n REQUIRED\n\n **choices**:\n\n * `sum(quantity)\n sum(times_seen)`\n\n 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Β `sum(quantity)`Β for 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)`\n\n* `statsPeriod`* (string)*\n\n 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`.\n\n* `interval`* (string)*\n\n 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.\n\n* `start`* (string)*\n\n 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`.\n\n* `end`* (string)*\n\n 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`.\n\n* `project`* (array(undefined))*\n\n The ID of the projects to filter by.\n\n Use `-1` to include all accessible projects.\n\n* `category`* (string)*\n\n **choices**:\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`\n\n 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 (" + }, + { + "path": "api/organizations/update-an-organization-members-roles.md", + "title": "Update an Organization Member's Roles", + "hierarchy": [ + "Api", + "Organizations", + "Update An Organization Members Roles" + ], + "summary": "# Update an Organization Member's Roles", + "content": "# Update an Organization Member's Roles\n\nPUT /api/0/organizations/{organization\\_id\\_or\\_slug}/members/{member\\_id}/\n\nUpdate a member's [organization-level](https://docs.sentry.io/organization/membership.md#organization-level-roles) and [team-level](https://docs.sentry.io/organization/membership.md#team-level-roles) roles.\n\nNote that for changing organization-roles, this endpoint is restricted to [user auth tokens](https://docs.sentry.io/account/auth-tokens.md#user-auth-tokens). Additionally, both the original and desired organization role must have the 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 Member to Manager, but not to Owner.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `member_id`* (string)*\n\n REQUIRED\n\n The ID of the member to update.\n\n### Body Parameters\n\n* `orgRole`* (string)*\n\n 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 the organization's membership.\n * `owner` - Has 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.\n * `admin` - Can edit global integrations, manage projects, and add/remove teams. They automatically assume the Team Admin role for teams they join. Note: This role can no longer be assigned in Business and Enterprise plans. Use `TeamRoles` instead.\n\n* `teamRoles`* (array(object))*\n\n Configures the team role of the member. The two roles are:\n\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\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\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `member:admin`\n* `member:invite`\n* `member:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/members/{member_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"57377908164\",\n \"email\": \"sirpenguin@antarcticarocks.com\",\n \"name\": \"Sir Penguin\",\n \"user\": {\n \"id\": \"280094367316\",\n \"name\": \"Sir Penguin\",\n \"username\": \"sirpenguin@antarcticarocks.com\",\n \"email\": \"sirpenguin@antarcticarocks.com\",\n \"avatarUrl\": \"https://secure.gravatar.com/avatar/16aeb26c5fdba335c7078e9e9ddb5149?s=32&d=mm\",\n \"isActive\": true,\n \"hasPasswordAuth\": true,\n \"isManaged\": false,\n \"dateJoined\": \"2021-07-06T21:13:58.375239Z\",\n \"lastLogin\": \"2021-08-02T18:25:00.051182Z\",\n \"has2fa\": false,\n \"lastActive\": \"2021-08-02T21:32:18.836829Z\",\n \"isSuperuser\": false,\n \"isStaff\": false,\n \"experiments\": {},\n \"emails\": [\n {\n \"id\": \"2153450836\",\n \"email\": \"sirpenguin@antarcticarocks.com\",\n \"is_verified\": true\n }\n ],\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n },\n \"authenticators\": [],\n \"canReset2fa\": true\n },\n \"role\": \"member\",\n \"orgRole\": \"member\",\n \"roleName\": \"Member\",\n \"pending\": false,\n \"expired\": false,\n \"flags\": {\n \"idp:provisioned\": false,\n \"idp" + }, + { + "path": "api/organizations/update-an-organization.md", + "title": "Update an Organization", + "hierarchy": [ + "Api", + "Organizations", + "Update An Organization" + ], + "summary": "# Update an Organization", + "content": "# Update an Organization\n\nPUT /api/0/organizations/{organization\\_id\\_or\\_slug}/\n\nUpdate various attributes and configurable settings for the given organization.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Body Parameters\n\n* `slug`* (string)*\n\n The new slug for the organization, which needs to be unique.\n\n* `name`* (string)*\n\n The new name for the organization.\n\n* `isEarlyAdopter`* (boolean)*\n\n Specify `true` to opt-in to new features before they're released to the public.\n\n* `hideAiFeatures`* (boolean)*\n\n Specify `true` to hide AI features from the organization.\n\n* `codecovAccess`* (boolean)*\n\n Specify `true` to enable Code Coverage Insights. This feature is only available for organizations on the Team plan and above. Learn more about Codecov [here](https://docs.sentry.io/product/codecov.md).\n\n* `defaultRole`* (string)*\n\n The default role new members will receive.\n\n * `member` - Member\n * `admin` - Admin\n * `manager` - Manager\n * `owner` - Owner\n\n* `openMembership`* (boolean)*\n\n Specify `true` to allow organization members to freely join any team.\n\n* `eventsMemberAdmin`* (boolean)*\n\n Specify `true` to allow members to delete events (including the delete & discard action) by granting them the `event:admin` scope.\n\n* `alertsMemberWrite`* (boolean)*\n\n Specify `true` to allow members to create, edit, and delete alert rules by granting them the `alerts:write` scope.\n\n* `attachmentsRole`* (string)*\n\n 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\n\n* `debugFilesRole`* (string)*\n\n 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\n\n* `avatarType`* (string)*\n\n The type of display picture for the organization.\n\n * `letter_avatar` - Use initials\n * `upload` - Upload an image\n\n* `avatar`* (string)*\n\n The image to upload as the organization avatar, in base64. Required if `avatarType` is `upload`.\n\n* `require2FA`* (boolean)*\n\n Specify `true` to require and enforce two-factor authentication for all members.\n\n* `allowSharedIssues`* (boolean)*\n\n Specify `true` to allow sharing of limited details on issues to anonymous users.\n\n* `enhancedPrivacy`* (boolean)*\n\n Specify `true` to enable enhanced privacy controls to limit personally identifiable information (PII) as well as source code in things like notifications.\n\n* `scrapeJavaScript`* (boolean)*\n\n Specify `true` to allow Sentry to scrape missing JavaScript source context when possible.\n\n* `storeCrashReports`* (integer)*\n\n 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\n\n* `allowJoinRequests`* (boolean)*\n\n Specify `true` to allow users to request to join your organization.\n\n* `dataScrubber`* (boolean)*\n\n Specify `true` to require server-side data scrubbing for all projects.\n\n* `dataScrubberDefaults`* (boolean)*\n\n Specify `true` to apply the" + }, + { + "path": "api/pagination.md", + "title": "Paginating Results", + "hierarchy": [ + "Api", + "Pagination" + ], + "summary": "# Paginating Results", + "content": "# Paginating Results\n\nPagination in the API is handled via the Link header standard:\n\n```bash\ncurl -i https://sentry.io/api/0/organizations/acme/projects/1/groups/\n```\n\nWhen supported, cursors will **always** be returned for both a previous and a next page, even if there are no results on these pages. This allows you to make a query against the API for yet-undiscovered results. An example where this would be used is when you're implementing polling behavior and you want to see if there is any new data. We return a `results=\"[true|false]\"` indicator to determine if you actually need to paginate.\n\n## [Pagination Example](https://docs.sentry.io/api/pagination.md#pagination-example)\n\nHere is a pagination example using this API endpoint:\n\n[https://docs.sentry.io/api/events/list-an-issues-events/](https://docs.sentry.io/api/events/list-an-issues-events.md)\n\nThe HTTP request in this example returns 100 events for the issue and has the following link header in the response:\n\n```bash\n; rel=\"previous\"; results=\"false\"; cursor=\"0:0:1\", ; rel=\"next\"; results=\"true\"; cursor=\"0:100:0\"\n```\n\nOne of the URLs in the link response has `rel=next`, which indicates the next results page. It also has `results=true`, which means that there are more results.\n\nBased on this, the next request is `GET `.\n\nThis request will return the next 100 events for that issue, again, with the following link header:\n\n```bash\n; rel=\"previous\"; results=\"true\"; cursor=\"0:0:1\", ; rel=\"next\"; results=\"true\"; cursor=\"0:200:0\"\n```\n\nThe process is repeated until the URL with `rel=next` has the flag `results=false` to indicate the last page.\n\nThe three values from cursor are: cursor identifier (integer, usually 0), row offset, and is\\_prev (1 or 0).\n" + }, + { + "path": "api/permissions.md", + "title": "Permissions & Scopes", + "hierarchy": [ + "Api", + "Permissions" + ], + "summary": "# Permissions & Scopes", + "content": "# Permissions & Scopes\n\nIf you're building on top of Sentry's API (i.e using [Auth Tokens](https://docs.sentry.io/api/auth.md)), you'll need certain scopes to access different API endpoints.\n\nTo set the scopes for an [integration token](https://docs.sentry.io/organization/integrations/integration-platform.md#permissions), select the scopes from the dropdown. These can be edited later.\n\nTo set the scopes for an personal token, select the scopes from the dropdown when [creating a personal token](https://sentry.io/api/). These cannot be edited later.\n\nIf you're looking for information on membership roles please visit the [membership](https://docs.sentry.io/organization/membership.md) documentation.\n\n### [Organizations](https://docs.sentry.io/api/permissions.md#organizations)\n\n| | |\n| ------------ | ----------- |\n| **GET** | `org:read` |\n| **PUT/POST** | `org:write` |\n| **DELETE** | `org:admin` |\n\n### [Projects](https://docs.sentry.io/api/permissions.md#projects)\n\n| | |\n| ------------ | --------------- |\n| **GET** | `project:read` |\n| **PUT/POST** | `project:write` |\n| **DELETE** | `project:admin` |\n\n##### Note\n\nThe `project:releases` scope will give you access to both **project** and **organization** release endpoints. The available endpoints are listed in the [Releases](https://docs.sentry.io/api/releases.md) section of the API Documentation.\n\n### [Teams](https://docs.sentry.io/api/permissions.md#teams)\n\n| | |\n| ------------ | ------------ |\n| **GET** | `team:read` |\n| **PUT/POST** | `team:write` |\n| **DELETE** | `team:admin` |\n\n### [Members](https://docs.sentry.io/api/permissions.md#members)\n\n| | |\n| ------------ | -------------- |\n| **GET** | `member:read` |\n| **PUT/POST** | `member:write` |\n| **DELETE** | `member:admin` |\n\n### [Issues & Events](https://docs.sentry.io/api/permissions.md#issues--events)\n\n| | |\n| ---------- | ------------- |\n| **GET** | `event:read` |\n| **PUT** | `event:write` |\n| **DELETE** | `event:admin` |\n\n##### Note\n\n**PUT/DELETE** methods only apply to updating/deleting issues. Events in Sentry are immutable and can only be deleted by deleting the whole issue.\n\n### [Releases](https://docs.sentry.io/api/permissions.md#releases)\n\n| | |\n| ----------------------- | ------------------ |\n| **GET/PUT/POST/DELETE** | `project:releases` |\n\n##### Note\n\nBe aware that if you're using `sentry-cli` to [manage your releases](https://docs.sentry.io/cli/releases.md), you'll need a token which also has `org:read` scope.\n" + }, + { + "path": "api/prevent.md", + "title": "Prevent", + "hierarchy": [ + "Api", + "Prevent" + ], + "summary": "# Prevent", + "content": "# Prevent\n\n* #### [Gets syncing status for repositories for an integrated org](https://docs.sentry.io/api/prevent/gets-syncing-status-for-repositories-for-an-integrated-org.md)\n* #### [Regenerates a repository upload token and returns the new token](https://docs.sentry.io/api/prevent/regenerates-a-repository-upload-token-and-returns-the-new-token.md)\n* #### [Retrieve aggregated test result metrics for repository, owner, and organization](https://docs.sentry.io/api/prevent/retrieve-aggregated-test-result-metrics-for-repository-owner-and-organization.md)\n* #### [Retrieve paginated list of test results for repository, owner, and organization](https://docs.sentry.io/api/prevent/retrieve-paginated-list-of-test-results-for-repository-owner-and-organization.md)\n* #### [Retrieve test suites belonging to a repository's test results](https://docs.sentry.io/api/prevent/retrieve-test-suites-belonging-to-a-repositorys-test-results.md)\n* #### [Retrieves a paginated list of repository tokens for a given owner](https://docs.sentry.io/api/prevent/retrieves-a-paginated-list-of-repository-tokens-for-a-given-owner.md)\n* #### [Retrieves a single repository for a given owner](https://docs.sentry.io/api/prevent/retrieves-a-single-repository-for-a-given-owner.md)\n* #### [Retrieves list of branches for a given owner and repository](https://docs.sentry.io/api/prevent/retrieves-list-of-branches-for-a-given-owner-and-repository.md)\n* #### [Retrieves list of repositories for a given owner](https://docs.sentry.io/api/prevent/retrieves-list-of-repositories-for-a-given-owner.md)\n* #### [Syncs repositories from an integrated org with GitHub](https://docs.sentry.io/api/prevent/syncs-repositories-from-an-integrated-org-with-github.md)\n" + }, + { + "path": "api/prevent/gets-syncing-status-for-repositories-for-an-integrated-org.md", + "title": "Gets syncing status for repositories for an integrated org", + "hierarchy": [ + "Api", + "Prevent", + "Gets Syncing Status For Repositories For An Integrated Org" + ], + "summary": "# Gets syncing status for repositories for an integrated org", + "content": "# Gets syncing status for repositories for an integrated org\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/prevent/owner/{owner}/repositories/sync/\n\nGets syncing status for repositories for an integrated organization.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `owner`* (string)*\n\n REQUIRED\n\n The owner of the repository.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/prevent/owner/{owner}/repositories/sync/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n.\n```\n" + }, + { + "path": "api/prevent/regenerates-a-repository-upload-token-and-returns-the-new-token.md", + "title": "Regenerates a repository upload token and returns the new token", + "hierarchy": [ + "Api", + "Prevent", + "Regenerates A Repository Upload Token And Returns The New Token" + ], + "summary": "# Regenerates a repository upload token and returns the new token", + "content": "# Regenerates a repository upload token and returns the new token\n\nPOST /api/0/organizations/{organization\\_id\\_or\\_slug}/prevent/owner/{owner}/repository/{repository}/token/regenerate/\n\nRegenerates a repository upload token and returns the new token.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `owner`* (string)*\n\n REQUIRED\n\n The owner of the repository.\n\n* `repository`* (string)*\n\n REQUIRED\n\n The name of the repository.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/prevent/owner/{owner}/repository/{repository}/token/regenerate/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n.\n```\n" + }, + { + "path": "api/prevent/retrieve-aggregated-test-result-metrics-for-repository-owner-and-organization.md", + "title": "Retrieve aggregated test result metrics for repository, owner, and organization", + "hierarchy": [ + "Api", + "Prevent", + "Retrieve Aggregated Test Result Metrics For Repository Owner And Organization" + ], + "summary": "# Retrieve aggregated test result metrics for repository, owner, and organization", + "content": "# Retrieve aggregated test result metrics for repository, owner, and organization\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/prevent/owner/{owner}/repository/{repository}/test-results-aggregates/\n\nRetrieves aggregated test result metrics for a given repository and owner. Also accepts a query parameter to specify the time period for the metrics.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `owner`* (string)*\n\n REQUIRED\n\n The owner of the repository.\n\n* `repository`* (string)*\n\n REQUIRED\n\n The name of the repository.\n\n### Query Parameters:\n\n* `interval`* (string)*\n\n The time interval to search for results by.\n\n Available fields are:\n\n * `INTERVAL_30_DAY`\n * `INTERVAL_7_DAY`\n * `INTERVAL_1_DAY`\n\n* `branch`* (string)*\n\n The branch to search for results by. If not specified, the default is all branches.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/prevent/owner/{owner}/repository/{repository}/test-results-aggregates/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n.\n```\n" + }, + { + "path": "api/prevent/retrieve-paginated-list-of-test-results-for-repository-owner-and-organization.md", + "title": "Retrieve paginated list of test results for repository, owner, and organization", + "hierarchy": [ + "Api", + "Prevent", + "Retrieve Paginated List Of Test Results For Repository Owner And Organization" + ], + "summary": "# Retrieve paginated list of test results for repository, owner, and organization", + "content": "# Retrieve paginated list of test results for repository, owner, and organization\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/prevent/owner/{owner}/repository/{repository}/test-results/\n\nRetrieves the list of test results for a given repository and owner. Also accepts a number of query parameters to filter the results.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `owner`* (string)*\n\n REQUIRED\n\n The owner of the repository.\n\n* `repository`* (string)*\n\n REQUIRED\n\n The name of the repository.\n\n### Query Parameters:\n\n* `sortBy`* (string)*\n\n The property to sort results by. If not specified, the default is `TOTAL_FAIL_COUNT` in descending order. Use `-` for descending order.\n\n Available fields are:\n\n * `AVG_DURATION`\n * `FLAKE_RATE`\n * `FAILURE_RATE`\n * `TOTAL_FAIL_COUNT`\n * `UPDATED_AT`\n\n* `filterBy`* (string)*\n\n An optional field to filter by, which will constrain the results to only include tests that match the filter.\n\n Available fields are:\n\n * `FLAKY_TESTS`\n * `FAILED_TESTS`\n * `SLOWEST_TESTS`\n * `SKIPPED_TESTS`\n\n* `interval`* (string)*\n\n The time interval to search for results by.\n\n Available fields are:\n\n * `INTERVAL_30_DAY`\n * `INTERVAL_7_DAY`\n * `INTERVAL_1_DAY`\n\n* `branch`* (string)*\n\n The branch to search for results by. If not specified, the default is all branches.\n\n* `limit`* (integer)*\n\n The number of results to return. If not specified, defaults to 20.\n\n* `navigation`* (string)*\n\n Whether to get the previous or next page from paginated results. Use `next` for forward pagination after the cursor or `prev` for backward pagination before the cursor. If not specified, defaults to `next`. If no cursor is provided, the cursor is the beginning of the result set.\n\n* `cursor`* (string)*\n\n The cursor pointing to a specific position in the result set to start the query from. Results after the cursor will be returned if used with `next` or before the cursor if used with `prev` for `navigation`.\n\n* `term`* (string)*\n\n The term substring to filter name strings by using the `contains` operator.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/prevent/owner/{owner}/repository/{repository}/test-results/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n.\n```\n" + }, + { + "path": "api/prevent/retrieve-test-suites-belonging-to-a-repositorys-test-results.md", + "title": "Retrieve test suites belonging to a repository's test results", + "hierarchy": [ + "Api", + "Prevent", + "Retrieve Test Suites Belonging To A Repositorys Test Results" + ], + "summary": "# Retrieve test suites belonging to a repository's test results", + "content": "# Retrieve test suites belonging to a repository's test results\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/prevent/owner/{owner}/repository/{repository}/test-suites/\n\nRetrieves test suites belonging to a repository's test results. It accepts a list of test suites as a query parameter to specify individual test suites.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `owner`* (string)*\n\n REQUIRED\n\n The owner of the repository.\n\n* `repository`* (string)*\n\n REQUIRED\n\n The name of the repository.\n\n### Query Parameters:\n\n* `term`* (string)*\n\n The term substring to filter name strings by using the `contains` operator.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/prevent/owner/{owner}/repository/{repository}/test-suites/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n.\n```\n" + }, + { + "path": "api/prevent/retrieves-a-paginated-list-of-repository-tokens-for-a-given-owner.md", + "title": "Retrieves a paginated list of repository tokens for a given owner", + "hierarchy": [ + "Api", + "Prevent", + "Retrieves A Paginated List Of Repository Tokens For A Given Owner" + ], + "summary": "# Retrieves a paginated list of repository tokens for a given owner", + "content": "# Retrieves a paginated list of repository tokens for a given owner\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/prevent/owner/{owner}/repositories/tokens/\n\nRetrieves a paginated list of repository tokens for a given owner.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `owner`* (string)*\n\n REQUIRED\n\n The owner of the repository.\n\n### Query Parameters:\n\n* `limit`* (integer)*\n\n The number of results to return. If not specified, defaults to 20.\n\n* `navigation`* (string)*\n\n Whether to get the previous or next page from paginated results. Use `next` for forward pagination after the cursor or `prev` for backward pagination before the cursor. If not specified, defaults to `next`. If no cursor is provided, the cursor is the beginning of the result set.\n\n* `cursor`* (string)*\n\n The cursor pointing to a specific position in the result set to start the query from. Results after the cursor will be returned if used with `next` or before the cursor if used with `prev` for `navigation`.\n\n* `sortBy`* (string)*\n\n The property to sort results by. If not specified, the default is `COMMIT_DATE` in descending order. Use `-` for descending order.\n\n Available fields are:\n\n * `NAME`\n * `COMMIT_DATE`\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/prevent/owner/{owner}/repositories/tokens/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n.\n```\n" + }, + { + "path": "api/prevent/retrieves-a-single-repository-for-a-given-owner.md", + "title": "Retrieves a single repository for a given owner", + "hierarchy": [ + "Api", + "Prevent", + "Retrieves A Single Repository For A Given Owner" + ], + "summary": "# Retrieves a single repository for a given owner", + "content": "# Retrieves a single repository for a given owner\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/prevent/owner/{owner}/repository/{repository}/\n\nRetrieves repository data for a single repository.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `owner`* (string)*\n\n REQUIRED\n\n The owner of the repository.\n\n* `repository`* (string)*\n\n REQUIRED\n\n The name of the repository.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/prevent/owner/{owner}/repository/{repository}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n.\n```\n" + }, + { + "path": "api/prevent/retrieves-list-of-branches-for-a-given-owner-and-repository.md", + "title": "Retrieves list of branches for a given owner and repository", + "hierarchy": [ + "Api", + "Prevent", + "Retrieves List Of Branches For A Given Owner And Repository" + ], + "summary": "# Retrieves list of branches for a given owner and repository", + "content": "# Retrieves list of branches for a given owner and repository\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/prevent/owner/{owner}/repository/{repository}/branches/\n\nRetrieves branch data for a given owner and repository.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `owner`* (string)*\n\n REQUIRED\n\n The owner of the repository.\n\n* `repository`* (string)*\n\n REQUIRED\n\n The name of the repository.\n\n### Query Parameters:\n\n* `limit`* (integer)*\n\n The number of results to return. If not specified, defaults to 20.\n\n* `navigation`* (string)*\n\n Whether to get the previous or next page from paginated results. Use `next` for forward pagination after the cursor or `prev` for backward pagination before the cursor. If not specified, defaults to `next`. If no cursor is provided, the cursor is the beginning of the result set.\n\n* `cursor`* (string)*\n\n The cursor pointing to a specific position in the result set to start the query from. Results after the cursor will be returned if used with `next` or before the cursor if used with `prev` for `navigation`.\n\n* `term`* (string)*\n\n The term substring to filter name strings by using the `contains` operator.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/prevent/owner/{owner}/repository/{repository}/branches/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n.\n```\n" + }, + { + "path": "api/prevent/retrieves-list-of-repositories-for-a-given-owner.md", + "title": "Retrieves list of repositories for a given owner", + "hierarchy": [ + "Api", + "Prevent", + "Retrieves List Of Repositories For A Given Owner" + ], + "summary": "# Retrieves list of repositories for a given owner", + "content": "# Retrieves list of repositories for a given owner\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/prevent/owner/{owner}/repositories/\n\nRetrieves repository data for a given owner.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `owner`* (string)*\n\n REQUIRED\n\n The owner of the repository.\n\n### Query Parameters:\n\n* `limit`* (integer)*\n\n The number of results to return. If not specified, defaults to 20.\n\n* `navigation`* (string)*\n\n Whether to get the previous or next page from paginated results. Use `next` for forward pagination after the cursor or `prev` for backward pagination before the cursor. If not specified, defaults to `next`. If no cursor is provided, the cursor is the beginning of the result set.\n\n* `cursor`* (string)*\n\n The cursor pointing to a specific position in the result set to start the query from. Results after the cursor will be returned if used with `next` or before the cursor if used with `prev` for `navigation`.\n\n* `term`* (string)*\n\n The term substring to filter name strings by using the `contains` operator.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/prevent/owner/{owner}/repositories/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n.\n```\n" + }, + { + "path": "api/prevent/syncs-repositories-from-an-integrated-org-with-github.md", + "title": "Syncs repositories from an integrated org with GitHub", + "hierarchy": [ + "Api", + "Prevent", + "Syncs Repositories From An Integrated Org With Github" + ], + "summary": "# Syncs repositories from an integrated org with GitHub", + "content": "# Syncs repositories from an integrated org with GitHub\n\nPOST /api/0/organizations/{organization\\_id\\_or\\_slug}/prevent/owner/{owner}/repositories/sync/\n\nSyncs repositories for an integrated organization with GitHub.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `owner`* (string)*\n\n REQUIRED\n\n The owner of the repository.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/prevent/owner/{owner}/repositories/sync/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n.\n```\n" + }, + { + "path": "api/projects.md", + "title": "Projects", + "hierarchy": [ + "Api", + "Projects" + ], + "summary": "# Projects", + "content": "# Projects\n\n* #### [Add a Symbol Source to a Project](https://docs.sentry.io/api/projects/add-a-symbol-source-to-a-project.md)\n* #### [Add a Team to a Project](https://docs.sentry.io/api/projects/add-a-team-to-a-project.md)\n* #### [Create a New Client Key](https://docs.sentry.io/api/projects/create-a-new-client-key.md)\n* #### [Create a New Project](https://docs.sentry.io/api/projects/create-a-new-project.md)\n* #### [Delete a Client Key](https://docs.sentry.io/api/projects/delete-a-client-key.md)\n* #### [Delete a Project](https://docs.sentry.io/api/projects/delete-a-project.md)\n* #### [Delete a Specific Project's Debug Information File](https://docs.sentry.io/api/projects/delete-a-specific-projects-debug-information-file.md)\n* #### [Delete a Symbol Source from a Project](https://docs.sentry.io/api/projects/delete-a-symbol-source-from-a-project.md)\n* #### [Delete a Team from a Project](https://docs.sentry.io/api/projects/delete-a-team-from-a-project.md)\n* #### [Disable Spike Protection](https://docs.sentry.io/api/projects/disable-spike-protection.md)\n* #### [Enable Spike Protection](https://docs.sentry.io/api/projects/enable-spike-protection.md)\n* #### [List a Project's Client Keys](https://docs.sentry.io/api/projects/list-a-projects-client-keys.md)\n* #### [List a Project's Data Filters](https://docs.sentry.io/api/projects/list-a-projects-data-filters.md)\n* #### [List a Project's Debug Information Files](https://docs.sentry.io/api/projects/list-a-projects-debug-information-files.md)\n* #### [List a Project's Organization Members](https://docs.sentry.io/api/projects/list-a-projects-organization-members.md)\n* #### [List a Project's Service Hooks](https://docs.sentry.io/api/projects/list-a-projects-service-hooks.md)\n* #### [List a Project's User Feedback](https://docs.sentry.io/api/projects/list-a-projects-user-feedback.md)\n* #### [List a Project's Users](https://docs.sentry.io/api/projects/list-a-projects-users.md)\n* #### [List a Tag's Values](https://docs.sentry.io/api/projects/list-a-tags-values.md)\n* #### [List Your Projects](https://docs.sentry.io/api/projects/list-your-projects.md)\n* #### [Register a New Service Hook](https://docs.sentry.io/api/projects/register-a-new-service-hook.md)\n* #### [Remove a Service Hook](https://docs.sentry.io/api/projects/remove-a-service-hook.md)\n* #### [Retrieve a Client Key](https://docs.sentry.io/api/projects/retrieve-a-client-key.md)\n* #### [Retrieve a Project](https://docs.sentry.io/api/projects/retrieve-a-project.md)\n* #### [Retrieve a Project's Symbol Sources](https://docs.sentry.io/api/projects/retrieve-a-projects-symbol-sources.md)\n* #### [Retrieve a Service Hook](https://docs.sentry.io/api/projects/retrieve-a-service-hook.md)\n* #### [Retrieve Event Counts for a Project](https://docs.sentry.io/api/projects/retrieve-event-counts-for-a-project.md)\n* #### [Retrieve Ownership Configuration for a Project](https://docs.sentry.io/api/projects/retrieve-ownership-configuration-for-a-project.md)\n* #### [Submit User Feedback](https://docs.sentry.io/api/projects/submit-user-feedback.md)\n* #### [Update a Client Key](https://docs.sentry.io/api/projects/update-a-client-key.md)\n* #### [Update a Project](https://docs.sentry.io/api/projects/update-a-project.md)\n* #### [Update a Project's Symbol Source](https://docs.sentry.io/api/projects/update-a-projects-symbol-source.md)\n* #### [Update a Service Hook](https://docs.sentry.io/api/projects/update-a-service-hook.md)\n* #### [Update an Inbound Data Filter](https://docs.sentry.io/api/projects/update-an-inbound-data-filter.md)\n* #### [Update Ownership Configuration for a Project](https://docs.sentry.io/api/projects/update-ownership-configuration-for-a-project.md)\n* #### [Upload a New File](https://docs.sentry.io/api/projects/upload-a-new-file.md)\n" + }, + { + "path": "api/projects/add-a-symbol-source-to-a-project.md", + "title": "Add a Symbol Source to a Project", + "hierarchy": [ + "Api", + "Projects", + "Add A Symbol Source To A Project" + ], + "summary": "# Add a Symbol Source to a Project", + "content": "# Add a Symbol Source to a Project\n\nPOST /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/symbol-sources/\n\nAdd a custom symbol source to a project.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n### Body Parameters\n\n* `type`* (string)*\n\n REQUIRED\n\n The type of the source.\n\n * `http` - SymbolServer (HTTP)\n * `gcs` - Google Cloud Storage\n * `s3` - Amazon S3\n\n* `name`* (string)*\n\n REQUIRED\n\n The human-readable name of the source.\n\n* `id`* (string)*\n\n 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.\n\n* `layout`* (object)*\n\n 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\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\n **`casing`** ***(string)*** - The layout of the folder structure. The options are:\n\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 ```\n\n* `filters`* (object)*\n\n 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\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 ```\n\n* `url`* (string)*\n\n The source's URL. Optional for HTTP sources, invalid for all others.\n\n* `username`* (string)*\n\n The user name for accessing the source. Optional for HTTP sources, invalid for all others.\n\n* `password`* (string)*\n\n The password for accessing the source. Optional for HTTP sources, invalid for all others.\n\n* `bucket`* (string)*\n\n The GCS or S3 bucket where the source resides. Required for GCS and S3 source, invalid for HTTP sources.\n\n* `region`* (string)*\n\n 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. Vi" + }, + { + "path": "api/projects/add-a-team-to-a-project.md", + "title": "Add a Team to a Project", + "hierarchy": [ + "Api", + "Projects", + "Add A Team To A Project" + ], + "summary": "# Add a Team to a Project", + "content": "# Add a Team to a Project\n\nPOST /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/teams/{team\\_id\\_or\\_slug}/\n\nGive a team access to a project.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n* `team_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the team the resource belongs to.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/teams/{team_id_or_slug}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"6758470122493650\",\n \"slug\": \"the-spoiled-yoghurt\",\n \"name\": \"The Spoiled Yoghurt\",\n \"platform\": \"javascript\",\n \"dateCreated\": \"2023-03-29T15:25:21.344565Z\",\n \"isBookmarked\": false,\n \"isMember\": true,\n \"features\": [\n \"alert-filters\",\n \"custom-inbound-filters\",\n \"data-forwarding\",\n \"discard-groups\",\n \"minidump\",\n \"rate-limits\",\n \"servicehooks\",\n \"similarity-indexing\",\n \"similarity-indexing-v2\",\n \"similarity-view\",\n \"similarity-view-v2\"\n ],\n \"firstEvent\": null,\n \"firstTransactionEvent\": false,\n \"access\": [\n \"member:read\",\n \"event:read\",\n \"project:admin\",\n \"team:write\",\n \"project:write\",\n \"team:admin\",\n \"project:read\",\n \"org:integrations\",\n \"org:read\",\n \"project:releases\",\n \"team:read\",\n \"alerts:write\",\n \"event:admin\",\n \"event:write\",\n \"alerts:read\"\n ],\n \"hasAccess\": true,\n \"hasMinifiedStackTrace\": false,\n \"hasFeedbacks\": false,\n \"hasMonitors\": false,\n \"hasNewFeedbacks\": false,\n \"hasProfiles\": false,\n \"hasReplays\": false,\n \"hasFlags\": false,\n \"hasSessions\": false,\n \"hasInsightsHttp\": true,\n \"hasInsightsDb\": false,\n \"hasInsightsAssets\": true,\n \"hasInsightsAppStart\": false,\n \"hasInsightsScreenLoad\": false,\n \"hasInsightsVitals\": false,\n \"hasInsightsCaches\": false,\n \"hasInsightsQueues\": false,\n \"hasInsightsLlmMonitoring\": false,\n \"hasInsightsAgentMonitoring\": false,\n \"hasInsightsMCP\": false,\n \"hasLogs\": false,\n \"isInternal\": false,\n \"isPublic\": false,\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n },\n \"color\": \"#5cbf3f\",\n \"status\": \"active\",\n \"team\": {\n \"id\": \"2349234102\",\n \"name\": \"Prime Mover\",\n \"slug\": \"prime-mover\"\n },\n \"teams\": [\n {\n \"id\": \"2349234102\",\n \"name\": \"Prime Mover\",\n \"slug\": \"prime-mover\"\n },\n {\n \"id\": \"47584447\",\n \"name\": \"Powerful Abolitionist\",\n \"slug\": \"powerful-abolitionist\"\n }\n ]\n}\n```\n" + }, + { + "path": "api/projects/create-a-new-client-key.md", + "title": "Create a New Client Key", + "hierarchy": [ + "Api", + "Projects", + "Create A New Client Key" + ], + "summary": "# Create a New Client Key", + "content": "# Create a New Client Key\n\nPOST /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/keys/\n\nCreate a new client key bound to a project. The key's secret and public key are generated by the server.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n### Body Parameters\n\n* `name`* (string)*\n\n The optional name of the key. If not provided it will be automatically generated.\n\n* `rateLimit`* (object)*\n\n Applies a rate limit to cap the number of errors accepted during a given time window. To disable entirely set `rateLimit` to null.\n\n ```json\n {\n \"rateLimit\": {\n \"window\": 7200, // time in seconds\n \"count\": 1000 // error cap\n }\n }\n ```\n\n* `useCase`* (string)*\n\n * `user`\n * `profiling`\n * `escalating_issues`\n * `tempest`\n * `demo`\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/keys/ \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"60120449b6b1d5e45f75561e6dabd80b\",\n \"name\": \"Liked Pegasus\",\n \"label\": \"Liked Pegasus\",\n \"public\": \"60120449b6b1d5e45f75561e6dabd80b\",\n \"secret\": \"189485c3b8ccf582bf5e12c530ef8858\",\n \"projectId\": 4505281256090153,\n \"isActive\": true,\n \"rateLimit\": {\n \"window\": 7200,\n \"count\": 1000\n },\n \"dsn\": {\n \"secret\": \"https://a785682ddda742d7a8a4088810e67701:bcd99b3790b3441c85ce4b1eaa854f66@o4504765715316736.ingest.sentry.io/4505281256090153\",\n \"public\": \"https://a785682ddda742d7a8a4088810e67791@o4504765715316736.ingest.sentry.io/4505281256090153\",\n \"csp\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/csp-report/?sentry_key=a785682ddda719b7a8a4011110d75598\",\n \"security\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/security/?sentry_key=a785682ddda719b7a8a4011110d75598\",\n \"minidump\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/minidump/?sentry_key=a785682ddda719b7a8a4011110d75598\",\n \"playstation\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/playstation/?sentry_key=a785682ddda719b7a8a4011110d75598\",\n \"otlp_traces\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/otlp/v1/traces\",\n \"otlp_logs\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/otlp/v1/logs\",\n \"nel\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/nel/?sentry_key=a785682ddda719b7a8a4011110d75598\",\n \"unreal\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/unreal/a785682ddda719b7a8a4011110d75598/\",\n \"cdn\": \"https://js.sentry-cdn.com/a785682ddda719b7a8a4011110d75598.min.js\",\n \"crons\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/crons/___MONITOR_SLUG___/a785682ddda719b7a8a4011110d75598/\"\n },\n \"browserSdkVersion\": \"7.x\",\n \"browserSdk\": {\n \"choices\": [\n [\n \"latest\",\n \"latest\"\n ],\n [\n \"7.x\",\n \"7.x\"\n ]\n ]\n },\n \"dateCreated\": \"2023-06-21T19:50:26.036254Z\",\n \"dynamicSdkLoaderOptions\": {\n \"hasReplay\": true,\n \"hasPerformance\": true,\n \"hasDebug\": true\n }\n}\n```\n" + }, + { + "path": "api/projects/create-a-new-project.md", + "title": "Create a New Project", + "hierarchy": [ + "Api", + "Projects", + "Create A New Project" + ], + "summary": "# Create a New Project", + "content": "# Create a New Project\n\nPOST /api/0/teams/{organization\\_id\\_or\\_slug}/{team\\_id\\_or\\_slug}/projects/\n\nCreate a new project bound to a team.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `team_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the team the resource belongs to.\n\n### Body Parameters\n\n* `name`* (string)*\n\n REQUIRED\n\n The name for the project.\n\n* `slug`* (string)*\n\n Uniquely identifies a project and is used for the interface. If not provided, it is automatically generated from the name.\n\n* `platform`* (string)*\n\n The platform for the project.\n\n* `default_rules`* (boolean)*\n\n Defaults to true where the behavior is to alert the user on every new issue. Setting this to false will turn this off and the user must create their own alerts to be notified of new issues.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/projects/ \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"team\": {\n \"id\": \"2349234102\",\n \"name\": \"Prime Mover\",\n \"slug\": \"prime-mover\"\n },\n \"teams\": [\n {\n \"id\": \"2349234102\",\n \"name\": \"Prime Mover\",\n \"slug\": \"prime-mover\"\n },\n {\n \"id\": \"47584447\",\n \"name\": \"Powerful Abolitionist\",\n \"slug\": \"powerful-abolitionist\"\n }\n ],\n \"id\": \"6758470122493650\",\n \"slug\": \"the-spoiled-yoghurt\",\n \"name\": \"The Spoiled Yoghurt\",\n \"isBookmarked\": false,\n \"isMember\": true,\n \"access\": [\n \"project:read\",\n \"event:read\",\n \"team:read\",\n \"alerts:read\",\n \"org:read\",\n \"event:write\",\n \"project:releases\",\n \"member:read\"\n ],\n \"hasAccess\": true,\n \"dateCreated\": \"2023-03-29T15:25:21.344565Z\",\n \"environments\": [\n \"production\"\n ],\n \"features\": [\n \"alert-filters\",\n \"custom-inbound-filters\",\n \"data-forwarding\",\n \"discard-groups\",\n \"minidump\",\n \"rate-limits\",\n \"servicehooks\",\n \"similarity-indexing\",\n \"similarity-indexing-v2\",\n \"similarity-view\",\n \"similarity-view-v2\"\n ],\n \"firstEvent\": null,\n \"firstTransactionEvent\": true,\n \"hasSessions\": false,\n \"hasProfiles\": false,\n \"hasReplays\": false,\n \"hasFlags\": false,\n \"hasMonitors\": false,\n \"hasFeedbacks\": false,\n \"hasNewFeedbacks\": false,\n \"hasMinifiedStackTrace\": false,\n \"hasInsightsHttp\": true,\n \"hasInsightsDb\": false,\n \"hasInsightsAssets\": false,\n \"hasInsightsAppStart\": false,\n \"hasInsightsScreenLoad\": false,\n \"hasInsightsVitals\": false,\n \"hasInsightsCaches\": true,\n \"hasInsightsQueues\": true,\n \"hasInsightsLlmMonitoring\": false,\n \"hasInsightsAgentMonitoring\": false,\n \"hasInsightsMCP\": false,\n \"hasLogs\": false,\n \"platform\": \"node-express\",\n \"platforms\": [],\n \"latestRelease\": null,\n \"hasUserReports\": false,\n \"latestDeploys\": null\n}\n```\n" + }, + { + "path": "api/projects/delete-a-client-key.md", + "title": "Delete a Client Key", + "hierarchy": [ + "Api", + "Projects", + "Delete A Client Key" + ], + "summary": "# Delete a Client Key", + "content": "# Delete a Client Key\n\nDELETE /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/keys/{key\\_id}/\n\nDelete a client key for a given project.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n* `key_id`* (string)*\n\n REQUIRED\n\n The ID of the key to delete.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/keys/{key_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nNo Content.\n```\n" + }, + { + "path": "api/projects/delete-a-project.md", + "title": "Delete a Project", + "hierarchy": [ + "Api", + "Projects", + "Delete A Project" + ], + "summary": "# Delete a Project", + "content": "# Delete a Project\n\nDELETE /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/\n\nSchedules a project for deletion.\n\nDeletion happens asynchronously and therefore is not immediate. However once deletion has begun the state of a project changes and will be hidden from most public views.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nNo Content.\n```\n" + }, + { + "path": "api/projects/delete-a-specific-projects-debug-information-file.md", + "title": "Delete a Specific Project's Debug Information File", + "hierarchy": [ + "Api", + "Projects", + "Delete A Specific Projects Debug Information File" + ], + "summary": "# Delete a Specific Project's Debug Information File", + "content": "# Delete a Specific Project's Debug Information File\n\nDELETE /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/files/dsyms/\n\nDelete a debug information file for a given project.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the file belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project to delete the DIF.\n\n### Query Parameters:\n\n* `id`* (string)*\n\n REQUIRED\n\n The ID of the DIF to delete.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:releases`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/files/dsyms/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nSuccess.\n```\n" + }, + { + "path": "api/projects/delete-a-symbol-source-from-a-project.md", + "title": "Delete a Symbol Source from a Project", + "hierarchy": [ + "Api", + "Projects", + "Delete A Symbol Source From A Project" + ], + "summary": "# Delete a Symbol Source from a Project", + "content": "# Delete a Symbol Source from a Project\n\nDELETE /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/symbol-sources/\n\nDelete a custom symbol source from a project.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n### Query Parameters:\n\n* `id`* (string)*\n\n REQUIRED\n\n The ID of the source to delete.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/symbol-sources/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nNo Content.\n```\n" + }, + { + "path": "api/projects/delete-a-team-from-a-project.md", + "title": "Delete a Team from a Project", + "hierarchy": [ + "Api", + "Projects", + "Delete A Team From A Project" + ], + "summary": "# Delete a Team from a Project", + "content": "# Delete a Team from a Project\n\nDELETE /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/teams/{team\\_id\\_or\\_slug}/\n\nRevoke a team's access to a project.\n\nNote that Team Admins can only revoke access to teams they are admins of.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n* `team_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the team the resource belongs to.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/teams/{team_id_or_slug}/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"6758470122493650\",\n \"slug\": \"the-spoiled-yoghurt\",\n \"name\": \"The Spoiled Yoghurt\",\n \"platform\": \"javascript\",\n \"dateCreated\": \"2023-03-29T15:25:21.344565Z\",\n \"isBookmarked\": false,\n \"isMember\": true,\n \"features\": [\n \"alert-filters\",\n \"custom-inbound-filters\",\n \"data-forwarding\",\n \"discard-groups\",\n \"minidump\",\n \"rate-limits\",\n \"servicehooks\",\n \"similarity-indexing\",\n \"similarity-indexing-v2\",\n \"similarity-view\",\n \"similarity-view-v2\"\n ],\n \"firstEvent\": null,\n \"firstTransactionEvent\": false,\n \"access\": [\n \"member:read\",\n \"event:read\",\n \"project:admin\",\n \"team:write\",\n \"project:write\",\n \"team:admin\",\n \"project:read\",\n \"org:integrations\",\n \"org:read\",\n \"project:releases\",\n \"team:read\",\n \"alerts:write\",\n \"event:admin\",\n \"event:write\",\n \"alerts:read\"\n ],\n \"hasAccess\": true,\n \"hasMinifiedStackTrace\": false,\n \"hasFeedbacks\": false,\n \"hasMonitors\": false,\n \"hasNewFeedbacks\": false,\n \"hasProfiles\": false,\n \"hasReplays\": false,\n \"hasFlags\": false,\n \"hasSessions\": false,\n \"hasInsightsHttp\": true,\n \"hasInsightsDb\": false,\n \"hasInsightsAssets\": true,\n \"hasInsightsAppStart\": false,\n \"hasInsightsScreenLoad\": false,\n \"hasInsightsVitals\": false,\n \"hasInsightsCaches\": false,\n \"hasInsightsQueues\": false,\n \"hasInsightsLlmMonitoring\": false,\n \"hasInsightsAgentMonitoring\": false,\n \"hasInsightsMCP\": false,\n \"hasLogs\": false,\n \"isInternal\": false,\n \"isPublic\": false,\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n },\n \"color\": \"#5cbf3f\",\n \"status\": \"active\",\n \"team\": {\n \"id\": \"2349234102\",\n \"name\": \"Prime Mover\",\n \"slug\": \"prime-mover\"\n },\n \"teams\": [\n {\n \"id\": \"2349234102\",\n \"name\": \"Prime Mover\",\n \"slug\": \"prime-mover\"\n }\n ]\n}\n```\n" + }, + { + "path": "api/projects/disable-spike-protection.md", + "title": "Disable Spike Protection", + "hierarchy": [ + "Api", + "Projects", + "Disable Spike Protection" + ], + "summary": "# Disable Spike Protection", + "content": "# Disable Spike Protection\n\nDELETE /api/0/organizations/{organization\\_id\\_or\\_slug}/spike-protections/\n\nDisables Spike Protection feature for some of the projects within the organization.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the projects belong to\n\n### Body Parameters\n\n* `projects`* (array(string))*\n\n REQUIRED\n\n Slugs of projects to disable Spike Protection for. Set to `$all` to disable Spike Protection for all the projects in the organization.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:read`\n* `project:write`\n* `project:admin`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/spike-protections/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSE\n\n```\nCopied\nSuccess.\n```\n" + }, + { + "path": "api/projects/enable-spike-protection.md", + "title": "Enable Spike Protection", + "hierarchy": [ + "Api", + "Projects", + "Enable Spike Protection" + ], + "summary": "# Enable Spike Protection", + "content": "# Enable Spike Protection\n\nPOST /api/0/organizations/{organization\\_id\\_or\\_slug}/spike-protections/\n\nEnables Spike Protection feature for some of the projects within the organization.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the projects belong to\n\n### Body Parameters\n\n* `projects`* (array(string))*\n\n REQUIRED\n\n Slugs of projects to enable Spike Protection for. Set to `$all` to enable Spike Protection for all the projects in the organization.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:read`\n* `project:write`\n* `project:admin`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/spike-protections/ \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSE\n\n```\nCopied\nSuccess.\n```\n" + }, + { + "path": "api/projects/list-a-projects-client-keys.md", + "title": "List a Project's Client Keys", + "hierarchy": [ + "Api", + "Projects", + "List A Projects Client Keys" + ], + "summary": "# List a Project's Client Keys", + "content": "# List a Project's Client Keys\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/keys/\n\nReturn a list of client keys bound to a project.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n### Query Parameters:\n\n* `cursor`* (string)*\n\n A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.\n\n* `status`* (string)*\n\n Filter client keys by `active` or `inactive`. Defaults to returning all keys if not specified.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/keys/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"id\": \"60120449b6b1d5e45f75561e6dabd80b\",\n \"name\": \"Liked Pegasus\",\n \"label\": \"Liked Pegasus\",\n \"public\": \"60120449b6b1d5e45f75561e6dabd80b\",\n \"secret\": \"189485c3b8ccf582bf5e12c530ef8858\",\n \"projectId\": 4505281256090153,\n \"isActive\": true,\n \"rateLimit\": {\n \"window\": 7200,\n \"count\": 1000\n },\n \"dsn\": {\n \"secret\": \"https://a785682ddda742d7a8a4088810e67701:bcd99b3790b3441c85ce4b1eaa854f66@o4504765715316736.ingest.sentry.io/4505281256090153\",\n \"public\": \"https://a785682ddda742d7a8a4088810e67791@o4504765715316736.ingest.sentry.io/4505281256090153\",\n \"csp\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/csp-report/?sentry_key=a785682ddda719b7a8a4011110d75598\",\n \"security\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/security/?sentry_key=a785682ddda719b7a8a4011110d75598\",\n \"minidump\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/minidump/?sentry_key=a785682ddda719b7a8a4011110d75598\",\n \"playstation\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/playstation/?sentry_key=a785682ddda719b7a8a4011110d75598\",\n \"otlp_traces\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/otlp/v1/traces\",\n \"otlp_logs\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/otlp/v1/logs\",\n \"nel\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/nel/?sentry_key=a785682ddda719b7a8a4011110d75598\",\n \"unreal\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/unreal/a785682ddda719b7a8a4011110d75598/\",\n \"cdn\": \"https://js.sentry-cdn.com/a785682ddda719b7a8a4011110d75598.min.js\",\n \"crons\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/crons/___MONITOR_SLUG___/a785682ddda719b7a8a4011110d75598/\"\n },\n \"browserSdkVersion\": \"7.x\",\n \"browserSdk\": {\n \"choices\": [\n [\n \"latest\",\n \"latest\"\n ],\n [\n \"7.x\",\n \"7.x\"\n ]\n ]\n },\n \"dateCreated\": \"2023-06-21T19:50:26.036254Z\",\n \"dynamicSdkLoaderOptions\": {\n \"hasReplay\": true,\n \"hasPerformance\": true,\n \"hasDebug\": true\n }\n },\n {\n \"id\": \"da8d69cb17e80677b76e08fde4656b93\",\n \"name\": \"Bold Oarfish\",\n \"label\": \"Bold Oarfish\",\n \"public\": \"da8d69cb17e80677b76e08fde4656b93\",\n \"secret\": \"5c241ebc42ccfbec281cbefbedc7ab96\",\n \"projectId\": 4505281256090153,\n \"isActive\": true,\n \"rateLimit\": null,\n \"dsn\": {\n \"secret\": \"https://a785682ddda742d7a8a4088810e67701:bcd99b3790b3441c85ce4b1eaa854f66@o4504765715316736.ingest.sentry.io/4505281256090153\",\n \"public\": \"https://a785682ddda742d7a8a4088810e67791@o4504765715316736.ingest.sentry.io/4505281256090153\",\n \"csp\": \"https://o4504765715316736.ingest.sentry" + }, + { + "path": "api/projects/list-a-projects-data-filters.md", + "title": "List a Project's Data Filters", + "hierarchy": [ + "Api", + "Projects", + "List A Projects Data Filters" + ], + "summary": "# List a Project's Data Filters", + "content": "# List a Project's Data Filters\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/filters/\n\nRetrieve a list of filters for a given project. `active` will be either a boolean or a list for the legacy browser filters.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/filters/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"id\": \"browser-extensions\",\n \"active\": false\n },\n {\n \"id\": \"filtered-transaction\",\n \"active\": true\n },\n {\n \"id\": \"legacy-browsers\",\n \"active\": [\n \"opera\",\n \"edge\",\n \"safari\",\n \"chrome\",\n \"ie\",\n \"opera_mini\",\n \"firefox\",\n \"android\"\n ]\n },\n {\n \"id\": \"localhost\",\n \"active\": false\n },\n {\n \"id\": \"web-crawlers\",\n \"active\": true\n }\n]\n```\n" + }, + { + "path": "api/projects/list-a-projects-debug-information-files.md", + "title": "List a Project's Debug Information Files", + "hierarchy": [ + "Api", + "Projects", + "List A Projects Debug Information Files" + ], + "summary": "# List a Project's Debug Information Files", + "content": "# List a Project's Debug Information Files\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/files/dsyms/\n\nRetrieve a list of debug information files for a given project.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the file belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project to list the DIFs of.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:read`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/files/dsyms/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSE\n\n```\nCopied\nSuccess.\n```\n" + }, + { + "path": "api/projects/list-a-projects-organization-members.md", + "title": "List a Project's Organization Members", + "hierarchy": [ + "Api", + "Projects", + "List A Projects Organization Members" + ], + "summary": "# List a Project's Organization Members", + "content": "# List a Project's Organization Members\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/members/\n\nReturns a list of active organization members that belong to any team assigned to the project.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/members/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"id\": \"57377908164\",\n \"email\": \"sirpenguin@antarcticarocks.com\",\n \"name\": \"Sir Penguin\",\n \"user\": {\n \"id\": \"280094367316\",\n \"name\": \"Sir Penguin\",\n \"username\": \"sirpenguin@antarcticarocks.com\",\n \"email\": \"sirpenguin@antarcticarocks.com\",\n \"avatarUrl\": \"https://secure.gravatar.com/avatar/16aeb26c5fdba335c7078e9e9ddb5149?s=32&d=mm\",\n \"isActive\": true,\n \"hasPasswordAuth\": true,\n \"isManaged\": false,\n \"dateJoined\": \"2021-07-06T21:13:58.375239Z\",\n \"lastLogin\": \"2021-08-02T18:25:00.051182Z\",\n \"has2fa\": false,\n \"lastActive\": \"2021-08-02T21:32:18.836829Z\",\n \"isSuperuser\": false,\n \"isStaff\": false,\n \"experiments\": {},\n \"emails\": [\n {\n \"id\": \"2153450836\",\n \"email\": \"sirpenguin@antarcticarocks.com\",\n \"is_verified\": true\n }\n ],\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n },\n \"canReset2fa\": true\n },\n \"orgRole\": \"member\",\n \"pending\": false,\n \"expired\": false,\n \"flags\": {\n \"idp:provisioned\": false,\n \"idp:role-restricted\": false,\n \"sso:linked\": false,\n \"sso:invalid\": false,\n \"member-limit:restricted\": false,\n \"partnership:restricted\": false\n },\n \"dateCreated\": \"2021-07-06T21:13:01.120263Z\",\n \"inviteStatus\": \"approved\",\n \"inviterName\": \"maininviter@antarcticarocks.com\"\n },\n {\n \"id\": \"57377908165\",\n \"email\": \"rockhopper@antarcticarocks.com\",\n \"name\": \"Rockhopper\",\n \"orgRole\": \"member\",\n \"pending\": true,\n \"expired\": false,\n \"flags\": {\n \"idp:provisioned\": false,\n \"idp:role-restricted\": false,\n \"sso:linked\": false,\n \"sso:invalid\": false,\n \"member-limit:restricted\": false,\n \"partnership:restricted\": false\n },\n \"dateCreated\": \"2021-07-07T21:13:01.120263Z\",\n \"inviteStatus\": \"pending\",\n \"inviterName\": \"maininviter@antarcticarocks.com\"\n }\n]\n```\n" + }, + { + "path": "api/projects/list-a-projects-service-hooks.md", + "title": "List a Project's Service Hooks", + "hierarchy": [ + "Api", + "Projects", + "List A Projects Service Hooks" + ], + "summary": "# List a Project's Service Hooks", + "content": "# List a Project's Service Hooks\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/hooks/\n\nReturn a list of service hooks bound to a project.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the client keys belong to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the client keys belong to.\n\n### Query Parameters:\n\n* `cursor`* (string)*\n\n A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:read`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/hooks/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"dateCreated\": \"2018-11-06T21:20:08.143Z\",\n \"events\": [\n \"event.alert\",\n \"event.created\"\n ],\n \"id\": \"4f9d73e63b7144ecb8944c41620a090b\",\n \"secret\": \"8fcac28aaa4c4f5fa572b61d40a8e084364db25fd37449c299e5a41c0504cbc2\",\n \"status\": \"active\",\n \"url\": \"https://empowerplant.io/sentry-hook\"\n }\n]\n```\n" + }, + { + "path": "api/projects/list-a-projects-user-feedback.md", + "title": "List a Project's User Feedback", + "hierarchy": [ + "Api", + "Projects", + "List A Projects User Feedback" + ], + "summary": "# List a Project's User Feedback", + "content": "# List a Project's User Feedback\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/user-feedback/\n\nReturn 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.md#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.md) with the filter `issue.category:feedback`.*\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:read`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/user-feedback/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"comments\": \"It broke!\",\n \"dateCreated\": \"2018-11-06T21:20:11.468Z\",\n \"email\": \"jane@example.com\",\n \"event\": {\n \"eventID\": \"14bad9a2e3774046977a21440ddb39b2\",\n \"id\": null\n },\n \"eventID\": \"14bad9a2e3774046977a21440ddb39b2\",\n \"id\": \"1\",\n \"issue\": null,\n \"name\": \"Jane Smith\",\n \"user\": null\n }\n]\n```\n" + }, + { + "path": "api/projects/list-a-projects-users.md", + "title": "List a Project's Users", + "hierarchy": [ + "Api", + "Projects", + "List A Projects Users" + ], + "summary": "# List a Project's Users", + "content": "# List a Project's Users\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/users/\n\nReturn a list of users seen within this project.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project.\n\n### Query Parameters:\n\n* `query`* (string)*\n\n 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`\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:read`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/users/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"username\": \"sentry\",\n \"email\": \"sentry@example.com\"\n }\n]\n```\n" + }, + { + "path": "api/projects/list-a-tags-values.md", + "title": "List a Tag's Values", + "hierarchy": [ + "Api", + "Projects", + "List A Tags Values" + ], + "summary": "# List a Tag's Values", + "content": "# List a Tag's Values\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/tags/{key}/values/\n\nReturn a list of values associated with this key. The `query` parameter can be used to to perform a \"contains\" match on values.\n\nWhen [paginated](https://docs.sentry.io/api/pagination.md) can return at most 1000 values.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project.\n\n* `key`* (string)*\n\n REQUIRED\n\n The tag key to look up.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:read`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/tags/{key}/values/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"name\": \"mint_choco\"\n }\n]\n```\n" + }, + { + "path": "api/projects/list-your-projects.md", + "title": "List Your Projects", + "hierarchy": [ + "Api", + "Projects", + "List Your Projects" + ], + "summary": "# List Your Projects", + "content": "# List Your Projects\n\nGET /api/0/projects/\n\nReturn a list of projects available to the authenticated session.\n\n### Query Parameters:\n\n* `cursor`* (string)*\n\n A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:read`\n\n```\ncurl https://sentry.io/api/0/projects/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n },\n \"color\": \"#bf6e3f\",\n \"dateCreated\": \"2018-11-06T21:20:08.064Z\",\n \"features\": [\n \"servicehooks\",\n \"sample-events\",\n \"data-forwarding\",\n \"rate-limits\",\n \"minidump\"\n ],\n \"firstEvent\": null,\n \"hasAccess\": true,\n \"id\": \"4\",\n \"isBookmarked\": false,\n \"isInternal\": false,\n \"isMember\": true,\n \"isPublic\": false,\n \"name\": \"The Spoiled Yoghurt\",\n \"organization\": {\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n },\n \"dateCreated\": \"2018-11-06T21:19:55.101Z\",\n \"id\": \"2\",\n \"isEarlyAdopter\": false,\n \"name\": \"The Interstellar Jurisdiction\",\n \"require2FA\": false,\n \"slug\": \"the-interstellar-jurisdiction\",\n \"status\": {\n \"id\": \"active\",\n \"name\": \"active\"\n }\n },\n \"platform\": null,\n \"slug\": \"the-spoiled-yoghurt\",\n \"status\": \"active\"\n },\n {\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n },\n \"color\": \"#bf5b3f\",\n \"dateCreated\": \"2018-11-06T21:19:58.536Z\",\n \"features\": [\n \"releases\",\n \"sample-events\",\n \"minidump\",\n \"servicehooks\",\n \"rate-limits\",\n \"data-forwarding\"\n ],\n \"firstEvent\": null,\n \"hasAccess\": true,\n \"id\": \"3\",\n \"isBookmarked\": false,\n \"isInternal\": false,\n \"isMember\": true,\n \"isPublic\": false,\n \"name\": \"Prime Mover\",\n \"organization\": {\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n },\n \"dateCreated\": \"2018-11-06T21:19:55.101Z\",\n \"id\": \"2\",\n \"isEarlyAdopter\": false,\n \"name\": \"The Interstellar Jurisdiction\",\n \"require2FA\": false,\n \"slug\": \"the-interstellar-jurisdiction\",\n \"status\": {\n \"id\": \"active\",\n \"name\": \"active\"\n }\n },\n \"platform\": null,\n \"slug\": \"prime-mover\",\n \"status\": \"active\"\n },\n {\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n },\n \"color\": \"#3fbf7f\",\n \"dateCreated\": \"2018-11-06T21:19:55.121Z\",\n \"features\": [\n \"releases\",\n \"sample-events\",\n \"minidump\",\n \"servicehooks\",\n \"rate-limits\",\n \"data-forwarding\"\n ],\n \"firstEvent\": null,\n \"hasAccess\": true,\n \"id\": \"2\",\n \"isBookmarked\": false,\n \"isInternal\": false,\n \"isMember\": true,\n \"isPublic\": false,\n \"name\": \"Pump Station\",\n \"organization\": {\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n },\n \"dateCreated\": \"2018-11-06T21:19:55.101Z\",\n \"id\": \"2\",\n \"isEarlyAdopter\": false,\n \"name\": \"The Interstellar Jurisdiction\",\n \"require2FA\": false,\n \"slug\": \"the-interstellar-jurisdiction\",\n \"status\": {\n \"id\": \"active\",\n \"name\": \"active\"\n }\n },\n \"platform\": null,\n \"slug\": \"pump-station\",\n \"status\": \"active\"\n }\n]\n```\n" + }, + { + "path": "api/projects/register-a-new-service-hook.md", + "title": "Register a New Service Hook", + "hierarchy": [ + "Api", + "Projects", + "Register A New Service Hook" + ], + "summary": "# Register a New Service Hook", + "content": "# Register a New Service Hook\n\nPOST /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/hooks/\n\nRegister 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.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the client keys belong to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the client keys belong to.\n\n### Body Parameters\n\n* `url`* (string)*\n\n REQUIRED\n\n The URL for the webhook.\n\n* `events`* (array(string))*\n\n REQUIRED\n\n The events to subscribe to.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/hooks/ \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/json' \\\n -d '{\"url\":\"https://empowerplant.io/sentry-hook\",\"events\":[\"event.alert\",\"event.created\"]}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"dateCreated\": \"2018-11-06T21:20:08.143Z\",\n \"events\": [\n \"event.alert\",\n \"event.created\"\n ],\n \"id\": \"4f9d73e63b7144ecb8944c41620a090b\",\n \"secret\": \"8fcac28aaa4c4f5fa572b61d40a8e084364db25fd37449c299e5a41c0504cbc2\",\n \"status\": \"active\",\n \"url\": \"https://empowerplant.io/sentry-hook\"\n}\n```\n" + }, + { + "path": "api/projects/remove-a-service-hook.md", + "title": "Remove a Service Hook", + "hierarchy": [ + "Api", + "Projects", + "Remove A Service Hook" + ], + "summary": "# Remove a Service Hook", + "content": "# Remove a Service Hook\n\nDELETE /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/hooks/{hook\\_id}/\n\nRemove a service hook.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the client keys belong to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the client keys belong to.\n\n* `hook_id`* (string)*\n\n REQUIRED\n\n The GUID of the service hook.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/hooks/{hook_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nSuccess.\n```\n" + }, + { + "path": "api/projects/retrieve-a-client-key.md", + "title": "Retrieve a Client Key", + "hierarchy": [ + "Api", + "Projects", + "Retrieve A Client Key" + ], + "summary": "# Retrieve a Client Key", + "content": "# Retrieve a Client Key\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/keys/{key\\_id}/\n\nReturn a client key bound to a project.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n* `key_id`* (string)*\n\n REQUIRED\n\n The ID of the client key\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/keys/{key_id}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"60120449b6b1d5e45f75561e6dabd80b\",\n \"name\": \"Liked Pegasus\",\n \"label\": \"Liked Pegasus\",\n \"public\": \"60120449b6b1d5e45f75561e6dabd80b\",\n \"secret\": \"189485c3b8ccf582bf5e12c530ef8858\",\n \"projectId\": 4505281256090153,\n \"isActive\": true,\n \"rateLimit\": {\n \"window\": 7200,\n \"count\": 1000\n },\n \"dsn\": {\n \"secret\": \"https://a785682ddda742d7a8a4088810e67701:bcd99b3790b3441c85ce4b1eaa854f66@o4504765715316736.ingest.sentry.io/4505281256090153\",\n \"public\": \"https://a785682ddda742d7a8a4088810e67791@o4504765715316736.ingest.sentry.io/4505281256090153\",\n \"csp\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/csp-report/?sentry_key=a785682ddda719b7a8a4011110d75598\",\n \"security\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/security/?sentry_key=a785682ddda719b7a8a4011110d75598\",\n \"minidump\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/minidump/?sentry_key=a785682ddda719b7a8a4011110d75598\",\n \"playstation\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/playstation/?sentry_key=a785682ddda719b7a8a4011110d75598\",\n \"otlp_traces\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/otlp/v1/traces\",\n \"otlp_logs\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/otlp/v1/logs\",\n \"nel\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/nel/?sentry_key=a785682ddda719b7a8a4011110d75598\",\n \"unreal\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/unreal/a785682ddda719b7a8a4011110d75598/\",\n \"cdn\": \"https://js.sentry-cdn.com/a785682ddda719b7a8a4011110d75598.min.js\",\n \"crons\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/crons/___MONITOR_SLUG___/a785682ddda719b7a8a4011110d75598/\"\n },\n \"browserSdkVersion\": \"7.x\",\n \"browserSdk\": {\n \"choices\": [\n [\n \"latest\",\n \"latest\"\n ],\n [\n \"7.x\",\n \"7.x\"\n ]\n ]\n },\n \"dateCreated\": \"2023-06-21T19:50:26.036254Z\",\n \"dynamicSdkLoaderOptions\": {\n \"hasReplay\": true,\n \"hasPerformance\": true,\n \"hasDebug\": true\n }\n}\n```\n" + }, + { + "path": "api/projects/retrieve-a-project.md", + "title": "Retrieve a Project", + "hierarchy": [ + "Api", + "Projects", + "Retrieve A Project" + ], + "summary": "# Retrieve a Project", + "content": "# Retrieve a Project\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/\n\nReturn details on an individual project.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"4505278496\",\n \"slug\": \"pump-station\",\n \"name\": \"Pump Station\",\n \"platform\": \"python\",\n \"dateCreated\": \"2021-01-14T22:08:52.711809Z\",\n \"isBookmarked\": false,\n \"isMember\": true,\n \"features\": [\n \"alert-filters\",\n \"custom-inbound-filters\",\n \"data-forwarding\",\n \"discard-groups\",\n \"minidump\",\n \"rate-limits\",\n \"servicehooks\",\n \"similarity-indexing\",\n \"similarity-indexing-v2\",\n \"similarity-view\",\n \"similarity-view-v2\"\n ],\n \"firstEvent\": \"2021-01-14T22:08:52.711809Z\",\n \"firstTransactionEvent\": true,\n \"access\": [\n \"member:read\",\n \"event:read\",\n \"project:admin\",\n \"team:write\",\n \"project:write\",\n \"team:admin\",\n \"project:read\",\n \"org:integrations\",\n \"org:read\",\n \"project:releases\",\n \"team:read\",\n \"alerts:write\",\n \"event:admin\",\n \"event:write\",\n \"alerts:read\"\n ],\n \"hasAccess\": true,\n \"hasMinifiedStackTrace\": false,\n \"hasFeedbacks\": false,\n \"hasMonitors\": false,\n \"hasNewFeedbacks\": false,\n \"hasProfiles\": false,\n \"hasReplays\": false,\n \"hasFlags\": false,\n \"hasSessions\": false,\n \"hasInsightsHttp\": true,\n \"hasInsightsDb\": false,\n \"hasInsightsAssets\": true,\n \"hasInsightsAppStart\": false,\n \"hasInsightsScreenLoad\": false,\n \"hasInsightsVitals\": false,\n \"hasInsightsCaches\": false,\n \"hasInsightsQueues\": false,\n \"hasInsightsLlmMonitoring\": false,\n \"hasInsightsAgentMonitoring\": false,\n \"hasInsightsMCP\": false,\n \"hasLogs\": false,\n \"isInternal\": false,\n \"isPublic\": false,\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n },\n \"color\": \"#3f70bf\",\n \"status\": \"active\",\n \"team\": {\n \"id\": \"2\",\n \"name\": \"Powerful Abolitionist\",\n \"slug\": \"powerful-abolitionist\"\n },\n \"teams\": [\n {\n \"id\": \"2\",\n \"name\": \"Powerful Abolitionist\",\n \"slug\": \"powerful-abolitionist\"\n }\n ],\n \"latestRelease\": {\n \"version\": \"backend@3e90a5d9e767ebcfa70e921d7a7ff6c037461168\"\n },\n \"options\": {\n \"sentry:transaction_name_cluster_rules\": [],\n \"digests:mail:maximum_delay\": 600,\n \"sentry:scrub_defaults\": false,\n \"sentry:scrape_javascript\": true,\n \"mail:subject_prefix\": \"\",\n \"sentry:relay_pii_config\": null,\n \"sentry:scrub_data\": false,\n \"sentry:token\": \"e84c8c0fb1c121e988558785885f9cde\",\n \"sentry:resolve_age\": 168,\n \"sentry:grouping_config\": \"newstyle:2012-12-31\",\n \"quotas:spike-protection-disabled\": false,\n \"sentry:store_crash_reports\": 5,\n \"digests:mail:minimum_delay\": 180,\n \"sentry:secondary_grouping_config\": \"newstyle:2012-11-21\",\n \"sentry:secondary_grouping_expiry\": 147555024,\n \"sentry:builtin_symbol_sources\": [\n \"ios\",\n \"android\",\n \"chromium\"\n ],\n \"sentry:origins\": [\n \"getsentry.com\",\n \"app.getsentry.com\",\n \"www.getsentry.com\",\n \"sentry.io\"\n ],\n \"sentry:sensitive_fields\": [\n \"sudo\"\n ],\n \"sentry:scrub_ip_address\": false,\n \"sentry:default_environment\": \"prod\",\n \"sentry:verify_ssl\": true,\n \"sentry:csp_ignored_sources_defaults\": true,\n \"sentry:csp_ignored_sources\": \"\",\n \"filters:blacklisted_ips\": \"\",\n \"filters:react-hydration-errors\": true,\n \"filters:chunk-load-error\": true,\n \"filters:rele" + }, + { + "path": "api/projects/retrieve-a-projects-symbol-sources.md", + "title": "Retrieve a Project's Symbol Sources", + "hierarchy": [ + "Api", + "Projects", + "Retrieve A Projects Symbol Sources" + ], + "summary": "# Retrieve a Project's Symbol Sources", + "content": "# Retrieve a Project's Symbol Sources\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/symbol-sources/\n\nList custom symbol sources configured for a project.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n### Query Parameters:\n\n* `id`* (string)*\n\n The ID of the source to look up. If this is not provided, all sources are returned.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/symbol-sources/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"id\": \"honk\",\n \"name\": \"honk source\",\n \"layout\": {\n \"type\": \"native\"\n },\n \"type\": \"http\",\n \"url\": \"http://honk.beep\",\n \"username\": \"honkhonk\",\n \"password\": {\n \"hidden-secret\": true\n }\n },\n {\n \"id\": \"beep\",\n \"name\": \"beep source\",\n \"layout\": {\n \"type\": \"native\"\n },\n \"type\": \"gcs\",\n \"bucket\": \"mybucket\",\n \"client_email\": \"honk@beep.com\",\n \"private_key\": {\n \"hidden-secret\": true\n }\n }\n]\n```\n" + }, + { + "path": "api/projects/retrieve-a-service-hook.md", + "title": "Retrieve a Service Hook", + "hierarchy": [ + "Api", + "Projects", + "Retrieve A Service Hook" + ], + "summary": "# Retrieve a Service Hook", + "content": "# Retrieve a Service Hook\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/hooks/{hook\\_id}/\n\nReturn a service hook bound to a project.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the client keys belong to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the client keys belong to.\n\n* `hook_id`* (string)*\n\n REQUIRED\n\n The GUID of the service hook.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:read`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/hooks/{hook_id}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"dateCreated\": \"2018-11-06T21:20:08.143Z\",\n \"events\": [\n \"event.alert\",\n \"event.created\"\n ],\n \"id\": \"4f9d73e63b7144ecb8944c41620a090b\",\n \"secret\": \"8fcac28aaa4c4f5fa572b61d40a8e084364db25fd37449c299e5a41c0504cbc2\",\n \"status\": \"active\",\n \"url\": \"https://empowerplant.io/sentry-hook\"\n}\n```\n" + }, + { + "path": "api/projects/retrieve-event-counts-for-a-project.md", + "title": "Retrieve Event Counts for a Project", + "hierarchy": [ + "Api", + "Projects", + "Retrieve Event Counts For A Project" + ], + "summary": "# Retrieve Event Counts for a Project", + "content": "# Retrieve Event Counts for a Project\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/stats/\n\nCaution This endpoint may change in the future without notice.\n\nReturn a set of points representing a normalized timestamp and the number of events seen in the period.\n\nQuery ranges are limited to Sentry's configured time-series resolutions.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project.\n\n### Query Parameters:\n\n* `stat`* (string)*\n\n **choices**:\n\n * `received\n rejected\n blacklisted\n generated`\n\n The name of the stat to query `(\"received\", \"rejected\", \"blacklisted\", \"generated\")`.\n\n* `since`* (string)*\n\n A timestamp to set the start of the query in seconds since UNIX epoch.\n\n* `until`* (string)*\n\n A timestamp to set the end of the query in seconds since UNIX epoch.\n\n* `resolution`* (string)*\n\n **choices**:\n\n * `10s\n 1h\n 1d`\n\n An explicit resolution to search for (one of `10s`, `1h`, and `1d`).\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:read`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/stats/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n [\n 1541455200,\n 1184\n ],\n [\n 1541458800,\n 1410\n ],\n [\n 1541462400,\n 1440\n ],\n [\n 1541466000,\n 1682\n ],\n [\n 1541469600,\n 1203\n ],\n [\n 1541473200,\n 497\n ],\n [\n 1541476800,\n 661\n ],\n [\n 1541480400,\n 1481\n ],\n [\n 1541484000,\n 678\n ],\n [\n 1541487600,\n 1857\n ],\n [\n 1541491200,\n 819\n ],\n [\n 1541494800,\n 1013\n ],\n [\n 1541498400,\n 1883\n ],\n [\n 1541502000,\n 1450\n ],\n [\n 1541505600,\n 1102\n ],\n [\n 1541509200,\n 1317\n ],\n [\n 1541512800,\n 1017\n ],\n [\n 1541516400,\n 813\n ],\n [\n 1541520000,\n 1189\n ],\n [\n 1541523600,\n 496\n ],\n [\n 1541527200,\n 1936\n ],\n [\n 1541530800,\n 1405\n ],\n [\n 1541534400,\n 617\n ],\n [\n 1541538000,\n 1533\n ]\n]\n```\n" + }, + { + "path": "api/projects/retrieve-ownership-configuration-for-a-project.md", + "title": "Retrieve Ownership Configuration for a Project", + "hierarchy": [ + "Api", + "Projects", + "Retrieve Ownership Configuration For A Project" + ], + "summary": "# Retrieve Ownership Configuration for a Project", + "content": "# Retrieve Ownership Configuration for a Project\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/ownership/\n\nReturns details on a project's ownership configuration.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/ownership/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"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\",\n \"fallthrough\": true,\n \"dateCreated\": \"2023-10-03T20:25:18.539823Z\",\n \"lastUpdated\": \"2023-10-03T22:49:12.294741Z\",\n \"isActive\": true,\n \"autoAssignment\": \"Auto Assign to Issue Owner\",\n \"codeownersAutoSync\": true,\n \"schema\": {\n \"$version\": 1,\n \"rules\": [\n {\n \"matcher\": {\n \"type\": \"path\",\n \"pattern\": \"src/views/checkout\"\n },\n \"owners\": [\n {\n \"type\": \"user\",\n \"id\": 2621754,\n \"name\": \"jane.smith@org.com\"\n }\n ]\n },\n {\n \"matcher\": {\n \"type\": \"url\",\n \"pattern\": \"https://example.com/checkout\"\n },\n \"owners\": [\n {\n \"type\": \"user\",\n \"id\": 2621754,\n \"name\": \"jane.smith@org.com\"\n }\n ]\n },\n {\n \"matcher\": {\n \"type\": \"tags.transaction\",\n \"pattern\": \"/checkout/:page\"\n },\n \"owners\": [\n {\n \"type\": \"user\",\n \"id\": 2621754,\n \"name\": \"jane.smith@org.com\"\n }\n ]\n }\n ]\n }\n}\n```\n" + }, + { + "path": "api/projects/submit-user-feedback.md", + "title": "Submit User Feedback", + "hierarchy": [ + "Api", + "Projects", + "Submit User Feedback" + ], + "summary": "# Submit User Feedback", + "content": "# Submit User Feedback\n\nPOST /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/user-feedback/\n\n*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.md#user-feedback-widget) or [API](https://docs.sentry.io/platforms/javascript/user-feedback.md#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).\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project.\n\n### Body Parameters\n\n* `event_id`* (string)*\n\n REQUIRED\n\n The event ID. This can be retrieved from the [beforeSend callback](https://docs.sentry.io/platforms/javascript/configuration/filtering.md#using-beforesend).\n\n* `name`* (string)*\n\n REQUIRED\n\n User's name.\n\n* `email`* (string)*\n\n REQUIRED\n\n User's email address.\n\n* `comments`* (string)*\n\n REQUIRED\n\n Comments supplied by user.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/user-feedback/ \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/json' \\\n -d '{\"event_id\":\"14bad9a2e3774046977a21440ddb39b2\",\"name\":\"Jane Schmidt\",\"email\":\"jane@empowerplant.io\",\"comments\":\"It broke!\"}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"comments\": \"It broke!\",\n \"dateCreated\": \"2018-11-06T21:20:11.468Z\",\n \"email\": \"jane@example.com\",\n \"event\": {\n \"eventID\": \"14bad9a2e3774046977a21440ddb39b2\",\n \"id\": null\n },\n \"eventID\": \"14bad9a2e3774046977a21440ddb39b2\",\n \"id\": \"1\",\n \"issue\": null,\n \"name\": \"Jane Smith\",\n \"user\": null\n}\n```\n" + }, + { + "path": "api/projects/update-a-client-key.md", + "title": "Update a Client Key", + "hierarchy": [ + "Api", + "Projects", + "Update A Client Key" + ], + "summary": "# Update a Client Key", + "content": "# Update a Client Key\n\nPUT /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/keys/{key\\_id}/\n\nUpdate various settings for a client key.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n* `key_id`* (string)*\n\n REQUIRED\n\n The ID of the key to update.\n\n### Body Parameters\n\n* `name`* (string)*\n\n The name for the client key\n\n* `isActive`* (boolean)*\n\n Activate or deactivate the client key.\n\n* `rateLimit`* (object)*\n\n Applies a rate limit to cap the number of errors accepted during a given time window. To disable entirely set `rateLimit` to null.\n\n ```json\n {\n \"rateLimit\": {\n \"window\": 7200, // time in seconds\n \"count\": 1000 // error cap\n }\n }\n ```\n\n* `browserSdkVersion`* (string)*\n\n The Sentry Javascript SDK version to use. The currently supported options are:\n\n * `latest` - Most recent version\n * `7.x` - Version 7 releases\n\n* `dynamicSdkLoaderOptions`* (object)*\n\n Configures multiple options for the Javascript Loader Script.\n\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\n ```json\n {\n \"dynamicSdkLoaderOptions\": {\n \"hasReplay\": true,\n \"hasPerformance\": true,\n \"hasDebug\": true\n }\n }\n ```\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/keys/{key_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"60120449b6b1d5e45f75561e6dabd80b\",\n \"name\": \"Liked Pegasus\",\n \"label\": \"Liked Pegasus\",\n \"public\": \"60120449b6b1d5e45f75561e6dabd80b\",\n \"secret\": \"189485c3b8ccf582bf5e12c530ef8858\",\n \"projectId\": 4505281256090153,\n \"isActive\": true,\n \"rateLimit\": {\n \"window\": 7200,\n \"count\": 1000\n },\n \"dsn\": {\n \"secret\": \"https://a785682ddda742d7a8a4088810e67701:bcd99b3790b3441c85ce4b1eaa854f66@o4504765715316736.ingest.sentry.io/4505281256090153\",\n \"public\": \"https://a785682ddda742d7a8a4088810e67791@o4504765715316736.ingest.sentry.io/4505281256090153\",\n \"csp\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/csp-report/?sentry_key=a785682ddda719b7a8a4011110d75598\",\n \"security\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/security/?sentry_key=a785682ddda719b7a8a4011110d75598\",\n \"minidump\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/minidump/?sentry_key=a785682ddda719b7a8a4011110d75598\",\n \"playstation\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/playstation/?sentry_key=a785682ddda719b7a8a4011110d75598\",\n \"otlp_traces\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/otlp/v1/traces\",\n \"otlp_logs\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/otlp/v1/logs\",\n \"nel\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/nel/?sentry_key=a785682ddda719b7a8a4011110d75598\",\n \"unreal\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/unreal/a785682ddda719b7a8a4011110d75598/\",\n \"cdn\": \"https://js.sentry-cdn.com/a785682ddda719b7a8a4011110d75598.min.js\",\n \"crons\": \"https://o4504765715316736.ingest.sentry.io/api/4505281256090153/crons/___MONITOR_SLUG___/a785682ddda719b7a8a4011110d75598/\"\n },\n \"browserSdkVersion\": \"7.x\",\n \"browserS" + }, + { + "path": "api/projects/update-a-project.md", + "title": "Update a Project", + "hierarchy": [ + "Api", + "Projects", + "Update A Project" + ], + "summary": "# Update a Project", + "content": "# Update a Project\n\nPUT /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/\n\nUpdate various attributes and configurable settings for the given project.\n\nNote that solely having the **`project:read`** scope restricts updatable settings to `isBookmarked`, `autofixAutomationTuning`, and `seerScannerAutomation`.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n### Body Parameters\n\n* `isBookmarked`* (boolean)*\n\n Enables starring the project within the projects tab. Can be updated with **`project:read`** permission.\n\n* `name`* (string)*\n\n The name for the project\n\n* `slug`* (string)*\n\n Uniquely identifies a project and is used for the interface.\n\n* `platform`* (string)*\n\n The platform for the project\n\n* `subjectPrefix`* (string)*\n\n Custom prefix for emails from this project.\n\n* `subjectTemplate`* (string)*\n\n The email subject to use (excluding the prefix) for individual alerts. Here are the list of variables you can use:\n\n * `$title`\n * `$shortID`\n * `$projectID`\n * `$orgID`\n * `${tag:key}` - such as `${tag:environment}` or `${tag:release}`.\n\n* `resolveAge`* (integer)*\n\n Automatically resolve an issue if it hasn't been seen for this many hours. Set to `0` to disable auto-resolve.\n\n* `highlightContext`* (object)*\n\n A JSON mapping of context types to lists of strings for their keys. E.g. `{'user': ['id', 'email']}`\n\n* `highlightTags`* (array(string))*\n\n A list of strings with tag keys to highlight on this project's issues. E.g. `['release', 'environment']`\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/ \\\n -H 'Authorization: Bearer ' \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"4505278496\",\n \"slug\": \"pump-station\",\n \"name\": \"Pump Station\",\n \"platform\": \"python\",\n \"dateCreated\": \"2021-01-14T22:08:52.711809Z\",\n \"isBookmarked\": false,\n \"isMember\": true,\n \"features\": [\n \"alert-filters\",\n \"custom-inbound-filters\",\n \"data-forwarding\",\n \"discard-groups\",\n \"minidump\",\n \"rate-limits\",\n \"servicehooks\",\n \"similarity-indexing\",\n \"similarity-indexing-v2\",\n \"similarity-view\",\n \"similarity-view-v2\"\n ],\n \"firstEvent\": \"2021-01-14T22:08:52.711809Z\",\n \"firstTransactionEvent\": true,\n \"access\": [\n \"member:read\",\n \"event:read\",\n \"project:admin\",\n \"team:write\",\n \"project:write\",\n \"team:admin\",\n \"project:read\",\n \"org:integrations\",\n \"org:read\",\n \"project:releases\",\n \"team:read\",\n \"alerts:write\",\n \"event:admin\",\n \"event:write\",\n \"alerts:read\"\n ],\n \"hasAccess\": true,\n \"hasMinifiedStackTrace\": false,\n \"hasFeedbacks\": false,\n \"hasMonitors\": false,\n \"hasNewFeedbacks\": false,\n \"hasProfiles\": false,\n \"hasReplays\": false,\n \"hasFlags\": false,\n \"hasSessions\": false,\n \"hasInsightsHttp\": true,\n \"hasInsightsDb\": false,\n \"hasInsightsAssets\": true,\n \"hasInsightsAppStart\": false,\n \"hasInsightsScreenLoad\": false,\n \"hasInsightsVitals\": false,\n \"hasInsightsCaches\": false,\n \"hasInsightsQueues\": false,\n \"hasInsightsLlmMonitoring\": false,\n \"hasInsightsAgentMonitoring\": false,\n \"hasInsightsMCP\": false,\n \"hasLogs\": false,\n \"isInternal\": false,\n \"isPublic\": false,\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n " + }, + { + "path": "api/projects/update-a-projects-symbol-source.md", + "title": "Update a Project's Symbol Source", + "hierarchy": [ + "Api", + "Projects", + "Update A Projects Symbol Source" + ], + "summary": "# Update a Project's Symbol Source", + "content": "# Update a Project's Symbol Source\n\nPUT /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/symbol-sources/\n\nUpdate a custom symbol source in a project.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n### Query Parameters:\n\n* `id`* (string)*\n\n REQUIRED\n\n The ID of the source to update.\n\n### Body Parameters\n\n* `type`* (string)*\n\n REQUIRED\n\n The type of the source.\n\n * `http` - SymbolServer (HTTP)\n * `gcs` - Google Cloud Storage\n * `s3` - Amazon S3\n\n* `name`* (string)*\n\n REQUIRED\n\n The human-readable name of the source.\n\n* `id`* (string)*\n\n 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.\n\n* `layout`* (object)*\n\n 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\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\n **`casing`** ***(string)*** - The layout of the folder structure. The options are:\n\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 ```\n\n* `filters`* (object)*\n\n 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\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 ```\n\n* `url`* (string)*\n\n The source's URL. Optional for HTTP sources, invalid for all others.\n\n* `username`* (string)*\n\n The user name for accessing the source. Optional for HTTP sources, invalid for all others.\n\n* `password`* (string)*\n\n The password for accessing the source. Optional for HTTP sources, invalid for all others.\n\n* `bucket`* (string)*\n\n The GCS or S3 bucket where the source resides. Required for GCS and S3 source, invalid for HTTP sources.\n\n* `region`* (string)*\n\n The source's [S3 region](https://docs.aws.amazon.com/general/latest/gr/s3.ht" + }, + { + "path": "api/projects/update-a-service-hook.md", + "title": "Update a Service Hook", + "hierarchy": [ + "Api", + "Projects", + "Update A Service Hook" + ], + "summary": "# Update a Service Hook", + "content": "# Update a Service Hook\n\nPUT /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/hooks/{hook\\_id}/\n\nUpdate a service hook.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the client keys belong to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the client keys belong to.\n\n* `hook_id`* (string)*\n\n REQUIRED\n\n The GUID of the service hook.\n\n### Body Parameters\n\n* `url`* (string)*\n\n REQUIRED\n\n The URL for the webhook.\n\n* `events`* (array(string))*\n\n REQUIRED\n\n The events to subscribe to.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/hooks/{hook_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -d '{\"url\":\"https://empowerplant.io/sentry-hook\",\"events\":[\"event.alert\",\"event.created\"]}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"dateCreated\": \"2018-11-06T21:20:08.143Z\",\n \"events\": [\n \"event.alert\",\n \"event.created\"\n ],\n \"id\": \"4f9d73e63b7144ecb8944c41620a090b\",\n \"secret\": \"8fcac28aaa4c4f5fa572b61d40a8e084364db25fd37449c299e5a41c0504cbc2\",\n \"status\": \"active\",\n \"url\": \"https://empowerplant.io/sentry-hook\"\n}\n```\n" + }, + { + "path": "api/projects/update-an-inbound-data-filter.md", + "title": "Update an Inbound Data Filter", + "hierarchy": [ + "Api", + "Projects", + "Update An Inbound Data Filter" + ], + "summary": "# Update an Inbound Data Filter", + "content": "# Update an Inbound Data Filter\n\nPUT /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/filters/{filter\\_id}/\n\nUpdate various inbound data filters for a project.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n* `filter_id`* (string)*\n\n REQUIRED\n\n The type of filter toggle to update. The options are:\n\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`) and 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 ways 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 accurate information, and while they may report valid issues, the context to understand them is incorrect or missing.\n\n### Body Parameters\n\n* `active`* (boolean)*\n\n Toggle the browser-extensions, localhost, filtered-transaction, or web-crawlers filter on or off.\n\n* `subfilters`* (array(string))*\n\n **choices**:\n\n * `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`\n\n Specifies which legacy browser filters should be active. Anything excluded from the list will be disabled. The options are:\n\n * `ie` - Internet Explorer Version 11 and lower\n * `edge` - Edge Version 18 and lower\n * `safari` - Safari Version 11 and lower\n * `firefox` - Firefox Version 66 and lower\n * `chrome` - Chrome Version 62 and lower\n * `opera` - Opera Version 50 and lower\n * `android` - Android Version 3 and lower\n * `opera_mini` - Opera Mini Version 34 and lower\n\n Deprecated options:\n\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\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/filters/{filter_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSE\n\n```\nCopied\nNo Content.\n```\n" + }, + { + "path": "api/projects/update-ownership-configuration-for-a-project.md", + "title": "Update Ownership Configuration for a Project", + "hierarchy": [ + "Api", + "Projects", + "Update Ownership Configuration For A Project" + ], + "summary": "# Update Ownership Configuration for a Project", + "content": "# Update Ownership Configuration for a Project\n\nPUT /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/ownership/\n\nUpdates ownership configurations for a project. Note that only the attributes submitted are modified.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n### Body Parameters\n\n* `raw`* (string)*\n\n Raw input for ownership configuration. See the [Ownership Rules Documentation](https://docs.sentry.io/product/issues/ownership-rules.md) to learn more.\n\n* `fallthrough`* (boolean)*\n\n 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.\n\n* `autoAssignment`* (string)*\n\n Auto-assignment settings. The available options are:\n\n * Auto Assign to Issue Owner\n * Auto Assign to Suspect Commits\n * Turn off Auto-Assignment\n\n* `codeownersAutoSync`* (boolean)*\n\n Set to `True` to sync issue owners with CODEOWNERS updates in a release.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/ownership/ \\\n -H 'Authorization: Bearer ' \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"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\",\n \"fallthrough\": true,\n \"dateCreated\": \"2023-10-03T20:25:18.539823Z\",\n \"lastUpdated\": \"2023-10-03T22:49:12.294741Z\",\n \"isActive\": true,\n \"autoAssignment\": \"Auto Assign to Issue Owner\",\n \"codeownersAutoSync\": true,\n \"schema\": {\n \"$version\": 1,\n \"rules\": [\n {\n \"matcher\": {\n \"type\": \"path\",\n \"pattern\": \"src/views/checkout\"\n },\n \"owners\": [\n {\n \"type\": \"user\",\n \"id\": 2621754,\n \"name\": \"jane.smith@org.com\"\n }\n ]\n },\n {\n \"matcher\": {\n \"type\": \"url\",\n \"pattern\": \"https://example.com/checkout\"\n },\n \"owners\": [\n {\n \"type\": \"user\",\n \"id\": 2621754,\n \"name\": \"jane.smith@org.com\"\n }\n ]\n },\n {\n \"matcher\": {\n \"type\": \"tags.transaction\",\n \"pattern\": \"/checkout/:page\"\n },\n \"owners\": [\n {\n \"type\": \"user\",\n \"id\": 2621754,\n \"name\": \"jane.smith@org.com\"\n }\n ]\n }\n ]\n }\n}\n```\n" + }, + { + "path": "api/projects/upload-a-new-file.md", + "title": "Upload a New File", + "hierarchy": [ + "Api", + "Projects", + "Upload A New File" + ], + "summary": "# Upload a New File", + "content": "# Upload a New File\n\nPOST /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/files/dsyms/\n\nUpload a new debug information file for the given release.\n\nUnlike other API requests, files must be uploaded using the traditional multipart/form-data content-type.\n\nRequests to this endpoint should use the region-specific domain eg. `us.sentry.io` or `de.sentry.io`.\n\nThe file uploaded is a zip archive of an Apple .dSYM folder which contains the individual debug images. Uploading through this endpoint will create different files for the contained images.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the project belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project to upload a file to.\n\n### Body Parameters\n\n* `file`* (string)*\n\n REQUIRED\n\n The multipart encoded file.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:write`\n\n```\ncurl https://{region}.sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/files/dsyms/ \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: multipart/form-data' \\\n -F file=debug.zip\n```\n\nRESPONSE\n\n```\nCopied\nSuccess.\n```\n" + }, + { + "path": "api/ratelimits.md", + "title": "Rate Limits", + "hierarchy": [ + "Api", + "Ratelimits" + ], + "summary": "# Rate Limits", + "content": "# Rate Limits\n\nSentry rate limits every API request made to prevent abuse and resource overuse. The limit is applied to each unique combination of caller and endpoint.\n\nWe restrict both how frequently a request is made (requests per second rate limit) and how many concurrent requests a caller can make (concurrent rate limit).\n\nThe requests per second rate limit follows a fixed window approach. Requests are counted into time buckets, determined by the window size. If the number of requests from a caller exceeds the number of allowed requests within a window, then that request will be rejected. Each endpoint has its own maximum number of requests and window size.\n\nMeanwhile, the concurrent rate limiter will reject requests if the caller has too many requests in progress at the same time.\n\nYou can track your rate limit usage by looking at special headers in the response.\n\n## [Headers](https://docs.sentry.io/api/ratelimits.md#headers)\n\nEvery API request response includes the following headers:\n\n* `X-Sentry-Rate-Limit-Limit`\n * The maximum number of requests allowed within the window\n* `X-Sentry-Rate-Limit-Remaining`\n * The number of requests this caller has left on this endpoint within the current window\n* `X-Sentry-Rate-Limit-Reset`\n * The time when the next rate limit window begins and the count resets, measured in UTC seconds from epoch\n* `X-Sentry-Rate-Limit-ConcurrentLimit`\n * The maximum number of concurrent requests allowed\n* `X-Sentry-Rate-Limit-ConcurrentRemaining`\n * The number of concurrent requests this caller has left\n\n## [Additional Information](https://docs.sentry.io/api/ratelimits.md#additional-information)\n\nThe rate limiter looks at the caller's identity instead of the bearer token or cookie. As such, the rate limit cannot be bypassed by generating multiple tokens.\n\nPolling the API for updates is likely to quickly trigger rate limiting. We recommend using our [webhooks](https://docs.sentry.io/organization/integrations/integration-platform/webhooks.md), if possible.\n" + }, + { + "path": "api/releases.md", + "title": "Releases", + "hierarchy": [ + "Api", + "Releases" + ], + "summary": "# Releases", + "content": "# Releases\n\n* #### [Create a Deploy](https://docs.sentry.io/api/releases/create-a-deploy.md)\n* #### [Create a New Release for an Organization](https://docs.sentry.io/api/releases/create-a-new-release-for-an-organization.md)\n* #### [Delete a Project Release's File](https://docs.sentry.io/api/releases/delete-a-project-releases-file.md)\n* #### [Delete an Organization Release's File](https://docs.sentry.io/api/releases/delete-an-organization-releases-file.md)\n* #### [Delete an Organization's Release](https://docs.sentry.io/api/releases/delete-an-organizations-release.md)\n* #### [List a Project Release's Commits](https://docs.sentry.io/api/releases/list-a-project-releases-commits.md)\n* #### [List a Project's Release Files](https://docs.sentry.io/api/releases/list-a-projects-release-files.md)\n* #### [List a Release's Deploys](https://docs.sentry.io/api/releases/list-a-releases-deploys.md)\n* #### [List an Organization Release's Commits](https://docs.sentry.io/api/releases/list-an-organization-releases-commits.md)\n* #### [List an Organization's Release Files](https://docs.sentry.io/api/releases/list-an-organizations-release-files.md)\n* #### [List an Organization's Releases](https://docs.sentry.io/api/releases/list-an-organizations-releases.md)\n* #### [Retrieve a Project Release's File](https://docs.sentry.io/api/releases/retrieve-a-project-releases-file.md)\n* #### [Retrieve an Organization Release's File](https://docs.sentry.io/api/releases/retrieve-an-organization-releases-file.md)\n* #### [Retrieve an Organization's Release](https://docs.sentry.io/api/releases/retrieve-an-organizations-release.md)\n* #### [Retrieve Files Changed in a Release's Commits](https://docs.sentry.io/api/releases/retrieve-files-changed-in-a-releases-commits.md)\n* #### [Retrieve Release Health Session Statistics](https://docs.sentry.io/api/releases/retrieve-release-health-session-statistics.md)\n* #### [Retrieve Statuses of Release Thresholds (Alpha)](https://docs.sentry.io/api/releases/retrieve-statuses-of-release-thresholds-alpha.md)\n* #### [Update a Project Release File](https://docs.sentry.io/api/releases/update-a-project-release-file.md)\n* #### [Update an Organization Release File](https://docs.sentry.io/api/releases/update-an-organization-release-file.md)\n* #### [Update an Organization's Release](https://docs.sentry.io/api/releases/update-an-organizations-release.md)\n* #### [Upload a New Organization Release File](https://docs.sentry.io/api/releases/upload-a-new-organization-release-file.md)\n* #### [Upload a New Project Release File](https://docs.sentry.io/api/releases/upload-a-new-project-release-file.md)\n" + }, + { + "path": "api/releases/create-a-deploy.md", + "title": "Create a Deploy", + "hierarchy": [ + "Api", + "Releases", + "Create A Deploy" + ], + "summary": "# Create a Deploy", + "content": "# Create a Deploy\n\nPOST /api/0/organizations/{organization\\_id\\_or\\_slug}/releases/{version}/deploys/\n\nCreate a deploy for a given release.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `version`* (string)*\n\n REQUIRED\n\n The version identifier of the release\n\n### Body Parameters\n\n* `environment`* (string)*\n\n REQUIRED\n\n The environment you're deploying to\n\n* `name`* (string)*\n\n The optional name of the deploy\n\n* `url`* (string)*\n\n The optional URL that points to the deploy\n\n* `dateStarted`* (string)*\n\n An optional date that indicates when the deploy started\n\n* `dateFinished`* (string)*\n\n An optional date that indicates when the deploy ended. If not provided, the current time is used.\n\n* `projects`* (array(string))*\n\n The optional list of project slugs to create a deploy within. If not provided, deploys are created for all of the release's projects.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:ci`\n* `project:admin`\n* `project:releases`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/releases/{version}/deploys/ \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n.\n```\n" + }, + { + "path": "api/releases/create-a-new-release-for-an-organization.md", + "title": "Create a New Release for an Organization", + "hierarchy": [ + "Api", + "Releases", + "Create A New Release For An Organization" + ], + "summary": "# Create a New Release for an Organization", + "content": "# Create a New Release for an Organization\n\nPOST /api/0/organizations/{organization\\_id\\_or\\_slug}/releases/\n\nCreate a new release for the given organization. Releases are used by Sentry to improve its error reporting abilities by correlating first seen events with the release that might have introduced the problem. Releases are also necessary for source maps and other debug features that require manual upload for functioning well.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization.\n\n### Body Parameters\n\n* `version`* (string)*\n\n REQUIRED\n\n A version identifier for this release. Can be a version number, a commit hash, etc.\n\n* `projects`* (array(string))*\n\n REQUIRED\n\n A list of project slugs that are involved in this release.\n\n* `ref`* (string)*\n\n An optional commit reference. This is useful if a tagged version has been provided.\n\n* `url`* (string)*\n\n A URL that points to the release. This can be the path to an online interface to the source code for instance\n\n* `dateReleased`* (string)*\n\n An optional date that indicates when the release went live. If not provided the current time is assumed.\n\n* `commits`* (array(object))*\n\n An optional list of commit data to be associated with the release. Commits must include parameters `id` (the SHA of the commit), and can optionally include `repository`, `message`, `patch_set`, `author_name`, `author_email`, and `timestamp`.\n\n* `refs`* (array(object))*\n\n 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). 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. `commit` may contain a range in the form of `previousCommit..commit`.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:releases`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/releases/ \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/json' \\\n -d '{\"version\":\"2.0rc2\",\"ref\":\"6ba09a7c53235ee8a8fa5ee4c1ca8ca886e7fdbb\",\"projects\":[\"pump-station\"]}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": 2,\n \"authors\": [],\n \"commitCount\": 0,\n \"data\": {},\n \"dateCreated\": \"2019-01-03T00:12:55.109Z\",\n \"dateReleased\": null,\n \"deployCount\": 0,\n \"firstEvent\": null,\n \"lastCommit\": null,\n \"lastDeploy\": null,\n \"lastEvent\": null,\n \"newGroups\": 0,\n \"owner\": null,\n \"projects\": [\n {\n \"name\": \"Pump Station\",\n \"slug\": \"pump-station\"\n }\n ],\n \"ref\": \"6ba09a7c53235ee8a8fa5ee4c1ca8ca886e7fdbb\",\n \"shortVersion\": \"2.0rc2\",\n \"url\": null,\n \"version\": \"2.0rc2\"\n}\n```\n" + }, + { + "path": "api/releases/delete-a-project-releases-file.md", + "title": "Delete a Project Release's File", + "hierarchy": [ + "Api", + "Releases", + "Delete A Project Releases File" + ], + "summary": "# Delete a Project Release's File", + "content": "# Delete a Project Release's File\n\nDELETE /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/releases/{version}/files/{file\\_id}/\n\nDelete a file for a given release.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the release belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project.\n\n* `version`* (string)*\n\n REQUIRED\n\n The version identifier of the release.\n\n* `file_id`* (string)*\n\n REQUIRED\n\n The ID of the file to delete.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:releases`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/releases/{version}/files/{file_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nSuccess.\n```\n" + }, + { + "path": "api/releases/delete-an-organization-releases-file.md", + "title": "Delete an Organization Release's File", + "hierarchy": [ + "Api", + "Releases", + "Delete An Organization Releases File" + ], + "summary": "# Delete an Organization Release's File", + "content": "# Delete an Organization Release's File\n\nDELETE /api/0/organizations/{organization\\_id\\_or\\_slug}/releases/{version}/files/{file\\_id}/\n\nDelete a file for a given release.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the release belongs to.\n\n* `version`* (string)*\n\n REQUIRED\n\n The version identifier of the release.\n\n* `file_id`* (string)*\n\n REQUIRED\n\n The ID of the file to delete.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:releases`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/releases/{version}/files/{file_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nSuccess.\n```\n" + }, + { + "path": "api/releases/delete-an-organizations-release.md", + "title": "Delete an Organization's Release", + "hierarchy": [ + "Api", + "Releases", + "Delete An Organizations Release" + ], + "summary": "# Delete an Organization's Release", + "content": "# Delete an Organization's Release\n\nDELETE /api/0/organizations/{organization\\_id\\_or\\_slug}/releases/{version}/\n\nPermanently remove a release and all of its files.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `version`* (string)*\n\n REQUIRED\n\n The version identifier of the release\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:releases`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/releases/{version}/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nNo Content.\n```\n" + }, + { + "path": "api/releases/list-a-project-releases-commits.md", + "title": "List a Project Release's Commits", + "hierarchy": [ + "Api", + "Releases", + "List A Project Releases Commits" + ], + "summary": "# List a Project Release's Commits", + "content": "# List a Project Release's Commits\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/releases/{version}/commits/\n\nList a project release's commits.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the release belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the release belongs to.\n\n* `version`* (string)*\n\n REQUIRED\n\n The version identifier of the release.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:releases`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/releases/{version}/commits/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"dateCreated\": \"2018-11-06T21:19:58.536Z\",\n \"id\": \"acbafc639127fd89d10f474520104517ff1d709e\",\n \"message\": \"Initial commit from Create Next App\"\n }\n]\n```\n" + }, + { + "path": "api/releases/list-a-projects-release-files.md", + "title": "List a Project's Release Files", + "hierarchy": [ + "Api", + "Releases", + "List A Projects Release Files" + ], + "summary": "# List a Project's Release Files", + "content": "# List a Project's Release Files\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/releases/{version}/files/\n\nReturn a list of files for a given release.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project.\n\n* `version`* (string)*\n\n REQUIRED\n\n The version identifier of the release.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:releases`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/releases/{version}/files/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"dateCreated\": \"2018-11-06T21:20:22.894Z\",\n \"dist\": null,\n \"headers\": {\n \"Content-Type\": \"text/plain; encoding=utf-8\"\n },\n \"id\": \"3\",\n \"name\": \"/demo/goodbye.txt\",\n \"sha1\": \"94d6b21e962a9fc65889617ec1f17a1e2fe11b65\",\n \"size\": 15\n }\n]\n```\n" + }, + { + "path": "api/releases/list-a-releases-deploys.md", + "title": "List a Release's Deploys", + "hierarchy": [ + "Api", + "Releases", + "List A Releases Deploys" + ], + "summary": "# List a Release's Deploys", + "content": "# List a Release's Deploys\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/releases/{version}/deploys/\n\nReturns a list of deploys based on the organization, version, and project.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `version`* (string)*\n\n REQUIRED\n\n The version identifier of the release\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:ci`\n* `project:admin`\n* `project:read`\n* `project:releases`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/releases/{version}/deploys/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n.\n```\n" + }, + { + "path": "api/releases/list-an-organization-releases-commits.md", + "title": "List an Organization Release's Commits", + "hierarchy": [ + "Api", + "Releases", + "List An Organization Releases Commits" + ], + "summary": "# List an Organization Release's Commits", + "content": "# List an Organization Release's Commits\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/releases/{version}/commits/\n\nList an organization release's commits.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the release belongs to.\n\n* `version`* (string)*\n\n REQUIRED\n\n The version identifier of the release.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:releases`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/releases/{version}/commits/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"dateCreated\": \"2018-11-06T21:19:58.536Z\",\n \"id\": \"acbafc639127fd89d10f474520104517ff1d709e\",\n \"message\": \"Initial commit from Create Next App\"\n }\n]\n```\n" + }, + { + "path": "api/releases/list-an-organizations-release-files.md", + "title": "List an Organization's Release Files", + "hierarchy": [ + "Api", + "Releases", + "List An Organizations Release Files" + ], + "summary": "# List an Organization's Release Files", + "content": "# List an Organization's Release Files\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/releases/{version}/files/\n\nReturn a list of files for a given release.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization.\n\n* `version`* (string)*\n\n REQUIRED\n\n The version identifier of the release.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:releases`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/releases/{version}/files/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"dateCreated\": \"2018-11-06T21:20:22.894Z\",\n \"dist\": null,\n \"headers\": {\n \"Content-Type\": \"text/plain; encoding=utf-8\"\n },\n \"id\": \"3\",\n \"name\": \"/demo/goodbye.txt\",\n \"sha1\": \"94d6b21e962a9fc65889617ec1f17a1e2fe11b65\",\n \"size\": 15\n }\n]\n```\n" + }, + { + "path": "api/releases/list-an-organizations-releases.md", + "title": "List an Organization's Releases", + "hierarchy": [ + "Api", + "Releases", + "List An Organizations Releases" + ], + "summary": "# List an Organization's Releases", + "content": "# List an Organization's Releases\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/releases/\n\nReturn a list of releases for a given organization.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization.\n\n### Query Parameters:\n\n* `query`* (string)*\n\n This parameter can be used to create a \"starts with\" filter for the version.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:releases`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/releases/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"id\": 2,\n \"authors\": [],\n \"commitCount\": 0,\n \"data\": {},\n \"dateCreated\": \"2018-11-06T21:20:08.033Z\",\n \"dateReleased\": null,\n \"deployCount\": 0,\n \"firstEvent\": null,\n \"lastCommit\": null,\n \"lastDeploy\": null,\n \"lastEvent\": null,\n \"newGroups\": 0,\n \"owner\": null,\n \"projects\": [\n {\n \"name\": \"Pump Station\",\n \"slug\": \"pump-station\"\n }\n ],\n \"ref\": \"6ba09a7c53235ee8a8fa5ee4c1ca8ca886e7fdbb\",\n \"shortVersion\": \"2.0rc2\",\n \"url\": null,\n \"version\": \"2.0rc2\"\n },\n {\n \"id\": 1,\n \"authors\": [],\n \"commitCount\": 0,\n \"data\": {},\n \"dateCreated\": \"2018-11-06T21:19:58.559Z\",\n \"dateReleased\": null,\n \"deployCount\": 0,\n \"firstEvent\": \"2018-11-06T21:19:58.639Z\",\n \"lastCommit\": null,\n \"lastDeploy\": null,\n \"lastEvent\": \"2018-11-06T21:19:58.639Z\",\n \"newGroups\": 0,\n \"owner\": null,\n \"projects\": [\n {\n \"name\": \"Prime Mover\",\n \"slug\": \"prime-mover\"\n }\n ],\n \"ref\": null,\n \"shortVersion\": \"2b6af31\",\n \"url\": null,\n \"version\": \"2b6af31b2edccc73a629108b17344dfe20858780\"\n }\n]\n```\n" + }, + { + "path": "api/releases/retrieve-a-project-releases-file.md", + "title": "Retrieve a Project Release's File", + "hierarchy": [ + "Api", + "Releases", + "Retrieve A Project Releases File" + ], + "summary": "# Retrieve a Project Release's File", + "content": "# Retrieve a Project Release's File\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/releases/{version}/files/{file\\_id}/\n\nRetrieve a file for a given release.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project.\n\n* `version`* (string)*\n\n REQUIRED\n\n The version identifier of the release.\n\n* `file_id`* (string)*\n\n REQUIRED\n\n The ID of the file to retrieve.\n\n### Query Parameters:\n\n* `download`* (boolean)*\n\n If this is set to true, then the response payload will be the raw file contents. Otherwise, the response will be the file metadata as JSON.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:releases`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/releases/{version}/files/{file_id}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"dateCreated\": \"2018-11-06T21:20:19.150Z\",\n \"dist\": null,\n \"headers\": {\n \"Content-Type\": \"text/plain; encoding=utf-8\"\n },\n \"id\": \"1\",\n \"name\": \"/demo/message-for-you.txt\",\n \"sha1\": \"2ef7bde608ce5404e97d5f042f95f89f1c232871\",\n \"size\": 12\n}\n```\n" + }, + { + "path": "api/releases/retrieve-an-organization-releases-file.md", + "title": "Retrieve an Organization Release's File", + "hierarchy": [ + "Api", + "Releases", + "Retrieve An Organization Releases File" + ], + "summary": "# Retrieve an Organization Release's File", + "content": "# Retrieve an Organization Release's File\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/releases/{version}/files/{file\\_id}/\n\nRetrieve a file for a given release.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization.\n\n* `version`* (string)*\n\n REQUIRED\n\n The version identifier of the release.\n\n* `file_id`* (string)*\n\n REQUIRED\n\n The ID of the file to retrieve.\n\n### Query Parameters:\n\n* `download`* (boolean)*\n\n If this is set to true, then the response payload will be the raw file contents. Otherwise, the response will be the file metadata as JSON.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:releases`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/releases/{version}/files/{file_id}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"dateCreated\": \"2018-11-06T21:20:19.150Z\",\n \"dist\": null,\n \"headers\": {\n \"Content-Type\": \"text/plain; encoding=utf-8\"\n },\n \"id\": \"1\",\n \"name\": \"/demo/message-for-you.txt\",\n \"sha1\": \"2ef7bde608ce5404e97d5f042f95f89f1c232871\",\n \"size\": 12\n}\n```\n" + }, + { + "path": "api/releases/retrieve-an-organizations-release.md", + "title": "Retrieve an Organization's Release", + "hierarchy": [ + "Api", + "Releases", + "Retrieve An Organizations Release" + ], + "summary": "# Retrieve an Organization's Release", + "content": "# Retrieve an Organization's Release\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/releases/{version}/\n\nReturn details on an individual release.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `version`* (string)*\n\n REQUIRED\n\n The version identifier of the release\n\n### Query Parameters:\n\n* `project_id`* (string)*\n\n The project ID to filter by.\n\n* `health`* (boolean)*\n\n Whether or not to include health data with the release. By default, this is false.\n\n* `adoptionStages`* (boolean)*\n\n Whether or not to include adoption stages with the release. By default, this is false.\n\n* `summaryStatsPeriod`* (string)*\n\n **choices**:\n\n * `14d\n 1d\n 1h\n 24h\n 2d\n 30d\n 48h\n 7d\n 90d`\n\n The period of time used to query summary stats for the release. By default, this is 14d.\n\n* `healthStatsPeriod`* (string)*\n\n **choices**:\n\n * `14d\n 1d\n 1h\n 24h\n 2d\n 30d\n 48h\n 7d\n 90d`\n\n The period of time used to query health stats for the release. By default, this is 24h if health is enabled.\n\n* `sort`* (string)*\n\n **choices**:\n\n * `crash_free_sessions\n crash_free_users\n date\n sessions\n users`\n\n The field used to sort results by. By default, this is `date`.\n\n* `status`* (string)*\n\n **choices**:\n\n * `archived\n open`\n\n Release statuses that you can filter by.\n\n* `query`* (string)*\n\n Filters results by using [query syntax](https://docs.sentry.io/product/sentry-basics/search.md).\n\n Example: `query=(transaction:foo AND release:abc) OR (transaction:[bar,baz] AND release:def)`\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:ci`\n* `project:admin`\n* `project:read`\n* `project:releases`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/releases/{version}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": 1122684517,\n \"version\": \"control@abc123\",\n \"status\": \"open\",\n \"shortVersion\": \"control@abc123\",\n \"versionInfo\": {\n \"package\": \"control\",\n \"version\": {\n \"raw\": \"abc123\"\n },\n \"description\": \"abc123\",\n \"buildHash\": \"abc123\"\n },\n \"ref\": null,\n \"url\": null,\n \"dateReleased\": null,\n \"dateCreated\": \"2024-05-21T11:26:16.190281Z\",\n \"data\": {},\n \"newGroups\": 0,\n \"owner\": null,\n \"commitCount\": 2,\n \"lastCommit\": {\n \"id\": \"xyz123\",\n \"message\": \"feat(raspberries): Made raspberries even more delicious\",\n \"dateCreated\": \"2024-05-21T11:04:55Z\",\n \"pullRequest\": {\n \"id\": \"70214\",\n \"title\": \"feat(raspberries): Made raspberries even more delicious\",\n \"message\": \"Made raspberries even more delicious\",\n \"dateCreated\": \"2024-05-03T07:32:28.205043Z\",\n \"repository\": {\n \"id\": \"1\",\n \"name\": \"raj/raspberries\",\n \"url\": \"https://raspberries.raspberries/raj/raspberries\",\n \"provider\": {\n \"id\": \"integrations:github\",\n \"name\": \"GitHub\"\n },\n \"status\": \"active\",\n \"dateCreated\": \"2016-10-10T21:36:42.414678Z\",\n \"integrationId\": \"2933\",\n \"externalSlug\": \"raj/raspberries\",\n \"externalId\": \"873328\"\n },\n \"author\": {\n \"id\": \"2837091\",\n \"name\": \"Raj's Raspberries\",\n \"username\": \"rajraspberry\",\n \"avatarUrl\": \"https://gravatar.com/avatar/bf99685de539465db9208ab3a888843ba0e5e85b1f156084484c7c6c31312be5?s=32&d=mm\",\n \"isActive\": true,\n \"hasPasswordAuth\": false,\n \"isManaged\": false,\n \"dateJoined\": \"2023-08-07T12:32:09.091427Z\",\n \"lastLogin\": \"2024-05-" + }, + { + "path": "api/releases/retrieve-files-changed-in-a-releases-commits.md", + "title": "Retrieve Files Changed in a Release's Commits", + "hierarchy": [ + "Api", + "Releases", + "Retrieve Files Changed In A Releases Commits" + ], + "summary": "# Retrieve Files Changed in a Release's Commits", + "content": "# Retrieve Files Changed in a Release's Commits\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/releases/{version}/commitfiles/\n\nRetrieve files changed in a release's commits\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the release belongs to.\n\n* `version`* (string)*\n\n REQUIRED\n\n The version identifier of the release.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:releases`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/releases/{version}/commitfiles/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSE\n\n```\nCopied\nSuccess.\n```\n" + }, + { + "path": "api/releases/retrieve-release-health-session-statistics.md", + "title": "Retrieve Release Health Session Statistics", + "hierarchy": [ + "Api", + "Releases", + "Retrieve Release Health Session Statistics" + ], + "summary": "# Retrieve Release Health Session Statistics", + "content": "# Retrieve Release Health Session Statistics\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/sessions/\n\nReturns 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 hour. The interval can at most be one day and at least one hour currently. It has to cleanly divide one day, for rounding reasons.\n\nBecause of technical limitations, this endpoint returns at most 10000 data points. For example, if you select a 90 day window grouped by releases, you will see at most `floor(10k / (90 + 1)) = 109` releases. To get more results, reduce the `statsPeriod`.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Query Parameters:\n\n* `field`* (array(string))*\n\n REQUIRED\n\n The list of fields to query.\n\n The available fields are\n\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\n* `start`* (string)*\n\n The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`.\n\n* `end`* (string)*\n\n The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`.\n\n* `environment`* (array(string))*\n\n The name of environments to filter by.\n\n* `statsPeriod`* (string)*\n\n The period of time for the query, will override the start & end parameters, a number followed by one of:\n\n * `d` for days\n * `h` for hours\n * `m` for minutes\n * `s` for seconds\n * `w` for weeks\n\n For example, `24h`, to mean query data starting from 24 hours ago to now.\n\n* `project`* (array(integer))*\n\n The IDs of projects to filter by. `-1` means all available projects. For example, the following are valid parameters:\n\n * `/?project=1234&project=56789`\n * `/?project=-1`\n\n* `per_page`* (integer)*\n\n The number of groups to return per request.\n\n* `interval`* (string)*\n\n Resolution of the time series, given in the same format as `statsPeriod`.\n\n The default and the minimum interval is `1h`.\n\n* `groupBy`* (array(string))*\n\n The list of properties to group by.\n\n The available groupBy conditions are `project`, `release`, `environment` and `session.status`.\n\n* `orderBy`* (string)*\n\n An optional field to order by, which must be one of the fields provided in `field`. Use `-` for descending order, for example, `-sum(session)`\n\n* `includeTotals`* (integer)*\n\n Specify `0` to exclude totals from the response. The default is `1`\n\n* `includeSeries`* (integer)*\n\n Specify `0` to exclude series from the response. The default is `1`\n\n* `query`* (string)*\n\n Filters results by using [query syntax](https://docs.sentry.io/product/sentry-basics/search.md).\n\n Example: `query=(transaction:foo AND release:abc) OR (transaction:[bar,baz] AND release:def)`\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organ" + }, + { + "path": "api/releases/retrieve-statuses-of-release-thresholds-alpha.md", + "title": "Retrieve Statuses of Release Thresholds (Alpha)", + "hierarchy": [ + "Api", + "Releases", + "Retrieve Statuses Of Release Thresholds Alpha" + ], + "summary": "# Retrieve Statuses of Release Thresholds (Alpha)", + "content": "# Retrieve Statuses of Release Thresholds (Alpha)\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/release-threshold-statuses/\n\n**`[WARNING]`**: This API is an experimental Alpha feature and is subject to 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. Each returned enriched threshold will contain the full serialized `release_threshold` instance as well as it's derived health statuses.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Query Parameters:\n\n* `start`* (string)*\n\n REQUIRED\n\n The start of the time series range as an explicit datetime, either in UTC ISO8601 or epoch seconds. Use along with `end`.\n\n* `end`* (string)*\n\n REQUIRED\n\n The inclusive end of the time series range as an explicit datetime, either in UTC ISO8601 or epoch seconds. Use along with `start`.\n\n* `environment`* (array(string))*\n\n A list of environment names to filter your results by.\n\n* `projectSlug`* (array(string))*\n\n A list of project slugs to filter your results by.\n\n* `release`* (array(string))*\n\n A list of release versions to filter your results by.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:ci`\n* `project:admin`\n* `project:read`\n* `project:releases`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/release-threshold-statuses/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"the-spoiled-yoghurt-v1.0.0\": [\n {\n \"project_id\": 0,\n \"project_slug\": \"the-spoiled-yoghurt\",\n \"environment\": {\n \"name\": \"production\"\n },\n \"project\": {\n \"id\": \"4505321021243392\",\n \"slug\": \"the-spoiled-yoghurt\",\n \"name\": \"The Spoiled Yoghurt\",\n \"platform\": \"python\",\n \"dateCreated\": \"2023-06-08T00:13:06.004534Z\",\n \"isBookmarked\": false,\n \"isMember\": true,\n \"features\": [\n \"alert-filters\",\n \"custom-inbound-filters\",\n \"data-forwarding\",\n \"discard-groups\",\n \"minidump\",\n \"rate-limits\",\n \"servicehooks\",\n \"similarity-indexing\",\n \"similarity-indexing-v2\",\n \"similarity-view\",\n \"similarity-view-v2\"\n ],\n \"firstEvent\": null,\n \"firstTransactionEvent\": false,\n \"access\": [\n \"member:read\",\n \"event:read\",\n \"project:admin\",\n \"team:write\",\n \"project:write\",\n \"team:admin\",\n \"project:read\",\n \"org:integrations\",\n \"org:read\",\n \"project:releases\",\n \"team:read\",\n \"alerts:write\",\n \"event:admin\",\n \"event:write\",\n \"alerts:read\"\n ],\n \"hasAccess\": true,\n \"hasMinifiedStackTrace\": false,\n \"hasFeedbacks\": false,\n \"hasMonitors\": false,\n \"hasNewFeedbacks\": false,\n \"hasProfiles\": false,\n \"hasReplays\": false,\n \"hasFlags\": false,\n \"hasSessions\": false,\n \"hasInsightsHttp\": true,\n \"hasInsightsDb\": false,\n \"hasInsightsAssets\": true,\n \"hasInsightsAppStart\": false,\n \"hasInsightsScreenLoad\": false,\n \"hasInsightsVitals\": false,\n \"hasInsightsCaches\": false,\n \"hasInsightsQueues\": false,\n \"hasInsightsLlmMonitoring\": false,\n \"hasInsightsAgentMonitoring\": false,\n \"hasInsightsMCP\": false,\n \"hasLogs\": false,\n \"isInternal\": false,\n \"isPublic\": false,\n " + }, + { + "path": "api/releases/update-a-project-release-file.md", + "title": "Update a Project Release File", + "hierarchy": [ + "Api", + "Releases", + "Update A Project Release File" + ], + "summary": "# Update a Project Release File", + "content": "# Update a Project Release File\n\nPUT /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/releases/{version}/files/{file\\_id}/\n\nUpdate a project release file.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project.\n\n* `version`* (string)*\n\n REQUIRED\n\n The version identifier of the release.\n\n* `file_id`* (string)*\n\n REQUIRED\n\n The ID of the file to retrieve.\n\n### Body Parameters\n\n* `name`* (string)*\n\n The new name (full path) of the file.\n\n* `dist`* (string)*\n\n The new name of the dist.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:releases`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/releases/{version}/files/{file_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -d '{\"name\":\"/demo/goodbye.txt\"}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"dateCreated\": \"2018-11-06T21:20:22.894Z\",\n \"dist\": null,\n \"headers\": {\n \"Content-Type\": \"text/plain; encoding=utf-8\"\n },\n \"id\": \"3\",\n \"name\": \"/demo/goodbye.txt\",\n \"sha1\": \"94d6b21e962a9fc65889617ec1f17a1e2fe11b65\",\n \"size\": 15\n}\n```\n" + }, + { + "path": "api/releases/update-an-organization-release-file.md", + "title": "Update an Organization Release File", + "hierarchy": [ + "Api", + "Releases", + "Update An Organization Release File" + ], + "summary": "# Update an Organization Release File", + "content": "# Update an Organization Release File\n\nPUT /api/0/organizations/{organization\\_id\\_or\\_slug}/releases/{version}/files/{file\\_id}/\n\nUpdate an organization release file.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization.\n\n* `version`* (string)*\n\n REQUIRED\n\n The version identifier of the release.\n\n* `file_id`* (string)*\n\n REQUIRED\n\n The ID of the file to retrieve.\n\n### Body Parameters\n\n* `name`* (string)*\n\n The new name (full path) of the file.\n\n* `dist`* (string)*\n\n The new name of the dist.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:releases`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/releases/{version}/files/{file_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -d '{\"name\":\"/demo/goodbye.txt\"}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"dateCreated\": \"2018-11-06T21:20:22.894Z\",\n \"dist\": null,\n \"headers\": {\n \"Content-Type\": \"text/plain; encoding=utf-8\"\n },\n \"id\": \"3\",\n \"name\": \"/demo/goodbye.txt\",\n \"sha1\": \"94d6b21e962a9fc65889617ec1f17a1e2fe11b65\",\n \"size\": 15\n}\n```\n" + }, + { + "path": "api/releases/update-an-organizations-release.md", + "title": "Update an Organization's Release", + "hierarchy": [ + "Api", + "Releases", + "Update An Organizations Release" + ], + "summary": "# Update an Organization's Release", + "content": "# Update an Organization's Release\n\nPUT /api/0/organizations/{organization\\_id\\_or\\_slug}/releases/{version}/\n\nUpdate a release. This can change some metadata associated with the release (the ref, url, and dates).\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `version`* (string)*\n\n REQUIRED\n\n The version identifier of the release\n\n### Body Parameters\n\n* `ref`* (string)*\n\n An optional commit reference. This is useful if a tagged version has been provided.\n\n* `url`* (string)*\n\n 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.\n\n* `dateReleased`* (string)*\n\n An optional date that indicates when the release went live. If not provided the current time is used.\n\n* `commits`* (array(object))*\n\n An optional list of commit data to be associated.\n\n* `refs`* (array(object))*\n\n 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.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:ci`\n* `project:admin`\n* `project:releases`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/releases/{version}/ \\\n -H 'Authorization: Bearer ' \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": 1122684517,\n \"version\": \"control@abc123\",\n \"status\": \"open\",\n \"shortVersion\": \"control@abc123\",\n \"versionInfo\": {\n \"package\": \"control\",\n \"version\": {\n \"raw\": \"abc123\"\n },\n \"description\": \"abc123\",\n \"buildHash\": \"abc123\"\n },\n \"ref\": null,\n \"url\": null,\n \"dateReleased\": null,\n \"dateCreated\": \"2024-05-21T11:26:16.190281Z\",\n \"data\": {},\n \"newGroups\": 0,\n \"owner\": null,\n \"commitCount\": 2,\n \"lastCommit\": {\n \"id\": \"xyz123\",\n \"message\": \"feat(raspberries): Made raspberries even more delicious\",\n \"dateCreated\": \"2024-05-21T11:04:55Z\",\n \"pullRequest\": {\n \"id\": \"70214\",\n \"title\": \"feat(raspberries): Made raspberries even more delicious\",\n \"message\": \"Made raspberries even more delicious\",\n \"dateCreated\": \"2024-05-03T07:32:28.205043Z\",\n \"repository\": {\n \"id\": \"1\",\n \"name\": \"raj/raspberries\",\n \"url\": \"https://raspberries.raspberries/raj/raspberries\",\n \"provider\": {\n \"id\": \"integrations:github\",\n \"name\": \"GitHub\"\n },\n \"status\": \"active\",\n \"dateCreated\": \"2016-10-10T21:36:42.414678Z\",\n \"integrationId\": \"2933\",\n \"externalSlug\": \"raj/raspberries\",\n \"externalId\": \"873328\"\n },\n \"author\": {\n \"id\": \"2837091\",\n \"name\": \"Raj's Raspberries\",\n \"username\": \"rajraspberry\",\n \"avatarUrl\": \"https://gravatar.com/avatar/bf99685de539465db9208ab3a888843ba0e5e85b1f156084484c7c6c31312be5?s=32&d=mm\",\n \"isActive\": true,\n \"hasPasswordAuth\": false,\n \"isManaged\": false,\n \"dateJoined\": \"2023-08-07T12:32:09.091427Z\",\n \"lastLogin\": \"2024-05-21T05:46:23.824074Z\",\n \"has2fa\": true,\n \"lastActive\": \"2024-05-21T13:59:10.614891Z\",\n \"isSuperuser\": true,\n \"isStaff\": true,\n \"experiments\": {},\n \"emails\": [\n {\n \"id\": \"2972219\",\n \"email\": \"raj@raspberries\",\n " + }, + { + "path": "api/releases/upload-a-new-organization-release-file.md", + "title": "Upload a New Organization Release File", + "hierarchy": [ + "Api", + "Releases", + "Upload A New Organization Release File" + ], + "summary": "# Upload a New Organization Release File", + "content": "# Upload a New Organization Release File\n\nPOST /api/0/organizations/{organization\\_id\\_or\\_slug}/releases/{version}/files/\n\nUpload a new file for the given release.\n\nUnlike other API requests, files must be uploaded using the traditional multipart/form-data content-type.\n\nRequests to this endpoint should use the region-specific domain eg. `us.sentry.io` or `de.sentry.io`.\n\nThe optional 'name' attribute should reflect the absolute path that this file will be referenced as. For example, in the case of JavaScript you might specify the full web URI.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization.\n\n* `version`* (string)*\n\n REQUIRED\n\n The version identifier of the release.\n\n### Body Parameters\n\n* `file`* (string)*\n\n REQUIRED\n\n The multipart encoded file.\n\n* `name`* (string)*\n\n The name (full path) of the file.\n\n* `dist`* (string)*\n\n The name of the dist.\n\n* `header`* (string)*\n\n This parameter can be supplied multiple times to attach headers to the file. Each header is a string in the format `key:value`. For instance it can be used to define a content type.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:releases`\n\n```\ncurl https://{region}.sentry.io/api/0/organizations/{organization_id_or_slug}/releases/{version}/files/ \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: multipart/form-data' \\\n -F name=/demo/release.min.js \\\n -F file=release.min.js\n```\n\nRESPONSE\n\n```\nCopied\nSuccess.\n```\n" + }, + { + "path": "api/releases/upload-a-new-project-release-file.md", + "title": "Upload a New Project Release File", + "hierarchy": [ + "Api", + "Releases", + "Upload A New Project Release File" + ], + "summary": "# Upload a New Project Release File", + "content": "# Upload a New Project Release File\n\nPOST /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/releases/{version}/files/\n\nUpload a new file for the given release.\n\nUnlike other API requests, files must be uploaded using the traditional multipart/form-data content-type.\n\nRequests to this endpoint should use the region-specific domain eg. `us.sentry.io` or `de.sentry.io`\n\nThe optional 'name' attribute should reflect the absolute path that this file will be referenced as. For example, in the case of JavaScript you might specify the full web URI.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project.\n\n* `version`* (string)*\n\n REQUIRED\n\n The version identifier of the release.\n\n### Body Parameters\n\n* `file`* (string)*\n\n REQUIRED\n\n The multipart encoded file.\n\n* `name`* (string)*\n\n The name (full path) of the file.\n\n* `dist`* (string)*\n\n The name of the dist.\n\n* `header`* (string)*\n\n This parameter can be supplied multiple times to attach headers to the file. Each header is a string in the format `key:value`. For instance it can be used to define a content type.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:releases`\n\n```\ncurl https://{region}.sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/releases/{version}/files/ \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: multipart/form-data' \\\n -F name=/demo/hello.min.js.map \\\n -F file=@hello.min.js.map\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"dateCreated\": \"2018-11-06T21:20:22.894Z\",\n \"dist\": null,\n \"headers\": {\n \"Content-Type\": \"text/plain; encoding=utf-8\"\n },\n \"id\": \"3\",\n \"name\": \"/demo/goodbye.txt\",\n \"sha1\": \"94d6b21e962a9fc65889617ec1f17a1e2fe11b65\",\n \"size\": 15\n}\n```\n" + }, + { + "path": "api/replays.md", + "title": "Replays", + "hierarchy": [ + "Api", + "Replays" + ], + "summary": "# Replays", + "content": "# Replays\n\n* #### [Delete a Replay Instance](https://docs.sentry.io/api/replays/delete-a-replay-instance.md)\n* #### [List an Organization's Replays](https://docs.sentry.io/api/replays/list-an-organizations-replays.md)\n* #### [List an Organization's Selectors](https://docs.sentry.io/api/replays/list-an-organizations-selectors.md)\n* #### [List Clicked Nodes](https://docs.sentry.io/api/replays/list-clicked-nodes.md)\n* #### [List Recording Segments](https://docs.sentry.io/api/replays/list-recording-segments.md)\n* #### [List Users Who Have Viewed a Replay](https://docs.sentry.io/api/replays/list-users-who-have-viewed-a-replay.md)\n* #### [Retrieve a Count of Replays for a Given Issue or Transaction](https://docs.sentry.io/api/replays/retrieve-a-count-of-replays-for-a-given-issue-or-transaction.md)\n* #### [Retrieve a Recording Segment](https://docs.sentry.io/api/replays/retrieve-a-recording-segment.md)\n* #### [Retrieve a Replay Instance](https://docs.sentry.io/api/replays/retrieve-a-replay-instance.md)\n" + }, + { + "path": "api/replays/delete-a-replay-instance.md", + "title": "Delete a Replay Instance", + "hierarchy": [ + "Api", + "Replays", + "Delete A Replay Instance" + ], + "summary": "# Delete a Replay Instance", + "content": "# Delete a Replay Instance\n\nDELETE /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/replays/{replay\\_id}/\n\nDelete a replay.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n* `replay_id`* (string)*\n\n REQUIRED\n\n The ID of the replay you'd like to retrieve.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/replays/{replay_id}/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nNo Content.\n```\n" + }, + { + "path": "api/replays/list-an-organizations-replays.md", + "title": "List an Organization's Replays", + "hierarchy": [ + "Api", + "Replays", + "List An Organizations Replays" + ], + "summary": "# List an Organization's Replays", + "content": "# List an Organization's Replays\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/replays/\n\nReturn a list of replays belonging to an organization.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Query Parameters:\n\n* `statsPeriod`* (string)*\n\n 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`.\n\n* `start`* (string)*\n\n 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`.\n\n* `end`* (string)*\n\n 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`.\n\n* `field`* (array(string))*\n\n **choices**:\n\n * `activity\n browser\n count_dead_clicks\n count_errors\n count_rage_clicks\n count_segments\n count_urls\n device\n dist\n duration\n environment\n error_ids\n finished_at\n id\n is_archived\n os\n platform\n project_id\n releases\n sdk\n started_at\n tags\n trace_ids\n urls\n user\n clicks\n info_ids\n warning_ids\n count_warnings\n count_infos\n has_viewed`\n\n Specifies a field that should be marshaled in the output. Invalid fields will be rejected.\n\n* `project`* (array(integer))*\n\n The ID of the projects to filter by.\n\n* `projectSlug`* (array(string))*\n\n A list of project slugs to filter your results by.\n\n* `environment`* (string)*\n\n The environment to filter by.\n\n* `sort`* (string)*\n\n The field to sort the output by.\n\n* `sortBy`* (string)*\n\n The field to sort the output by.\n\n* `orderBy`* (string)*\n\n The field to sort the output by.\n\n* `query`* (string)*\n\n A structured query string to filter the output by.\n\n* `per_page`* (integer)*\n\n Limit the number of rows to return in the result.\n\n* `cursor`* (string)*\n\n The cursor parameter is used to paginate results. See [here](https://docs.sentry.io/api/pagination.md) for how to use this query parameter\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/replays/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"activity\": 5,\n \"browser\": {\n \"name\": \"Chome\",\n \"version\": \"103.0.38\"\n },\n \"count_dead_clicks\": 6,\n \"count_rage_clicks\": 1,\n \"count_errors\": 1,\n \"count_segments\": 0,\n \"count_urls\": 1,\n \"device\": {\n \"brand\": \"Apple\",\n \"family\": \"iPhone\",\n \"model\": \"11\",\n \"name\": \"iPhone 11\"\n },\n \"dist\": null,\n \"duration\": 576,\n \"environment\": \"production\",\n \"error_ids\": [\n \"7e07485f-12f9-416b-8b14-26260799b51f\"\n ],\n \"finished_at\": \"2022-07-07T14:15:33.201019\",\n \"has_viewed\": true,\n \"id\": \"7e07485f-12f9-416b-8b14-26260799b51f\",\n \"is_archived\": null,\n \"os\": {\n \"name\": \"iOS\",\n \"version\": \"16.2\"\n },\n \"platform\": \"Sentry\",\n \"project_id\": \"639195\",\n \"releases\": [\n \"version@1.4\"\n ],\n \"sdk\": {\n \"name\": \"Thundercat\",\n \"version\": \"27.1\"\n },\n \"started_at\": \"2022-07-07T14:05:57.909921\"" + }, + { + "path": "api/replays/list-an-organizations-selectors.md", + "title": "List an Organization's Selectors", + "hierarchy": [ + "Api", + "Replays", + "List An Organizations Selectors" + ], + "summary": "# List an Organization's Selectors", + "content": "# List an Organization's Selectors\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/replay-selectors/\n\nReturn a list of selectors for a given organization.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Query Parameters:\n\n* `environment`* (array(string))*\n\n The environment to filter by.\n\n* `statsPeriod`* (string)*\n\n 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`.\n\n* `start`* (string)*\n\n 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`.\n\n* `end`* (string)*\n\n 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`.\n\n* `project`* (array(integer))*\n\n The ID of the projects to filter by.\n\n* `projectSlug`* (array(string))*\n\n A list of project slugs to filter your results by.\n\n* `sort`* (string)*\n\n The field to sort the output by.\n\n* `sortBy`* (string)*\n\n The field to sort the output by.\n\n* `orderBy`* (string)*\n\n The field to sort the output by.\n\n* `cursor`* (string)*\n\n A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.\n\n* `per_page`* (integer)*\n\n Limit the number of rows to return in the result. Default and maximum allowed is 100.\n\n* `query`* (string)*\n\n Filters results by using [query syntax](https://docs.sentry.io/product/sentry-basics/search.md).\n\n Example: `query=(transaction:foo AND release:abc) OR (transaction:[bar,baz] AND release:def)`\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/replay-selectors/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"data\": [\n {\n \"count_dead_clicks\": 2,\n \"count_rage_clicks\": 1,\n \"dom_element\": \"div#myid.class1.class2\",\n \"element\": {\n \"alt\": \"\",\n \"aria_label\": \"\",\n \"class\": [\n \"class1\",\n \"class2\"\n ],\n \"component_name\": \"\",\n \"id\": \"myid\",\n \"role\": \"\",\n \"tag\": \"div\",\n \"testid\": \"\",\n \"title\": \"\"\n },\n \"project_id\": \"1\"\n }\n ]\n}\n```\n" + }, + { + "path": "api/replays/list-clicked-nodes.md", + "title": "List Clicked Nodes", + "hierarchy": [ + "Api", + "Replays", + "List Clicked Nodes" + ], + "summary": "# List Clicked Nodes", + "content": "# List Clicked Nodes\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/replays/{replay\\_id}/clicks/\n\nRetrieve a collection of RRWeb DOM node-ids and the timestamp they were clicked.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n* `replay_id`* (string)*\n\n REQUIRED\n\n The ID of the replay you'd like to retrieve.\n\n### Query Parameters:\n\n* `cursor`* (string)*\n\n A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.\n\n* `environment`* (array(string))*\n\n The name of environments to filter by.\n\n* `per_page`* (integer)*\n\n Limit the number of rows to return in the result. Default and maximum allowed is 100.\n\n* `query`* (string)*\n\n Filters results by using [query syntax](https://docs.sentry.io/product/sentry-basics/search.md).\n\n Example: `query=(transaction:foo AND release:abc) OR (transaction:[bar,baz] AND release:def)`\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/replays/{replay_id}/clicks/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"data\": [\n {\n \"node_id\": 1,\n \"timestamp\": \"2024-02-08T15:52:25+00:00\"\n }\n ]\n}\n```\n" + }, + { + "path": "api/replays/list-recording-segments.md", + "title": "List Recording Segments", + "hierarchy": [ + "Api", + "Replays", + "List Recording Segments" + ], + "summary": "# List Recording Segments", + "content": "# List Recording Segments\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/replays/{replay\\_id}/recording-segments/\n\nReturn a collection of replay recording segments.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n* `replay_id`* (string)*\n\n REQUIRED\n\n The ID of the replay you'd like to retrieve.\n\n### Query Parameters:\n\n* `cursor`* (string)*\n\n A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.\n\n* `per_page`* (integer)*\n\n Limit the number of rows to return in the result. Default and maximum allowed is 100.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/replays/{replay_id}/recording-segments/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n [\n {\n \"type\": 5,\n \"timestamp\": 1658770772.902,\n \"data\": {\n \"tag\": \"performanceSpan\",\n \"payload\": {\n \"op\": \"memory\",\n \"description\": \"\",\n \"startTimestamp\": 1658770772.902,\n \"endTimestamp\": 1658770772.902,\n \"data\": {\n \"memory\": {\n \"jsHeapSizeLimit\": 4294705152,\n \"totalJSHeapSize\": 10204109,\n \"usedJSHeapSize\": 9131621\n }\n }\n }\n }\n }\n ],\n [\n {\n \"type\": 5,\n \"timestamp\": 1665063926.125,\n \"data\": {\n \"tag\": \"performanceSpan\",\n \"payload\": {\n \"op\": \"navigation.navigate\",\n \"description\": \"https://sentry.io\",\n \"startTimestamp\": 1665063926.125,\n \"endTimestamp\": 1665063926.833,\n \"data\": {\n \"size\": 9538,\n \"duration\": 710\n }\n }\n }\n }\n ]\n]\n```\n" + }, + { + "path": "api/replays/list-users-who-have-viewed-a-replay.md", + "title": "List Users Who Have Viewed a Replay", + "hierarchy": [ + "Api", + "Replays", + "List Users Who Have Viewed A Replay" + ], + "summary": "# List Users Who Have Viewed a Replay", + "content": "# List Users Who Have Viewed a Replay\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/replays/{replay\\_id}/viewed-by/\n\nReturn a list of users who have viewed a replay.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n* `replay_id`* (string)*\n\n REQUIRED\n\n The ID of the replay you'd like to retrieve.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `event:admin`\n* `event:read`\n* `event:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/replays/{replay_id}/viewed-by/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"data\": {\n \"viewed_by\": [\n {\n \"id\": \"884411\",\n \"name\": \"some.body@sentry.io\",\n \"username\": \"d93522a35cb64c13991104bd73d44519\",\n \"email\": \"some.body@sentry.io\",\n \"avatarUrl\": \"https://gravatar.com/avatar/d93522a35cb64c13991104bd73d44519d93522a35cb64c13991104bd73d44519?s=32&d=mm\",\n \"isActive\": true,\n \"hasPasswordAuth\": false,\n \"isManaged\": false,\n \"dateJoined\": \"2022-07-25T23:36:29.593212Z\",\n \"lastLogin\": \"2024-03-14T18:11:28.740309Z\",\n \"has2fa\": true,\n \"lastActive\": \"2024-03-15T22:22:06.925934Z\",\n \"isSuperuser\": true,\n \"isStaff\": false,\n \"experiments\": {},\n \"emails\": [\n {\n \"id\": \"2231333\",\n \"email\": \"some.body@sentry.io\",\n \"is_verified\": true\n }\n ],\n \"avatar\": {\n \"avatarType\": \"upload\",\n \"avatarUuid\": \"499dcd0764da42a589654a2224086e67\",\n \"avatarUrl\": \"https://sentry.io/avatar/499dcd0764da42a589654a2224086e67/\"\n },\n \"type\": \"user\"\n }\n ]\n }\n}\n```\n" + }, + { + "path": "api/replays/retrieve-a-count-of-replays-for-a-given-issue-or-transaction.md", + "title": "Retrieve a Count of Replays for a Given Issue or Transaction", + "hierarchy": [ + "Api", + "Replays", + "Retrieve A Count Of Replays For A Given Issue Or Transaction" + ], + "summary": "# Retrieve a Count of Replays for a Given Issue or Transaction", + "content": "# Retrieve a Count of Replays for a Given Issue or Transaction\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/replay-count/\n\nReturn 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).\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Query Parameters:\n\n* `environment`* (array(string))*\n\n The name of environments to filter by.\n\n* `start`* (string)*\n\n The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`.\n\n* `end`* (string)*\n\n The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`.\n\n* `statsPeriod`* (string)*\n\n The period of time for the query, will override the start & end parameters, a number followed by one of:\n\n * `d` for days\n * `h` for hours\n * `m` for minutes\n * `s` for seconds\n * `w` for weeks\n\n For example, `24h`, to mean query data starting from 24 hours ago to now.\n\n* `project_id_or_slug`* (array(string))*\n\n The project slugs to filter by. Use `$all` to include all available projects. For example, the following are valid parameters:\n\n * `/?projectSlug=$all`\n * `/?projectSlug=android&projectSlug=javascript-react`\n\n* `query`* (string)*\n\n Filters results by using [query syntax](https://docs.sentry.io/product/sentry-basics/search.md).\n\n Example: `query=(transaction:foo AND release:abc) OR (transaction:[bar,baz] AND release:def)`\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/replay-count/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"1\": 9,\n \"2\": 0,\n \"5\": 0,\n \"9\": 1,\n \"10\": 29\n}\n```\n" + }, + { + "path": "api/replays/retrieve-a-recording-segment.md", + "title": "Retrieve a Recording Segment", + "hierarchy": [ + "Api", + "Replays", + "Retrieve A Recording Segment" + ], + "summary": "# Retrieve a Recording Segment", + "content": "# Retrieve a Recording Segment\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/replays/{replay\\_id}/recording-segments/{segment\\_id}/\n\nReturn a replay recording segment.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n* `replay_id`* (string)*\n\n REQUIRED\n\n The ID of the replay you'd like to retrieve.\n\n* `segment_id`* (integer)*\n\n REQUIRED\n\n The ID of the segment you'd like to retrieve.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/replays/{replay_id}/recording-segments/{segment_id}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"type\": 5,\n \"timestamp\": 1658770772.902,\n \"data\": {\n \"tag\": \"performanceSpan\",\n \"payload\": {\n \"op\": \"memory\",\n \"description\": \"\",\n \"startTimestamp\": 1658770772.902,\n \"endTimestamp\": 1658770772.902,\n \"data\": {\n \"memory\": {\n \"jsHeapSizeLimit\": 4294705152,\n \"totalJSHeapSize\": 10204109,\n \"usedJSHeapSize\": 9131621\n }\n }\n }\n }\n }\n]\n```\n" + }, + { + "path": "api/replays/retrieve-a-replay-instance.md", + "title": "Retrieve a Replay Instance", + "hierarchy": [ + "Api", + "Replays", + "Retrieve A Replay Instance" + ], + "summary": "# Retrieve a Replay Instance", + "content": "# Retrieve a Replay Instance\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/replays/{replay\\_id}/\n\nReturn details on an individual replay.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `replay_id`* (string)*\n\n REQUIRED\n\n The ID of the replay you'd like to retrieve.\n\n### Query Parameters:\n\n* `statsPeriod`* (string)*\n\n 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`.\n\n* `start`* (string)*\n\n 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`.\n\n* `end`* (string)*\n\n 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`.\n\n* `field`* (array(string))*\n\n **choices**:\n\n * `activity\n browser\n count_dead_clicks\n count_errors\n count_rage_clicks\n count_segments\n count_urls\n device\n dist\n duration\n environment\n error_ids\n finished_at\n id\n is_archived\n os\n platform\n project_id\n releases\n sdk\n started_at\n tags\n trace_ids\n urls\n user\n clicks\n info_ids\n warning_ids\n count_warnings\n count_infos\n has_viewed`\n\n Specifies a field that should be marshaled in the output. Invalid fields will be rejected.\n\n* `project`* (array(integer))*\n\n The ID of the projects to filter by.\n\n* `projectSlug`* (array(string))*\n\n A list of project slugs to filter your results by.\n\n* `environment`* (string)*\n\n The environment to filter by.\n\n* `sort`* (string)*\n\n The field to sort the output by.\n\n* `sortBy`* (string)*\n\n The field to sort the output by.\n\n* `orderBy`* (string)*\n\n The field to sort the output by.\n\n* `query`* (string)*\n\n A structured query string to filter the output by.\n\n* `per_page`* (integer)*\n\n Limit the number of rows to return in the result.\n\n* `cursor`* (string)*\n\n The cursor parameter is used to paginate results. See [here](https://docs.sentry.io/api/pagination.md) for how to use this query parameter\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/replays/{replay_id}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"activity\": 5,\n \"browser\": {\n \"name\": \"Chome\",\n \"version\": \"103.0.38\"\n },\n \"count_dead_clicks\": 6,\n \"count_rage_clicks\": 1,\n \"count_errors\": 1,\n \"count_segments\": 0,\n \"count_urls\": 1,\n \"device\": {\n \"brand\": \"Apple\",\n \"family\": \"iPhone\",\n \"model\": \"11\",\n \"name\": \"iPhone 11\"\n },\n \"dist\": null,\n \"duration\": 576,\n \"environment\": \"production\",\n \"error_ids\": [\n \"7e07485f-12f9-416b-8b14-26260799b51f\"\n ],\n \"finished_at\": \"2022-07-07T14:15:33.201019\",\n \"has_viewed\": true,\n \"id\": \"7e07485f-12f9-416b-8b14-26260799b51f\",\n \"is_archived\": null,\n \"os\": {\n \"name\": \"iOS\",\n \"version\": \"16.2\"\n },\n \"platform\": \"Sentry\",\n \"project_id\": \"639195\",\n \"releases\": [\n \"version@1.4\"\n ],\n \"sdk\": {\n \"name\": \"Thundercat\",\n \"version\": \"27.1\"\n },\n \"star" + }, + { + "path": "api/requests.md", + "title": "Requests", + "hierarchy": [ + "Api", + "Requests" + ], + "summary": "# Requests", + "content": "# Requests\n\nAll API requests should be made to the `/api/0/` prefix, and will return JSON as the response:\n\n```bash\ncurl -i https://sentry.io/api/0/\n```\n\n## [HTTP Verbs](https://docs.sentry.io/api/requests.md#http-verbs)\n\nSentry makes an attempt to stick to appropriate HTTP verbs, but we always prioritize usability over correctness.\n\n| Method | Description |\n| --------- | --------------------------------------------------------------------- |\n| `DELETE` | Used for deleting resources. |\n| `GET` | Used for retrieving resources. |\n| `OPTIONS` | Describes the given endpoint. |\n| `POST` | Used for creating resources. |\n| `PUT` | Used for updating resources. Partial data is accepted where possible. |\n\n## [Parameters and Data](https://docs.sentry.io/api/requests.md#parameters-and-data)\n\nAny parameters not included in the URL should be encoded as JSON with a Content-Type of `'application/json'`:\n\n```bash\ncurl -i https://sentry.io/api/0/organizations/acme/projects/1/groups/ \\\n -d '{\"status\": \"resolved\"}' \\\n -H 'Content-Type: application/json'\n```\n\nAdditional parameters are sometimes specified via the querystring, even for `POST`, `PUT`, and `DELETE` requests:\n\n```bash\ncurl -i https://sentry.io/api/0/organizations/acme/projects/1/groups/?status=unresolved \\\n -d '{\"status\": \"resolved\"}' \\\n -H 'Content-Type: application/json'\n```\n" + }, + { + "path": "api/scim.md", + "title": "SCIM", + "hierarchy": [ + "Api", + "Scim" + ], + "summary": "# SCIM", + "content": "# SCIM\n\nSystem 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. 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](https://docs.sentry.io/product/accounts/sso.md#scim-provisioning). Sentry's SCIM API does not currently support syncing passwords, or setting any User attributes other than `active`.\n\n* #### [Delete an Individual Team](https://docs.sentry.io/api/scim/delete-an-individual-team.md)\n* #### [Delete an Organization Member via SCIM](https://docs.sentry.io/api/scim/delete-an-organization-member-via-scim.md)\n* #### [List an Organization's Paginated Teams](https://docs.sentry.io/api/scim/list-an-organizations-paginated-teams.md)\n* #### [List an Organization's SCIM Members](https://docs.sentry.io/api/scim/list-an-organizations-scim-members.md)\n* #### [Provision a New Organization Member](https://docs.sentry.io/api/scim/provision-a-new-organization-member.md)\n* #### [Provision a New Team](https://docs.sentry.io/api/scim/provision-a-new-team.md)\n* #### [Query an Individual Organization Member](https://docs.sentry.io/api/scim/query-an-individual-organization-member.md)\n* #### [Query an Individual Team](https://docs.sentry.io/api/scim/query-an-individual-team.md)\n* #### [Update a Team's Attributes](https://docs.sentry.io/api/scim/update-a-teams-attributes.md)\n* #### [Update an Organization Member's Attributes](https://docs.sentry.io/api/scim/update-an-organization-members-attributes.md)\n" + }, + { + "path": "api/scim/delete-an-individual-team.md", + "title": "Delete an Individual Team", + "hierarchy": [ + "Api", + "Scim", + "Delete An Individual Team" + ], + "summary": "# Delete an Individual Team", + "content": "# Delete an Individual Team\n\nDELETE /api/0/organizations/{organization\\_id\\_or\\_slug}/scim/v2/Groups/{team\\_id\\_or\\_slug}\n\nDelete a team with a SCIM Group DELETE Request.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `team_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the team the resource belongs to.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `team:admin`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/scim/v2/Groups/{team_id_or_slug} \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nSuccess.\n```\n" + }, + { + "path": "api/scim/delete-an-organization-member-via-scim.md", + "title": "Delete an Organization Member via SCIM", + "hierarchy": [ + "Api", + "Scim", + "Delete An Organization Member Via Scim" + ], + "summary": "# Delete an Organization Member via SCIM", + "content": "# Delete an Organization Member via SCIM\n\nDELETE /api/0/organizations/{organization\\_id\\_or\\_slug}/scim/v2/Users/{member\\_id}\n\nDelete an organization member with a SCIM User DELETE Request.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `member_id`* (string)*\n\n REQUIRED\n\n The ID of the member to delete.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `member:admin`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/scim/v2/Users/{member_id} \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nSuccess.\n```\n" + }, + { + "path": "api/scim/list-an-organizations-paginated-teams.md", + "title": "List an Organization's Paginated Teams", + "hierarchy": [ + "Api", + "Scim", + "List An Organizations Paginated Teams" + ], + "summary": "# List an Organization's Paginated Teams", + "content": "# List an Organization's Paginated Teams\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/scim/v2/Groups\n\nReturns 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.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Query Parameters:\n\n* `startIndex`* (integer)*\n\n SCIM 1-offset based index for pagination.\n\n* `count`* (integer)*\n\n The maximum number of results the query should return, maximum of 100.\n\n* `filter`* (string)*\n\n A SCIM filter expression. The only operator currently supported is `eq`.\n\n* `excludedAttributes`* (array(string))*\n\n Fields that should be left off of return values. Right now the only supported field for this query is members.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `team:admin`\n* `team:read`\n* `team:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/scim/v2/Groups \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"schemas\": [\n \"urn:ietf:params:scim:api:messages:2.0:ListResponse\"\n ],\n \"totalResults\": 1,\n \"startIndex\": 1,\n \"itemsPerPage\": 1,\n \"Resources\": [\n {\n \"schemas\": [\n \"urn:ietf:params:scim:schemas:core:2.0:Group\"\n ],\n \"id\": \"23232\",\n \"displayName\": \"test-scimv2\",\n \"members\": [],\n \"meta\": {\n \"resourceType\": \"Group\"\n }\n }\n ]\n}\n```\n" + }, + { + "path": "api/scim/list-an-organizations-scim-members.md", + "title": "List an Organization's SCIM Members", + "hierarchy": [ + "Api", + "Scim", + "List An Organizations Scim Members" + ], + "summary": "# List an Organization's SCIM Members", + "content": "# List an Organization's SCIM Members\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/scim/v2/Users\n\nReturns a paginated list of members bound to a organization with a SCIM Users GET Request.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Query Parameters:\n\n* `startIndex`* (integer)*\n\n SCIM 1-offset based index for pagination.\n\n* `count`* (integer)*\n\n The maximum number of results the query should return, maximum of 100.\n\n* `filter`* (string)*\n\n A SCIM filter expression. The only operator currently supported is `eq`.\n\n* `excludedAttributes`* (array(string))*\n\n Fields that should be left off of return values. Right now the only supported field for this query is members.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `member:admin`\n* `member:read`\n* `member:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/scim/v2/Users \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"schemas\": [\n \"urn:ietf:params:scim:api:messages:2.0:ListResponse\"\n ],\n \"totalResults\": 1,\n \"startIndex\": 1,\n \"itemsPerPage\": 1,\n \"Resources\": [\n {\n \"schemas\": [\n \"urn:ietf:params:scim:schemas:core:2.0:User\"\n ],\n \"id\": \"102\",\n \"userName\": \"test.user@okta.local\",\n \"emails\": [\n {\n \"primary\": true,\n \"value\": \"test.user@okta.local\",\n \"type\": \"work\"\n }\n ],\n \"name\": {\n \"familyName\": \"N/A\",\n \"givenName\": \"N/A\"\n },\n \"active\": true,\n \"meta\": {\n \"resourceType\": \"User\"\n },\n \"sentryOrgRole\": \"member\"\n }\n ]\n}\n```\n" + }, + { + "path": "api/scim/provision-a-new-organization-member.md", + "title": "Provision a New Organization Member", + "hierarchy": [ + "Api", + "Scim", + "Provision A New Organization Member" + ], + "summary": "# Provision a New Organization Member", + "content": "# Provision a New Organization Member\n\nPOST /api/0/organizations/{organization\\_id\\_or\\_slug}/scim/v2/Users\n\nCreate a new Organization Member via a SCIM Users POST Request.\n\nNote that this API does not support setting secondary emails.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Body Parameters\n\n* `userName`* (string)*\n\n REQUIRED\n\n The SAML field used for email.\n\n* `sentryOrgRole`* (string)*\n\n The organization role of the member. If unspecified, this will be 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 the organization's membership.\n * `admin` - Can edit global integrations, manage projects, and add/remove teams. They automatically assume the Team Admin role for teams they join. Note: This role can no longer be assigned in Business and Enterprise plans. Use `TeamRoles` instead.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `member:admin`\n* `member:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/scim/v2/Users \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"schemas\": [\n \"urn:ietf:params:scim:schemas:core:2.0:User\"\n ],\n \"id\": \"242\",\n \"userName\": \"test.user@okta.local\",\n \"emails\": [\n {\n \"primary\": true,\n \"value\": \"test.user@okta.local\",\n \"type\": \"work\"\n }\n ],\n \"active\": true,\n \"name\": {\n \"familyName\": \"N/A\",\n \"givenName\": \"N/A\"\n },\n \"meta\": {\n \"resourceType\": \"User\"\n },\n \"sentryOrgRole\": \"member\"\n}\n```\n" + }, + { + "path": "api/scim/provision-a-new-team.md", + "title": "Provision a New Team", + "hierarchy": [ + "Api", + "Scim", + "Provision A New Team" + ], + "summary": "# Provision a New Team", + "content": "# Provision a New Team\n\nPOST /api/0/organizations/{organization\\_id\\_or\\_slug}/scim/v2/Groups\n\nCreate a new team bound to an organization via a SCIM Groups POST Request. The slug will have a normalization of uppercases/spaces to lowercases and dashes.\n\nNote that teams are always created with an empty member set.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Body Parameters\n\n* `displayName`* (string)*\n\n REQUIRED\n\n The slug of the team that is shown in the UI.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `team:admin`\n* `team:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/scim/v2/Groups \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"schemas\": [\n \"urn:ietf:params:scim:schemas:core:2.0:Group\"\n ],\n \"displayName\": \"Test SCIMv2\",\n \"members\": [],\n \"meta\": {\n \"resourceType\": \"Group\"\n },\n \"id\": \"123\"\n}\n```\n" + }, + { + "path": "api/scim/query-an-individual-organization-member.md", + "title": "Query an Individual Organization Member", + "hierarchy": [ + "Api", + "Scim", + "Query An Individual Organization Member" + ], + "summary": "# Query an Individual Organization Member", + "content": "# Query an Individual Organization Member\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/scim/v2/Users/{member\\_id}\n\nQuery an individual organization member with a SCIM User GET Request.\n\n* The `name` object will contain fields `firstName` and `lastName` with the values of `N/A`. Sentry's SCIM API does not currently support these fields but returns them for compatibility purposes.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `member_id`* (string)*\n\n REQUIRED\n\n The ID of the member to query.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `member:admin`\n* `member:read`\n* `member:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/scim/v2/Users/{member_id} \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"schemas\": [\n \"urn:ietf:params:scim:schemas:core:2.0:User\"\n ],\n \"id\": \"102\",\n \"userName\": \"test.user@okta.local\",\n \"emails\": [\n {\n \"primary\": true,\n \"value\": \"test.user@okta.local\",\n \"type\": \"work\"\n }\n ],\n \"name\": {\n \"familyName\": \"N/A\",\n \"givenName\": \"N/A\"\n },\n \"active\": true,\n \"meta\": {\n \"resourceType\": \"User\"\n },\n \"sentryOrgRole\": \"member\"\n}\n```\n" + }, + { + "path": "api/scim/query-an-individual-team.md", + "title": "Query an Individual Team", + "hierarchy": [ + "Api", + "Scim", + "Query An Individual Team" + ], + "summary": "# Query an Individual Team", + "content": "# Query an Individual Team\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/scim/v2/Groups/{team\\_id\\_or\\_slug}\n\nQuery an individual team with a SCIM Group GET Request.\n\n* Note that the members field will only contain up to 10000 members.\n\n### Path Parameters\n\n* `team_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the team the resource belongs to.\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `team:admin`\n* `team:read`\n* `team:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/scim/v2/Groups/{team_id_or_slug} \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"schemas\": [\n \"urn:ietf:params:scim:schemas:core:2.0:Group\"\n ],\n \"id\": \"23232\",\n \"displayName\": \"test-scimv2\",\n \"members\": [],\n \"meta\": {\n \"resourceType\": \"Group\"\n }\n}\n```\n" + }, + { + "path": "api/scim/update-a-teams-attributes.md", + "title": "Update a Team's Attributes", + "hierarchy": [ + "Api", + "Scim", + "Update A Teams Attributes" + ], + "summary": "# Update a Team's Attributes", + "content": "# Update a Team's Attributes\n\nPATCH /api/0/organizations/{organization\\_id\\_or\\_slug}/scim/v2/Groups/{team\\_id\\_or\\_slug}\n\nUpdate a team's attributes with a SCIM Group PATCH Request.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `team_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the team the resource belongs to.\n\n### Body Parameters\n\n* `Operations`* (array(object))*\n\n REQUIRED\n\n The list of operations to perform. Valid operations are:\n\n * Renaming a team:\n\n ```json\n {\n \"Operations\": [{\n \"op\": \"replace\",\n \"value\": {\n \"id\": 23,\n \"displayName\": \"newName\"\n }\n }]\n }\n ```\n\n * Adding a member to a team:\n\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\n * Removing a member from a team:\n\n ```json\n {\n \"Operations\": [{\n \"op\": \"remove\",\n \"path\": \"members[value eq \"23\"]\"\n }]\n }\n ```\n\n * Replacing an entire member set of a team:\n\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\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `team:admin`\n* `team:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/scim/v2/Groups/{team_id_or_slug} \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSE\n\n```\nCopied\nSuccess.\n```\n" + }, + { + "path": "api/scim/update-an-organization-members-attributes.md", + "title": "Update an Organization Member's Attributes", + "hierarchy": [ + "Api", + "Scim", + "Update An Organization Members Attributes" + ], + "summary": "# Update an Organization Member's Attributes", + "content": "# Update an Organization Member's Attributes\n\nPATCH /api/0/organizations/{organization\\_id\\_or\\_slug}/scim/v2/Users/{member\\_id}\n\nUpdate an organization member's attributes with a SCIM PATCH Request.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `member_id`* (string)*\n\n REQUIRED\n\n The ID of the member to update.\n\n### Body Parameters\n\n* `Operations`* (array(object))*\n\n REQUIRED\n\n A list of operations to perform. Currently, the only valid operation is setting a member's `active` attribute to false, after which the member will be permanently deleted.\n\n ```json\n {\n \"Operations\": [{\n \"op\": \"replace\",\n \"path\": \"active\",\n \"value\": False\n }]\n }\n ```\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `member:admin`\n* `member:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/scim/v2/Users/{member_id} \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSE\n\n```\nCopied\nSuccess.\n```\n" + }, + { + "path": "api/teams.md", + "title": "Teams", + "hierarchy": [ + "Api", + "Teams" + ], + "summary": "# Teams", + "content": "# Teams\n\n* #### [Add an Organization Member to a Team](https://docs.sentry.io/api/teams/add-an-organization-member-to-a-team.md)\n* #### [Create a New Team](https://docs.sentry.io/api/teams/create-a-new-team.md)\n* #### [Delete a Team](https://docs.sentry.io/api/teams/delete-a-team.md)\n* #### [Delete an Organization Member from a Team](https://docs.sentry.io/api/teams/delete-an-organization-member-from-a-team.md)\n* #### [List a Project's Teams](https://docs.sentry.io/api/teams/list-a-projects-teams.md)\n* #### [List a Team's Members](https://docs.sentry.io/api/teams/list-a-teams-members.md)\n* #### [List a Team's Projects](https://docs.sentry.io/api/teams/list-a-teams-projects.md)\n* #### [List a User's Teams for an Organization](https://docs.sentry.io/api/teams/list-a-users-teams-for-an-organization.md)\n* #### [List an Organization's Teams](https://docs.sentry.io/api/teams/list-an-organizations-teams.md)\n* #### [Retrieve a Team](https://docs.sentry.io/api/teams/retrieve-a-team.md)\n* #### [Update a Team](https://docs.sentry.io/api/teams/update-a-team.md)\n* #### [Update an Organization Member's Team Role](https://docs.sentry.io/api/teams/update-an-organization-members-team-role.md)\n" + }, + { + "path": "api/teams/add-an-organization-member-to-a-team.md", + "title": "Add an Organization Member to a Team", + "hierarchy": [ + "Api", + "Teams", + "Add An Organization Member To A Team" + ], + "summary": "# Add an Organization Member to a Team", + "content": "# Add an Organization Member to a Team\n\nPOST /api/0/organizations/{organization\\_id\\_or\\_slug}/members/{member\\_id}/teams/{team\\_id\\_or\\_slug}/\n\nThis request can return various success codes depending on the context of the team:\n\n* **`201`**: The member has been successfully added.\n* **`202`**: The member needs permission to join the team and an access request has 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 team through Sentry.\n\nNote the permission scopes vary depending on the organization setting `\"Open Membership\"` and the type of authorization token. The following table outlines the accepted scopes.\n\n| | Open Membership | |\n| ------------------------------------------------------------------------------------------------- | ---------------- | ------------------------------------------------------------------------------------ |\n| | On | Off |\n| [Internal Integration Token](https://docs.sentry.io/account/auth-tokens.md#internal-integrations) | * **β€’ org:read** | - **β€’ org:write**\n- **β€’ team:write** |\n| [User Auth Token](https://docs.sentry.io/account/auth-tokens.md#user-auth-tokens) | * **β€’ org:read** | - **β€’ org:read\\***\n- **β€’ org:write**\n- **β€’ org:read +**\n- **  Β team:write\\*\\*** |\n\n\\*Organization members are restricted to this scope. When sending a request, it will always return a 202 and request an invite to the team.\n\n\\*\\*Team Admins must have both **`org:read`** and **`team:write`** scopes in their user authorization token to add members to their teams.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `member_id`* (string)*\n\n REQUIRED\n\n The ID of the organization member to add to the team\n\n* `team_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the team the resource belongs to.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:read`\n* `org:write`\n* `team:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/members/{member_id}/teams/{team_id_or_slug}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"4502349234123\",\n \"slug\": \"ancient-gabelers\",\n \"name\": \"Ancient Gabelers\",\n \"dateCreated\": \"2023-05-31T19:47:53.621181Z\",\n \"isMember\": true,\n \"teamRole\": \"contributor\",\n \"flags\": {\n \"idp:provisioned\": false\n },\n \"access\": [\n \"alerts:read\",\n \"event:write\",\n \"project:read\",\n \"team:read\",\n \"member:read\",\n \"project:releases\",\n \"event:read\",\n \"org:read\"\n ],\n \"hasAccess\": true,\n \"isPending\": false,\n \"memberCount\": 3,\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n }\n}\n```\n" + }, + { + "path": "api/teams/create-a-new-team.md", + "title": "Create a New Team", + "hierarchy": [ + "Api", + "Teams", + "Create A New Team" + ], + "summary": "# Create a New Team", + "content": "# Create a New Team\n\nPOST /api/0/organizations/{organization\\_id\\_or\\_slug}/teams/\n\nCreate a new team bound to an organization. Requires at least one of the `name` or `slug` body params to be set.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Body Parameters\n\n* `slug`* (string)*\n\n Uniquely identifies a team and is used for the interface. If not provided, it is automatically generated from the name.\n\n* `name`* (string)*\n\n **`[DEPRECATED]`** The name for the team. If not provided, it is automatically generated from the slug\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:write`\n* `team:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/teams/ \\\n -H 'Authorization: Bearer ' \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"5151492858\",\n \"slug\": \"ancient-gabelers\",\n \"name\": \"Ancient Gabelers\",\n \"dateCreated\": \"2021-06-12T23:38:54.168307Z\",\n \"isMember\": true,\n \"teamRole\": \"admin\",\n \"flags\": {\n \"idp:provisioned\": false\n },\n \"access\": [\n \"project:write\",\n \"member:read\",\n \"event:write\",\n \"team:admin\",\n \"alerts:read\",\n \"project:releases\",\n \"alerts:write\",\n \"org:read\",\n \"team:read\",\n \"project:admin\",\n \"project:read\",\n \"org:integrations\",\n \"event:read\",\n \"event:admin\",\n \"team:write\"\n ],\n \"hasAccess\": true,\n \"isPending\": false,\n \"memberCount\": 1,\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n }\n}\n```\n" + }, + { + "path": "api/teams/delete-a-team.md", + "title": "Delete a Team", + "hierarchy": [ + "Api", + "Teams", + "Delete A Team" + ], + "summary": "# Delete a Team", + "content": "# Delete a Team\n\nDELETE /api/0/teams/{organization\\_id\\_or\\_slug}/{team\\_id\\_or\\_slug}/\n\nSchedules a team for deletion.\n\n**Note:** Deletion happens asynchronously and therefore is not immediate. Teams will have their slug released while waiting for deletion.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `team_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the team the resource belongs to.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `team:admin`\n\n```\ncurl https://sentry.io/api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSE\n\n```\nCopied\nNo Content.\n```\n" + }, + { + "path": "api/teams/delete-an-organization-member-from-a-team.md", + "title": "Delete an Organization Member from a Team", + "hierarchy": [ + "Api", + "Teams", + "Delete An Organization Member From A Team" + ], + "summary": "# Delete an Organization Member from a Team", + "content": "# Delete an Organization Member from a Team\n\nDELETE /api/0/organizations/{organization\\_id\\_or\\_slug}/members/{member\\_id}/teams/{team\\_id\\_or\\_slug}/\n\nDelete an organization member from a team.\n\nNote the permission scopes vary depending on the type of authorization token. The following table outlines the accepted scopes.\n\n| | |\n| -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |\n| [Org Auth Token](https://docs.sentry.io/api/auth.md#auth-tokens) | * **β€’ org:write**\n* **β€’ org:admin**\n* **β€’ team:admin** |\n| [User Auth Token](https://docs.sentry.io/api/auth.md#user-authentication-tokens) | - **β€’ org:read\\***\n- **β€’ org:write**\n- **β€’ org:admin**\n- **β€’ team:admin**\n- **β€’ org:read + team:admin\\*\\*** |\n\n\\***`org:read`** can only be used to remove yourself from the teams you are a member of.\n\n\\*\\*Team Admins must have both **`org:read`** and **`team:admin`** scopes in their user authorization token to delete members from their teams.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `member_id`* (string)*\n\n REQUIRED\n\n The ID of the organization member to delete from the team\n\n* `team_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the team the resource belongs to.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n* `team:admin`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/members/{member_id}/teams/{team_id_or_slug}/ \\\n -H 'Authorization: Bearer ' \\\n -X DELETE\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"id\": \"4502349234123\",\n \"slug\": \"ancient-gabelers\",\n \"name\": \"Ancient Gabelers\",\n \"dateCreated\": \"2023-05-31T19:47:53.621181Z\",\n \"isMember\": false,\n \"teamRole\": null,\n \"flags\": {\n \"idp:provisioned\": false\n },\n \"access\": [\n \"alerts:read\",\n \"event:write\",\n \"project:read\",\n \"team:read\",\n \"member:read\",\n \"project:releases\",\n \"event:read\",\n \"org:read\"\n ],\n \"hasAccess\": true,\n \"isPending\": false,\n \"memberCount\": 3,\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n }\n}\n```\n" + }, + { + "path": "api/teams/list-a-projects-teams.md", + "title": "List a Project's Teams", + "hierarchy": [ + "Api", + "Teams", + "List A Projects Teams" + ], + "summary": "# List a Project's Teams", + "content": "# List a Project's Teams\n\nGET /api/0/projects/{organization\\_id\\_or\\_slug}/{project\\_id\\_or\\_slug}/teams/\n\nReturn a list of teams that have access to this project.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `project_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the project the resource belongs to.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/teams/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"id\": \"4502349234123\",\n \"slug\": \"ancient-gabelers\",\n \"name\": \"Ancient Gabelers\",\n \"dateCreated\": \"2023-05-31T19:47:53.621181Z\",\n \"isMember\": true,\n \"teamRole\": \"contributor\",\n \"flags\": {\n \"idp:provisioned\": false\n },\n \"access\": [\n \"alerts:read\",\n \"event:write\",\n \"project:read\",\n \"team:read\",\n \"member:read\",\n \"project:releases\",\n \"event:read\",\n \"org:read\"\n ],\n \"hasAccess\": true,\n \"isPending\": false,\n \"memberCount\": 3,\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n }\n },\n {\n \"id\": \"4502349234125\",\n \"slug\": \"squeaky-minnows\",\n \"name\": \"Squeaky Minnows\",\n \"dateCreated\": \"2023-07-27T11:23:34.621181Z\",\n \"isMember\": true,\n \"teamRole\": \"contributor\",\n \"flags\": {\n \"idp:provisioned\": false\n },\n \"access\": [\n \"alerts:read\",\n \"event:write\",\n \"project:read\",\n \"team:read\",\n \"member:read\",\n \"project:releases\",\n \"event:read\",\n \"org:read\"\n ],\n \"hasAccess\": true,\n \"isPending\": false,\n \"memberCount\": 5,\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n }\n }\n]\n```\n" + }, + { + "path": "api/teams/list-a-teams-members.md", + "title": "List a Team's Members", + "hierarchy": [ + "Api", + "Teams", + "List A Teams Members" + ], + "summary": "# List a Team's Members", + "content": "# List a Team's Members\n\nGET /api/0/teams/{organization\\_id\\_or\\_slug}/{team\\_id\\_or\\_slug}/members/\n\nList all members on a team.\n\nThe response will not include members with pending invites.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `team_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the team the resource belongs to.\n\n### Query Parameters:\n\n* `cursor`* (string)*\n\n A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `team:admin`\n* `team:read`\n* `team:write`\n\n```\ncurl https://sentry.io/api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/members/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"id\": \"57377908164\",\n \"email\": \"sirpenguin@antarcticarocks.com\",\n \"name\": \"Sir Penguin\",\n \"user\": {\n \"id\": \"280094367316\",\n \"name\": \"Sir Penguin\",\n \"username\": \"sirpenguin@antarcticarocks.com\",\n \"email\": \"sirpenguin@antarcticarocks.com\",\n \"avatarUrl\": \"https://secure.gravatar.com/avatar/16aeb26c5fdba335c7078e9e9ddb5149?s=32&d=mm\",\n \"isActive\": true,\n \"hasPasswordAuth\": true,\n \"isManaged\": false,\n \"dateJoined\": \"2021-07-06T21:13:58.375239Z\",\n \"lastLogin\": \"2021-08-02T18:25:00.051182Z\",\n \"has2fa\": false,\n \"lastActive\": \"2021-08-02T21:32:18.836829Z\",\n \"isSuperuser\": false,\n \"isStaff\": false,\n \"experiments\": {},\n \"emails\": [\n {\n \"id\": \"2153450836\",\n \"email\": \"sirpenguin@antarcticarocks.com\",\n \"is_verified\": true\n }\n ],\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n },\n \"canReset2fa\": true\n },\n \"orgRole\": \"member\",\n \"pending\": false,\n \"expired\": false,\n \"flags\": {\n \"idp:provisioned\": false,\n \"idp:role-restricted\": false,\n \"sso:linked\": false,\n \"sso:invalid\": false,\n \"member-limit:restricted\": false,\n \"partnership:restricted\": false\n },\n \"dateCreated\": \"2021-07-06T21:13:01.120263Z\",\n \"inviteStatus\": \"approved\",\n \"inviterName\": \"maininviter@antarcticarocks.com\",\n \"teamRole\": \"member\",\n \"teamSlug\": \"powerful-abolitionist\"\n }\n]\n```\n" + }, + { + "path": "api/teams/list-a-teams-projects.md", + "title": "List a Team's Projects", + "hierarchy": [ + "Api", + "Teams", + "List A Teams Projects" + ], + "summary": "# List a Team's Projects", + "content": "# List a Team's Projects\n\nGET /api/0/teams/{organization\\_id\\_or\\_slug}/{team\\_id\\_or\\_slug}/projects/\n\nReturn a list of projects bound to a team.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `team_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the team the resource belongs to.\n\n### Query Parameters:\n\n* `cursor`* (string)*\n\n A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `project:admin`\n* `project:read`\n* `project:write`\n\n```\ncurl https://sentry.io/api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/projects/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"team\": {\n \"id\": \"2349234102\",\n \"name\": \"Prime Mover\",\n \"slug\": \"prime-mover\"\n },\n \"teams\": [\n {\n \"id\": \"2349234102\",\n \"name\": \"Prime Mover\",\n \"slug\": \"prime-mover\"\n },\n {\n \"id\": \"47584447\",\n \"name\": \"Powerful Abolitionist\",\n \"slug\": \"powerful-abolitionist\"\n }\n ],\n \"id\": \"6758470122493650\",\n \"slug\": \"the-spoiled-yoghurt\",\n \"name\": \"The Spoiled Yoghurt\",\n \"isBookmarked\": false,\n \"isMember\": true,\n \"access\": [\n \"project:read\",\n \"event:read\",\n \"team:read\",\n \"alerts:read\",\n \"org:read\",\n \"event:write\",\n \"project:releases\",\n \"member:read\"\n ],\n \"hasAccess\": true,\n \"dateCreated\": \"2023-03-29T15:25:21.344565Z\",\n \"environments\": [\n \"production\"\n ],\n \"features\": [\n \"alert-filters\",\n \"custom-inbound-filters\",\n \"data-forwarding\",\n \"discard-groups\",\n \"minidump\",\n \"rate-limits\",\n \"servicehooks\",\n \"similarity-indexing\",\n \"similarity-indexing-v2\",\n \"similarity-view\",\n \"similarity-view-v2\"\n ],\n \"firstEvent\": null,\n \"firstTransactionEvent\": true,\n \"hasSessions\": false,\n \"hasProfiles\": false,\n \"hasReplays\": false,\n \"hasFlags\": false,\n \"hasMonitors\": false,\n \"hasFeedbacks\": false,\n \"hasNewFeedbacks\": false,\n \"hasMinifiedStackTrace\": false,\n \"hasInsightsHttp\": true,\n \"hasInsightsDb\": false,\n \"hasInsightsAssets\": false,\n \"hasInsightsAppStart\": false,\n \"hasInsightsScreenLoad\": false,\n \"hasInsightsVitals\": false,\n \"hasInsightsCaches\": true,\n \"hasInsightsQueues\": true,\n \"hasInsightsLlmMonitoring\": false,\n \"hasInsightsAgentMonitoring\": false,\n \"hasInsightsMCP\": false,\n \"hasLogs\": false,\n \"platform\": \"node-express\",\n \"platforms\": [],\n \"latestRelease\": null,\n \"hasUserReports\": false,\n \"latestDeploys\": null\n }\n]\n```\n" + }, + { + "path": "api/teams/list-a-users-teams-for-an-organization.md", + "title": "List a User's Teams for an Organization", + "hierarchy": [ + "Api", + "Teams", + "List A Users Teams For An Organization" + ], + "summary": "# List a User's Teams for an Organization", + "content": "# List a User's Teams for an Organization\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/user-teams/\n\nReturns a list of teams the user has access to in the specified organization. Note that this endpoint is restricted to [user auth tokens](https://docs.sentry.io/account/auth-tokens.md#user-auth-tokens).\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/user-teams/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"id\": \"48531\",\n \"slug\": \"ancient-gabelers\",\n \"name\": \"Ancient Gabelers\",\n \"dateCreated\": \"2018-11-06T21:20:08.115Z\",\n \"isMember\": false,\n \"teamRole\": null,\n \"flags\": {\n \"idp:provisioned\": false\n },\n \"access\": [\n \"member:read\",\n \"alerts:read\",\n \"org:read\",\n \"event:read\",\n \"project:read\",\n \"project:releases\",\n \"event:write\",\n \"team:read\"\n ],\n \"hasAccess\": true,\n \"isPending\": false,\n \"memberCount\": 2,\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n }\n },\n {\n \"id\": \"100253\",\n \"slug\": \"powerful-abolitionist\",\n \"name\": \"Powerful Abolitionist\",\n \"dateCreated\": \"2018-10-03T17:47:50.745447Z\",\n \"isMember\": false,\n \"teamRole\": null,\n \"flags\": {\n \"idp:provisioned\": false\n },\n \"access\": [\n \"member:read\",\n \"alerts:read\",\n \"org:read\",\n \"event:read\",\n \"project:read\",\n \"project:releases\",\n \"event:write\",\n \"team:read\"\n ],\n \"hasAccess\": true,\n \"isPending\": false,\n \"memberCount\": 5,\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n },\n \"projects\": [\n {\n \"id\": \"6403534\",\n \"slug\": \"prime-mover\",\n \"name\": \"Prime Mover\",\n \"platform\": null,\n \"dateCreated\": \"2019-04-06T00:02:40.468175Z\",\n \"isBookmarked\": false,\n \"isMember\": false,\n \"features\": [\n \"alert-filters\",\n \"custom-inbound-filters\",\n \"data-forwarding\",\n \"discard-groups\",\n \"minidump\",\n \"rate-limits\",\n \"servicehooks\",\n \"similarity-indexing\",\n \"similarity-indexing-v2\",\n \"similarity-view\",\n \"similarity-view-v2\",\n \"releases\"\n ],\n \"firstEvent\": \"2019-04-06T02:00:21Z\",\n \"firstTransactionEvent\": true,\n \"access\": [\n \"alerts:read\",\n \"event:write\",\n \"org:read\",\n \"project:read\",\n \"member:read\",\n \"team:read\",\n \"event:read\",\n \"project:releases\"\n ],\n \"hasAccess\": true,\n \"hasMinifiedStackTrace\": false,\n \"hasMonitors\": true,\n \"hasProfiles\": false,\n \"hasReplays\": false,\n \"hasFlags\": false,\n \"hasFeedbacks\": false,\n \"hasNewFeedbacks\": false,\n \"hasSessions\": true,\n \"hasInsightsHttp\": true,\n \"hasInsightsDb\": false,\n \"hasInsightsAssets\": true,\n \"hasInsightsAppStart\": false,\n \"hasInsightsScreenLoad\": false,\n \"hasInsightsVitals\": false,\n \"hasInsightsCaches\": false,\n \"hasInsightsQueues\": false,\n \"hasInsightsLlmMonitoring\": false,\n \"hasInsightsAgentMonitoring\": false,\n \"hasInsightsMCP\": false,\n \"hasLogs\": false,\n \"isInternal\": false,\n \"isPublic\": false,\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n },\n \"color\": \"#6d3fbf\",\n \"status\": \"active\"\n },\n {\n \"id\": \"6403599\",\n \"slug\": \"the-spoiled-yoghurt\",\n \"name\": \"The Spoiled Yoghurt\",\n \"p" + }, + { + "path": "api/teams/list-an-organizations-teams.md", + "title": "List an Organization's Teams", + "hierarchy": [ + "Api", + "Teams", + "List An Organizations Teams" + ], + "summary": "# List an Organization's Teams", + "content": "# List an Organization's Teams\n\nGET /api/0/organizations/{organization\\_id\\_or\\_slug}/teams/\n\nReturns a list of teams bound to a organization.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n### Query Parameters:\n\n* `detailed`* (string)*\n\n Specify `\"0\"` to return team details that do not include projects.\n\n* `cursor`* (string)*\n\n A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/teams/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"id\": \"48531\",\n \"slug\": \"ancient-gabelers\",\n \"name\": \"Ancient Gabelers\",\n \"dateCreated\": \"2018-11-06T21:20:08.115Z\",\n \"isMember\": false,\n \"teamRole\": null,\n \"flags\": {\n \"idp:provisioned\": false\n },\n \"access\": [\n \"member:read\",\n \"alerts:read\",\n \"org:read\",\n \"event:read\",\n \"project:read\",\n \"project:releases\",\n \"event:write\",\n \"team:read\"\n ],\n \"hasAccess\": true,\n \"isPending\": false,\n \"memberCount\": 2,\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n }\n },\n {\n \"id\": \"100253\",\n \"slug\": \"powerful-abolitionist\",\n \"name\": \"Powerful Abolitionist\",\n \"dateCreated\": \"2018-10-03T17:47:50.745447Z\",\n \"isMember\": false,\n \"teamRole\": null,\n \"flags\": {\n \"idp:provisioned\": false\n },\n \"access\": [\n \"member:read\",\n \"alerts:read\",\n \"org:read\",\n \"event:read\",\n \"project:read\",\n \"project:releases\",\n \"event:write\",\n \"team:read\"\n ],\n \"hasAccess\": true,\n \"isPending\": false,\n \"memberCount\": 5,\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n },\n \"projects\": [\n {\n \"id\": \"6403534\",\n \"slug\": \"prime-mover\",\n \"name\": \"Prime Mover\",\n \"platform\": null,\n \"dateCreated\": \"2019-04-06T00:02:40.468175Z\",\n \"isBookmarked\": false,\n \"isMember\": false,\n \"features\": [\n \"alert-filters\",\n \"custom-inbound-filters\",\n \"data-forwarding\",\n \"discard-groups\",\n \"minidump\",\n \"rate-limits\",\n \"servicehooks\",\n \"similarity-indexing\",\n \"similarity-indexing-v2\",\n \"similarity-view\",\n \"similarity-view-v2\",\n \"releases\"\n ],\n \"firstEvent\": \"2019-04-06T02:00:21Z\",\n \"firstTransactionEvent\": true,\n \"access\": [\n \"alerts:read\",\n \"event:write\",\n \"org:read\",\n \"project:read\",\n \"member:read\",\n \"team:read\",\n \"event:read\",\n \"project:releases\"\n ],\n \"hasAccess\": true,\n \"hasMinifiedStackTrace\": false,\n \"hasMonitors\": true,\n \"hasProfiles\": false,\n \"hasReplays\": false,\n \"hasFlags\": false,\n \"hasFeedbacks\": false,\n \"hasNewFeedbacks\": false,\n \"hasSessions\": true,\n \"hasInsightsHttp\": true,\n \"hasInsightsDb\": false,\n \"hasInsightsAssets\": true,\n \"hasInsightsAppStart\": false,\n \"hasInsightsScreenLoad\": false,\n \"hasInsightsVitals\": false,\n \"hasInsightsCaches\": false,\n \"hasInsightsQueues\": false,\n \"hasInsightsLlmMonitoring\": false,\n \"hasInsightsAgentMonitoring\": false,\n \"hasInsightsMCP\": false,\n \"hasLogs\": false,\n \"isInternal\": false,\n \"isPublic\": false,\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n },\n \"color\": \"#6d3fbf\",\n \"status\": \"active\"" + }, + { + "path": "api/teams/retrieve-a-team.md", + "title": "Retrieve a Team", + "hierarchy": [ + "Api", + "Teams", + "Retrieve A Team" + ], + "summary": "# Retrieve a Team", + "content": "# Retrieve a Team\n\nGET /api/0/teams/{organization\\_id\\_or\\_slug}/{team\\_id\\_or\\_slug}/\n\nReturn details on an individual team.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `team_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the team the resource belongs to.\n\n### Query Parameters:\n\n* `expand`* (string)*\n\n List of strings to opt in to additional data. Supports `projects`, `externalTeams`.\n\n* `collapse`* (string)*\n\n List of strings to opt out of certain pieces of data. Supports `organization`.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `team:admin`\n* `team:read`\n* `team:write`\n\n```\ncurl https://sentry.io/api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n },\n \"dateCreated\": \"2018-11-06T21:19:55.114Z\",\n \"hasAccess\": true,\n \"id\": \"2\",\n \"isMember\": true,\n \"isPending\": false,\n \"memberCount\": 1,\n \"name\": \"Powerful Abolitionist\",\n \"organization\": {\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n },\n \"dateCreated\": \"2018-11-06T21:19:55.101Z\",\n \"id\": \"2\",\n \"isEarlyAdopter\": false,\n \"allowMemberInvite\": true,\n \"allowMemberProjectCreation\": true,\n \"allowSuperuserAccess\": false,\n \"name\": \"The Interstellar Jurisdiction\",\n \"require2FA\": false,\n \"slug\": \"the-interstellar-jurisdiction\",\n \"status\": {\n \"id\": \"active\",\n \"name\": \"active\"\n },\n \"features\": [\n \"session-replay-videos\"\n ],\n \"hasAuthProvider\": true,\n \"links\": {\n \"organizationUrl\": \"https://philosophers.sentry.io\",\n \"regionUrl\": \"https://us.sentry.io\"\n }\n },\n \"slug\": \"powerful-abolitionist\",\n \"access\": [\n \"event:read\",\n \"event:write\",\n \"team:read\",\n \"org:read\",\n \"project:read\",\n \"member:read\",\n \"project:releases\",\n \"alerts:read\"\n ],\n \"flags\": {\n \"idp:provisioned\": false\n },\n \"teamRole\": \"contributor\"\n}\n```\n" + }, + { + "path": "api/teams/update-a-team.md", + "title": "Update a Team", + "hierarchy": [ + "Api", + "Teams", + "Update A Team" + ], + "summary": "# Update a Team", + "content": "# Update a Team\n\nPUT /api/0/teams/{organization\\_id\\_or\\_slug}/{team\\_id\\_or\\_slug}/\n\nUpdate various attributes and configurable settings for the given team.\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `team_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the team the resource belongs to.\n\n### Body Parameters\n\n* `slug`* (string)*\n\n REQUIRED\n\n Uniquely identifies a team. This is must be available.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `team:admin`\n* `team:write`\n\n```\ncurl https://sentry.io/api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/ \\\n -H 'Authorization: Bearer ' \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"avatar\": {\n \"avatarType\": \"letter_avatar\"\n },\n \"dateCreated\": \"2018-11-06T21:20:08.115Z\",\n \"hasAccess\": true,\n \"id\": \"3\",\n \"isMember\": false,\n \"isPending\": false,\n \"memberCount\": 1,\n \"name\": \"The Inflated Philosophers\",\n \"slug\": \"the-inflated-philosophers\",\n \"access\": [\n \"event:read\",\n \"event:write\",\n \"team:read\",\n \"org:read\",\n \"project:read\",\n \"member:read\",\n \"project:releases\",\n \"alerts:read\"\n ],\n \"flags\": {\n \"idp:provisioned\": false\n },\n \"teamRole\": \"contributor\"\n}\n```\n" + }, + { + "path": "api/teams/update-an-organization-members-team-role.md", + "title": "Update an Organization Member's Team Role", + "hierarchy": [ + "Api", + "Teams", + "Update An Organization Members Team Role" + ], + "summary": "# Update an Organization Member's Team Role", + "content": "# Update an Organization Member's Team Role\n\nPUT /api/0/organizations/{organization\\_id\\_or\\_slug}/members/{member\\_id}/teams/{team\\_id\\_or\\_slug}/\n\nThe relevant organization member must already be a part of the team.\n\nNote that for organization admins, managers, and owners, they are automatically granted a minimum team role of `admin` on all teams they are part of. Read more about [team roles](https://docs.sentry.io/product/teams/roles.md).\n\n### Path Parameters\n\n* `organization_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the organization the resource belongs to.\n\n* `member_id`* (string)*\n\n REQUIRED\n\n The ID of the organization member to change\n\n* `team_id_or_slug`* (string)*\n\n REQUIRED\n\n The ID or slug of the team the resource belongs to.\n\n### Body Parameters\n\n* `teamRole`* (string)*\n\n 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.\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `member:admin`\n* `member:read`\n* `member:write`\n* `org:admin`\n* `org:read`\n* `org:write`\n* `team:admin`\n* `team:write`\n\n```\ncurl https://sentry.io/api/0/organizations/{organization_id_or_slug}/members/{member_id}/teams/{team_id_or_slug}/ \\\n -H 'Authorization: Bearer ' \\\n -X PUT \\\n -H 'Content-Type: application/json' \\\n -d '{}'\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n{\n \"isActive\": true,\n \"teamRole\": \"admin\"\n}\n```\n" + }, + { + "path": "api/users.md", + "title": "Users", + "hierarchy": [ + "Api", + "Users" + ], + "summary": "# Users", + "content": "# Users\n\n* #### [List Your Organizations](https://docs.sentry.io/api/users/list-your-organizations.md)\n" + }, + { + "path": "api/users/list-your-organizations.md", + "title": "List Your Organizations", + "hierarchy": [ + "Api", + "Users", + "List Your Organizations" + ], + "summary": "# List Your Organizations", + "content": "# List Your Organizations\n\nGET /api/0/organizations/\n\nReturn a list of organizations available to the authenticated session in a region. This 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.\n\n### Query Parameters:\n\n* `owner`* (boolean)*\n\n Specify `true` to restrict results to organizations in which you are an owner.\n\n* `cursor`* (string)*\n\n A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.\n\n* `query`* (string)*\n\n Filters results by using [query syntax](https://docs.sentry.io/product/sentry-basics/search.md).\n\n Valid query fields include:\n\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](https://docs.sentry.io/api/organizations/list-an-organizations-members.md) of specific members included\n * `platform`: Filter your organizations to those with at least one project using this platform\n * `query`: Filter your organizations by name, slug, and members that contain this substring\n\n Example: `query=(slug:foo AND status:active) OR (email:[thing-one@example.com,thing-two@example.com] AND query:bar)`\n\n* `sortBy`* (string)*\n\n The field to sort results by, in descending order. If not specified the results are sorted by the date they were created.\n\n Valid fields include:\n\n * `members`: By number of members\n * `projects`: By number of projects\n * `events`: By number of events in the past 24 hours\n\n### Scopes\n\nYou need to [authenticate via bearer auth token.](https://docs.sentry.io/api/auth.md)\n\n`` requires one of the following scopes:\n\n* `org:admin`\n* `org:read`\n* `org:write`\n\n```\ncurl https://sentry.io/api/0/organizations/ \\\n -H 'Authorization: Bearer '\n```\n\nRESPONSESCHEMA\n\n```\nCopied\n[\n {\n \"avatar\": {\n \"avatarType\": \"letter_avatar\",\n \"avatarUuid\": null\n },\n \"dateCreated\": \"2018-11-06T21:19:55.101Z\",\n \"features\": [\n \"session-replay-video\",\n \"onboarding\",\n \"advanced-search\",\n \"monitor-seat-billing\",\n \"issue-platform\"\n ],\n \"hasAuthProvider\": false,\n \"id\": \"2\",\n \"isEarlyAdopter\": false,\n \"allowMemberInvite\": true,\n \"allowMemberProjectCreation\": true,\n \"allowSuperuserAccess\": false,\n \"links\": {\n \"organizationUrl\": \"https://the-interstellar-jurisdiction.sentry.io\",\n \"regionUrl\": \"https://us.sentry.io\"\n },\n \"name\": \"The Interstellar Jurisdiction\",\n \"require2FA\": false,\n \"slug\": \"the-interstellar-jurisdiction\",\n \"status\": {\n \"id\": \"active\",\n \"name\": \"active\"\n }\n }\n]\n```\n" + }, + { + "path": "cli.md", + "title": "Sentry CLI", + "hierarchy": [ + "Cli" + ], + "summary": "# Sentry CLI", + "content": "# Sentry CLI\n\nFor certain actions, you can use the `sentry-cli` command line executable. It can connect to the Sentry API and manage some data for your projects. It’s primarily used for managing debug information files for iOS, Android as well as release and source maps management for other platforms.\n\n* #### [Installation](https://docs.sentry.io/cli/installation.md)\n\n Learn about the different methods available to install \\`sentry-cli\\`.\n\n* #### [Configuration and Authentication](https://docs.sentry.io/cli/configuration.md)\n\n Learn about the functionality of Sentry’s command line interface, including installation, configuration, and authentication.\n\n* #### [Release Management](https://docs.sentry.io/cli/releases.md)\n\n Sentry's command line interface can be used for release management. The CLI allows you to create, edit and delete releases as well as upload release artifacts.\n\n* #### [Debug Information Files](https://docs.sentry.io/cli/dif.md)\n\n Debug information files allow Sentry to extract stack traces and provide more information about crash reports for most compiled platforms. Sentry's CLI can be used to validate and upload debug information files.\n\n* #### [Sending Events](https://docs.sentry.io/cli/send-event.md)\n\n Learn how Sentry's command line interface can be used for sending events.\n\n* #### [Logs](https://docs.sentry.io/cli/logs.md)\n\n Learn how to view and stream logs using the Sentry CLI.\n\n* #### [Crons (CLI)](https://docs.sentry.io/cli/crons.md)\n\n Follow this guide to set up and manage monitors using the Sentry CLI.\n" + }, + { + "path": "cli/configuration.md", + "title": "Configuration and Authentication", + "hierarchy": [ + "Cli", + "Configuration" + ], + "summary": "# Configuration and Authentication", + "content": "# Configuration and Authentication\n\nFor most functionality you need to authenticate with Sentry. Setting this up can be done either automatically, using `sentry-cli`, or manually via [Organization Tokens](https://sentry.io/orgredirect/organizations/:orgslug/settings/auth-tokens/).\n\n## [To use the automatic option:](https://docs.sentry.io/cli/configuration.md#to-use-the-automatic-option)\n\n```bash\nsentry-cli login\n```\n\nThis will give you the option to visit your auth token user settings, where you can create a new auth token, or simply copy an existing one. When you return to the CLI, you'll paste in your token and it will get added to `~/.sentryclirc` automatically.\n\nBy default, `sentry-cli` will connect to sentry.io, but for self-hosted you can also sign in elsewhere:\n\n```bash\nsentry-cli --url https://myserver.invalid/ login\n```\n\n## [To Authenticate Manually:](https://docs.sentry.io/cli/configuration.md#to-authenticate-manually)\n\nYou can manually create an [Organization Token](https://sentry.io/orgredirect/organizations/:orgslug/settings/auth-tokens/) and pass it to sentry-cli.\n\nYou can also sign in to your Sentry account (if you're not already) and create an Auth Token directly from this page.\n\nSome CLI functionality, such as [Crons Monitoring](https://docs.sentry.io/product/crons/getting-started/cli.md), is dependent on [Data Source Name (DSN)](https://docs.sentry.io/concepts/key-terms/dsn-explainer.md) authentication.\n\nYou can create an Auth Token from this page in one of the following three ways:\n\n* add it to `~/.sentryclirc`:\n\n ```ini\n [auth]\n token=sntrys_YOUR_TOKEN_HERE\n ```\n\n* export it as an environment variable:\n\n ```bash\n export SENTRY_AUTH_TOKEN=sntrys_YOUR_TOKEN_HERE\n ```\n\n* pass it as a parameter when you invoke `sentry-cli`:\n\n ```bash\n $ sentry-cli login --auth-token sntrys_YOUR_TOKEN_HERE\n ```\n\n## [Configuration File](https://docs.sentry.io/cli/configuration.md#configuration-file)\n\nThe `sentry-cli` tool can be configured with a config file named `.sentryclirc` as well as environment variables and `.env` files. The config file is looked for upwards from the current path and defaults from `~/.sentryclirc` are always loaded. You can also override these settings from command line parameters.\n\nThe config file uses standard INI syntax.\n\nBy default `sentry-cli` will connect to sentry.io. For on-prem you can export the `SENTRY_URL` environment variable and point it to your installation:\n\n```bash\nexport SENTRY_URL=https://mysentry.invalid/\n```\n\nAlternatively you can add it to your `~/.sentryclirc` config. This is also what the `login` command does:\n\n```ini\n[defaults]\nurl = https://mysentry.invalid/\n```\n\n## [Configuration Values](https://docs.sentry.io/cli/configuration.md#configuration-values)\n\nThe following settings are available (first is the environment variable, the value in the parentheses is the config key in the config file):\n\n`SENTRY_AUTH_TOKEN` (*auth.token*):\n\nThe authentication token to use for all communication with Sentry.\n\n`SENTRY_API_KEY` (*auth.api\\_key*):\n\nThe legacy API key for authentication if you have one.\n\n`SENTRY_DSN` (*auth.dsn*):\n\nThe DSN to use to connect to Sentry.\n\n`SENTRY_URL` (*defaults.url*):\n\nThe URL to use to connect to Sentry. This defaults to `https://sentry.io/`.\n\n`SENTRY_ORG` (*defaults.org*):\n\nThe ID or slug of the organization to use for a command.\n\n`SENTRY_PROJECT` (*defaults.project*):\n\nThe ID or slug of the project to use for a command.\n\n`SENTRY_VCS_REMOTE` (*defaults.vcs\\_remote*):\n\nThe name of the *remote* in the versioning control system. This defaults to `origin`.\n\n`SENTRY_PIPELINE` (*defaults.pipeline*):\n\nThe name of the environment to be appended to `User-Agent` header.\n\n`CUSTOM_HEADER` (*defaults.custom\\_header*):\n\nThe header that will be added to every outgoing request in `key:value` format.\n\n`SENTRY_ALLOW_FAILURE`\n\nNote: This option will ignore the CLI's failure when uploading symbols. **BE AWARE** this will unblock your CI in case Sentry has issues, but you w" + }, + { + "path": "cli/crons.md", + "title": "Crons (CLI)", + "hierarchy": [ + "Cli", + "Crons" + ], + "summary": "# Crons (CLI)", + "content": "# Crons (CLI)\n\n##### Deprecation Notice\n\nStarting with v2.16.1 of the Sentry CLI, the ability to monitor check-ins using an auth token for authorization has been deprecated. Read on to learn how to update your CLI and use your project's DSN instead.\n\nSentry Crons allows you to monitor the uptime and performance of any scheduled, recurring job. Once implemented, it'll allow you to get alerts and metrics to help you solve errors, detect timeouts, and prevent disruptions to your service.\n\n## [Requirements](https://docs.sentry.io/cli/crons.md#requirements)\n\nTo begin monitoring your recurring, scheduled job:\n\n* [Install](https://docs.sentry.io/cli/installation.md) the Sentry CLI (min v2.16.1).\n* Create and configure your first Monitor in [Sentry](https://sentry.io/issues/alerts/new/crons/) or [via the CLI](https://docs.sentry.io/cli/crons.md#creating-or-updating-a-monitor-through-a-check-in-optional).\n\n## [Configuration](https://docs.sentry.io/cli/crons.md#configuration)\n\nThe Sentry CLI uses your Monitor's project DSN to authorize check-ins. To set it up, export the `SENTRY_DSN` environment variable:\n\n```bash\nexport SENTRY_DSN=https://examplePublicKey@o0.ingest.sentry.io/0\nexample-org / example-project\n```\n\nAlternatively, you can add it to your `~/.sentryclirc` config:\n\n`~/.sentryclirc`\n\n```ini\n[auth]\ndsn = https://examplePublicKey@o0.ingest.sentry.io/0\nexample-org / example-project\n```\n\nLearn more about the CLI's [configuration file](https://docs.sentry.io/cli/configuration.md#configuration-file).\n\n## [Job Monitoring](https://docs.sentry.io/cli/crons.md#job-monitoring)\n\nUse the Sentry CLI to run your job and notify you if it doesn't start when expected (missed) or if it exceeded its maximum runtime (failed).\n\n```bash\nsentry-cli monitors run -- \n```\n\nUsage examples:\n\n```bash\nsentry-cli monitors run my-monitor-slug -- python path/to/file.py\n```\n\n### [Creating or Updating a Monitor Through a Check-In (Optional)](https://docs.sentry.io/cli/crons.md#creating-or-updating-a-monitor-through-a-check-in-optional)\n\nYou can also use the Sentry CLI to create or update your cron monitor when you run your job. This way, you can avoid having to first set up the monitor through the Sentry web interface.\n\nConfigure the cron monitor by providing the cron schdule in crontab format using the `--schedule` or the equivalent `-s` argument when executing the `sentry cli monitors run` command. Please make sure to enclose the schedule in quotes, so that your shell parses the argument correctly, like so:\n\n```bash\nsentry-cli monitors run --schedule \"\" -- \n```\n\nWhen providing the `--schedule` argument, we also support the following optional arguments to provide additional configuration:\n\n* `--check-in-margin`: The allowed margin of minutes after the expected check-in time that the monitor will not be considered missed for.\n* `--max-runtime`: The allowed duration in minutes that the monitor may be in progress for before being considered failed due to timeout.\n* `--timezone`: A valid [tz database identifier string](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) (e.g. \"Europe/Vienna\") representing the monitor's execution schedule's timezone.\n\nBelow are some usage examples:\n\n```bash\nsentry-cli monitors run -s \"* * * * *\" -- my-command\n```\n\n### [Specifying Monitor Environments (Optional)](https://docs.sentry.io/cli/crons.md#specifying-monitor-environments-optional)\n\nIf your cron monitor runs in multiple environments you can use the `-e` flag to specify which [Monitor Environment](https://docs.sentry.io/product/crons/job-monitoring.md#multiple-environments) to send check-ins to.\n\n```bash\nsentry-cli monitors run -e dev my-monitor-slug -- node path/to/file.js\n```\n" + }, + { + "path": "cli/dif.md", + "title": "Debug Information Files", + "hierarchy": [ + "Cli", + "Dif" + ], + "summary": "# Debug Information Files", + "content": "# Debug Information Files\n\nDebug information files allow Sentry to extract stack traces and provide more information about crash reports for most compiled platforms. `sentry-cli` can be used to validate and upload debug information files. For more general information, refer to [*Debug Information Files*](https://docs.sentry.io/platforms/native/data-management/debug-files.md).\n\n## [Permissions](https://docs.sentry.io/cli/dif.md#permissions)\n\nThe `sentry-cli` requires an [Organization Token](https://sentry.io/orgredirect/organizations/:orgslug/settings/auth-tokens/) so that Debug Information Files can be uploaded.\n\nSource maps, while also being debug information files, are handled differently in Sentry. For more information see [Source Maps in sentry-cli](https://docs.sentry.io/cli/releases.md#sentry-cli-sourcemaps).\n\n## [Checking Files](https://docs.sentry.io/cli/dif.md#checking-files)\n\nNot all debug information files can be used by Sentry. To see if they are usable or not, you can use the `sentry-cli debug-files check` command:\n\n```bash\nsentry-cli debug-files check mylibrary.so.debug\n\nDebug Info File Check\n Type: elf debug companion\n Contained debug identifiers:\n > 924e148f-3bb7-06a0-74c1-36f42f08b40e (x86_64)\n Contained debug information:\n > symtab, debug\n Usable: yes\n```\n\nThis will report the debug identifiers of the debug information file as well as if it passes basic requirements for Sentry.\n\n## [Finding Files](https://docs.sentry.io/cli/dif.md#finding-files)\n\nIf you see in Sentry's UI that debug information files are missing, but you are not sure how to locate them, you can use the `sentry-cli debug-files find` command to look for them:\n\n```bash\nsentry-cli debug-files find \n```\n\nAdditionally, `sentry-cli debug-files upload` can automatically search for files in a folder or ZIP archive.\n\n## [Creating Source Bundles](https://docs.sentry.io/cli/dif.md#creating-source-bundles)\n\nTo get inline source context in stack traces in the Sentry UI, `sentry-cli` can scan debug files for references to source code files, resolve them in the local file system and bundle them up. The resulting source bundle is an archive containing all source files referenced by a specific debug information file.\n\nThis is particularly useful when building and uploading debug information files are detached. In this case, a source bundle can be created when building and can be uploaded at any later point in time with `sentry-cli debug-files upload`.\n\nTo create a source bundle, use the `debug-files bundle-sources` command on a list of debug information files:\n\n```bash\n# on the build machine:\nsentry-cli debug-files bundle-sources /path/to/files...\n\n# at any later time:\nsentry-cli debug-files upload --type sourcebundle /path/to/bundles...\n```\n\nTo create multiple source bundles for all debug information files, use the command on each file individually.\n\nAlternatively, add the `--include-sources` option to the `debug-files upload` command, which generates source bundles on the fly during the upload. This requires that the upload is performed on the same machine as the application build:\n\n```bash\nsentry-cli debug-files upload --include-sources /path/to/files...\n```\n\nThis feature is supported by build tools that produce debug information files supported by Sentry such as DWARF and PDB. This applies to languages such as C/C++/C#/Swift/Rust/Zig/etc. For Java/Kotlin and other JVM languages, use one of the plugins: [Maven](https://docs.sentry.io/platforms/java/maven.md) or [Gradle](https://docs.sentry.io/platforms/java/gradle.md).\n\n## [Uploading Files](https://docs.sentry.io/cli/dif.md#uploading-files)\n\nUse the `sentry-cli debug-files upload` command to upload debug information files to Sentry. The command will recursively scan the provided folders or ZIP archives. Files that have already been uploaded are skipped automatically.\n\nWe recommend uploading debug information files when publishing or releasing your application. Alternatively, files can " + }, + { + "path": "cli/installation.md", + "title": "Installation", + "hierarchy": [ + "Cli", + "Installation" + ], + "summary": "# Installation", + "content": "# Installation\n\nDepending on your platform, there are different methods available to install `sentry-cli`.\n\n## [Manual Download](https://docs.sentry.io/cli/installation.md#manual-download)\n\nYou can find the list of releases on [the GitHub release page](https://github.com/getsentry/sentry-cli/releases/). We provide executables for Linux, OS X and Windows. It’s a single file download and upon receiving the file you can rename it to just `sentry-cli` or `sentry-cli.exe` to use it.\n\n## [Automatic Installation](https://docs.sentry.io/cli/installation.md#automatic-installation)\n\nIf you are on macOS or Linux, you can use the automated downloader which will fetch the latest release version for you and install it:\n\n```bash\ncurl -sL https://sentry.io/get-cli/ | sh\n```\n\nWe do however, encourage you to pin the specific version of the CLI, so your builds are always reproducible. To do that, you can use the exact same method, with an additional version specifier:\n\n```bash\ncurl -sL https://sentry.io/get-cli/ | SENTRY_CLI_VERSION=\"2.54.0\" sh\n```\n\nThis will automatically download the correct version of `sentry-cli` for your operating system and install it. If necessary, it will prompt for your admin password for `sudo`. For a different installation location or for systems without `sudo` (like Windows), you can `export INSTALL_DIR=/custom/installation/path` before running this command.\n\nTo verify it's installed correctly you can bring up the help:\n\n```bash\nsentry-cli --help\n```\n\n## [Installation via NPM](https://docs.sentry.io/cli/installation.md#installation-via-npm)\n\nThere is also the option to install `sentry-cli` via npm for specialized use cases. This, for instance, is useful for build servers. The package is called `@sentry/cli` and in the post installation it will download the appropriate release binary:\n\n```bash\nnpm install @sentry/cli\n```\n\nYou can then find it in the `.bin` folder:\n\n```bash\n./node_modules/.bin/sentry-cli --help\n```\n\nIn case you want to install this with npm system wide with sudo you will need to pass `--unsafe-perm` to it:\n\n```bash\nsudo npm install -g @sentry/cli --unsafe-perm\n```\n\nThis installation is not recommended however.\n\n### [Downloading From a Custom Source](https://docs.sentry.io/cli/installation.md#downloading-from-a-custom-source)\n\nBy default, this package will download sentry-cli from the CDN managed by [Fastly](https://www.fastly.com/). To use a custom CDN, set the npm config property `sentrycli_cdnurl`. The downloader will append `\"//sentry-cli-\"`.\n\n```bash\nnpm install @sentry/cli --sentrycli_cdnurl=https://mymirror.local/path\n```\n\nOr add property into your `.npmrc` file ()\n\n```bash\nsentrycli_cdnurl=https://mymirror.local/path\n```\n\nAnother option is to use the environment variable `SENTRYCLI_CDNURL`.\n\n```bash\nSENTRYCLI_CDNURL=https://mymirror.local/path npm install @sentry/cli\n```\n\n### [Available Installation Options](https://docs.sentry.io/cli/installation.md#available-installation-options)\n\nOptions listed below control how `sentry-cli` install script behaves, when installed through `npm`.\n\n`SENTRYCLI_CDNURL`:\n\nIf set, the script will use given URL for fetching the binary. Defaults to `https://downloads.sentry-cdn.com/sentry-cli`.\n\n`SENTRYCLI_USE_LOCAL`:\n\nIf set to `1`, `sentry-cli` binary will be discovered from your `$PATH` and copied locally instead of being downloaded from external servers. It will still verify the version number, which has to match.\n\n`SENTRYCLI_SKIP_DOWNLOAD`:\n\nIf set to `1`, the script will skip downloading the binary completely.\n\n`SENTRYCLI_SKIP_CHECKSUM_VALIDATION`:\n\nIf set to `1`, the script will skip the checksum validation phase. You can manually verify the checksums by visiting [Build Checksums](https://docs.sentry.io/cli/installation.md#build-checksums) page.\n\n`SENTRYCLI_NO_PROGRESS_BAR`:\n\nIf set to `1`, the script will not display download progress bars. This is a default behavior for CI environments.\n\n`SENTRYCLI_LOG_STREAM" + }, + { + "path": "cli/logs.md", + "title": "Logs", + "hierarchy": [ + "Cli", + "Logs" + ], + "summary": "# Logs", + "content": "# Logs\n\nThe `sentry-cli` tool can be used to view and stream logs from your Sentry projects. This allows you to monitor your application logs directly from the command line.\n\n## [Requirements](https://docs.sentry.io/cli/logs.md#requirements)\n\nTo use the logs command, you need to:\n\n* [Install](https://docs.sentry.io/cli/installation.md) the Sentry CLI\n* [Authenticate](https://docs.sentry.io/cli/configuration.md) with Sentry using an auth token\n* Have logs enabled for your project\n\n## [Configuration](https://docs.sentry.io/cli/logs.md#configuration)\n\nThe logs command uses your Sentry auth token for authentication. You can configure this using:\n\n```bash\nsentry-cli login\n```\n\nOr by setting the `SENTRY_AUTH_TOKEN` environment variable:\n\n```bash\nexport SENTRY_AUTH_TOKEN=sntrys_YOUR_TOKEN_HERE\n```\n\nLearn more about the CLI's [configuration file](https://docs.sentry.io/cli/configuration.md#configuration-file).\n\n## [Basic Usage](https://docs.sentry.io/cli/logs.md#basic-usage)\n\nThe logs command supports two main operations: listing logs and streaming logs in real-time.\n\n### [List Logs](https://docs.sentry.io/cli/logs.md#list-logs)\n\nTo fetch and display logs:\n\n```bash\nsentry-cli logs list --project=my-project --org=my-org\n```\n\n### [Stream Logs](https://docs.sentry.io/cli/logs.md#stream-logs)\n\nTo continuously stream logs in real-time:\n\n```bash\nsentry-cli logs list --project=my-project --org=my-org --live\n```\n\nThe live streaming mode will continuously poll for new logs and display them as they arrive.\n\n## [Command Options](https://docs.sentry.io/cli/logs.md#command-options)\n\n### [Project and Organization](https://docs.sentry.io/cli/logs.md#project-and-organization)\n\nSpecify the project and organization explicitly:\n\n```bash\nsentry-cli logs list --project=my-project --org=my-org\n```\n\nOr use the default values from your configuration file.\n\n## [Examples](https://docs.sentry.io/cli/logs.md#examples)\n\n### [Monitor Application Logs](https://docs.sentry.io/cli/logs.md#monitor-application-logs)\n\nStream logs from your production application:\n\n```bash\nsentry-cli logs list --project=my-app --org=my-org --live\n```\n\n### [View Recent Logs](https://docs.sentry.io/cli/logs.md#view-recent-logs)\n\nFetch and display logs from your project:\n\n```bash\nsentry-cli logs list --project=my-app --org=my-org\n```\n\n## [Output Format](https://docs.sentry.io/cli/logs.md#output-format)\n\nThe logs command displays log entries with the following information:\n\n* Timestamp\n* Log level\n* Message\n* Trace ID (if present)\n\nLog entries are displayed in a readable format, making it easy to monitor your application's logging output directly from the command line.\n" + }, + { + "path": "cli/releases.md", + "title": "Release Management", + "hierarchy": [ + "Cli", + "Releases" + ], + "summary": "# Release Management", + "content": "# Release Management\n\nThe `sentry-cli` tool can be used for release management on Sentry. It allows you to create, edit and delete releases as well as upload release artifacts for them. Note that releases are global per organization. If you want the releases in different projects to be treated as separate entities, make the version name unique across the organization. For example, if you have projectA and projectB that share version numbers, you can name the releases `projectA-1.0` and `projectB-1.0` respectively.\n\nBecause releases work on projects you will need to specify the organization and project you are working with. For more information about this refer to [Working with Projects](https://docs.sentry.io/cli/configuration.md#sentry-cli-working-with-projects).\n\n## [Creating Releases](https://docs.sentry.io/cli/releases.md#creating-releases)\n\nReleases are created with the `sentry-cli releases new` command. It takes at the very least a version identifier that uniquely identifies the releases. There are a few restrictions -- the release name cannot:\n\n* contain newlines, tabulator characters, forward slashes(/), or back slashes(\\\\)\n* be (in their entirety) period (.), double period (..), or space ( )\n* exceed 200 characters\n\nThe value can be arbitrary, but for certain platforms, recommendations exist:\n\n* for mobile devices use `package-name@version-number` or `package-name@version-number+build-number`. **Do not** use `VERSION_NUMBER (BUILD_NUMBER)` as the parenthesis are used for display purposes (foo\\@1.0+2 becomes 1.0 (2)), so invoking them will cause an error.\n* if you use a DVCS we recommend using the identifying hash (eg: the commit SHA, `da39a3ee5e6b4b0d3255bfef95601890afd80709`). You can let sentry-cli automatically determine this hash for supported version control systems with `sentry-cli releases propose-version`.\n* if you tag releases we recommend using the release tag prefixed with a product or package name (for example, `my-project-name@2.3.12`).\n\n```bash\n#!/bin/sh\nsentry-cli releases new \"$VERSION\"\n```\n\nReleases can also be auto created by different systems. For instance upon uploading a source map a release is automatically created. Likewise releases are created by some clients when an event for a release comes in.\n\n## [Finalizing Releases](https://docs.sentry.io/cli/releases.md#finalizing-releases)\n\nBy default a release is created β€œunreleased”. Finalizing a release means that we populate a second timestamp on the release record, which is prioritized over `date_created` when sorting releases in [sentry.io](https://sentry.io). Release finalization (and the timestamp) also affects:\n\n* What counts as \"the next release\" for resolving issues\n* What release is used as the base for associating commits if you use `--auto`\n\nIn addition, it creates an entry in the **Activity** stream.\n\nYou can change this by passing either `--finalize` to the `new` command, which will immediately finalize the release, or by separately calling `sentry-cli releases finalize VERSION` later on, which is useful if you are managing releases as part of a build process. For example:\n\n```bash\n#!/bin/sh\nsentry-cli releases new \"$VERSION\"\n# do your build steps here\n# once you are done, finalize\nsentry-cli releases finalize \"$VERSION\"\n```\n\nYou can also choose to finalize the release when you've made the release live (when you've deployed to your machines, enabled in the App store, etc.).\n\nIf you are using git you can ask Sentry to determine `$VERSION`:\n\n```bash\n#!/bin/sh\nVERSION=`sentry-cli releases propose-version`\n```\n\n## [Commit Integration](https://docs.sentry.io/cli/releases.md#commit-integration)\n\nIf you have [repositories configured](https://docs.sentry.io/product/releases/setup/release-automation.md) within your Sentry organization, you can associate commits with your release automatically or manually. If you don't have a source code integration installed, you can still send Sentry commit information. See [Alternatively: Without a Repository I" + }, + { + "path": "cli/send-event.md", + "title": "Sending Events", + "hierarchy": [ + "Cli", + "Send Event" + ], + "summary": "# Sending Events", + "content": "# Sending Events\n\nThe `sentry-cli` tool can also be used for sending events. If you want to use it, you need to export the `SENTRY_DSN` environment variable and point it to the DSN of a project of yours:\n\n```bash\nexport SENTRY_DSN='https://examplePublicKey@o0.ingest.sentry.io/0\nexample-org / example-project\n'\n```\n\nOnce that is done, you can start using the `sentry-cli send-event` command.\n\n## [Basic Events](https://docs.sentry.io/cli/send-event.md#basic-events)\n\nFor basic message events, you just need to provide the `--message` or `-m` parameter to send a message:\n\n```bash\nsentry-cli send-event -m \"Hello from Sentry\"\n```\n\nThis will send a single message to Sentry and record it as an event. Along with that event, it sends basic information about the machine you are running `sentry-cli` on. You can provide `-m` multiple times to send multiple lines:\n\n```bash\nsentry-cli send-event -m \"Hello from Sentry\" -m \"This is more text\"\n```\n\n## [Events with Parameters](https://docs.sentry.io/cli/send-event.md#events-with-parameters)\n\nIn addition you can use `%s` as placeholder in a message and fill it in with the `-a` parameter. This helps reviewing them, as all messages will be grouped together automatically:\n\n```bash\nsentry-cli send-event -m \"Hello %s!\" -a \"Joe\"\nsentry-cli send-event -m \"Hello %s!\" -a \"Peter\"\n```\n\n## [Sending Breadcrumbs](https://docs.sentry.io/cli/send-event.md#sending-breadcrumbs)\n\nYou can also pass a logfile to the `send-event` command which will be parsed and sent along as breadcrumbs. The last 100 items will be sent:\n\n```bash\nsentry-cli send-event -m β€œtask failed” –-logfile error.log\n```\n\nThe logfile can be in various formats. If you want to create one yourself you can do something along those lines:\n\n```bash\necho \"$(date +%c) This is a log record\" >> output.log\necho \"$(date +%c) This is another record\" >> output.log\nsentry-cli send-event -m \"Demo Event\" --logfile output.log\nrm output.log\n```\n\n## [Extra Data](https://docs.sentry.io/cli/send-event.md#extra-data)\n\nExtra data can be attached with the `-e` parameter as `KEY:VALUE`. For instance, you can send some key value pairs like this:\n\n```bash\nsentry-cli send-event -m \"a failure\" -e task:create-user -e object:42\n```\n\nLikewise, tags can be sent with `-t` using the same format:\n\n```bash\nsentry-cli send-event -m \"a failure\" -t task:create-user\n```\n\n## [Stored Events](https://docs.sentry.io/cli/send-event.md#stored-events)\n\nAs of version `1.71`, the `send-event` command can accept an optional argument that specifies a path to the stored JSON representation of an [event payload](https://develop.sentry.dev/sdk/data-model/event-payloads/). When used, it will load the file, validate the event and send it to Sentry.\n\n```bash\nsentry-cli send-event ./events/20211029150006.json\n```\n\nThis argument can be also provided in the form of a glob, which will cause it to process all matched events.\n\n```bash\nsentry-cli send-event \"./events/*.json\"\n```\n\nIf `send-event` is called with the `--raw` flag, the event will not be validated before being sent.\n\n```bash\nsentry-cli send-event --raw ./events/20211029150006.json\n```\n\n## [Specifying Releases](https://docs.sentry.io/cli/send-event.md#specifying-releases)\n\nReleases can be sent with the `--release` parameter. A default release is picked up automatically if you are using sentry-cli from within a git repository.\n\n## [Bash Hook](https://docs.sentry.io/cli/send-event.md#bash-hook)\n\nFor bash scripts you can also enable automatic error sending by using the sentry-cli bash hook. That enables `set -e` and will send a Sentry event for unhandled errors.\n\nThe limitations for this are:\n\n* sentry-cli really only works if `set -e` is enabled (which it will by default enable for you).\n* sentry-cli registers an `EXIT` and `ERR` trap.\n\nUsage:\n\n```bash\n#!/bin/bash\nexport SENTRY_DSN='https://examplePublicKey@o0.ingest.sentry.io/0\nexample-org / example-project\n'\neval \"$(sentry-cli bash-hook)\"\n# rest of the script goes here\n```\n\nAlternatively you can use othe" + }, + { + "path": "concepts.md", + "title": "Concepts & Reference", + "hierarchy": [ + "Concepts" + ], + "summary": "# Concepts & Reference", + "content": "# Concepts & Reference\n\n* #### [Concepts](https://docs.sentry.io/concepts/key-terms.md)\n\n Learn about important concepts that are essential to using Sentry.\n\n* #### [Search](https://docs.sentry.io/concepts/search.md)\n\n Learn more about how to search in Sentry, including the correct query syntax, searchable properties, and custom tags.\n\n* #### [Data Management](https://docs.sentry.io/concepts/data-management.md)\n\n Learn more about managing data using the Settings for your project and organization. Server-side data management options include issue grouping, data forwarding, and inbound filters.\n\n* #### [Moving to SaaS](https://docs.sentry.io/concepts/migration.md)\n\n Learn more about the reasons to move to Sentry's SaaS solution, which for many customers is less expensive to maintain, and easier to scale and support.\n\n* #### [OpenTelemetry Protocol (OTLP)](https://docs.sentry.io/concepts/otlp.md)\n\n Learn how to send OpenTelemetry trace data directly to Sentry from OpenTelemetry SDKs.\n" + }, + { + "path": "concepts/data-management.md", + "title": "Data Management", + "hierarchy": [ + "Concepts", + "Data Management" + ], + "summary": "# Data Management", + "content": "# Data Management\n\nPlease refer to [the SDK documentation for a general introduction to managing sensitive data](https://docs.sentry.io/platform-redirect.md?next=%2Fdata-management%2Fsensitive-data%2F). This page documents only the server-side options.\n\n* #### [Issue Grouping](https://docs.sentry.io/concepts/data-management/event-grouping.md)\n\n Learn about fingerprinting, Sentry's default error grouping algorithms, and other ways to customize how events are grouped into issues.\n\n* #### [Data Forwarding](https://docs.sentry.io/concepts/data-management/data-forwarding.md)\n\n Learn about forwarding processed events to third-party providers.\n\n* #### [Inbound Filters](https://docs.sentry.io/concepts/data-management/filtering.md)\n\n Learn about the different methods for filtering data in your project.\n\n* #### [Size Limits](https://docs.sentry.io/concepts/data-management/size-limits.md)\n\n Learn about the size limits for events and attachments, and how to avoid exceeding them.\n" + }, + { + "path": "concepts/data-management/data-forwarding.md", + "title": "Data Forwarding", + "hierarchy": [ + "Concepts", + "Data Management", + "Data Forwarding" + ], + "summary": "# Data Forwarding", + "content": "# Data Forwarding\n\nThis feature is available only if your organization is on [a Trial, Business, or Enterprise plan](https://sentry.io/pricing/).\n\nThe plugins listed on this page have been deprecated and will be removed from Sentry in a future date.\n\nSentry provides the ability to forward processed error events to certain third-party providers, such as [Segment](https://segment.com) and [Amazon SQS](https://aws.amazon.com/sqs/).\n\nThis is often useful when you may want to analyze exceptions more deeply, or empower other teams, such as a Business Intelligence function.\n\nConfigure Data Forwarding by navigating to your **\\[Project] Β» Settings Β» Data Forwarding**, then providing the required information for the given integration.\n\nOnly error events will be forwarded. Forwarding of transaction events is not supported.\n\n## [Amazon SQS](https://docs.sentry.io/concepts/data-management/data-forwarding.md#amazon-sqs)\n\nIntegration with Amazon SQS makes it quick and easy to pipe exceptions back into your own systems.\n\nThe payload for Amazon is identical to our standard API event payload, and will evolve over time. For more details on the format of this data, see our [API documentation](https://docs.sentry.io/api/events/retrieve-an-event-for-a-project.md).\n\n## [Segment](https://docs.sentry.io/concepts/data-management/data-forwarding.md#segment)\n\nThe Segment integration will generate *Error Captured* events within your data pipeline. These events will **only** be captured for `error` events, and only when an ID is present the user context. The general shape of the event will look roughly similar to:\n\n```json\n{\n \"userId\": \"1\",\n \"event\": \"Error Captured\",\n \"properties\": {\n \"environment\": \"production\",\n \"eventId\": \"002c8bbde8324dae9f12a0b96f5b1e51\",\n \"exceptionType\": \"ValueError\",\n \"release\": \"a2def1\",\n \"transaction\": \"/api/0/users/{user}/\",\n \"userAgent\": \"Mozilla/5.0 (X11; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0\",\n \"page\": {\n \"url\": \"https://sentry.io/api/0/users/{user}/\",\n \"method\": \"GET\",\n \"search\": \"\",\n \"referer\": \"https://sentry.io/\"\n }\n },\n \"timestamp\": \"2017-05-20T15:29:06Z\"\n}\n```\n\n## [Splunk](https://docs.sentry.io/concepts/data-management/data-forwarding.md#splunk)\n\nFor details on the Splunk integration, visit the dedicated [Splunk integration documentation](https://docs.sentry.io/organization/integrations/data-visualization/splunk.md).\n" + }, + { + "path": "concepts/data-management/event-grouping.md", + "title": "Issue Grouping", + "hierarchy": [ + "Concepts", + "Data Management", + "Event Grouping" + ], + "summary": "# Issue Grouping", + "content": "# Issue Grouping\n\nA fingerprint is a way to uniquely identify an event, and all events have one. Events with the same fingerprint are grouped together into an issue.\n\nBy default, Sentry will run one of our built-in grouping algorithms to generate an event fingerprint based on information available within the event. The available information and the grouping algorithms vary by event type. Sentry fingerprints error events based on information like `stacktrace`, `exception`, and `message`. Transaction events are fingerprinted by their `spans`.\n\n## [Default Error Grouping Algorithms](https://docs.sentry.io/concepts/data-management/event-grouping.md#default-error-grouping-algorithms)\n\nEach time default error grouping behavior is modified, Sentry releases it as a new version, which is only applied to new events going forward. As a result, modifications to the default behavior do not affect the grouping of existing issues.\n\nWhen you create a Sentry project, the most recent version of the error grouping algorithm is automatically selected. This ensures that grouping behavior is consistent within a project.\n\nAll versions consider the `fingerprint` first, the `stack trace` next, then the `exception`, and then finally the `message`.\n\nTo see how an issue was grouped, go to its **Issue Details** page and scroll down to \"Event Grouping Information\". There, you'll see if it was grouped by a fingerprint, stack trace, exception, or message.\n\n### [Grouping by Built-In Fingerprinting Rules](https://docs.sentry.io/concepts/data-management/event-grouping.md#grouping-by-built-in-fingerprinting-rules)\n\nSome kinds of errors, like [chunk load errors](https://sentry.io/answers/chunk-load-errors-javascript/) and [hydration errors](https://sentry.io/answers/hydration-error-nextjs/), often have various different error types, values, or transaction messages that may result in separate but similar issues. To better handle these cases, Sentry maintains a set of built-in fingerprinting rules to better group such errors.\n\nIssues grouped by Sentry's built-in fingerprinting rules will list \"Sentry Defined Fingerprint\" in the \"Event Grouping Information\" at the bottom of the **Issue Details** page.\n\nBuilt-in fingerprinting rules work the same as custom fingerprinting rules and are applied by default. If an user defined custom fingerprinting rule matches an event, the custom rule will always take precedence over the built-in ones.\n\n### [Grouping by Stack Trace](https://docs.sentry.io/concepts/data-management/event-grouping.md#grouping-by-stack-trace)\n\nWhen Sentry detects a stack trace in the event data (either directly or as part of an exception), the grouping is effectively based entirely on the stack trace.\n\nThe first and most crucial part is that Sentry only groups by stack trace frames that the SDK reports and associates with your application. Not all SDKs report this, but when that information is provided, it’s used for grouping. This means that if two stack traces differ only in parts of the stack that are unrelated to the application, those stack traces will still be grouped together.\n\nDepending on the information available, the following data can be used for each stack trace frame:\n\n* Module name\n* Normalized filename (with revision hashes, and so forth, removed)\n* Normalized context line (essentially a cleaned up version of the source code of the affected line, if provided)\n\nThis grouping usually works well, but two specific situations can throw it off:\n\n1. Minimized JavaScript source code will destroy the grouping in detrimental ways. To avoid this, ensure that Sentry can access your [Source Maps](https://docs.sentry.io/platforms/javascript/sourcemaps.md).\n2. Modifying your stack trace by introducing a new level through decorators changes your stack trace, so the grouping will also change. To handle this, many SDKs support hiding irrelevant stack trace frames. For example, the Python SDK will skip all stack frames with a local variable called `__tracebac" + }, + { + "path": "concepts/data-management/event-grouping/fingerprint-rules.md", + "title": "Fingerprint Rules", + "hierarchy": [ + "Concepts", + "Data Management", + "Event Grouping", + "Fingerprint Rules" + ], + "summary": "# Fingerprint Rules", + "content": "# Fingerprint Rules\n\nThis feature is only applicable for [error issues](https://docs.sentry.io/product/issues/issue-details/error-issues.md) with debug information files, excluding source maps. Other categories of issues (such as [performance issues](https://docs.sentry.io/product/issues/issue-details/performance-issues.md) or [replay issues](https://docs.sentry.io/product/issues/issue-details/replay-issues.md)) do not support this feature.\n\nFingerprint rules (previously known as *server-side fingerprinting*) are configured with a config similar to [stack trace rules](https://docs.sentry.io/concepts/data-management/event-grouping/stack-trace-rules.md), but the syntax is slightly different. The matchers are the same, but instead of flipping flags, a fingerprint is assigned and it overrides the default grouping entirely. Assigning a fingerprint can also refine the default grouping rather than overriding it, if the fingerprint includes the value `{{ default }}`.\n\nThese rules can be configured on a per-project basis in **Project Settings > Issue Grouping > Fingerprint Rules**. This setting has input fields where you can write custom fingerprinting rules. To update a rule:\n\n1. Identify the match logic for grouping issues together.\n2. Set the match logic and the fingerprint for it.\n\nThe syntax for fingerprint rules is similar to syntax in [**Discover** queries](https://docs.sentry.io/concepts/search.md#syntax). To negate a match, add an exclamation mark (`!`) at the beginning of the expression. See the full grammar [here](https://github.com/getsentry/sentry/blob/90f5cdfa9ebaf0bfdea63852812a6efc90f13691/src/sentry/grouping/fingerprinting/__init__.py#L36-L73).\n\nSentry attempts to match against all values that are configured in the fingerprint. In the case of stack traces, all frames are considered. If the event data matches all the values in a line for a matcher and expression, then the fingerprint is applied. When there are multiple rules that match the event, the first matching rule in the list is applied.\n\n```bash\n# You can use comments to explain the rules. Rules themselves follow the\n# following syntax:\nmatcher:expression -> list of values\n# The list of values can be hardcoded or substituted values.\n```\n\nBelow is a practical example, which groups exceptions of a specific type together:\n\n```bash\nerror.type:DatabaseUnavailable -> system-down\nerror.type:ConnectionError -> system-down\n\nerror.value:\"connection error: *\" -> connection-error, {{ transaction }}\n```\n\nNow, all the events with the error type `DatabaseUnavailable` or `ConnectionError` will be grouped into an issue with the type `system-down`. In addition, all events with the error value `connection error` will be grouped by their transaction name. So, for example, if your transactions `/api/users/foo/` and `/api/events/foo/`β€”both with the value `connection error`β€”crash the same way, Sentry will create two issues, regardless of stack trace or any other default grouping method.\n\n## [Matchers](https://docs.sentry.io/concepts/data-management/event-grouping/fingerprint-rules.md#matchers)\n\nMatchers allow you to use [glob patterns](https://en.wikipedia.org/wiki/Glob_\\(programming\\)).\n\nIf you want to create a rule that includes brackets `[ ]`, braces `{ }` or a literal `*`, escape them with a backslash; that is, `\\[`, `\\]`, `\\{`, `\\}` or `\\*`.\n\nThe following matchers are available:\n\n### [`error.type`](https://docs.sentry.io/concepts/data-management/event-grouping/fingerprint-rules.md#errortype)\n\nalias: `type`\n\nMatches on an exception type (exception name). The match is performed as a case-sensitive glob.\n\n```bash\nerror.type:ZeroDivisionError -> zero-division\nerror.type:ConnectionError -> connection-error\n```\n\n### [`error.value`](https://docs.sentry.io/concepts/data-management/event-grouping/fingerprint-rules.md#errorvalue)\n\nalias: `value`\n\nMatches on the exception value. Errors or exceptions often have human-readable descriptions (values) associated with them. This matcher allows a" + }, + { + "path": "concepts/data-management/event-grouping/merging-issues.md", + "title": "Merging Issues", + "hierarchy": [ + "Concepts", + "Data Management", + "Event Grouping", + "Merging Issues" + ], + "summary": "# Merging Issues", + "content": "# Merging Issues\n\nThis feature is only applicable for [error issues](https://docs.sentry.io/product/issues/issue-details/error-issues.md) with debug information files, excluding source maps. Other categories of issues (such as [performance issues](https://docs.sentry.io/product/issues/issue-details/performance-issues.md) or [replay issues](https://docs.sentry.io/product/issues/issue-details/replay-issues.md)) do not support this feature.\n\nEscalating issues currently does not work for merged/unmerged issues, but we're working on fixing this.\n\nIf you have similar-looking issues that have not been grouped together automatically and you want to reduce noise, you can do so by merging them.\n\nIn this example, before merge, there are two issues that are very similar, but have not been grouped together. One issue has 39 events in the past 24 hours, and the other has 76:\n\nAfter the two issues are merged into one, the event count of 115 on that one issue reflects that they've been grouped together:\n\nYou can also do this from inside a single issue. Click the \"Similar Issues\" tab, select all of the issues that you want to merge, and click \"Merge\":\n\nIf you'd like to unmerge issues, go to the **Issue Details** page and click the β€œMerged Issues” tab. You will see the fingerprints that have been merged into that issue. Select the appropriate checkbox(es) and click β€œUnmerge”.\n\nIt's important to note that we don't infer any new grouping rules from how you merge issues. Future events will be added to the merged set of issues by the same criteria as they would've been added to the individual issues that are now in the merged set.\n\nIf Sentry creates more issues than you can merge, or too few issues, you can try updating your [Fingerprinting Rules](https://docs.sentry.io/concepts/data-management/event-grouping/fingerprint-rules.md) or [Stack Trace Rules](https://docs.sentry.io/concepts/data-management/event-grouping/stack-trace-rules.md).\n" + }, + { + "path": "concepts/data-management/event-grouping/stack-trace-rules.md", + "title": "Stack Trace Rules", + "hierarchy": [ + "Concepts", + "Data Management", + "Event Grouping", + "Stack Trace Rules" + ], + "summary": "# Stack Trace Rules", + "content": "# Stack Trace Rules\n\nThis feature is only applicable for [error issues](https://docs.sentry.io/product/issues/issue-details/error-issues.md) with debug information files, excluding source maps. Other categories of issues (such as [performance issues](https://docs.sentry.io/product/issues/issue-details/performance-issues.md) or [replay issues](https://docs.sentry.io/product/issues/issue-details/replay-issues.md)) do not support this feature.\n\nStack trace rules improve issue tracking by ensuring accurate grouping and better classification of stack frames as in-app or system. This helps focus on relevant code, reduces noise, and minimizes false positives. By tailoring rules to your project, you can streamline debugging and maintain consistency across teams or multiple applications.\n\nWhen you set stack trace rules (previously known as *grouping enhancements*) for grouping in Sentry, they influence the data that's fed into the grouping algorithm. These rules can be configured on a per-project basis in **Project Settings > Issue Grouping > Stack Trace Rules**.\n\nHere are a few things to note about stack trace rules:\n\n* Each rule is written on a single line.\n* Rules consist of one or more match expressions followed by one or more actions triggered when all expressions match.\n* Rules are applied sequentially, from top to bottom, across all frames in the stack trace.\n\nIn addition, the stack trace rules using the below matchers and actions can also be applied to incoming profiles to improve frame classification (in-app vs system, for example).\n\nAllowed Matchers:\n\n* `stack.abs_path`\n* `stack.module`\n* `stack.function`\n* `stack.package`\n\nAllowed Actions:\n\n* `+app`\n* `-app`\n\nThe syntax for stack trace rules is similar to:\n\n```bash\nmatcher-name:expression other-matcher:expression ... action1 action2 ...\n```\n\nIf you want to negate the match, prefix the expression with an exclamation mark (`!`). If a line is prefixed with a hash (`#`), it's ignored and treated as a comment.\n\nThe following is a practical example of how this looks:\n\n```bash\n# mark all functions in the std namespace to be outside the app\nfamily:native stack.function:std::* -app\n\n# mark all code in node modules not to be in app\nstack.abs_path:**/node_modules/** -app\n\n# remove all generated javascript code from all grouping\nstack.abs_path:**/generated/**.js -group\n```\n\n## [Matchers](https://docs.sentry.io/concepts/data-management/event-grouping/stack-trace-rules.md#matchers)\n\nMultiple matchers can be defined in a line. The following matchers are available:\n\n### [`family`](https://docs.sentry.io/concepts/data-management/event-grouping/stack-trace-rules.md#family)\n\nMatches on the general platform family, which currently includes `javascript`, `native` and `other`. Comma separate rules to apply them to multiple platforms.\n\n```bash\nfamily:javascript,native stack.abs_path:**/generated/** -group\n```\n\n### [`stack.abs_path`](https://docs.sentry.io/concepts/data-management/event-grouping/stack-trace-rules.md#stackabs_path)\n\nalias: `path`\n\nThis matcher is case insensitive with Unix glob behavior on a path in a stack trace. The path separators are normalized to `/`. As a special rule, if the filename is relative, it still matches on `**/`.\n\n```bash\n# match on all files under `project` with a `.c` extension\nstack.abs_path:**/project/**.c +app\n\n# matches on vendor/foo without sub folders\nstack.abs_path:**/vendor/foo/*.c -app\n\n# matches on `foo.gen.c` as well as `foo/bar.gen.c`.\nstack.abs_path:**/*.gen.c -group\n```\n\n### [`stack.module`](https://docs.sentry.io/concepts/data-management/event-grouping/stack-trace-rules.md#stackmodule)\n\nalias: `module`\n\nModule is similar to `path` but matches on the `module`. This is not used for Native but it is used for JavaScript, Python, and similar platforms. Matches are case-sensitive, and normal globbing is available. Note that modules are not packages, which can be confusing for Native environments.\n\n### [`stack.function`](https://docs" + }, + { + "path": "concepts/data-management/filtering.md", + "title": "Inbound Filters", + "hierarchy": [ + "Concepts", + "Data Management", + "Filtering" + ], + "summary": "# Inbound Filters", + "content": "# Inbound Filters\n\nSentry provides several methods to filter data in your project. Using sentry.io to filter events is a simple method since you don't have to [configure and deploy your SDK to filter projects](https://docs.sentry.io/platform-redirect.md?next=/configuration/filtering/).\n\n## [Inbound Data Filters](https://docs.sentry.io/concepts/data-management/filtering.md#inbound-data-filters)\n\nInbound data filters allow you to determine which errors, if any, Sentry should ignore. Explore these by navigating to **\\[Project] > Project Settings > Inbound Filters.**\n\nThese filters are exclusively applied at ingest time and not later in processing. This, for instance, lets you discard an error by error message when the error is ingested through the JSON API. On the other hand, this filter doesn't apply to ingested minidumps. Filtered events do not consume quota, as discussed in [What Counts Toward My Quota](https://docs.sentry.io/pricing/quotas.md#what-counts-toward-my-quota-an-overview).\n\nInbound filters include:\n\n* Common browser extension errors\n* Transactions coming from health checks and ping requests\n* Events coming from legacy browsers\n* Events coming from localhost\n* Errors from known web crawlers\n* React hydration errors\n* ChunkLoadErrors\n* Events from certain IP addresses\n* Events with certain error messages\n* Events from specific release versions of your code\n\n### [Legacy Browser Filters](https://docs.sentry.io/concepts/data-management/filtering.md#legacy-browser-filters)\n\nThe legacy browser filters allow you to filter out certain legacy versions of browsers that are known to cause problems.\n\nLegacy browser filters were updated in Feb 2024 and will be periodically evaluated to include additional legacy versions.\n\nIf you had a legacy browser filter on before the update, the old filter will appear in your settings as \"Deprecated\". Deprecated legacy browser filters still work. However, if you turn them off, you won't be able to turn them on again and will need to use the new filters instead.\n\n### [Browser Extension Errors](https://docs.sentry.io/concepts/data-management/filtering.md#browser-extension-errors)\n\nSome browser extensions are known to cause errors. You can filter these out using the browser extension filter, which checks the error message and event source to see if it's a known error coming from a browser extension. To see the full list of errors filtered out by the browser extension filter, see the [source code in relay](https://github.com/getsentry/relay/blob/master/relay-filter/src/browser_extensions.rs#L9-L76).\n\n### [Web Crawler Errors](https://docs.sentry.io/concepts/data-management/filtering.md#web-crawler-errors)\n\nDue to their nature, web crawlers often encounter errors that normal users won't see. You can use the web crawler filter to filter out errors from web crawlers, determined by the event's user-agent, from the following sites: Baidu, Yahoo, Sogou, Facebook, Alexa, Slack, Google Indexing, Pingdom, Lytics, AWS Security Scanner, Hubspot, Bytedance, and other generic bots and spiders. Errors from Slack's Slackbot web crawler will not be filtered.\n\n### [IP Addresses](https://docs.sentry.io/concepts/data-management/filtering.md#ip-addresses)\n\nFilters events based on the **originating IP address of the client making the request**, not the user IP contained within the user data inside the request. This ensures that filtering decisions rely on the actual source of the request, as determined by network-level information, rather than data provided in the event payload.\n\nSentry attempts to identify the request's origin using the **forwarded IP address**. If no forwarded IP is available, it falls back to the **direct IP** of the client connecting to Sentry's servers.\n\nThe supported IP address formats are:\n\n* **IPv4 Addresses**: Standard dotted-decimal notation (e.g., 1.2.3.4, 122.33.230.14, 127.0.0.1).\n* **IPv6 Addresses**: Standard colon-separated hexadecimal notation (e.g., aaaa:bbbb::cccc, a:b:c::1).\n* **IP" + }, + { + "path": "concepts/data-management/size-limits.md", + "title": "Size Limits", + "hierarchy": [ + "Concepts", + "Data Management", + "Size Limits" + ], + "summary": "# Size Limits", + "content": "# Size Limits\n\nSentry imposes size limits on events, attachments, requests, and various event fields.\n\n## [Behavior](https://docs.sentry.io/concepts/data-management/size-limits.md#behavior)\n\nThe following describes how Sentry treats size limits:\n\n* Events, attachments, and requests exceeding payload size limits are immediately dropped with a `413 Payload Too Large` error.\n* Sentry allows compressed content encoding, and applies separate limits before and after decompression.\n* Events that exceed 200KB compressed or 1MB decompressed will be rejected.\n* Minidump uploads that exceeed 20MB compressed or 100MB decompressed (for all files combined) will also be rejected.\n* Event fields exceeding the individual size limits are trimmed and truncated afterwards.\n* The number of events rejected due to size limits is counted towards the *Dropped* category in [usage stats](https://docs.sentry.io/product/stats.md#usage-stats).\n\n## [Recommendations](https://docs.sentry.io/concepts/data-management/size-limits.md#recommendations)\n\nTo avoid using up your attachments quota β€” which is based on size and not number of instances of attachments data sent β€” or having the event dropped entirely, consider limiting the size of values passed into Sentry's APIs. For example, if your application attaches application state or request bodies to Sentry events, truncate them first.\n\n## [Size Limit References](https://docs.sentry.io/concepts/data-management/size-limits.md#size-limit-references)\n\nSentry's exact size limits may change over time. For more information, please refer to the following resources:\n\n* [Envelope Size Limits](https://develop.sentry.dev/sdk/data-model/envelopes/#size-limits)\n* [Store Endpoint Size Limits](https://develop.sentry.dev/sdk/miscellaneous/store/#size-limits)\n* [Minidump Size Limits](https://docs.sentry.io/platforms/native/guides/minidumps.md#size-limits)\n* [Variable Size Limits](https://develop.sentry.dev/sdk/expected-features/data-handling/#variable-size)\n" + }, + { + "path": "concepts/key-terms.md", + "title": "Concepts", + "hierarchy": [ + "Concepts", + "Key Terms" + ], + "summary": "# Concepts", + "content": "# Concepts\n\n* #### [Key Terms & Features](https://docs.sentry.io/concepts/key-terms/key-terms.md)\n\n A few key terms and features to help you get a better understanding of Sentry.\n\n* #### [Data Source Name (DSN)](https://docs.sentry.io/concepts/key-terms/dsn-explainer.md)\n\n A Data Source Name (DSN) tells Sentry where to send events so they’re associated with the correct project. Learn more about DSN structure and use here.\n\n* #### [Sample Rates](https://docs.sentry.io/concepts/key-terms/sample-rates.md)\n\n Learn how to manage the amount of data you send and are billed for in Sentry by adjusting the sample rates of various Sentry products including Traces and Session Replays.\n\n* #### [Creating and Filtering Environments](https://docs.sentry.io/concepts/key-terms/environments.md)\n\n Learn how environments can help you filter issues, releases, and user feedback in Sentry.\n\n* #### [Event Data](https://docs.sentry.io/concepts/key-terms/enrich-data.md)\n\n Learn about event data and how to configure Sentry workflows and tools to fine-tune the data sent to Sentry.\n\n* #### [Tracing](https://docs.sentry.io/concepts/key-terms/tracing.md)\n\n Learn more about the tracing features Sentry offers to help you track your software performance across multiple systems.\n" + }, + { + "path": "concepts/key-terms/dsn-explainer.md", + "title": "Data Source Name (DSN)", + "hierarchy": [ + "Concepts", + "Key Terms", + "Dsn Explainer" + ], + "summary": "# Data Source Name (DSN)", + "content": "# Data Source Name (DSN)\n\nSentry automatically assigns you a Data Source Name (DSN) when you create a project to start monitoring events in your app.\n\n### [What the Data Source Name (DSN) Does](https://docs.sentry.io/concepts/key-terms/dsn-explainer.md#what-the-data-source-name-dsn-does)\n\nA DSN tells a Sentry SDK where to send events so the events are associated with the correct project.\n\nIf this value is not provided, SDKs will try to read it from the `SENTRY_DSN` environment variable, where applicable. This fallback does not apply in cases like a web browser, where the concept of environment variables does not exist.\n\nIf an SDK is not initialized or if it is initialized with an empty DSN, the SDK will not send any data over the network, such as captured exceptions.\n\n### [DSN Utilization](https://docs.sentry.io/concepts/key-terms/dsn-explainer.md#dsn-utilization)\n\nDSNs are safe to keep public because they only allow submission of new events and related event data; they do not allow read access to any information.\n\nWhile there is a risk of abusing a DSN, where any user can send events to your organization with any information they want, this is a rare occurrence. Sentry provides controls to [block IPs](https://docs.sentry.io/platform-redirect.md?next=/configuration/options/) and similar concerns. You can also rotate (and revoke) DSNs by navigating to **\\[Project] > Settings > SDK Setup > Client Keys (DSN)**.\n\nIf your application is shipped to client devices, if possible, we recommend having a way to configure the DSN dynamically. In an ideal scenario, you can \"ship\" a new DSN to your application without the customer downloading the latest version. We recognize that this may not always be practical, but we cannot offer further advice as this scenario is implementation specific.\n\n### [Where to Find Your Data Source Name (DSN)](https://docs.sentry.io/concepts/key-terms/dsn-explainer.md#where-to-find-your-data-source-name-dsn)\n\nIf you're in the process of setting up a project, you can find your DSN in the installation or configuration code snippets provided in [sentry.io](https://sentry.io/) during setup:\n\nYou can also find the DSN in your project settings by navigating to **\\[Project] > Settings > SDK Setup > Client Keys (DSN)** in [sentry.io](https://sentry.io/).\n\n### [The Parts of the Data Source Name (DSN)](https://docs.sentry.io/concepts/key-terms/dsn-explainer.md#the-parts-of-the-data-source-name-dsn)\n\nThe DSN configures the protocol, public key, server address, and project identifier. It is composed of the following parts:\n\n`{PROTOCOL}://{PUBLIC_KEY}:{SECRET_KEY}@{HOST}{PATH}/{PROJECT_ID}`\n\nFor example:\n\n```javascript\nSentry.init({ dsn: \"https://public@sentry.example.com/1\" });\n```\n\nHas the following settings:\n\n* URI = \n* Public Key = public\n* Project ID = 1\n\nThe secret part of the DSN is optional and effectively deprecated. While clients will still honor it, if supplied, future versions of Sentry will entirely ignore it.\n" + }, + { + "path": "concepts/key-terms/enrich-data.md", + "title": "Event Data", + "hierarchy": [ + "Concepts", + "Key Terms", + "Enrich Data" + ], + "summary": "# Event Data", + "content": "# Event Data\n\nThe Sentry SDK captures errors, exceptions, crashes, transactions, and generally anything that goes wrong in your application in real-time. Once captured, the SDK enriches the data with contextual information that it gets from the application's runtime and sends all this data as an *event* to your Sentry account.\n\nWhile Sentry adds a lot of this contextual data by default, we highly encourage you to add your custom data through the SDK. Multiple Sentry workflows and tools can be configured and fine-tuned based on this data, so adapting those to the way you work is very helpful in getting even more value out of Sentry.\n\n## [Types of Data](https://docs.sentry.io/concepts/key-terms/enrich-data.md#types-of-data)\n\nThe SDK allows you to set various types of data that are then attached to every event that occurs in your application. Generally, those data types are:\n\n1. **Unstructured Data** - Includes additional data like `Breadcrumbs`, `Extra data`, and `Custom Contexts`. While these fields are **unsearchable**, they enrich your events with information that will help you debug and resolve the associated issues.\n\n2. **Structured Data** - Key/value pairs that are **indexed and searchable**, allowing you to search, filter, and query **through all your events** across projects, in addition to helping you debug specific issues. These include:\n\n * `Custom Tags` - A way to reflect key characteristics that apply to your applications, dev process, or business in your error data. These might include variants and flavors of your app, a user type, tenant ID, payment plan, and so on.\n * `Release` and `Environment` - Predefined data fields available as SDK configuration options.\n * `User Context` - Comprised of a set of predefined data fields. Setting any one of those (when applicable) allows Sentry to construct a user identity and define user uniqueness.\n\n## [Using Your Data](https://docs.sentry.io/concepts/key-terms/enrich-data.md#using-your-data)\n\nAdding custom **structured data** that is unique to your applications, users, and business logic enriches your data and provides valuable context to every event. You can also use that same data to customize Sentry workflows and adapt them to your precise needs. Let's look at those major workflows:\n\n### [Alert Rules](https://docs.sentry.io/concepts/key-terms/enrich-data.md#alert-rules)\n\nTargeted alerts are key to focusing attention when your app breaks and notifying exactly the people who can fix it. The more data you add to your events, the more flexibility you gain to create pinpointed alerts. The following data types can be incorporated in your alert rules by adding the relevant conditions to trigger the alert:\n\n* **User Context**: Once a certain issue has impacted a defined threshold of unique users.\n* **Custom Tags**: When events contain custom tag values that match your defined values.\n* **Environment**: When events are occurring in a specific environment.\n\nThese can all come in handy in both issue and metric alerts. For instance:\n\n1. **Issue Alerts**: The following rule will trigger a Slack message when a **certain issue** with level *error or fatal*, originating from my *EMEA* releases in my *prod* environment, impacts more than *50 enterprise* end-users in *one hour*:\n\n2. **Metric Alerts**: The following rule will trigger a Slack message if more than *50 enterprise* end-users in *one hour* are impacted by *warning* level errors (**from multiple issues**) originating from my *EMEA* releases in my *prod* environment:\n\nLearn more in [Alerts](https://docs.sentry.io/product/alerts.md).\n\n### [Filter, Search, and Order Issues](https://docs.sentry.io/concepts/key-terms/enrich-data.md#filter-search-and-order-issues)\n\nOn the **Issues** page, custom data allows you to:\n\n* Filter issues according to your application's `environments` using the environment filter dropdown.\n* Sort issues by the number of (unique) impacted `users`.\n* Search through issues by your `custom tags`, `user cont" + }, + { + "path": "concepts/key-terms/environments.md", + "title": "Creating and Filtering Environments", + "hierarchy": [ + "Concepts", + "Key Terms", + "Environments" + ], + "summary": "# Creating and Filtering Environments", + "content": "# Creating and Filtering Environments\n\n`Environment` is a Sentry-supported tag that you can (and should) add to your SDK. Generally, the tag accepts any value, but it's intended to refer to your code deployments' naming convention, such as *development*, *testing*, *staging*, or *production*.\n\nEnvironments help you better filter issues, releases, and user feedback in the **Issue Details** page of [sentry.io](https://sentry.io). On that page, you can view information about a specific environment, focusing on the most recent release. If you’re using a multi-staged release process, you can also select a different default environment and set conditions that match the `environment` attribute to restrict alerts to only specific release stages.\n\nUse projects to separate different services or applications, and environments to separate different environments or release stages within each. If you've selected one or more projects in the filters of Sentry's web UI, the environment selector shows only environments associated with events from the selected projects.\n\nEnvironments are unique to each organization. Environment settings, however, are defined per project since you can hide environments per project.\n\n## [Creating Environments](https://docs.sentry.io/concepts/key-terms/environments.md#creating-environments)\n\nSentry automatically creates environments when it receives an [event](https://docs.sentry.io/api/events.md) with the environment tag. You can also create an environment when you first `init` your SDK, [as documented for each SDK](https://docs.sentry.io/platform-redirect.md?next=/configuration/environments/).\n\n### [Environment Naming Requirements](https://docs.sentry.io/concepts/key-terms/environments.md#environment-naming-requirements)\n\nWhen creating environments, be aware of the following requirements:\n\n* Environment names are **case-sensitive**\n* Names cannot contain **newlines, spaces, or forward slashes**\n* Names cannot be the string **\"None\"**\n* Names cannot exceed **64 characters**\n* You **cannot delete** environments, but you can [hide them](https://docs.sentry.io/concepts/key-terms/environments.md#hidden-environments)\n\n## [Filtering Environments](https://docs.sentry.io/concepts/key-terms/environments.md#filtering-environments)\n\n### [Issues](https://docs.sentry.io/concepts/key-terms/environments.md#issues)\n\nIf an issue has events from multiple environments, the issue will appear when you select any of those environments. Sentry defines an issue as a grouping of similar events. If you tag one or more events within an issue with a specific environment, that issue will appear in your view when filtered by that environment. For example, if an issue is composed of one event tagged with `Production` and one event tagged with `Staging`, the issue will appear in your view when filtering by `Production`, as well as by `Staging`.\n\nAlso, the environment filter affects all issue-related metrics, such as the count of users affected, times series graphs, and event count.\n\n### [Releases](https://docs.sentry.io/concepts/key-terms/environments.md#releases)\n\nA release by itself is not associated with an environment but can be deployed to different environments. When you select an environment on the releases page, it shows releases that were deployed to that environment. For example, a release deployed to the `QA` and `Prod` environment will appear in your view when filtering by `QA`, as well as `Prod`. All issue-related metrics within a given release will be affected by the environment filter. A deploy must have an environment.\n\nFor more details about configuring releases and deploys, see the [full documentation on Releases](https://docs.sentry.io/product/releases.md).\n\n## [Hidden Environments](https://docs.sentry.io/concepts/key-terms/environments.md#hidden-environments)\n\nSince you can't delete environments, Sentry has an option to hide it from the UI. Hiding environments can be useful when you're no longer sending events from an environ" + }, + { + "path": "concepts/key-terms/key-terms.md", + "title": "Key Terms & Features", + "hierarchy": [ + "Concepts", + "Key Terms", + "Key Terms" + ], + "summary": "# Key Terms & Features", + "content": "# Key Terms & Features\n\nSome of the below terms have corresponding features with the same name (in upper case) in the [Key Features](https://docs.sentry.io/concepts/key-terms/key-terms.md#key-features) section.\n\n## [Key Terms](https://docs.sentry.io/concepts/key-terms/key-terms.md#key-terms)\n\n* **alerts** - Alerts let you know about problems with your code in real-time by sending you notifications when certain alert rule conditions are met. There are several types of alerts available with customizable thresholds and integrations.\n\n* **attachments** - Stored additional files, such as config or log files that are related to an error event.\n\n* **data** - Anything you send to Sentry. This includes, events (errors or transactions), attachments, and event metadata.\n\n* **distributed trace** - When a trace includes work in multiple services, it's called a [distributed trace](https://docs.sentry.io/concepts/key-terms/tracing/distributed-tracing.md), because the trace is distributed across those services.\n\n* **DSN** - Data Source Name. A DSN tells the Sentry SDK where to send events so the events are associated with the correct project. Sentry automatically assigns you a DSN when you create a project. Learn more in our full [DSN documentation](https://docs.sentry.io/product/sentry-basics/dsn-explainer.md).\n\n* **environment** - `environment` is a Sentry-supported tag that you can add to your SDK that's intended to refer to your code deployments' naming convention, such as *development*, *testing*, *staging*, or *production*. Environments help you better filter issues and transactions among other uses. Learn more in our full [Environments documentation](https://docs.sentry.io/product/sentry-basics/environments.md).\n\n* **error** - What counts as an error varies by platform, but in general, if there's something that looks like an exception, it can be captured as an error in Sentry. Sentry automatically captures errors, uncaught exceptions, and unhandled rejections, as well as other types of errors, depending on platform.\n\n* **event** - An error or a transaction.\n\n* **issues** - An issue is a grouping of similar errors or performance problems. Every event has a set of characteristics called its fingerprint, which is what Sentry uses to group them. For example, Sentry groups error events together when they are triggered by the same part of your code. This grouping of events into issues allows you to see how frequently a problem is happening and how many users it's affecting.\n\n* **performance monitoring** - Performance monitoring is the act of tracking application performance and measuring metrics such as how many transactions are being sent and the average response time for all occurrences of a given transaction. To do this, Sentry captures [distributed traces](https://docs.sentry.io/product/sentry-basics/tracing/distributed-tracing.md) consisting of transactions and [spans](https://docs.sentry.io/product/sentry-basics/tracing/distributed-tracing.md#traces-transactions-and-spans) to measure individual services, as well as operations within those services.\n\n* **project** - A project represents your service or application in Sentry. You can create a project for a particular language or framework used in your application. For example, you might have separate projects for your API server and frontend client. For more information, check out our [best practices for creating projects](https://docs.sentry.io/organization/getting-started.md#4-create-projects). Projects allow you to associate events with a distinct application in your organization and assign responsibility and ownership to specific users and teams within your organization.\n\n* **release** - A release is a version of your code deployed to an environment. When you notify Sentry about a release, you can identify new issues and regressions associated with it, confirm whether an issue is resolved in the next release, and apply source maps. Learn more in the full [Releases documentation](http" + }, + { + "path": "concepts/key-terms/sample-rates.md", + "title": "Sample Rates", + "hierarchy": [ + "Concepts", + "Key Terms", + "Sample Rates" + ], + "summary": "# Sample Rates", + "content": "# Sample Rates\n\n## [Overview](https://docs.sentry.io/concepts/key-terms/sample-rates.md#overview)\n\n### [What Is a Sample Rate?](https://docs.sentry.io/concepts/key-terms/sample-rates.md#what-is-a-sample-rate)\n\nAdding Sentry to your app gives you a lot of valuable information about errors and performance you wouldn't otherwise get. And lots of information is good -- as long as it's the right information, at a reasonable volume. You can use sample rates to capture only a specified percentage of events like errors and traces.\n\n### [Why Not Capture All Events?](https://docs.sentry.io/concepts/key-terms/sample-rates.md#why-not-capture-all-events)\n\nWe recommend sampling your transactions for two reasons:\n\n1. Capturing a single trace involves minimal overhead, but capturing traces for every page load or API request may add an undesirable load to your system.\n\n2. Enabling sampling allows you to better manage the number of events sent to Sentry, so you can tailor your volume to your organization's needs and budget.\n\nChoose a sampling rate that balances data accuracy with performance and storage concerns. You should aim to collect enough data to get meaningful insights without overloading resources. If unsure, start with a low rate and gradually increase it as you understand your traffic patterns better.\n\n## [Sampling Rate Options](https://docs.sentry.io/concepts/key-terms/sample-rates.md#sampling-rate-options)\n\nSome of the options below aren't available in every SDK; check out our platform-specific docs for more info.\n\n### [Error Events](https://docs.sentry.io/concepts/key-terms/sample-rates.md#error-events)\n\n* **SampleRate** - Configures the sample rate for error events, in the range of 0.0 to 1.0. The default is 1.0, which means that 100% of error events will be sent. If set to 0.1, only 10% of error events will be sent. Events are picked randomly.\n\n### [Tracing](https://docs.sentry.io/concepts/key-terms/sample-rates.md#tracing)\n\n* **tracesSampleRate** - A number between `0` and `1`, controlling the percentage chance a given transaction will be sent to Sentry. (`0` represents 0% while `1` represents 100%.) Applies equally to all transactions created in the app. Either this or `tracesSampler` must be defined to enable tracing.\n\n* **tracesSampler** - A function responsible for determining the percentage chance a given transaction will be sent to Sentry. It will automatically be passed information about the transaction and the context in which it's being created, and must return a number between 0 (0% chance of being sent) and 1 (100% chance of being sent). Can also be used for filtering transactions, by returning 0 for those that are unwanted. Either this or `tracesSampleRate` must be defined to enable tracing.\n\nLearn more about [tracing](https://docs.sentry.io/product/tracing.md) in Sentry.\n\n### [Session Replay](https://docs.sentry.io/concepts/key-terms/sample-rates.md#session-replay)\n\n* **replaysSessionSampleRate** - The sample rate for replays that begin recording immediately and last the entirety of the user's session. 1.0 collects all replays, and 0 collects none.\n\n* **replaysOnErrorSampleRate** - The sample rate for replays that are recorded when an error happens. This type of replay will record up to a minute of events prior to the error and continue recording until the session ends. 1.0 captures all sessions with an error, and 0 captures none.\n\nLearn more about [session replay](https://docs.sentry.io/product/explore/session-replay.md) in Sentry.\n" + }, + { + "path": "concepts/key-terms/tracing.md", + "title": "Tracing", + "hierarchy": [ + "Concepts", + "Key Terms", + "Tracing" + ], + "summary": "# Tracing", + "content": "# Tracing\n\n## [What's Tracing?](https://docs.sentry.io/concepts/key-terms/tracing.md#whats-tracing)\n\nTracing involves capturing the timing and flow of requests and operations as they happen in your application. This powerful debugging tool helps you identify which link in a sequence of events may be causing a problem, such as slow performance.\n\n### [What's Distributed Tracing?](https://docs.sentry.io/concepts/key-terms/tracing.md#whats-distributed-tracing)\n\nDistributed tracing provides a unified view of how a single request moves from the frontend to the backend and beyond. This is particularly useful in modern applications, which are often composed of multiple separate services working together. To get a distributed view of your application, instrument Sentry in both your frontend and your backend.\n\nWith [distributed tracing](https://docs.sentry.io/concepts/key-terms/tracing/distributed-tracing.md), you can identify performance bottlenecks that are affecting your application across different services and platforms. You can then use Sentry tools such as the [Trace Explorer](https://docs.sentry.io/product/explore/traces.md) or [Trace View](https://docs.sentry.io/concepts/key-terms/tracing/trace-view.md) page to dig deeper and find the root cause of the problem. Distributed tracing is particularly helpful for identifying problems that take place between multiple services that you can't debug using console logs, such as race conditions, [N+1 queries](https://docs.sentry.io/product/issues/issue-details/performance-issues/n-one-queries.md), and [caching issues](https://docs.sentry.io/product/insights/caches.md).\n\n### [What's a Trace?](https://docs.sentry.io/concepts/key-terms/tracing.md#whats-a-trace)\n\nA trace is a record of a series of connected events and operations coming from your application. Each trace has a string of globally unique characters called a trace ID that's passed between frontend and backend services. The trace ID connects all the actions that take place, starting from the moment a user performs an action on the frontend, all the way through to the actions this triggers across your application and services. Each trace is composed of multiple spans.\n\n### [What's a Span?](https://docs.sentry.io/concepts/key-terms/tracing.md#whats-a-span)\n\nA span is a named, timed operation that represents a part of the application workflow. The data captured for each span provides granular insights into specific tasks, like API requests or database queries. Multiple spans are pieced together to create a trace, providing a comprehensive overview of how your application works. This makes it easier to troubleshoot and analyze performance issues.\n\n### [What are Span Attributes and Metrics?](https://docs.sentry.io/concepts/key-terms/tracing.md#what-are-span-attributes-and-metrics)\n\nSpan attributes and metrics are key pieces of information that are captured for each span. Attributes are key-value pairs that provide additional context about the span, such as the name of the operation or the user ID. Metrics are numerical values that measure the performance of the span, such as the duration of the operation or the number of database queries.\n\n### [What's a Transaction?](https://docs.sentry.io/concepts/key-terms/tracing.md#whats-a-transaction)\n\nIn Sentry, a \"transaction\" is a specific unit that represents any event that your application sends to Sentry, like loading a web page or processing an API call. Each transaction is made up of one or more spans. Transactions have a unique transaction ID and include the associated child spans that capture the operation’s entire process from start to finish.\n\n## [How to Use Tracing in Sentry](https://docs.sentry.io/concepts/key-terms/tracing.md#how-to-use-tracing-in-sentry)\n\nIf you instrument Sentry for a single part of your app (just the frontend for example), looking at a trace will provide useful context for debugging issues within that app or service. But to get the most out of tracing in Sentry, y" + }, + { + "path": "concepts/key-terms/tracing/distributed-tracing.md", + "title": "Distributed Tracing", + "hierarchy": [ + "Concepts", + "Key Terms", + "Tracing", + "Distributed Tracing" + ], + "summary": "# Distributed Tracing", + "content": "# Distributed Tracing\n\nDistributed tracing provides a connected view of your application from frontend to backend. It helps track software performance, measure [metrics](https://docs.sentry.io/product/insights/overview/metrics.md) like throughput and latency, and display the impact of errors across multiple systems. This makes Sentry a more complete [performance monitoring](https://docs.sentry.io/product/insights/overview.md) solution, aiding in diagnosing problems and measuring your application's overall health.\n\n[Tracing](https://docs.sentry.io/concepts/key-terms/tracing/distributed-tracing.md) in Sentry provides insights such as:\n\n* What occurred for a specific error event or issue\n* The conditions causing bottlenecks or latency issues\n* The endpoints or operations consuming the most time\n\n## [What Is Distributed Tracing?](https://docs.sentry.io/concepts/key-terms/tracing/distributed-tracing.md#what-is-distributed-tracing)\n\nA tracing tool focuses on what happened (and when), logging events during a program's execution across multiple systems. Traces often include timestamps, allowing durations to be calculated, but their purpose is broader, showing how interconnected systems interact and how problems in one can affect another. While tracing can be useful if instrumented in just the frontend or backend, it's most powerful when set up for your full stack (distributed tracing).\n\nIt's important to note that tracing is not [profiling](https://docs.sentry.io/product/explore/profiling.md). A profiler measures various aspects of an application's operation, resulting in a statistical summary. While both diagnose application problems, they differ in what they measure and how data is recorded.\n\nLearn more in this [Tracing: Frontend issues with backend solutions](https://sentry.io/resources/tracing-frontend-issues-with-backend-solutions/?original_referrer=https%3A%2F%2Fblog.sentry.io%2F) workshop.\n\n### [The Tracing Data Model](https://docs.sentry.io/concepts/key-terms/tracing/distributed-tracing.md#the-tracing-data-model)\n\nUltimately, any data structure is defined by the kind of data it contains, and relationships between data structures are defined by how links between them are recorded. Traces, transactions, and spans are no different.\n\n#### [Traces](https://docs.sentry.io/concepts/key-terms/tracing/distributed-tracing.md#traces)\n\nTraces are defined as the collection of all transactions that share a `trace_id` value.\n\n#### [Transactions](https://docs.sentry.io/concepts/key-terms/tracing/distributed-tracing.md#transactions)\n\nTransactions share most properties (start and end time, tags, and so on) with their root spans. They also have a `transaction_name` property, used in the UI to identify the transaction. Common examples include endpoint paths for backend request transactions, task names for cron job transactions, and URLs for page-load transactions.\n\nBefore the transaction is sent, the `tags` and `data` properties will get merged with data from the global scope. (Global scope data is set in `Sentry.init()` or by using `Sentry.configureScope()`, `Sentry.setTag()`, `Sentry.setUser()`, or `Sentry.setExtra()`.)\n\nTransaction names can contain **sensitive data**. See [Scrubbing Sensitive Data](https://docs.sentry.io/platforms/javascript/data-management/sensitive-data.md#scrubbing-data) for more information.\n\n#### [Spans](https://docs.sentry.io/concepts/key-terms/tracing/distributed-tracing.md#spans)\n\nSpan data includes:\n\n* `parent_span_id`: ties the span to its parent span\n* `op`: short string identifying the type or category of operation the span is measuring\n* `start_timestamp`: when the span was opened\n* `end_timestamp`: when the span was closed\n* `description`: longer description of the span's operation\n* `status`: short code indicating operation's status\n* `tags`: key-value pairs holding additional data about the span\n* `data`: arbitrarily-structured additional data about the span\n\nAn example use of the `op` and `description` proper" + }, + { + "path": "concepts/key-terms/tracing/event-detail.md", + "title": "undefined", + "hierarchy": [ + "Concepts", + "Key Terms", + "Tracing", + "Event Detail" + ], + "summary": "# undefined", + "content": "# undefined\n" + }, + { + "path": "concepts/key-terms/tracing/span-metrics.md", + "title": "Span Metrics", + "hierarchy": [ + "Concepts", + "Key Terms", + "Tracing", + "Span Metrics" + ], + "summary": "# Span Metrics", + "content": "# Span Metrics\n\nSpan metrics enable you to attach user defined attributes to spans, which might include application metrics or important debugging context within your application's traces. This approach provides context-rich performance monitoring by connecting attributes directly to the operations that generate them.\n\nThese attributes allow you to enrich trace spans with attributes that represent various types of measurement data:\n\n* Performance attributes (memory usage, processing time, latency)\n* Business metrics (transaction value, user engagement rates)\n* Technical indicators (queue depth, cache hit ratios)\n* Debugging context (input parameters, process states)\n\nBy attaching attributes directly to spans, you create a unified view of both the execution path and its associated performance data.\n\n```javascript\n// Adding performance metrics to a database span\n// Simple database query with dynamic attributes\nSentry.startSpan(\n {\n name: \"Database Query\",\n op: \"db.query\",\n },\n (span) => {\n // Execute query and add results to span\n const result = executeQuery(\"SELECT * FROM users WHERE active = true\");\n\n // Set attributes with the results data\n span.setAttribute(\"db.rows_returned\", result.length);\n span.setAttribute(\"db.execution_time_ms\", result.executionTime);\n\n return result;\n },\n);\n```\n\n## [Benefits of Configuring Span Attributes](https://docs.sentry.io/concepts/key-terms/tracing/span-metrics.md#benefits-of-configuring-span-attributes)\n\n### [Contextual Observability](https://docs.sentry.io/concepts/key-terms/tracing/span-metrics.md#contextual-observability)\n\nSpan attributes provide contextual data that connects execution flow with specific metrics that developers care about, or performance measurements. When investigating an issue, you can view both what occurred (the trace) and the performance characteristics in a single view.\n\n### [Unified Telemetry](https://docs.sentry.io/concepts/key-terms/tracing/span-metrics.md#unified-telemetry)\n\nBy integrating these attributes into tracing, you can maintain a single telemetry pipeline rather than managing separate systems for traces and metrics, resulting in simplified instrumentation and more efficient monitoring.\n\n```javascript\n// Adding business context to a payment processing span\nSentry.startSpan(\n {\n name: \"Process Payment\",\n op: \"payment.process\",\n attributes: {\n \"payment.amount\": 99.99,\n \"payment.currency\": \"USD\",\n \"payment.method\": \"credit_card\",\n \"customer.type\": \"returning\",\n },\n },\n async () => {\n // Payment processing implementation\n },\n);\n```\n\n### [Accelerated Troubleshooting](https://docs.sentry.io/concepts/key-terms/tracing/span-metrics.md#accelerated-troubleshooting)\n\nWhen performance issues arise, these attributes provide the necessary context to quickly identify bottlenecks. For example, when investigating slow checkout processes, you can immediately see which specific component (payment gateway, database query, third-party API) is causing the delay.\n\n### [Technical-Business Correlation](https://docs.sentry.io/concepts/key-terms/tracing/span-metrics.md#technical-business-correlation)\n\nSpan attributes enable correlation between technical performance data and business outcomes by connecting metrics like response time or error rates directly to business metrics such as conversion rates or revenue.\n\n## [Implementation Approaches](https://docs.sentry.io/concepts/key-terms/tracing/span-metrics.md#implementation-approaches)\n\nThere are two primary methods for implementing attributes on spans:\n\n### [1. Enhancing Existing Spans](https://docs.sentry.io/concepts/key-terms/tracing/span-metrics.md#1-enhancing-existing-spans)\n\nAugment automatically-created or manually-defined spans with additional attributes:\n\n```javascript\n// Adding metrics to an existing file upload span\nconst span = Sentry.getActiveSpan();\nif (span) {\n // User context\n span.setAttribute(\"user.subscription_tier\", \"premium\");\n\n // Multiple metr" + }, + { + "path": "concepts/key-terms/tracing/trace-view.md", + "title": "Trace View", + "hierarchy": [ + "Concepts", + "Key Terms", + "Tracing", + "Trace View" + ], + "summary": "# Trace View", + "content": "# Trace View\n\nThe Trace View page is designed to be your one-stop-shop when debugging performance or errors. It gives you full context on what was happening when an error or performance issue occurred, all in one place. The waterfall Trace View allows you to see everything that may have occurred during a trace, including errors, performance issues, and any profiles that may have been collected.\n\nIn addition, looking at the Trace View allows you to drill down into a single trace so you can visualize the high-level transactions and spans that took place within that trace. This makes debugging slow services, identifying related errors, and rooting out bottlenecks easier and faster, since you no longer have to navigate around multiple pages of the Sentry product.\n\n## [Product Walkthrough: Trace View Page](https://docs.sentry.io/concepts/key-terms/tracing/trace-view.md#product-walkthrough-trace-view-page)\n\nSentry's default visualization of a trace is a waterfall-like structure, where the entries (transactions and spans) in the list are organized chronologically and through ancestry (child spans will fall under their parents). This allows you to follow the order of operations and drill into sub-operations.\n\nOn the left side is a list of operations, and on the right is their duration and any events, such as errors, which may have occurred in that timeframe.\n\nBy default, the waterfall view shows a list of transactions. If you need more granular data and want to see spans as well, click \"+\" to the left of a transaction to expand the waterfall. The waterfall view helps surface any performance issues or profiles collected during a given timeframe.\n\n\n\n### [Previous and Next Traces](https://docs.sentry.io/concepts/key-terms/tracing/trace-view.md#previous-and-next-traces)\n\nAs users interact with an application, they generate multiple traces. For example, when a user loads a page in their browser and then navigates to another page, this creates two separate traces: one for the initial pageload and another for the subsequent navigation. By default, Sentry will link the traces together.\n\nIf linked traces are available, you will see \"Previous\" or \"Next\" buttons below the waterfall view. These buttons allow you to navigate between traces that occurred before or after the current one.\n\n### [Helpful Tips](https://docs.sentry.io/concepts/key-terms/tracing/trace-view.md#helpful-tips)\n\nBecause debugging often involves multiple people or teams, we've made it easy to draw attention to specific areas of the trace and share a link that shows what you've highlighted with your colleagues. To do this, click on the row you'd like to draw attention to and share the resulting URL. Your colleague will see exactly what you want them to.\n\nWhatever you highlight will also be saved if you navigate away from the page and will still be there when you use your browser's back and forward buttons.\n\nIf you're doing a comparison and want an easy way to go back and forth between highlighted areas of interest in your trace, you can pin the tabs. When a tab is pinned, the view will be persistent throughout your session.\n\n\n\nSometimes, duration gaps between entries can be small, but critical to your debugging effort. That's why the Trace View enables you to zoom into certain areas of the trace, either by double clicking on row elements (which zooms into the row) or by using your scroll wheel.\n\n\n\nThe Trace View has other features like search, which makes it easy to visualize matching spans that you can then iterate over using the up or down arrows. You can also tailor the layout to your preference.\n\nWe're going to continue adding features that enable you to perform efficient investigation into whatever issues you might be facing. If you have feedback or requests, please share it with us. We'd love to hear how we can make your life easier and your users happier.\n\n## [Troubleshooting](https://docs.sentry.io/concepts/key-terms/tracing/trace-view.md#troubleshooting)\n\n### [Orphan Tr" + }, + { + "path": "concepts/migration.md", + "title": "Moving to SaaS", + "hierarchy": [ + "Concepts", + "Migration" + ], + "summary": "# Moving to SaaS", + "content": "# Moving to SaaS\n\nSentry offers a cloud-hosted, software-as-a-service (SaaS) solution in addition to a self-hosted solution, which are both functionally the same. However, many customers find that self-hosted Sentry can quickly become expensive to maintain, scale, and support, making our SaaS product the better and less costly option. To facilitate moving from self-hosted to SaaS, we provide a self-serve process known as \"relocation\".\n\nCheck out this video on [**Migrating to Sentry SaaS**](https://sentry.io/resources/migrate-to-sentry-saas-workshop/) to learn about our relocation tooling.\n\nFor additional reading on considering SaaS, take a look at:\n\n* [Self Hosted or Cloud Sentry?](https://sentry.io/_/resources/about-sentry/self-hosted-vs-cloud/)\n* [XS:Code > Open Source is Free - But Expensive](https://dev.to/helad11/open-source-is-free-but-expensive-3h8a)\n* [Frequently asked migration questions](https://sentry.io/from/self-hosted/)\n\n## [Relocating to Cloud](https://docs.sentry.io/concepts/migration.md#relocating-to-cloud)\n\nIf your organization started with self-hosted Sentry, you've invested time and effort in configuring and customizing your Sentry org. Your work won't be wasted if you decide to move to a SaaS account because you won't have to start from scratch. You'll be able to relocate a lot of what you've configured into your new account.\n\nTo make this relocation as seamless as possible, Sentry has a workflow that allows you to retain most of your account's settings and configurations as you move to SaaS. All you'll need is owner access to your self-hosted install, and a way to access it via the terminal.\n\n### [What you'll keep](https://docs.sentry.io/concepts/migration.md#what-youll-keep)\n\nAll of the configurations, team and project structure, and most metadata will be relocated. Specifically, for every organization you [choose to relocate](https://docs.sentry.io/concepts/migration.md#2-choose-which-organizations-to-relocate) this includes:\n\n* All organization settings\n* User accounts and options for all organization members\n* Projects and their settings\n* Teams and their settings\n* Alert rules\n* Crons\n* Dashboards\n* Enabled data scrubbers\n* Repositories\n* Recent and saved searches\n\n### [What gets left behind](https://docs.sentry.io/concepts/migration.md#what-gets-left-behind)\n\nAny data related to specific issues, events, stack traces, or files like replays and source maps won't be transferred. Additionally, for security reasons, you'll need to reconnect and re-authenticate all of your integrations, and your users will need to re-connect their 2FA and create new API tokens after relocating.\n\nBelow is a non-exhaustive list of some items that will not be relocated:\n\n* Integrations, including parts of relocated items that depend on them (ex: if an Alert Rule triggers Slack notifications, that trigger will be omitted)\n* Webhooks\n* Issues\n* Events\n* Replays and/or other [Event Attachments](https://docs.sentry.io/platforms/javascript/enriching-events/attachments.md)\n* Source Maps, [Debug Information Files](https://docs.sentry.io/cli/dif.md) and/or [Debug IDs](https://docs.sentry.io/platforms/javascript/sourcemaps/troubleshooting_js/debug-ids.md)\n* Release information, including any references to external repositories via specific Pull Requests\n* Deployment information\n* Custom Avatars\n\nOne thing to note is that while we won't be able to transfer over historical event data, new incoming events will populate the projects in your relocated organization as soon as you [update your DSNs](https://docs.sentry.io/concepts/migration.md#5-update-your-dsns). All relocated organization members will be automatically notified and re-invited via email once the relocation completes.\n\n### [Version support window](https://docs.sentry.io/concepts/migration.md#version-support-window)\n\nSelf-serve relocation is only possible from the two most up-to-date minor self-hosted releases. That is, if the latest self-hosted release is version 24.2.3, you" + }, + { + "path": "concepts/otlp.md", + "title": "OpenTelemetry Protocol (OTLP)", + "hierarchy": [ + "Concepts", + "Otlp" + ], + "summary": "# OpenTelemetry Protocol (OTLP)", + "content": "# OpenTelemetry Protocol (OTLP)\n\nThis feature is in beta and is only available if your organization is participating in its limited release. Please reach out to if you want access. Features in beta are still in-progress and may have bugs. We recognize the irony.\n\nSentry can ingest [OpenTelemetry](https://opentelemetry.io) traces directly via the [OpenTelemetry Protocol](https://opentelemetry.io/docs/specs/otel/protocol/). If you have an existing OpenTelemetry trace instrumentation, you can configure your OpenTelemetry exporter to send traces to Sentry directly. Sentry's OTLP ingestion endpoint is currently in development, and has a few known limitations:\n\n* Span events are not supported. All span events are dropped during ingestion.\n* Span links are partially supported. We ingest and display span links, but they cannot be searched, filtered, or aggregated. Links are are shown in the [Trace View](https://docs.sentry.io/concepts/key-terms/tracing/trace-view.md).\n* Array attributes are partially supported. We ingest and display array attributes, but they cannot be searched, filtered, or aggregated. Array attributes are shown in the [Trace View](https://docs.sentry.io/concepts/key-terms/tracing/trace-view.md).\n* Sentry does not support ingesting OTLP metrics or OTLP logs.\n\nThe easiest way to configure an OpenTelemetry exporter is with environment variables. You'll need to configure the trace endpoint URL, as well as the authentication headers. Set these variables on the server where your application is running.\n\n`.env`\n\n```bash\nexport OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=\"https://o0.ingest.sentry.io/api/0/otlp/v1/traces/\"\nexport OTEL_EXPORTER_OTLP_TRACES_HEADERS=\"x-sentry-auth=sentry sentry_key=examplePublicKey\"\n```\n\nAlternatively, you can configure the OpenTelemetry Exporter directly in your application code. Here is an example with the OpenTelemetry Node SDK:\n\n`app.ts`\n\n```typescript\nimport { NodeSDK } from \"@opentelemetry/sdk-node\";\nimport { OTLPTraceExporter } from \"@opentelemetry/exporter-trace-otlp-http\";\n\nconst sdk = new NodeSDK({\n traceExporter: new OTLPTraceExporter({\n url: \"https://o0.ingest.sentry.io/api/0/otlp/v1/traces/\",\n headers: {\n \"x-sentry-auth\": \"sentry sentry_key=examplePublicKey\",\n },\n }),\n});\n\nsdk.start();\n```\n\nYou can find the values of Sentry's OTLP endpoint and public key in your Sentry project settings.\n\n1. Go to the [Settings > Projects](https://sentry.io/orgredirect/organizations/:orgslug/settings/projects/) page in Sentry.\n2. Select a project from the list.\n3. Go to the \"Client Keys (DSN)\" sub-page for this project under the \"SDK Setup\" heading.\n" + }, + { + "path": "concepts/search.md", + "title": "Search", + "hierarchy": [ + "Concepts", + "Search" + ], + "summary": "# Search", + "content": "# Search\n\nSearch is available on several features throughout [sentry.io](https://sentry.io), such as **Issues**, **Discover** and **Dashboards**.\n\n## [Query Syntax](https://docs.sentry.io/concepts/search.md#query-syntax)\n\nYou'll only need to use query syntax if you're using a Sentry [API](https://docs.sentry.io/api.md). You'll get pre-populated suggestions once you start typing in your search terms when using the search bar anywhere in [Sentry.io](https://sentry.sentry.io/).\n\nSearch queries are constructed using a `key:value` pattern, with an optional raw search at the end. Each `key:value` pair is a `token` and the optional raw search is itself a single `token`. The `key:value` pair `tokens` are treated as issue or event properties. The optional raw search is treated as a single `token` and searches event titles/messages.\n\nFor example:\n\n```bash\nis:resolved user.username:\"Jane Doe\" server:web-8 example error\n```\n\nIn the example above, there are three keys (`is:`, `user.username:`, `server:`), but four tokens:\n\n* `is:resolved`\n* `user.username:\"Jane Doe\"`\n* `server:web-8`\n* `example error`\n\nThe tokens `is:resolved` and `user.username:\"Jane Doe\"` are standard search tokens because both use reserved keywords. See [Issue Properties](https://docs.sentry.io/concepts/search/searchable-properties.md#issue-properties) and [Event Properties](https://docs.sentry.io/concepts/search/searchable-properties.md#event-properties) for appropriate keyword usage. The token `server:web-8` is pointing to a custom tag sent by the Sentry SDK. See [Custom Tags](https://docs.sentry.io/concepts/search/searchable-properties.md#custom-tags) for more information on how to set tags.\n\nThe token `example error` is utilizing the optional raw search and is passed as part of the issue search query (which uses a CONTAINS match similar to SQL). When using the optional raw search, you can provide *one* string, and the query uses that entire string.\n\nSearch terms should auto-complete, and when they don't, that means your term is incompatible with the dataset. If you complete the term and tap the Return/Enter key, an error message is displayed.\n\n### [Comparison Operators](https://docs.sentry.io/concepts/search.md#comparison-operators)\n\nSentry search supports the use of comparison operators:\n\n* greater than (**`>`**)\n* less than (**`<`**)\n* greater than or equal to (**`>=`**)\n* less than or equal to (**`<=`**)\n\nTypically, when you search using properties that are numbers or durations, you should use comparison operators rather than just a colon (`:`) to find exact matches, since an exact match isn't likely to exist.\n\nHere are some examples of valid comparison operator searches:\n\n* `event.timestamp:>2023-09-28T00:00:00-07:00`\n* `count_dead_clicks:<=10`\n* `transaction.duration:>5s`\n\n### [Using `OR` and `AND`](https://docs.sentry.io/concepts/search.md#using-or-and-and)\n\n`OR` and `AND` search conditions are only available for [Discover](https://docs.sentry.io/product/explore/discover-queries.md), [Insights Overview](https://docs.sentry.io/product/insights/overview.md), and [Metric Alerts](https://docs.sentry.io/product/alerts-notifications/metric-alerts.md).\n\nUse `OR` and `AND` between tokens, and use parentheses `()` to group conditions. `AND` can also be used between non-aggregates and aggregates. However, `OR` cannot.\n\n* Non-aggregates filter data based on specific tags or attributes. For example, `user.username:jane` is a non-aggregate field.\n\n* Aggregates filter data on numerical scales. For example, `count()` is an aggregate function and `count():>100` is an aggregate filter.\n\nSome examples of using the `OR` condition:\n\n```bash\n# a valid `OR` query\nbrowser:Chrome OR browser:Opera\n\n# an invalid `OR` query\nuser.username:janedoe OR count():>100\n```\n\nAlso, the queries prioritize `AND` before `OR`. For example, \"x `AND` y `OR` z\" is the same as \"(x `AND` y) `OR` z\". Parentheses can be used to change the grouping. For example, \"x `AND` (y `OR` z)\".\n\n### [Multiple Values on" + }, + { + "path": "concepts/search/saved-searches.md", + "title": "Saved Searches", + "hierarchy": [ + "Concepts", + "Search", + "Saved Searches" + ], + "summary": "# Saved Searches", + "content": "# Saved Searches\n\nSaved Searches has been deprecated and will be removed soon. Your saved searches will still be available in the \"Add View\" menu on the **Issues** page. Any saved search can be converted to an Issue View.\n\nSentry allows you to save searches you've made on the **Issues** page. At the top of the page, next to the search bar, click \"Custom Search\" to access the \"Saved Searches\" sidebar.\n\n## [Recommended Searches](https://docs.sentry.io/concepts/search/saved-searches.md#recommended-searches)\n\nRecommended searches are common search terms that we think you're likely to use. These premade searches are listed under \"Recommended Searches\" in the \"Saved Searches\" sidebar.\n\n## [Custom Saved Searches](https://docs.sentry.io/concepts/search/saved-searches.md#custom-saved-searches)\n\nOrganization users in all roles can create their own saved searches. These searches are only visible to the person who created them and apply to all their projects. If you're an organization owner or manager, you have the option to make your saved searches visible only to yourself or to your entire organization. Organization-wide saved searches are not associated with a specific project, but with all projects across the organization.\n\n1. In the \"Saved Searches\" sidebar, click \"Add saved search\" to create a new custom search.\n\n2. In the modal that opens, name the search and set your query filters and sort order. If you're an organization owner or manager, you'll also have the option to make the search visible to all users in your organization. Then click \"Save\".\n\n3. The new search will be added to the \"Saved Searches\" sidebar. Click the name of the search to apply it.\n\n## [Edit or Delete a Saved Search](https://docs.sentry.io/concepts/search/saved-searches.md#edit-or-delete-a-saved-search)\n\nYou can edit or delete any of your personal saved searches, as well as organization-wide searches if you're an organization owner or manager. To do so, hover over the search in the sidebar and click the more options icon (\"...\") to access the \"Edit\" and \"Delete\" buttons.\n\n## [Set a Default Search](https://docs.sentry.io/concepts/search/saved-searches.md#set-a-default-search)\n\nYou can set a search query as the default view you see on the **Issues** page. The default search is only visible to you and is applied across your projects.\n\n1. Enter search terms into the search bar, or select a saved search from the sidebar.\n\n2. Click the \"Set as Default\" button located in the header.\n\nOnce defaulted, Sentry will name the search \"My Default Search\" and return to it whenever you navigate to the **Issues** page.\n" + }, + { + "path": "concepts/search/searchable-properties.md", + "title": "Searchable Properties", + "hierarchy": [ + "Concepts", + "Search", + "Searchable Properties" + ], + "summary": "# Searchable Properties", + "content": "# Searchable Properties\n\nSentry's search provides you with reserved keywords, like `is`, `user`, `server`, and `browser`, that you can use to search on the properties of issues, events and replays (as well as the special case of releases). You can also create [custom tags](https://docs.sentry.io/concepts/search/searchable-properties.md#custom-tags) on which to search. This page provides guidance for how to use these properties and links you to the respective seachable property lists.\n\n## [Search Properties](https://docs.sentry.io/concepts/search/searchable-properties.md#search-properties)\n\nSentry's searchable properties fall into one of five categories:\n\n* [Issue properties](https://docs.sentry.io/concepts/search/searchable-properties/issues.md)\n* [Event properties](https://docs.sentry.io/concepts/search/searchable-properties/events.md)\n* [Span properties](https://docs.sentry.io/concepts/search/searchable-properties/spans.md)\n* [Session Replay properties](https://docs.sentry.io/concepts/search/searchable-properties/session-replay.md)\n* [User Feedback properties](https://docs.sentry.io/concepts/search/searchable-properties/user-feedback.md)\n* [Release properties](https://docs.sentry.io/concepts/search/searchable-properties/releases.md)\n\n## [Search Tips](https://docs.sentry.io/concepts/search/searchable-properties.md#search-tips)\n\nSearch terms should auto-complete, and when they don't that means you have an invalid dataset. If you enter an invalid search term and tap Return or Enter, an error message is displayed. For example, in **Discover**, you cannot search using a grouping function (properties with a parentheses in the key, for example `epm()`) if you don't already have a grouping function included in the \"Results\" table columns.\n\nWhen you search using a property that's a function, if the key includes a parameter, you still need to add a filter or value to have a complete search token. For example, the function `count_unique(field)` takes whichever field you choose as the parameter and then you add a number as your value to filter on. So a typical search might look like: `count_unique(user):>=20`.\n\nOther things to note:\n\n* Search properties that are duration or number types are typically used with a [comparison operator](https://docs.sentry.io/concepts/search.md#comparison-operators) rather than just a colon (`:`) to find exact matches, as an exact match is unlikely to exist.\n* Properties with the notation \"Doesn't take a parameter\" still require a filter or value, but don't take a parameter inside the parentheses. For example, `epm():>12`.\n* Default fields/parameters in search functions can be updated. For example, the default parameters `column`, `operator`, and `value` can be updated for `count_if(column,operator,value)`.\n\n## [Custom Tags](https://docs.sentry.io/concepts/search/searchable-properties.md#custom-tags)\n\nAdditionally, you can use any tag you’ve specified as a token. Tags are various key/value pairs that get assigned to an event, and you can use them later as a breakdown or quick access to finding related events.\n\nMost SDKs generally support configuring tags by [configuring the scope](https://docs.sentry.io/platform-redirect.md?next=%2Fenriching-events%2Ftags%2F).\n\nSeveral common uses for tags include:\n\n* The hostname of the server\n* The version of your platform (for example, iOS 5.0)\n* The user’s language\n\n## [Device Classification](https://docs.sentry.io/concepts/search/searchable-properties.md#device-classification)\n\n`device.class` provides a simple way for developers to understand the performance level of an event's client device in a single searchable property. This is particularly useful for projects that serve a large range of mobile devices, in which case developers would typically have had to parse through a vast range of specs and models across iOS and Android.\n\nPossible values for `device.class` are `high`, `medium`, and `low`, indicating the estimated performance level of the device. This is a calc" + }, + { + "path": "concepts/search/searchable-properties/events.md", + "title": "Event Properties", + "hierarchy": [ + "Concepts", + "Search", + "Searchable Properties", + "Events" + ], + "summary": "# Event Properties", + "content": "# Event Properties\n\nEvents are the underlying event data captured using Sentry SDKs β€” that is, errors and transactions.\n\nYou can search by event properties in the following [sentry.io](https://sentry.io) pages:\n\n* Discover - in the query builder (depending on the dataset selection)\n* Dashboards - within the widget builder (depending on dataset selection)\n* Performance - only in transaction summaries\n* Issues - as indicated in the list below\n* Alerts - when creating a metric alert\n\nPlease note that in Alerts only a limited number of properties are available for [filtering transaction events](https://docs.sentry.io/product/alerts/create-alerts/metric-alert-config.md#tags--properties).\n\nWhen searching on event properties within the **Issues** page, the search will return any issue that has *one or more events* matching the supplied event properties filter.\n\n## [Searchable Properties](https://docs.sentry.io/concepts/search/searchable-properties/events.md#searchable-properties)\n\nBelow is a list of keys and tokens that can be used in the event search.\n\n### [`apdex(threshold)`](https://docs.sentry.io/concepts/search/searchable-properties/events.md#apdexthreshold)\n\nReturns results with the [Apdex score](https://docs.sentry.io/product/insights/overview/metrics.md#apdex) that you entered. Values must be between `0` and `1`. Higher apdex values indicate higher user satisfaction.\n\n* **Type:** number\n\n### [`app.in_foreground`](https://docs.sentry.io/concepts/search/searchable-properties/events.md#appin_foreground)\n\nIndicates if the app is in the foreground or background. Values are `1/0` or `true/false`\n\n* **Type:** boolean\n\n### [`avg(field)`](https://docs.sentry.io/concepts/search/searchable-properties/events.md#avgfield)\n\nReturns results with matching averages for the field selected. The field can be either a number or a duration. Typically used with a comparison operator.\n\n* **Type:** matches field\n\n### [`count_if(column,operator,value)`](https://docs.sentry.io/concepts/search/searchable-properties/events.md#count_ifcolumnoperatorvalue)\n\nReturns results with a matching count that satisfy the condition passed to the parameters of the function.\n\n* **Type:** number\n\n### [`count_miserable(field,threshold)`](https://docs.sentry.io/concepts/search/searchable-properties/events.md#count_miserablefieldthreshold)\n\nReturns results with a matching count of unique instances of the field that fall above the miserable threshold.\n\n* **Type:** number\n\n### [`count_unique(field)`](https://docs.sentry.io/concepts/search/searchable-properties/events.md#count_uniquefield)\n\nReturns results with a matching count of the unique instances of the field entered.\n\n* **Type:** number\n\n### [`count_web_vitals(vital,threshold)`](https://docs.sentry.io/concepts/search/searchable-properties/events.md#count_web_vitalsvitalthreshold)\n\nReturns results with a matching count that meet a Web Vitals quality threshold (`poor`, `meh`, `good`, or `any`).\n\n* **Type:** number\n\n### [`count()`](https://docs.sentry.io/concepts/search/searchable-properties/events.md#count)\n\nReturns results with a matching count. (Same as `timesSeen` in issue search.) Doesn't take a parameter.\n\n* **Type:** number\n\n### [`culprit`](https://docs.sentry.io/concepts/search/searchable-properties/events.md#culprit)\n\nDeprecated\n\n* **Type:** string\n\n### [`device.arch`](https://docs.sentry.io/concepts/search/searchable-properties/events.md#devicearch)\n\nCPU architecture\n\n* **Type:** string\n\n### [`device.battery_level`](https://docs.sentry.io/concepts/search/searchable-properties/events.md#devicebattery_level)\n\nIf the device has a battery, this can be a floating point value defining the battery level (in the range 0-100).\n\n* **Type:** string\n\n### [`device.brand`](https://docs.sentry.io/concepts/search/searchable-properties/events.md#devicebrand)\n\nBrand of the device\n\n* **Type:** string\n\n### [`device.charging`](https://docs.sentry.io/concepts/search/searchable-properties/events.md#devicecharging)\n\nWhether the device w" + }, + { + "path": "concepts/search/searchable-properties/issues.md", + "title": "Issue Properties", + "hierarchy": [ + "Concepts", + "Search", + "Searchable Properties", + "Issues" + ], + "summary": "# Issue Properties", + "content": "# Issue Properties\n\n[Issues](https://docs.sentry.io/product/issues.md) are an aggregate of one or more error events. Searchable issues properties include status, assignment, aggregate counts, and age. If you have set up [evaluation tracking for feature flags](https://docs.sentry.io/product/issues/issue-details/feature-flags.md#evaluation-tracking), you can search for issues that have error events where the feature flag evaluated value is `true` or `false`. You can search by issue properties in the **Issues** page and in **Dashboards** in the widget builder, depending on your dataset selection.\n\n## [Searchable Properties](https://docs.sentry.io/concepts/search/searchable-properties/issues.md#searchable-properties)\n\nBelow is a list of keys and tokens that can be used in the issues search.\n\nYou'll only need to use query syntax for **datetime** and **relative time** searchable property types if you're using the Sentry [API](https://docs.sentry.io/api.md).\n\n### [`age`](https://docs.sentry.io/concepts/search/searchable-properties/issues.md#age)\n\nReturns issues created since the time defined by the value. The syntax is similar to the Unix find command. Supported suffixes: `m - minutes`, `h - hours`, `d - days`, `w - weeks`. For example, `age:-24h` returns isssues that are new in the last 24 hours, while `age:+12h` returns ones that are older than 12 hours. Entering `age:+12h age:-24h` would return issues created between 12 and 24 hours ago.\n\n* **Type:** relative time\n\n### [`app.in_foreground`](https://docs.sentry.io/concepts/search/searchable-properties/issues.md#appin_foreground)\n\nIndicates if the app is in the foreground or background. Values are `1/0` or `true/false`\n\n* **Type:** boolean\n\n### [`assigned`](https://docs.sentry.io/concepts/search/searchable-properties/issues.md#assigned)\n\nReturns issues assigned to the defined user(s) or team(s). Values can be a user ID (your email address), `me` for yourself, `none` for no assignee, `my_teams` or `#team-name` for teams you belong to.\n\n* **Type:** team or org user\n\n### [`assigned_or_suggested`](https://docs.sentry.io/concepts/search/searchable-properties/issues.md#assigned_or_suggested)\n\nReturns issues that are assigned to or suggested to be assigned to the defined user(s) or team(s). Suggested assignees are found by matching [ownership rules](https://docs.sentry.io/product/issues/ownership-rules.md) and [suspect commits](https://docs.sentry.io/product/issues/suspect-commits.md). Values can be a user ID (your email address), `me` for yourself, `none` for no assignee/suggestion, `my_teams` or `#team-name` for teams you belong to.\n\n* **Type:** team or org user\n\n### [`bookmarks`](https://docs.sentry.io/concepts/search/searchable-properties/issues.md#bookmarks)\n\nReturns issues bookmarked by the defined user. Values can be your user ID (your email address) or `me` for yourself.\n\n* **Type:** team or org user\n\n### [`device.arch`](https://docs.sentry.io/concepts/search/searchable-properties/issues.md#devicearch)\n\nCPU architecture\n\n* **Type:** string\n\n### [`device.brand`](https://docs.sentry.io/concepts/search/searchable-properties/issues.md#devicebrand)\n\nBrand of the device\n\n* **Type:** string\n\n### [`device.family`](https://docs.sentry.io/concepts/search/searchable-properties/issues.md#devicefamily)\n\nFamily of the device. Typically, the common part of a model name across generations. For example, iPhone, Samsung Galaxy.\n\n* **Type:** string\n\n### [`device.locale`](https://docs.sentry.io/concepts/search/searchable-properties/issues.md#devicelocale)\n\nDeprecated\n\n* **Type:** string\n\n### [`device.model_id`](https://docs.sentry.io/concepts/search/searchable-properties/issues.md#devicemodel_id)\n\nInternal hardware revision to identify the device exactly.\n\n* **Type:** n/a\n\n### [`device.orientation`](https://docs.sentry.io/concepts/search/searchable-properties/issues.md#deviceorientation)\n\nDescribes the orientation of the device and can be either `portrait` or `landscape`.\n\n* **Type:** string\n\n### [`de" + }, + { + "path": "concepts/search/searchable-properties/releases.md", + "title": "Release Properties", + "hierarchy": [ + "Concepts", + "Search", + "Searchable Properties", + "Releases" + ], + "summary": "# Release Properties", + "content": "# Release Properties\n\nIn **Releases**, you can only search by the following properties:\n\n* [`release`](https://docs.sentry.io/concepts/search/searchable-properties/releases.md#release)\n* [`release.build`](https://docs.sentry.io/concepts/search/searchable-properties/releases.md#releasebuild)\n* [`release.package`](https://docs.sentry.io/concepts/search/searchable-properties/releases.md#releasepackage)\n* [`release.stage`](https://docs.sentry.io/concepts/search/searchable-properties/releases.md#releasestage)\n* [`release.version`](https://docs.sentry.io/concepts/search/searchable-properties/releases.md#releaseversion)\n\nHowever, these properties are also searchable in the other pages of [sentry.io](https://sentry.io) listed above (under [Event Properties](https://docs.sentry.io/concepts/search/searchable-properties/releases.md#event-properties)).\n\n## [Searchable Properties](https://docs.sentry.io/concepts/search/searchable-properties/releases.md#searchable-properties)\n\nBelow is a list of keys and tokens that can be used in the release search.\n\n### [`release`](https://docs.sentry.io/concepts/search/searchable-properties/releases.md#release)\n\nA release is a version of your code deployed to an environment. You can create a token with an exact match of the version of a release, or `release:latest` to pick the most recent release. [Learn more](https://docs.sentry.io/product/releases/usage/sorting-filtering.md#latest-release).\n\n* **Type:** string\n\n### [`release.build`](https://docs.sentry.io/concepts/search/searchable-properties/releases.md#releasebuild)\n\nThe number that identifies an iteration of your app. For example, `CFBundleVersion` on iOS or `versionCode` on Android. [Learn more](https://docs.sentry.io/product/releases/usage/sorting-filtering.md).\n\n* **Type:** number\n\n### [`release.package`](https://docs.sentry.io/concepts/search/searchable-properties/releases.md#releasepackage)\n\nThe unique identifier of the project/app. For example, `CFBundleIdentifier` on iOS or `packageName` on Android. [Learn more](https://docs.sentry.io/product/releases/usage/sorting-filtering.md).\n\n* **Type:** string\n\n### [`release.stage`](https://docs.sentry.io/concepts/search/searchable-properties/releases.md#releasestage)\n\nThe usage your release is seeing relative to other releases. Values can be `adopted`, `low`, or `replaced`. [Learn more](https://docs.sentry.io/product/releases/health.md#adoption-stages).\n\n* **Type:** string\n\n### [`release.version`](https://docs.sentry.io/concepts/search/searchable-properties/releases.md#releaseversion)\n\nA shorter version of the name; name without the package or short version of the hash. [Learn more](https://docs.sentry.io/product/releases/usage/sorting-filtering.md).\n\n* **Type:** string\n" + }, + { + "path": "concepts/search/searchable-properties/session-replay.md", + "title": "Session Replay Properties", + "hierarchy": [ + "Concepts", + "Search", + "Searchable Properties", + "Session Replay" + ], + "summary": "# Session Replay Properties", + "content": "# Session Replay Properties\n\n[Session Replay](https://docs.sentry.io/product/explore/session-replay.md) provides a video-like reproduction of user interactions on a site or web app. All user interactions, including page visits, mouse movements, clicks, and scrolls, are captured, helping developers connect the dots between a known issue and how a user experienced it in the UI.\n\nYou can search by session replay properties on the **Replay** page.\n\n## [Searchable Properties](https://docs.sentry.io/concepts/search/searchable-properties/session-replay.md#searchable-properties)\n\nBelow is a list of keys and tokens that can be used in the session replay search.\n\n### [`activity`](https://docs.sentry.io/concepts/search/searchable-properties/session-replay.md#activity)\n\nReplay activity is calculated based on the number of errors, the number of ui events, and the duration of the replay. It's represented as a number from `1` to `10`.\n\n* **Type:** number\n\n### [`browser.name`](https://docs.sentry.io/concepts/search/searchable-properties/session-replay.md#browsername)\n\nName of the users' web browser. For example, `Chrome`, `Firefox`, or `Safari`.\n\n* **Type:** string\n\n### [`browser.version`](https://docs.sentry.io/concepts/search/searchable-properties/session-replay.md#browserversion)\n\nThe version string of the browser.\n\n* **Type:** string\n\n### [`click.alt`](https://docs.sentry.io/concepts/search/searchable-properties/session-replay.md#clickalt)\n\nThe `alt` of an element that was clicked. For example, `\"a good dog\"` would match the element `\"a`.\n\n* **Type:** string\n\n### [`click.class`](https://docs.sentry.io/concepts/search/searchable-properties/session-replay.md#clickclass)\n\nThe `class` of an element that was clicked. No leading `.` is necessary. For example, `btn-primary` would match the element `Save`.\n\n* **Type:** string\n\n### [`click.component_name`](https://docs.sentry.io/concepts/search/searchable-properties/session-replay.md#clickcomponent_name)\n\nThe name of the frontend component that was clicked. For example, `MyAwesomeComponent` would match the React component ``.\n\nNote: This property requires that your project have [React component name capturing configured](https://docs.sentry.io/platforms/javascript/guides/react/features/component-names.md).\n\n* **Type:** string\n\n### [`click.id`](https://docs.sentry.io/concepts/search/searchable-properties/session-replay.md#clickid)\n\nThe `id` of an element that was clicked. No leading `#` is necessary. For example, `reset-password` would match the element `Reset`.\n\n* **Type:** string\n\n### [`click.label`](https://docs.sentry.io/concepts/search/searchable-properties/session-replay.md#clicklabel)\n\nThe `aria-label` of an element that was clicked. For example, `Expand` would match the element ``.\n\n* **Type:** string\n\n### [`click.role`](https://docs.sentry.io/concepts/search/searchable-properties/session-replay.md#clickrole)\n\nThe `role` of an element that was clicked. For example, `button` would match both `` and `Submit`.\n\n* **Type:** string\n\n### [`click.selector`](https://docs.sentry.io/concepts/search/searchable-properties/session-replay.md#clickselector)\n\nAn element identified using a subset of CSS selector syntax. For example, `#section-1` or `span.active` or `span[role=button]` or `.active[role=button]` would all match the element ``. Note that, CSS combinators, pseudo selectors, and attr selectors other than `=` are not supported.\n\n* **Type:** string\n\n### [`click.tag`](https://docs.sentry.io/concepts/search/searchable-properties/session-replay.md#clicktag)\n\nThe tag name of an element that was clicked. For example, `input` would match ``.\n\n* **Type:** string\n\n### [`click.testid`](https://docs.sentry.io" + }, + { + "path": "concepts/search/searchable-properties/spans.md", + "title": "Span Properties", + "hierarchy": [ + "Concepts", + "Search", + "Searchable Properties", + "Spans" + ], + "summary": "# Span Properties", + "content": "# Span Properties\n\nSpans are the underlying data element captured in Sentry SDKs that together make up a trace.\n\nYou can search by span properties in the following [Sentry](https://sentry.io) pages:\n\n* [Traces](https://docs.sentry.io/product/explore/traces.md) - when searching for a trace containing spans with matching properties\n\nWhen you search for span properties within the **Traces** page, the search will return any trace that contains *one or more spans* that match your span properties filter.\n\n## [Searchable Properties](https://docs.sentry.io/concepts/search/searchable-properties/spans.md#searchable-properties)\n\nBelow is a list of keys and tokens that can be used in the span search:\n\n### [`action`](https://docs.sentry.io/concepts/search/searchable-properties/spans.md#action)\n\nThe type of span action, for example, `SELECT` for a SQL span or `POST` for an HTTP span.\n\n* **Type:** string\n\n### [`browser.name`](https://docs.sentry.io/concepts/search/searchable-properties/spans.md#browsername)\n\nThe name of the browser that generated the span.\n\n* **Type:** string\n\n### [`cache.hit`](https://docs.sentry.io/concepts/search/searchable-properties/spans.md#cachehit)\n\nWhether a cache read has hit or missed the queried cache key. Values are `'true'` or `'false'`.\n\n* **Type:** string\n\n### [`description`](https://docs.sentry.io/concepts/search/searchable-properties/spans.md#description)\n\nParameterized and scrubbed description of the span.\n\n* **Type:** string\n\n### [`device.class`](https://docs.sentry.io/concepts/search/searchable-properties/spans.md#deviceclass)\n\nDevice class is a synthesized field that's calculated by using device info found in context such as model (for iOS devices), and device specs like `processor_frequency` (for Android devices).\n\n* **Type:** string\n\n### [`domain`](https://docs.sentry.io/concepts/search/searchable-properties/spans.md#domain)\n\nGeneral scope of the span’s action, for example, the tables involved in a `db` span or the host name in an `http` span.\n\n* **Type:** string\n\n### [`duration`](https://docs.sentry.io/concepts/search/searchable-properties/spans.md#duration)\n\nThe total time taken by the span.\n\n* **Type:** duration\n\n### [`environment`](https://docs.sentry.io/concepts/search/searchable-properties/spans.md#environment)\n\nRefers to your code deployment naming convention. For example, `development`, `testing`, `staging` and so on. [Learn more](https://docs.sentry.io/product/sentry-basics/environments.md). In some pages of [Sentry](https://sentry.io/), you filter on environment using a dropdown.\n\n* **Type:** string\n\n### [`file_extension`](https://docs.sentry.io/concepts/search/searchable-properties/spans.md#file_extension)\n\nThe file extension of a resource span.\n\n* **Type:** string\n\n### [`group`](https://docs.sentry.io/concepts/search/searchable-properties/spans.md#group)\n\nUnique hash of the span’s description.\n\n* **Type:** string\n\n### [`http.decoded_response_content_length`](https://docs.sentry.io/concepts/search/searchable-properties/spans.md#httpdecoded_response_content_length)\n\nThe [decoded body size](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/decodedBodySize) of the resource.\n\n* **Type:** string\n\n### [`http.response_content_length`](https://docs.sentry.io/concepts/search/searchable-properties/spans.md#httpresponse_content_length)\n\nThe [encoded body size](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/encodedBodySize) of the resource.\n\n* **Type:** string\n\n### [`http.response_transfer_size`](https://docs.sentry.io/concepts/search/searchable-properties/spans.md#httpresponse_transfer_size)\n\nThe [total transfer size](https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/transferSize) of the resource.\n\n* **Type:** string\n\n### [`messaging.destination.name`](https://docs.sentry.io/concepts/search/searchable-properties/spans.md#messagingdestinationname)\n\nThe queue name or topic that the message is written or published to. The consu" + }, + { + "path": "concepts/search/searchable-properties/user-feedback.md", + "title": "User Feedback Properties", + "hierarchy": [ + "Concepts", + "Search", + "Searchable Properties", + "User Feedback" + ], + "summary": "# User Feedback Properties", + "content": "# User Feedback Properties\n\n[User Feedback](https://docs.sentry.io/product/user-feedback.md) allows your users to create bug reports so they can let you know about sneaky issues right away. Every report will automatically include related replays, tags, and errors, making fixing the issue dead simple.\n\nYou can search by user feedback properties on the **User Feedback** page.\n\n## [Searchable Properties](https://docs.sentry.io/concepts/search/searchable-properties/user-feedback.md#searchable-properties)\n\nBelow is a list of keys and tokens that can be used in the user feedback search.\n\n### [`assigned`](https://docs.sentry.io/concepts/search/searchable-properties/user-feedback.md#assigned)\n\nReturns user feedback submissions assigned to the defined user(s) or team(s). Values can be a user ID (your email address), `me` for yourself, `none` for no assignee, `my_teams` or `#team-name` for teams you belong to.\n\n* **Type:** team or org user\n\n### [`browser.name`](https://docs.sentry.io/concepts/search/searchable-properties/user-feedback.md#browsername)\n\nName of the browser.\n\n* **Type:** string\n\n### [`device.brand`](https://docs.sentry.io/concepts/search/searchable-properties/user-feedback.md#devicebrand)\n\nBrand of the device.\n\n* **Type:** string\n\n### [`device.family`](https://docs.sentry.io/concepts/search/searchable-properties/user-feedback.md#devicefamily)\n\nFamily of the device. Typically, the common part of a model name across generations. For example, iPhone, Samsung Galaxy.\n\n* **Type:** string\n\n### [`device.model_id`](https://docs.sentry.io/concepts/search/searchable-properties/user-feedback.md#devicemodel_id)\n\nInternal hardware revision to identify the device exactly.\n\n* **Type:** n/a\n\n### [`device.name`](https://docs.sentry.io/concepts/search/searchable-properties/user-feedback.md#devicename)\n\nName of the device.\n\n* **Type:** string\n\n### [`dist`](https://docs.sentry.io/concepts/search/searchable-properties/user-feedback.md#dist)\n\nDistinguishes build or deployment variants of the same release of an application. For example, the dist can be the build number of an Xcode build or the version code of an Android build.\n\n* **Type:** string\n\n### [`environment`](https://docs.sentry.io/concepts/search/searchable-properties/user-feedback.md#environment)\n\nThe environment that the event was first seen in.\n\n* **Type:** string\n\n### [`id`](https://docs.sentry.io/concepts/search/searchable-properties/user-feedback.md#id)\n\nThe feedback ID.\n\n* **Type:** UUID\n\n### [`is`](https://docs.sentry.io/concepts/search/searchable-properties/user-feedback.md#is)\n\nThe properties of a user feedback submission. Values can be: `unresolved`, `resolved`, `assigned`, `unassigned`, `linked`, or `unlinked`. The `linked` and `unlinked` values return user feedback submissions based on whether they are linked to an external issue tracker or not.\n\n* **Type:** status\n\n### [`level`](https://docs.sentry.io/concepts/search/searchable-properties/user-feedback.md#level)\n\nThe severity of the user feedback submissions. If the feedback came in through the crash-report modal then the level is tied to the error experienced by the end-user. For feedback from the user feedback widget, the level is `info`.\n\n* **Type:** string\n\n### [`os.name`](https://docs.sentry.io/concepts/search/searchable-properties/user-feedback.md#osname)\n\nThe name of the operating system.\n\n* **Type:** string\n\n### [`sdk.name`](https://docs.sentry.io/concepts/search/searchable-properties/user-feedback.md#sdkname)\n\nName of the Sentry SDK that sent the event.\n\n* **Type:** string\n\n### [`sdk.version`](https://docs.sentry.io/concepts/search/searchable-properties/user-feedback.md#sdkversion)\n\nVersion of the Sentry SDK that sent the event.\n\n* **Type:** string\n\n### [`timestamp`](https://docs.sentry.io/concepts/search/searchable-properties/user-feedback.md#timestamp)\n\nThe finish timestamp of the transaction. Returns events with matching datetime.\n\n* **Type:** datetime\n\n### [`transaction`](https://docs.sentry.io/concepts/search" + }, + { + "path": "contributing.md", + "title": "Contributing to Docs", + "hierarchy": [ + "Contributing" + ], + "summary": "# Contributing to Docs", + "content": "# Contributing to Docs\n\nThe Sentry documentation is a static site, generated with [Next.js](https://nextjs.org/).\n\n* #### [Development Environment](https://docs.sentry.io/contributing/environment.md)\n* #### [Our Approach](https://docs.sentry.io/contributing/approach.md)\n* #### [Platforms & Guides](https://docs.sentry.io/contributing/platforms.md)\n* #### [Linking Variables](https://docs.sentry.io/contributing/linking.md)\n* #### [Pages](https://docs.sentry.io/contributing/pages.md)\n" + }, + { + "path": "contributing/approach.md", + "title": "Our Approach", + "hierarchy": [ + "Contributing", + "Approach" + ], + "summary": "# Our Approach", + "content": "# Our Approach\n\nSentry uses a minimalist approach to documentation. Our docs have one goal: help customers gain mastery *quickly*. Minimalism in documentation puts the reader at the center of the content. Our audience is reading the documentation to solve a problem or finalize a setup or to understand. Thus, think **very critically** about the content that is provided, especially on a primary page.\n\n## [Use This Test](https://docs.sentry.io/contributing/approach.md#use-this-test)\n\nAsk these questions as you're developing content:\n\n* Is this information critical to helping a developer get up and running? If not, consider moving it to a subpage with a link to it from the primary page (or, as suggested by one of our engineering managers, \"cool, I can bookmark this for later\").\n\n* Is this obvious from the UI? Our UI is largely self-documenting, so we don't need to explain what's already evident.\n\n## [What Goes Where?](https://docs.sentry.io/contributing/approach.md#what-goes-where)\n\nOur content has some pretty clear divisions:\n\n* Platform/SDK content - instrument and configure your SDK\n* Product content - look at all the data ingested into Sentry\n\nAnd within those primary categories:\n\n* Reference: What customers need to know\n* Action: What customers can do (modify, filter, and so forth)\n\nIf you're uncertain, [ask](https://github.com/getsentry/sentry-docs/issues).\n\n## [Writing for Sentry](https://docs.sentry.io/contributing/approach.md#writing-for-sentry)\n\nKeep these concepts in mind when contributing to docs:\n\n1. Technical accuracy is our primary consideration. Our content helps every developer diagnose, fix, and optimize their code.\n2. Use inclusive language, which we discuss more fully [here](https://develop.sentry.dev/getting-started/inclusive-language/).\n3. Feedback is a gift - share your PR so we can improve our content.\n\n* #### [SDK Documentation Structure](https://docs.sentry.io/contributing/approach/sdk-docs.md)\n* #### [Product Documentation Structure](https://docs.sentry.io/contributing/approach/product-docs.md)\n" + }, + { + "path": "contributing/approach/product-docs.md", + "title": "Product Documentation Structure", + "hierarchy": [ + "Contributing", + "Approach", + "Product Docs" + ], + "summary": "# Product Documentation Structure", + "content": "# Product Documentation Structure\n\nThe topics in this section describe how to create Sentry product documentation.\n\n* #### [How to Write - Index Pages](https://docs.sentry.io/contributing/approach/product-docs/write-index.md)\n" + }, + { + "path": "contributing/approach/product-docs/write-index.md", + "title": "How to Write - Index Pages", + "hierarchy": [ + "Contributing", + "Approach", + "Product Docs", + "Write Index" + ], + "summary": "# How to Write - Index Pages", + "content": "# How to Write - Index Pages\n\nThis guide to writing index pages is just thatβ€”a guide. It won’t answer every question you have about how to write a good index page, but it will help you make a good start.\n\nWhile we use the term β€œindex page” to refer to the top-level page about a feature in Docs, we don’t use this terminology in the actual Docs. Learn more in [Other Guidelines](https://docs.sentry.io/contributing/approach/product-docs/write-index.md#other-guidelines).\n\nThe index page:\n\n* Explains WHAT the feature is\n* Describes WHY the feature benefits the customer, without veering too far into marketing language\n* Describes HOW the mechanisms of the feature help the customer achieve these benefits\n* Provides easy-to-find LINKS to child pages describing the subpages of the primary feature and/or how to do things with the feature\n\nThe index page does not:\n\n* Describe HOW TO do anything that can’t be described in one or two sentences; that information should be on child pages in Docs.\n\n## [What and Why](https://docs.sentry.io/contributing/approach/product-docs/write-index.md#what-and-why)\n\n* The elevator pitch of this feature\n * What the feature is and what problem it’s solving for the customer\n* Two-to-five sentences\n * This can be longer if you need to explain the feature as a concept before you can explain what the feature provides (for example, [Releases as a feature/concept vs the Releases page of application](https://docs.sentry.io/product/releases.md))\n* A pixel perfect overview screenshot showing the feature in action\n\n## [How: Contained Features - Page Breakdown](https://docs.sentry.io/contributing/approach/product-docs/write-index.md#how-contained-features---page-breakdown)\n\nUse this approach for a feature that doesn’t require much explanation and has distinct sections, like [Usage Stats](https://docs.sentry.io/product/stats.md) - it’s good for very contained features.\n\n* Describe each page section/element focusing on how it helps the customer achieve the WHY of this feature.\n* Add headings describing the page section/element to make each section of text stand out, if needed.\n* Describe how this feature fits in/interacts with other parts of the application, if applicable (e.g., this page has a button that takes you Discover queries).\n\n## [How: Wider-Ranging Features - Benefit Breakdown](https://docs.sentry.io/contributing/approach/product-docs/write-index.md#how-wider-ranging-features---benefit-breakdown)\n\nUse this approach for a page that requires more explanation to break down and/or has a lot of child pages to explain its different benefits, like [Insights](https://docs.sentry.io/product/insights.md).\n\n* Describe how each page section/element or child page, helps the customer achieve the WHY of this feature.\n* Include links to relevant child pages in the text.\n* Group page sections/elements or child pages as appropriate.\n* Add headings that describe the benefit rather than the page section/element\n* Describe how this feature fits in/interacts with other parts of the application, if applicable (e.g., this page has a button that takes you Discover queries).\n\nIf you use this approach, you may want to include a very high-level, one- or two-sentence description of what the page looks like as part of the WHAT/WHY section.\n\n## [Links](https://docs.sentry.io/contributing/approach/product-docs/write-index.md#links)\n\n* Create a section called β€œLearn More”\n\n* Use a `` element to link to child pages for this feature\n\n * This displays a bullet list of page links with their front matter page descriptions\n * This might require that you edit the front matter descriptions of the pages displayed in the page grid\n\n## [Includes](https://docs.sentry.io/contributing/approach/product-docs/write-index.md#includes)\n\nYou might need to use an `include` file for small pieces of reusable content, such as Early Adopter notes, plan/feature notes, or short snippets of text. These are found in [`/includes/`](https://github.com/getsent" + }, + { + "path": "contributing/approach/sdk-docs.md", + "title": "SDK Documentation Structure", + "hierarchy": [ + "Contributing", + "Approach", + "Sdk Docs" + ], + "summary": "# SDK Documentation Structure", + "content": "# SDK Documentation Structure\n\nOur structure for SDK content focuses on getting a user up and running quickly, then learning about all the features that can be configured or enabled in subpages. These subpages provide reference material, with code examples specific to the SDK.\n\n## [Content Sections](https://docs.sentry.io/contributing/approach/sdk-docs.md#content-sections)\n\nSDKs provide content that focus on 10 sections (two of which are auto-generated) that rely on common content. Each section is explained in detail on its own page. A quick overview:\n\n1. **Quick Start / Getting Started (legacy)**\n\n A single, critical page.\n\n For new SDKs and updated guides, use: **[How to Write - Quick Start](https://docs.sentry.io/contributing/approach/sdk-docs/write-quick-start.md)**\n\n To update existing Getting Started guides, use: **[How to Write - Getting Started](https://docs.sentry.io/contributing/approach/write-getting-started.md)**\n\n This content is used in two different areas for Sentry customers:\n\n 1. [docs.sentry.io](https://docs.sentry.io/.md)\n 2. In-app wizard for customers creating or adding a project\n\n2) **Configuration**\n\n Covers all the ways customers can manage their implementation of the SDK. It consists of subpages (all of which can be turned on or off, as appropriate to the SDK).\n\n **[How to Update: Configuration](https://docs.sentry.io/contributing/approach/write-configuration.md)**\n\n3) **Usage**\n\n Covers how to capture errors and messages, with a subpage to set the Level.\n\n **[How to Update: Usage](https://docs.sentry.io/contributing/approach/write-usage.md)**\n\n4) **Troubleshooting**\n\n Covers corner and edge cases we know of. This content is developed at the primary SDK level, so is shared by the primary SDK and its associated guides. It is not common to all SDKs/platforms.\n\n The content resides in this directory `/docs/platforms//common/troubleshooting/`\n\n5) (Optional) **Migration Guide**\n\n Provided for customers who need to upgrade from the Raven version of the SDK. Not needed for newer SDKs.\n\n6) **Tracing** section\n\n Covers how to enable tracing (for customers who previously only used error monitoring) as enabled by each SDK, as well as subpages on Sampling and Transactions.\n\n *This section is a WIP.*\n\n7) **Enriching Events** section\n\n Covers the data sent to Sentry, as well as how to customize it.\n\n **[How to Update: Enriching Events](https://docs.sentry.io/contributing/approach/write-enriching-events.md)**\n\n8) **Data Management** section\n\n Covers our algorithm for grouping and how it can be modified, as well as how to scrub sensitive data using the SDK.\n\n **[How to Update: Data Management](https://docs.sentry.io/contributing/approach/write-data-management.md)**\n\n9) (Auto-generated) **Other Guides**\n\n Lists the other related platforms/integrations/SDKs for this SDK.\n\n10) (Auto-generated) **Other Platforms**\n\n Lists the other primary SDK/platforms.\n\nThis model is quite flexible - some SDKs will incorporate more information- others will require less information.\n\nWe have several goals to using this format:\n\n* Ensure customers have a single page that gets them started quickly.\n* Update the SDK content so that it is both **technically accurate** and **complete**.\n* Ensure we've architected to support the structure of our docs, which separates Platform/SDK content from Product content. Think of this as \"Platform/SDK docs help a customer send data to Sentry\" and \"Product docs help a customer understand what's in [sentry.io](http://sentry.io), then determine an appropriate response\"\n\n## [Where to Start](https://docs.sentry.io/contributing/approach/sdk-docs.md#where-to-start)\n\n1. Read the [contributor guidelines](https://docs.sentry.io/contributing.md). The guidelines will help you set up your docs environment (the move to our new tooling is significant) and provide key technical details about SDK content, search, redirects, and the Wizard pages. If you need help, ask for hel" + }, + { + "path": "contributing/approach/sdk-docs/common_content.md", + "title": "Common Content", + "hierarchy": [ + "Contributing", + "Approach", + "Sdk Docs", + "Common Content" + ], + "summary": "# Common Content", + "content": "# Common Content\n\nOur docs strive for a contributor-friendly balance of duplication vs. complexity. That means we generally don't try to share content between SDKs in our docs, even when they have similar information architecture, sections, and even wording. Instead of enforcing consistency through shared content, we encourage contributors to reference other SDK docs to keep things consistent wherever possible.\n\nFor SDKs that have framework-specific docs (which we call guides or children), common content for that SDK's frameworks lives in `/docs/platforms//common/`.\n\n## [Hierarchy](https://docs.sentry.io/contributing/approach/sdk-docs/common_content.md#hierarchy)\n\nWhat displays for the user relies upon the hierarchy of content as detailed in our content discussing [Platforms & Guides](https://docs.sentry.io/contributing/platforms.md). In short, a guide's content displays if provided. If not provided, then the platform content displays.\n\n## [Tuning Common Content](https://docs.sentry.io/contributing/approach/sdk-docs/common_content.md#tuning-common-content)\n\nTo ensure that common content can scale as we support more platforms and frameworks, we use `include` files. These files can range from, most typically, a code sample specific to a platform or framework to information that augments the core content for a specific platform or framework. These platform-specific `include` files live in [`plaftorm-includes/`](https://github.com/getsentry/sentry-docs/tree/master/platform-includes). We also have [platform-agnostic `include` files](https://docs.sentry.io/contributing/approach/product-docs/write-index.md#includes) which are discussed in our product docs.\n" + }, + { + "path": "contributing/approach/sdk-docs/write-configuration.md", + "title": "How to Write - Configuration", + "hierarchy": [ + "Contributing", + "Approach", + "Sdk Docs", + "Write Configuration" + ], + "summary": "# How to Write - Configuration", + "content": "# How to Write - Configuration\n\nThe Configuration section of the content covers, unsurprisingly, how customers can configure an SDK. A new framework can adopt the common content, which is stored in `/docs/platforms//common/configuration/` - feel free to peruse the files in that directory to help answer any questions.\n\nDon't change the common content. That change will ripple across all guides that rely on the common content. Instead, open an issue on GitHub with questions/suggestions.\n\nMost of these pages are pretty self-evident, so only basic information is provided. But please ask questions if any questions arise by opening an issue on GitHub.\n\n## [Start Here](https://docs.sentry.io/contributing/approach/sdk-docs/write-configuration.md#start-here)\n\nDetermine if the page applies:\n\n* If the content *does not apply*, add the guide to `notSupported` list in the frontmatter of the file. This will turn off the display of the content for this guide.\n* If the content *does apply*, add the `include` file to the correct directory as noted for each page. If the code sample is not provided, the page will display a big gray box requesting that customers open an issue for the missing sample.\n\n### [Basic Options](https://docs.sentry.io/contributing/approach/sdk-docs/write-configuration.md#basic-options)\n\nThis file is `options.mdx`. It explains all the configuration options.\n\nTo develop content for this file:\n\n1. Create the `configuration/config-intro/` statement, which covers how options can be set.\n\n2. For individual options that the guide does NOT support, add the name of the guide to the `ConfigKey` statement for that option. This will prevent that option from displaying for this SDK. For example:\n\n ``\n\n Alternately, for individual options that the guide DOES support, add the name of the guide to `ConfigKey` statement for that option, which ensures the option displays. For example:\n\n ``\n\n3. For a grouping of options that the guide DOES support, add the name of the guide to the `PlatformSection` statement for those options, which ensures the option displays. For example:\n\n ``\n\n### [Releases & Health](https://docs.sentry.io/contributing/approach/sdk-docs/write-configuration.md#releases--health)\n\nThis file is `releases.mdx`. It explains how to configure the SDK to tell Sentry about releases. Provide a code sample for this SDK to set a release, then add the code sample to this directory:\n\n* `/platform-includes/set-release/`\n\nA few nuances:\n\n* If adding an SDK related to JavaScript, update the source maps-related paragraph, as appropriate, in the `PlatformSection supported` statement.\n* For SDKs that support release health, we control the display of content with a `PlatformSection supported` statement. For these SDKs, provide the following code sample: Opt out of auto session tracking, stored in `/platform-includes/configuration/auto-session-tracking`.\n\n### [Environments](https://docs.sentry.io/contributing/approach/sdk-docs/write-configuration.md#environments)\n\nThis file is `environments.mdx`. It explains how to configure the SDK to set an environment.\n\nAdd the code sample to this directory:\n\n* `/platform-includes/set-environment/`\n\n### [Filtering Events](https://docs.sentry.io/contributing/approach/sdk-docs/write-configuration.md#filtering-events)\n\nThis file is `filtering.mdx`. It explains how to configure the SDK to filter events sent to Sentry. Add code samples to these directories:\n\n* `/platform-includes/configuration/before-send/`\n* `/platform-includes/configuration/before-send-hint/`\n\nEnable or disable the content for \"Using Hints\", as appropriate to the SDK, by adding it to the list of either `supported` or `notSupported`, then add code sample to these directories:\n\n* `/platform-includes/configuration/before-send-fingerprint" + }, + { + "path": "contributing/approach/sdk-docs/write-data-management.md", + "title": "How to Write - Data Management", + "hierarchy": [ + "Contributing", + "Approach", + "Sdk Docs", + "Write Data Management" + ], + "summary": "# How to Write - Data Management", + "content": "# How to Write - Data Management\n\nThe Data Management section of the content covers how customers can manage the data sent to Sentry using the SDK. We provide a parallel section in product, which focuses on the settings in [sentry.io](http://sentry.io) a user can user to control data. A new framework can adopt the common content, which is stored in `/docs/platforms//common/data-management` - feel free to peruse the files in that directory to answer any questions.\n\nDon't change the common content. That change will ripple across all guides that rely on the common content. Instead, open an issue on GitHub with questions/suggestions.\n\nMost of these pages are pretty self-evident, so only basic information is provided. But please ask questions if any questions arise by opening an issue on GitHub.\n\n## [Start Here](https://docs.sentry.io/contributing/approach/sdk-docs/write-data-management.md#start-here)\n\nDetermine if the page applies:\n\n* If the content *does not apply*, add the guide to `notSupported` list in the frontmatter of the file. This will turn off the display of the content for this guide.\n* If the content *does apply*, add the `include` file to the correct directory as noted for each page. If the code sample is not provided, the page will display a big gray box requesting customers open an issue for the missing sample.\n\n### [Sensitive Data](https://docs.sentry.io/contributing/approach/sdk-docs/write-data-management.md#sensitive-data)\n\nThis file is `/sensitive-data/index.mdx`. It explains how to scrub or filter data within the SDK, so it's not sent with an event.\n\nFor data scrubbing that the guide DOES NOT support, add the name of the guide to the `PlatformSection notSupported` statement, which ensures the content won't display. For example:\n\n``\n\nAdd the code sample to these directories:\n\n* `/src/platform-includes/configuration/before-send`\n* `/src/platform-includes/sensitive-data/set-tag`\n* `/src/platform-includes/sensitive-data/set-user`\n\n### [Debug Files](https://docs.sentry.io/contributing/approach/sdk-docs/write-data-management.md#debug-files)\n\nThis file is `/sensitive-data/debug-files.mdx`. It explains how to debug information files work for Sentry.\n\nFor specific controls that the guide supports, add the name of the guide to the `PlatformSection supported` statement, which ensures the content displays.\n" + }, + { + "path": "contributing/approach/sdk-docs/write-enriching-events.md", + "title": "How to Write - Enriching Events", + "hierarchy": [ + "Contributing", + "Approach", + "Sdk Docs", + "Write Enriching Events" + ], + "summary": "# How to Write - Enriching Events", + "content": "# How to Write - Enriching Events\n\nThe Enriching Events section of the content covers how customers can add context to the data sent to Sentry. A new framework can adopt the common content, which is stored in `/docs/platforms//common/enriching-events` - feel free to peruse the files in that directory to answer any questions.\n\nDon't change the common content. That change will ripple across all guides that rely on the common content. Instead, open an issue on GitHub with questions/suggestions.\n\nMost of these pages are pretty self-evident, so only basic information is provided. But please ask questions by opening an issue on GitHub.\n\n## [Start Here](https://docs.sentry.io/contributing/approach/sdk-docs/write-enriching-events.md#start-here)\n\nDetermine if the page applies:\n\n* If the content *does not apply*, add the guide to `notSupported` list in the frontmatter of the file. This will turn off the display of the content for this guide.\n* If the content *does apply*, add the `include` file to the correct directory as noted for each page. If the code sample is not provided, the page will display a big gray box requesting customers open an issue for the missing sample.\n* The JS family of content needs to import the SDK for the code samples to make sense on each page. Add the import statement to `/src/platform-includes/enriching-events/enriching-events/import`.\n\n### [Add Context](https://docs.sentry.io/contributing/approach/sdk-docs/write-enriching-events.md#add-context)\n\nThis file is `context.mdx`. It explains how to enable custom contexts. Add the code sample to this directory:\n\n* `/src/platform-includes/enriching-events/set-context/`\n\nIf the guide can pass context directly, add it to the list of supported guides immediately above \"Passing Context Directly\".\n\n### [Identify Users](https://docs.sentry.io/contributing/approach/sdk-docs/write-enriching-events.md#identify-users)\n\nThis file is `identify-user.mdx`. It explains how to capture the user. Add the code samples to these directories:\n\n* `/src/platform-includes/enriching-events/set-user/`\n* `/src/platform-includes/enriching-events/unset-user/`\n\n### [Set Transaction Name](https://docs.sentry.io/contributing/approach/sdk-docs/write-enriching-events.md#set-transaction-name)\n\nThis file is `transaction-name.mdx`. It explains how to override the transaction name. Add the code sample to this directory:\n\n* `/src/platform-includes/enriching-events/set-transaction-name/`\n\nIf the guide can control the starting and stopping of transactions, add it to the list of supported guides that refers customers to our tracing docs.\n\n### [Customize Tags](https://docs.sentry.io/contributing/approach/sdk-docs/write-enriching-events.md#customize-tags)\n\nThis file is `tags.mdx`. It explains how to customize tags for an event. Add the code sample to this directory:\n\n* `/src/platform-includes/enriching-events/set-tag/`\n\nIf the guide doesn't bind tags to the current scope, add it to the list of guides that don't support this option.\n\n### [Attachments](https://docs.sentry.io/contributing/approach/sdk-docs/write-enriching-events.md#attachments)\n\nThis file is `/attachments/index.mdx`. It explains attaching files along with the event. Add the code sample to this directory:\n\n* `/src/platform-includes/enriching-events/add-attachment/`\n\nIf the guide is part of the native family, add it to the list of guides that support the native content regarding:\n\n* Debug information files and built-in support for native crashes\n* Large crash reports\n* The section on \"Crash Reports and Privacy\"\n* The paragraph regarding limiting crash reports per issue\n\n### [Breadcrumbs](https://docs.sentry.io/contributing/approach/sdk-docs/write-enriching-events.md#breadcrumbs)\n\nThis file is `breadcrumbs.mdx`. It explains manual breadcrumbs. Add the code sample to manually add record a breadcrumb to this directory:\n\n* `/src/platform-includes/enriching-events/breadcrumbs/breadcrumbs-example/`\n* `/src/platform-includes/enriching-events/breadcrum" + }, + { + "path": "contributing/approach/sdk-docs/write-getting-started.md", + "title": "How to Write - Getting Started", + "hierarchy": [ + "Contributing", + "Approach", + "Sdk Docs", + "Write Getting Started" + ], + "summary": "# How to Write - Getting Started", + "content": "# How to Write - Getting Started\n\nThis page describes the legacy \"Getting Started\" guide format. New SDKs and guides that have been updated should use the [Quick Start guide format](https://docs.sentry.io/contributing/approach/sdk-docs/write-quick-start.md).\n\nA new platform/SDK should base it's Getting Started page of off a similar existing SDK page.\n\nHere's an overview of the general components of a Getting Started page.\n\n## [config.yml](https://docs.sentry.io/contributing/approach/sdk-docs/write-getting-started.md#configyml)\n\nThis file resides in the `/docs/platform//` directory. An example:\n\n```yaml\ntitle: JavaScript\ncaseStyle: camelCase\nsupportLevel: production\nsdk: \"sentry.javascript.browser\"\ncategories:\n - browser\n```\n\n## [Primer Content](https://docs.sentry.io/contributing/approach/sdk-docs/write-getting-started.md#primer-content)\n\nExplain the SDK at a high level in these two parts:\n\n1. An italicized sentence that explains what the SDK enables (errors, or errors and transactions)\n\n2. A brief paragraph that provides technical insight and the versions supported\n\n If the primer content isn't developed, this fallback will display \"*Sentry's SDKs enable automatic reporting of errors and exceptions*.\"\n\nAdd the primer content to this directory:\n\n* [`/platform-includes/getting-started-primer/`](https://github.com/getsentry/sentry-docs/tree/master/platform-includes/getting-started-primer)\n\n## [Installation Method](https://docs.sentry.io/contributing/approach/sdk-docs/write-getting-started.md#installation-method)\n\nProvide an example of the primary installation method for this SDK. While we document alternate methods, we keep those on a separate page (as in this [example](https://docs.sentry.io/platforms/javascript/install.md)) to keep the focus of the Getting Started content on the most-common, fastest way to get up and running.\n\nAdd the installation method to this directory:\n\n* [`/platform-includes/getting-started-install/`](https://github.com/getsentry/sentry-docs/tree/master/platform-includes/getting-started-install)\n\n## [Configuration Code Sample](https://docs.sentry.io/contributing/approach/sdk-docs/write-getting-started.md#configuration-code-sample)\n\nProvide an example of the configuration of this SDK, commenting in the code sample, not the surrounding prose.\n\nAdd the configuration code sample to this directory:\n\n* [`/platform-includes/getting-started-config/`](https://github.com/getsentry/sentry-docs/tree/master/platform-includes/getting-started-config)\n\nIf the SDK supports performance monitoring, add it to the list that links back into the SDK content from Product, stored in [`/docs/product/insights/getting-started.mdx`](https://github.com/getsentry/sentry-docs/blob/master/docs/product/insights/getting-started.mdx).\n\n## [Verification Code Sample](https://docs.sentry.io/contributing/approach/sdk-docs/write-getting-started.md#verification-code-sample)\n\nProvide a verification code sample for this SDK. It can be as simple as one line, though the SDK may require a more complex code sample.\n\nAdd the verification code sample to this directory:\n\n* [`/src/platform-includes/getting-started-verify/`](https://github.com/getsentry/sentry-docs/tree/master/platform-includes/getting-started-verify)\n\n## [But, that's not all](https://docs.sentry.io/contributing/approach/sdk-docs/write-getting-started.md#but-thats-not-all)\n\nThe Getting Started content is also used by our in-app onboarding wizard to get customers up and running with Sentry. Keeping all content up to date is critical.\n\n**If updating the code samples for an SDK, also update the Wizard.**\n\n### [Update the Wizard](https://docs.sentry.io/contributing/approach/sdk-docs/write-getting-started.md#update-the-wizard)\n\nThe in-app wizard is where customers first implement our SDKs. It's not a simple copy/paste from the Getting Started for two reasons:\n\n1. New customers lack the context that our Docs provide (think of it this way, there's no lefthand sidebar to review).\n2. Ex" + }, + { + "path": "contributing/approach/sdk-docs/write-performance.md", + "title": "How to Write - Performance", + "hierarchy": [ + "Contributing", + "Approach", + "Sdk Docs", + "Write Performance" + ], + "summary": "# How to Write - Performance", + "content": "# How to Write - Performance\n\nThe Performance section of the content covers performance instrumentation for our SDKs. A new framework can adopt the common content, which is stored in `/docs/platforms//common/performance` - feel free to peruse the files in that directory to help answer any questions.\n\nDon't change the common content. That change will ripple across all guides that rely on the common content. Instead, open an issue on GitHub with questions or suggestions.\n\n## [Start Here](https://docs.sentry.io/contributing/approach/sdk-docs/write-performance.md#start-here)\n\nDetermine if the page applies:\n\n* If the content **does not apply**, add the guide to `notSupported` list in the frontmatter of the file. This will turn off the display of the content for this guide.\n* If the content **does apply**, add the `include` file to the correct directory as noted for each page. If the code sample is not provided, the page will display a big gray box requesting that customers open an issue for the missing sample.\n\n### [Set Up](https://docs.sentry.io/contributing/approach/sdk-docs/write-performance.md#set-up)\n\nThe set up page is where readers may start, though the note at the beginning directs into the instrumentation content, if applicable. The reader path depends on whether the SDK has already been instrumented for performance monitoring in the refreshed Getting Started page. For folks adopting this feature later, this page covers how to set up.\n\nWe expect this content to apply to all SDKS, as supported.\n\nThis file is `index.mdx`. It explains how to install or set up (if appropriate) as well as how to enable tracing.\n\nTo develop content for this file:\n\n1. If the guide is still a work-in-progress and is exposed as an experimental or an early access feature, add the platform to the `` wrapping the appropriate alert located at the beginning of the content for the page.\n\n2. If the guide is expected to be used in a high-throughput environment, add the platform to the following `` which advises testing before deploying to production.\n\n3. If automatic instrumentation is still in preview/beta for the guide, add your platform to the next `` that wraps around text that discusses this.\n\n4. If automatic instrumentation is supported, add your platform to the `` immediately following **Verify** which advises users to either use auto or custom (or manual) instrumentation to verify the feature. Either omit the platform from the `supported` list or add the platform to the `notSupported` list if auto instrumentation is not available.\n\n5. Add a code sample to `/src/platform-includes/performance/configure-sample-rate/` that covers how to set sample rates. Make sure to update `/docs/platforms//common/configuration/sampling.mdx` and **Tracing Options** in `/docs/platforms//common/configuration/options.mdx`.\n\n6. Do one of the following based on whether automatic instrumentation is available for the guide or not: a. If automatic instrumentation is supported, add your platform to the `` immediately following **Verify** which advises users to either use auto or custom (a.k.a. manual) instrumentation to verify the feature. Either omit the platform from `supported` or the platform to `notSupported`.\n\n b. If automatic instrumentation is not supported, add your platform to the second `` after **Verify** which advises users to test out tracing using custom (manual) instrumentation. Omit the platform from the `supported` list or add it to the `notSupported` list if automatic instrumentation is available.\n\n7. Determine if the paragraph regarding pageload and navigation applies to the guide. If so, add the guide to the `Supported` list in the ``. If not, either omit the guide from the `supported` list or add the guide to the `notSupported` list, which will prevent the content from displaying for this guide.\n\n### [Custom Instrumentati" + }, + { + "path": "contributing/approach/sdk-docs/write-quick-start.md", + "title": "How to Write - Quick Start", + "hierarchy": [ + "Contributing", + "Approach", + "Sdk Docs", + "Write Quick Start" + ], + "summary": "# How to Write - Quick Start", + "content": "# How to Write - Quick Start\n\nNew SDKs should use the Quick Start guide format outlined on this page. You may still encounter Getting Started guides for existing SDKs.\n\n##### Note\n\nIf you want to update an existing Getting Started Guide without refactoring it into a Quick Start guide, see [How to Write - Getting Started](https://docs.sentry.io/contributing/approach/sdk-docs/write-getting-started.md). If you're unsure what kind of guide you're looking at, ask a question by [opening an issue in GitHub](https://github.com/getsentry/sentry-docs/issues/new/choose).\n\nWhy the change?\n\nThis change stems from our commitment to following best practices and making our docs as accessible as possible.\n\nWith the new Quick Start guides, we want to provide a more structured and focused approach, helping writers create valuable content with confidence, ultimately assisting users in reaching their goals with Sentry.\n\n**Quick Start vs. Getting Started:**\n\n| | Quick Start | Getting Started |\n| ------------ | ------------------------------------------------------------ | ----------------------------------------------------------- |\n| **Focus** | Goal-oriented, immediate action, minimal steps | Learning-oriented, broader concepts, background information |\n| **Content** | Highlights critical steps with less focus on the how and why | More explanatory and provides background information |\n| **Audience** | Developers who want to get started quickly | Developers seeking a deeper understanding |\n| **Format** | Single page; Concise | Often spans multiple pages; Comprehensive |\n\nOur Quick Start guides aim to:\n\n* Enable developers to quickly onboard Sentry with features such as Error Monitoring, Tracing, and Session Replay\n* Keep instructions concise by avoiding unnecessary explanations or background information\n* Focus on action by including code examples and commands\n* Achieve a functional Sentry setup with visible results in a user's Sentry project\n* Serve as the basis for further customization\n\n## [Structuring the config.yml File](https://docs.sentry.io/contributing/approach/sdk-docs/write-quick-start.md#structuring-the-configyml-file)\n\nThe config.yml file provides SDK-level details, such as its title, support level, and device categories. This file resides in the `/docs/platform//` directory. An example:\n\n```yaml\ntitle: JavaScript\ncaseStyle: camelCase\nsupportLevel: production\nsdk: \"sentry.javascript.browser\"\ncategories:\n - browser\n```\n\n## [Structure Templates](https://docs.sentry.io/contributing/approach/sdk-docs/write-quick-start.md#structure-templates)\n\nWe've created two Quick Start guide templates: one for wizard setup and one for manual setup. Use them as a basis and add new sections (steps) as you see fit.\n\nIf an SDK has both Quick Start guides, make sure that both guides reach the same outcome, meaning the modifications in the developer's project should be consistent (within reason).\n\n### [Wizard Setup](https://docs.sentry.io/contributing/approach/sdk-docs/write-quick-start.md#wizard-setup)\n\nThe wizard is the fastest way to set up Sentry – your guide should reflect this by relying on the wizard for the core setup while providing additional information when it makes sense and helps the developer. You can wrap these additions into `Expandable` components to hide them by default and de-clutter your page visually.\n\nWe recommend you base your guide on a similar existing SDK page, such as:\n\n* [Next.js quick start guide wizard setup](https://docs.sentry.io/platforms/javascript/guides/nextjs.md)\n\n**Minimal structure:**\n\n* **Title and summary**\n\n * The title gets picked up automatically from the config.yml file\n * Describe what the developer will achieve by following this guide\n\n* **Prerequisites**\n\n* **Step 1: Install" + }, + { + "path": "contributing/approach/sdk-docs/write-usage.md", + "title": "How to Write - Usage", + "hierarchy": [ + "Contributing", + "Approach", + "Sdk Docs", + "Write Usage" + ], + "summary": "# How to Write - Usage", + "content": "# How to Write - Usage\n\nThe Usage section of the content covers how to manually capture events and message. A new framework can adopt the common content, which is stored in `/docs/platforms//common/usage` - feel free to peruse the files in that directory to help answer questions.\n\nDon't change the common content. That change will ripple across all guides that rely on the common content. Instead, open an issue on GitHub with questions/suggestions.\n\nMost of these pages are pretty self-evident, so only basic information is provided. But please ask questions, if any arise, by opening an issue on GitHub.\n\n### [Index file](https://docs.sentry.io/contributing/approach/sdk-docs/write-usage.md#index-file)\n\nThis file is `index.mdx`. It explains how to manually capture events.\n\nAdd the code sample to these directories:\n\n* `/src/platform-includes/capture-error/`\n* `/src/platform-includes/capture-message/`\n\n### [Set the Level](https://docs.sentry.io/contributing/approach/sdk-docs/write-usage.md#set-the-level)\n\nThis file is `set-level.mdx`. It explains how to set the level of the event. Add the code sample to this directory:\n\n* `/src/platform-includes/set-level/`\n" + }, + { + "path": "contributing/environment.md", + "title": "Development Environment", + "hierarchy": [ + "Contributing", + "Environment" + ], + "summary": "# Development Environment", + "content": "# Development Environment\n\nThis setup assumes you have [Yarn](https://yarnpkg.com/), [Volta](https://volta.sh/) and [pre-commit](https://pre-commit.com/) installed.\n\nIf you prefer not to use Volta, make sure you're using Node 20.\n\nFirst, open a terminal and clone the `sentry-docs` repo:\n\n```bash\n# Clone the docs repo\ngit clone git@github.com:getsentry/sentry-docs.git\n```\n\nNext, navigate into the cloned repo and run the following to install dependencies:\n\n```bash\n# Install or update application dependencies\nmake\n```\n\nNow, run the development webserver (depending on the docs you want to run):\n\n```bash\n# Start dev server for user docs\nyarn dev\n\n# Start dev server for developer docs\nyarn dev:developer-docs\n```\n\nYou will now be able to access docs via .\n\n## [Linting](https://docs.sentry.io/contributing/environment.md#linting)\n\nA few linters are available. Run `yarn lint` to apply them all.\n\nSome lints can be auto-fixed with eslint\n\n```bash\nyarn lint:eslint:fix\n```\n\nAdditionally we use prettier to format our code and markdown. Run prettier if you get linting errors in CI:\n\n```bash\nyarn lint:prettier:fix\n```\n" + }, + { + "path": "contributing/linking.md", + "title": "Linking Variables", + "hierarchy": [ + "Contributing", + "Linking" + ], + "summary": "# Linking Variables", + "content": "# Linking Variables\n\nWe create a variety of links in our documentation, but the most commonly-used link type connects content either between product guides and the platform pages or between platform pages themselves. Each of these may take a different format, depending on whether a platform needs to be specified.\n\n## [Product & Platform Links](https://docs.sentry.io/contributing/linking.md#product--platform-links)\n\n### [From Product to Platform](https://docs.sentry.io/contributing/linking.md#from-product-to-platform)\n\nWe use this format when linking from the product guides to the platform content because it allows the user to specify their platform, if it is not already specified. For example:\n\n`Releases also offer significant additional features when you fully [configure your SDK](/platform-redirect/?next=/configuration/releases/).`\n\nIn the above example, when the user clicks the link to the releases configuration content, but hasn't yet visited a platform page, they will be asked to specify their platform so the page can be populated with the correct code sample when viewed. If they have navigated into product from the platform content, and are now navigating back into their platform, the platform context is maintained.\n\n### [Within Platforms](https://docs.sentry.io/contributing/linking.md#within-platforms)\n\nWe use this format when linking among or within the platform content:\n\n`You can set your own breadcrumbs to make them more useful for debugging.`\n\nIn the above example, when the user clicks the link to the breadcrumbs content, they will be navigated to the breadcrumbs content **within their specific platform**. If this link is used in product guides, and no platform is specified, the user will be navigated to the first platform listed, which is currently the Apple family of SDKs.\n\n### [Hardcoding the Platform](https://docs.sentry.io/contributing/linking.md#hardcoding-the-platform)\n\nWe use this format when there's only one option for the platform, the content is not common to multiple platforms, or we want to force the reader to use this source of truth:\n\n`[NDK integration](/platforms/android/configuration/using-ndk/) is packed with the SDK and requires API level 16, though other levels are supported.`\n\nIn the above example, there is only one place for users to learn about using Android's NDK, which is nested within the Android directory, so we can hardcode the path.\n\n### [To Product Pages](https://docs.sentry.io/contributing/linking.md#to-product-pages)\n\nWe use this format when linking with our product content. Product guides do not currently need a platform to be specified. As a result, linking can define the path to the correct content in the `product` folder. For example:\n\n`You can also customize how events are grouped. Learn more about customized grouping in [Issue Grouping](/concepts/data-management/event-grouping/).`\n\n### [To External Pages](https://docs.sentry.io/contributing/linking.md#to-external-pages)\n\nWe use this format when linking to external pages. Most typically, this is to the UI:\n\n`The **Performance** page is the main view in [sentry.io](https://sentry.io) where you can search or browse for transaction data.`\n\n### [To Sandbox](https://docs.sentry.io/contributing/linking.md#to-sandbox)\n\nSandbox allows the user to explore the feature in an actual Sentry application with mocked data.\n\n`Learn more about this feature in our sandbox.`\n\nThis will take the user to a project based on the current platform selection. However, you can also manually specify the target project using the `projectSlug` parameter.\n\nThe `scenario` parameter specifies the landing page within the Sandbox application that the user will see, and if it is not specified, we default to the `issues` page. Possible values are:\n\n* `performance`\n* `releases`\n* `alerts`\n* `discover`\n* `dashboards`\n* `projects`\n* `oneDiscoverQuery`\n* `oneIs" + }, + { + "path": "contributing/pages.md", + "title": "Pages", + "hierarchy": [ + "Contributing", + "Pages" + ], + "summary": "# Pages", + "content": "# Pages\n\nDocumentation is written in Markdown (via Remark) and MDX.\n\n[`Read the quick reference`](https://daringfireball.net/projects/markdown/syntax)\n\n## [Additional Topics](https://docs.sentry.io/contributing/pages.md#additional-topics)\n\n* #### [Frontmatter](https://docs.sentry.io/contributing/pages/frontmatter.md)\n* #### [Images](https://docs.sentry.io/contributing/pages/images.md)\n* #### [Charts & Diagrams](https://docs.sentry.io/contributing/pages/charts-diagrams.md)\n* #### [MDX Components](https://docs.sentry.io/contributing/pages/components.md)\n* #### [Markdown Variables](https://docs.sentry.io/contributing/pages/variables.md)\n* #### [Redirects](https://docs.sentry.io/contributing/pages/redirects.md)\n* #### [Search](https://docs.sentry.io/contributing/pages/search.md)\n* #### [Banners](https://docs.sentry.io/contributing/pages/banners.md)\n" + }, + { + "path": "contributing/pages/banners.md", + "title": "Banners", + "hierarchy": [ + "Contributing", + "Pages", + "Banners" + ], + "summary": "# Banners", + "content": "# Banners\n\nYou can add arbitrary banners to the top of a page by adding adding an entry to the `BANNERS` array on the `banner/index.tsx` file. The `BANNERS` array is an array of objects with the following properties:\n\n`banner/index.tsx`\n\n```typescript\ntype BannerType = {\n /** This is an array of strings or RegExps to feed into new RegExp() */\n appearsOn: (string | RegExp)[];\n /** The label for the call to action button */\n linkText: string;\n /** The destination url of the call to action button */\n linkURL: string;\n /** The main text of the banner */\n text: string;\n /** Optional ISO Date string that will hide the banner after this date without the need for a rebuild */\n expiresOn?: string;\n};\n```\n\nYou can add as many banners as you like. If you need to disable all banners, simply delete them from the array.\n\nEach banner is evaluated in order, and the first one that matches will be shown.\n\nExamples:\n\n`banner/index.tsx`\n\n```typescript\n// ...\n// appearsOn = []; // This is disabled\n// appearsOn = ['^/$']; // This is enabled on the home page\n// appearsOn = ['^/welcome/']; // This is enabled on the \"/welcome\" page\n// ...\n\nconst BANNERS = [\n // This one will take precedence over the last banner in the array\n // (which matches all /platforms pages), because it matches first.\n {\n appearsOn: [\"^/platforms/javascript/guides/astro/\"],\n text: \"This banner appears on the Astro guide\",\n linkURL: \"https://sentry.io/thought-leadership\",\n linkText: \"Get webinarly\",\n },\n\n // This one will match the /welcome page and all /for pages\n {\n appearsOn: [\"^/$\", \"^/platforms/\"],\n text: \"This banner appears on the home page and all /platforms pages\",\n linkURL: \"https://sentry.io/thought-leadership\",\n linkText: \"Get webinarly\",\n },\n];\n```\n\nOptionally, you can add an `expiresOn` property to a banner to hide it after a certain date without requiring a rebuild or manual removeal. the ISO Date string should be in the format `YYYY-MM-DDTHH:MM:SSZ` to be parsed correctly and account for timezones.\n\n`banner/index.tsx`\n\n```typescript\nconst BANNERS = [\n {\n appearsOn: [\"^/$\"],\n text: \"This home page banner will disappear after 2024-12-06\",\n linkURL: \"https://sentry.io/party\",\n linkText: \"RSVP\",\n expiresOn: \"2024-12-06T00:00:00Z\",\n },\n];\n```\n" + }, + { + "path": "contributing/pages/charts-diagrams.md", + "title": "Charts & Diagrams", + "hierarchy": [ + "Contributing", + "Pages", + "Charts Diagrams" + ], + "summary": "# Charts & Diagrams", + "content": "# Charts & Diagrams\n\nYou can render charts and diagrams in you MDX files using [Mermaid](https://mermaid.js.org):\n\n````txt\n```mermaid\nflowchart TD\n Start --> Stop\n```\n````\n\nWill turn into this:\n\n```mermaid\nflowchart TD\n Start --> Stop\n```\n\nSee the [Mermaid documentation](https://mermaid.js.org/intro/) to learn what types of charts and diagrams can be rendered.\n" + }, + { + "path": "contributing/pages/components.md", + "title": "MDX Components", + "hierarchy": [ + "Contributing", + "Pages", + "Components" + ], + "summary": "# MDX Components", + "content": "# MDX Components\n\n## [Alert](https://docs.sentry.io/contributing/pages/components.md#alert)\n\nRender an alert (sometimes called a callout) to highlight important information.\n\n##### Note\n\nThis is an info alert. Use this to emphasize information that users should read.\n\n##### Important\n\nThis is a warning alert. Use this to alert users to potential risks they should be aware of.\n\n##### Tip\n\nThis is a success alert. Use this to provide optional information that can help users be more successful.\n\nThis is an alert without a title. `warning` alerts should always have titles to emphasize their importance.\n\nThis is a multi-line alert without a title. Keep information brief and to the point. If this is challenging, consider whether the topic needs documentation on another page or if using the [Expandable](https://docs.sentry.io/contributing/pages/components.md#expandable) component would be a better fit.\n\n##### List\n\n* You can create lists\n* and **format** *your* `text`\n\n```markdown\n\nThis is an info alert.\n\n```\n\nAttributes:\n\n* `title` (string) - optional\n* `level` (string: `'info' | 'warning' | 'success'`) - optional, defaults to `'info'`\n\n**Where to place alerts:**\n\nMake sure your alerts aren't breaking the flow of the content. For example, don't put an alert between two paragraphs that explain a single concept. Use alerts sparingly; too many alerts on a single page can be overwhelming.\n\n**When to use which alert level:**\n\n* **Info**: Use this to emphasize information that users should read. For example:\n\n * information needed for users to succeed\n * information you'd typically wrap in a note callout\n\n* **Warning**: Use this to alert users to potential risks they should be aware of. For example:\n\n * warnings about potential errors, such as ones caused by common oversights in project configuration\n * warnings regarding breaking changes\n\n Best practices:\n\n * always use a title with this alert level\n\n* **Success**: Use this to provide optional information that can help users be more successful. For example:\n\n * information that helps improve an already successful task, such as a link to additional reading material\n * tips for best practices\n\n## [Arcade embeds](https://docs.sentry.io/contributing/pages/components.md#arcade-embeds)\n\nRender an [Arcade](https://arcade.software) embed.\n\n```markdown\n\n```\n\nAttributes:\n\n* `src` (string) - the URL of the Arcade embed\n\n## [Expandable](https://docs.sentry.io/contributing/pages/components.md#expandable)\n\nRender an expandable section to provide additional information to users on demand.\n\nHere's something worth noting\n\nThis is an expandable section in an `'info'` alert style. Use this to provide additional information that is helpful, but not crucial.\n\nWith permalink\n\nThis is an expandable section in an `'info'` alert style with a title wrapped in a link.\n\nThis could be important to some users\n\nThis is an expandable section in a `'warning'` alert style. Use this to warn users about minor potential risks.\n\nWant some tips to improve something?\n\nThis is an expandable section in a `'success'` alert style. Use this to provide optional information that can help users be more successful.\n\nExpandable with a code block\n\n`js const foo = 'bar';`\n\n```markdown\n\n This is an expandable section in an `'info'` alert style.\n\n```\n\nAttributes:\n\n* `title` (string)\n* `permalink` (boolean) - optional: wraps the title in a link and shows it in the table of contents.\n\n**When to use expandables:**\n\nExpandables help keep our documentation clutter-free, allowing users to focus on important information while providing them the option to explore additional relevant details.\n\nFor example, use expandables to:\n\n* offer information that is useful to some users but not all, like troubleshooting tips\n* provide background information or insights int" + }, + { + "path": "contributing/pages/frontmatter.md", + "title": "Frontmatter", + "hierarchy": [ + "Contributing", + "Pages", + "Frontmatter" + ], + "summary": "# Frontmatter", + "content": "# Frontmatter\n\nFrontmatter a YAML-formatted blob defined at the top of every markdown or mdx file:\n\n```markdown\n---\ntitle: Doc Title\n---\n\nMarkdown or MDX content\n```\n\nStandard frontmatter will apply on nearly every page:\n\n`title`\n\nDocument title - used in `` as well as things like search titles.\n\n`noindex` (false)\n\nSet this to true to disable indexing (robots, algolia) of this content.\n\n`notoc` (false)\n\nSet this to true to disable page-level table of contents rendering.\n\n`draft` (false)\n\nSet this to true to mark this page as a draft, and hide it from various other components (such as the PageGrid).\n\n`keywords` (\\[])\n\nA list of keywords for indexing with search.\n\n`description`\n\nA description to use in the `<meta>` header, as well as in auto generated page grids.\n\n`sidebar_order` (10)\n\nThe order of this page in auto generated sidebars and grids.\n\nMuch of the other functionality for pages is also driven via frontmatter, such as:\n\n* [Redirects](https://docs.sentry.io/contributing/pages/redirects.md)\n* [Search](https://docs.sentry.io/contributing/pages/search.md)\n\n`nextPage` (`{ path: 'path/to/page', title: 'Page Title' }`)\n\nOverrides the next page shown in the bottom pagination navigation.\n\n`previousPage` (`{ path: 'path/to/page', title: 'Page Title' }`)\n\nOverrides the previous page shown in the bottom pagination navigation.\n" + }, + { + "path": "contributing/pages/images.md", + "title": "Images", + "hierarchy": [ + "Contributing", + "Pages", + "Images" + ], + "summary": "# Images", + "content": "# Images\n\nIf you want to add images to your docs, you can add them in a `./img` folder in the same directory as your `.mdx` files. You don't have to follow a rigid folder structure as long as the relative path (starts with `./`) to the image is correct. See [local images](https://docs.sentry.io/contributing/pages/images.md#local-images).\n\nIf an image is used in multiple places, it's best to put it in `includes/common-imgs/imgs` and reference it in a local [`include` file ](https://docs.sentry.io/contributing/approach/product-docs/write-index.md#includes)to be used in the target `mdx` file. See [common images](https://docs.sentry.io/contributing/pages/images.md#common-images).\n\nAlternatively, images can also be added to the `public` folder and referenced using their relative or full path within the folder. See [public images](https://docs.sentry.io/contributing/pages/images.md#public-images)\n\nEvery image path that starts with `/` (instead of `./`) is considered to be in the `public` folder.\n\n### [Examples](https://docs.sentry.io/contributing/pages/images.md#examples)\n\n#### [Local Images](https://docs.sentry.io/contributing/pages/images.md#local-images)\n\nThe file, `docs/product/alerts/alert-types.mdx`, can reference the local `docs/product/alerts/img/alert-details-example.png` image like so :\n\n`docs/product/alerts/alert-types.mdx`\n\n```markdown\n![Alert details ...](./img/alert-details-example.png)\n```\n\n#### [Common Images](https://docs.sentry.io/contributing/pages/images.md#common-images)\n\nImages that are reused in multiple files should be single-sourced as an `include` file. For example, the common image, `includes/common-imgs/imgs/tags.png`, is referenced in the `include` file, `includes/common-imgs/tags.mdx`, like so:\n\n`includes/common-imgs/tags.mdx`\n\n```markdown\n![Tags](./img/tags.png)\n```\n\nThe image can then be used in multiple places (such as `docs/platforms/ruby/common/enriching-events/tags/index.mdx`) by referencing the `include` file with the following syntax:\n\n`docs/platforms/ruby/common/enriching-events/tags/index.mdx`\n\n```markdown\n<Include name=\"common-imgs/tags\" />\n```\n\n#### [Public Images](https://docs.sentry.io/contributing/pages/images.md#public-images)\n\nWhile we recommend storing images locally with the files that reference them, you can also put them in the `public` folder. By default, the docs platform assumes images referenced with paths starting with `/` live in the `public` folder, so you don't need to include `public` in the image path.\n\nThe folder structure of `public` mimics that of `docs` so that you can reference these images with relative paths. For example, the file, `docs/product/alerts/alert-types.mdx`, can reference the image, `public/product/alerts/issue-alert.png`, like so :\n\n`docs/product/alerts/alert-types.mdx`\n\n```markdown\n![Issue alert](issue-alert.png)\n```\n\nContent files living elsewhere can also reference public images by using their full paths (excluding `public`). For example, the file, `docs/platform/apple/index.mdx`, can also reference the same image, `public/product/alerts/issue-alert.png`, like so:\n\n`docs/platform/apple/index.mdx`\n\n```markdown\n![Issue alert](/product/alerts/issue-alert.png)\n```\n\n## [Image Optimization](https://docs.sentry.io/contributing/pages/images.md#image-optimization)\n\nTo save space and ensure consistency, we ask that all image files be compressed and cropped to the dimensions listed below. When adding an image, please makes sure that it's high-resolution and crisp and that text is big enough to read.\n\n### [Recommended Dimensions](https://docs.sentry.io/contributing/pages/images.md#recommended-dimensions)\n\n* If you want the image to take up the full width of the page, make it **1484 pixels** wide.\n\n* If you want the image to be indented once (for example, if it's under a list item), make it **1400 pixels** wide.\n\n### [Image Compression](https://docs.sentry.io/contributing/pages/images.md#image-compression)\n\nFor performance reasons, images should be compressed. We" + }, + { + "path": "contributing/pages/redirects.md", + "title": "Redirects", + "hierarchy": [ + "Contributing", + "Pages", + "Redirects" + ], + "summary": "# Redirects", + "content": "# Redirects\n\nRedirects allow you to automatically redirect an incoming request path to a new destination path. When you move or rename a file, you should make sure to set up a redirect from the old path to the new path, so that the old URL still takes users to the right place.\n\n## [Add a New Redirect](https://docs.sentry.io/contributing/pages/redirects.md#add-a-new-redirect)\n\nThere are two ways to add redirects in the Sentry docs:\n\n* [Add a New Redirect in `middleware.ts` (Recommended)](https://docs.sentry.io/contributing/pages/redirects.md#add-a-new-redirect-in-middlewarets-recommended)\n* [Add a New Redirect in `redirects.js`](https://docs.sentry.io/contributing/pages/redirects.md#example-redirect-in-redirectsjs)\n\nBoth files make the distinction between SDK docs (ie. end user docs) and developer docs.\n\nBecause Sentry has a limited number of `next.config.js` redirects, you should configure your redirects in `middleware.ts` whenever possible. You should only use `redirects.js` ie (`next.config.js`) if you need to use regular expressions and wildcard path segments in your redirects.\n\nIt's no longer recommended to use `vercel.json` for redirects due to its limitations (doesn't work on localhost, requires a static file ...)\n\n### [Add a New Redirect in `middleware.ts` (Recommended)](https://docs.sentry.io/contributing/pages/redirects.md#add-a-new-redirect-in-middlewarets-recommended)\n\nSet up all simple one-to-one redirects in `src/middleware.ts`.\n\nTo add a new redirect in [`src/middleware.ts`](https://github.com/getsentry/sentry-docs/blob/master/src/middleware.ts), add a new object to `REDIRECTS` with the following properties:\n\n* `from`: The incoming request path.\n* `to`: The new destination path you want to route to.\n\n#### [Example Redirect in `middleware.ts`](https://docs.sentry.io/contributing/pages/redirects.md#example-redirect-in-middlewarets)\n\nThe example below redirects `https://docs.sentry.io/performance/` to `https://docs.sentry.io/product/performance/`:\n\n`middleware.ts`\n\n```typescript\nconst REDIRECTS: { from: PathWithTrailingSlash; to: string }[] = [\n\n {\n from: \"/performance/\",\n to: \"/product/performance/\",\n },\n\n];\n```\n\n### [Add a New Redirect in `redirects.js`](https://docs.sentry.io/contributing/pages/redirects.md#add-a-new-redirect-in-redirectsjs)\n\nSentry has a limited number of Vercel redirects, so you should only configure redirects in `vercel.json` if your redirects need to use regular expressions. Otherwise, use [`middleware.ts`](https://docs.sentry.io/contributing/pages/redirects.md#add-a-new-redirect-in-middlewarets-recommended).\n\nTo add a new redirect in `redirects.js` (which is consumed by `next.config.js`'s [`redirects`](https://nextjs.org/docs/app/api-reference/next-config-js/redirects)), add a new object to the corresponding redirects with the following properties:\n\n* `source`: The incoming request path pattern.\n* `destination`: The new destination path you want to route to.\n\n#### [Example Redirect in `redirects.js`](https://docs.sentry.io/contributing/pages/redirects.md#example-redirect-in-redirectsjs)\n\nThe example below redirects URLs like `https://docs.sentry.io/cli/:path*` to `https://docs.sentry.io/product/cli/:path*` with a [path pattern](https://nextjs.org/docs/app/api-reference/next-config-js/redirects#path-matching) or a [Regex](https://nextjs.org/docs/app/api-reference/next-config-js/redirects#regex-path-matching).\n\nFor example, `https://docs.sentry.io/cli/installation/` would be redirected to `https://docs.sentry.io/product/cli/installation/`.\n\n`redirects.js`\n\n```json\n \"redirects\": [\n {\n \"source\": \"/cli/:path*\",\n \"destination\": \"/product/cli/:path*\",\n },\n ]\n```\n" + }, + { + "path": "contributing/pages/search.md", + "title": "Search", + "hierarchy": [ + "Contributing", + "Pages", + "Search" + ], + "summary": "# Search", + "content": "# Search\n\nSearch is powered by Algolia, and will index all content in `/docs/` that is Markdown or MDX formatted.\n\nIt will *not* index documents with any of the following in their frontmatter:\n\n* `draft: true`\n* `noindex: true`\n" + }, + { + "path": "contributing/pages/variables.md", + "title": "Markdown Variables", + "hierarchy": [ + "Contributing", + "Pages", + "Variables" + ], + "summary": "# Markdown Variables", + "content": "# Markdown Variables\n\nA transformation is exposed to both Markdown and MDX files which supports processing variables in a Django/Jekyll-style way. The variables available are globally scoped and configured within `remark-variables.js`.\n\nFor example:\n\n```markdown\nJavaScript SDK: 10.12.0\n```\n\nIn this case, we expose `packages` as an accessor in the package registry, which is why there's a `packages.version` function available. Additionally, we expose a default context variable of `page`, which contains the frontmatter of the given markdown node. For example, `{{@inject page.title }}`.\n\nWhen a variable call is invalid (or errors), or doesn't match something in the known scope, it will produce an error message in the output in development mode. It will force the build to fail in production.\n\nTo escape an expression add a leading `\\` to the `@inject`.\n\n## [`packages`](https://docs.sentry.io/contributing/pages/variables.md#packages)\n\nThe `packages` helper is an instance of `PackageRegistry` and exposes several methods.\n\n### [`packages.version`](https://docs.sentry.io/contributing/pages/variables.md#packagesversion)\n\nReturns the latest version of the given package.\n\n```text\n{{@inject packages.version(\"sentry.javascript.browser\") }}\n```\n\nYou may also optionally specify a fallback for if the package isn't found (or there's an upstream error):\n\n```text\n{{@inject packages.version(\"sentry.javascript.browser\", \"1.0.0\") }}\n```\n\n### [`packages.checksum`](https://docs.sentry.io/contributing/pages/variables.md#packageschecksum)\n\nReturns the checksum of a given file in a package.\n\n```text\n{{@inject packages.checksum(\"sentry.javascript.browser\", \"bundle.min.js\", \"sha384\") }}\n```\n" + }, + { + "path": "contributing/platforms.md", + "title": "Platforms & Guides", + "hierarchy": [ + "Contributing", + "Platform" + ], + "summary": "# Platforms & Guides", + "content": "# Platforms & Guides\n\nPlatform content lives in `docs/platforms` and follows some specific rules to generate content. The content is rendered using the same features as all other [pages](https://docs.sentry.io/contributing.md), but has some additional functionality exposed to clone content and encapsulate platforms as portals.\n\nDirectory structure has meaning within the platforms directory, and looks something akin to:\n\n```bash\n[platformName]/\n child.mdx\n childTwo/\n index.mdx\n common/\n aSharedPage.mdx\n guides/\n [guideName]/\n uniqueChild.mdx\n childTwo/\n index.mdx\n```\n\nPlatforms will generate a list of \"guides\" that inherit all content within common. Given the above example, we end up with a variety of semi-duplicated URLs:\n\n```bash\n/platforms/platformName/\n/platforms/platformName/config.yml\n/platforms/platformName/child/\n/platforms/platformName/childTwo/\n/platforms/platformName/aSharedPage/\n/platforms/platformName/guides/guideName/\n/platforms/platformName/guides/guideName/config.yml\n/platforms/platformName/guides/guideName/child/\n/platforms/platformName/guides/guideName/uniqueChild/\n/platforms/platformName/guides/guideName/childTwo/\n/platforms/platformName/guides/guideName/aSharedPage/\n```\n\nThis is generated by inheriting all content with the `common/` directory, then adding (or overriding with) content from the siblings (or children as we'd call them). In the above example, you'll see `aSharedPage` is loaded at two different URLs, and `childTwo` is overwritten by `guideName`.\n\nThe sidebar on platform pages (handled by `<PlatformSidebar>`) will generate with the Guide, or the Base Platform being the primary section, in addition to a list of other guides available in a section below it. This means that all content is focused on the current guide (usually a framework) they're in, ensuring ease of navigation.\n\n## [Configuration](https://docs.sentry.io/contributing/platforms.md#configuration)\n\nConfiguration is read (in order) from `[namespace]/index.mdx` and `[namespace]/config.yml`. This means that a platform's index can be fully rendered via a common page.\n\nValid configuration attributes are:\n\n`title`\n\nThe display name for a platform.\n\n`supportLevel`\n\nThe level of support. `production` (default) or `community`\n\n`caseStyle`\n\nThe casing style for code samples. `canonical` (default), `camelCase`, `snake_case`, or `PascalCase`\n\n`categories`\n\nA list of categories for future support. Known values are `browser`, `mobile`, `desktop`, and `server`.\n\n`fallbackPlatform`\n\nThe key to use for defaults. Can use full key syntax of `platformName` or `platformName.guideName`.\n\n`sdk`\n\nThe name of the SDK, if available. Used to embed SDK information on pages.\n\n`aliases`\n\nA list of aliases for this platform. For example, \"Cocoa\" might apply to Apple, or \"C#\" might apply to .NET.\n\n`showIntegrationsInSearch`\n\nWhether to show integrations in the search results on the home page.\n\n**Note:** This is only applicable to platforms that have no guides like Python.\n\n## [Shared Content](https://docs.sentry.io/contributing/platforms.md#shared-content)\n\nShared (duplicated) content within an SDK (platform) is available in the `src/platforms/[platformName]/common/` folder.\n\nAll of this content will be automatically duplicated within every guide. This leverages components like `PlatformContent` which can automatically substitute content out.\n\n### [Page Visibility](https://docs.sentry.io/contributing/platforms.md#page-visibility)\n\nSometimes a page may not make sense within the context of a given guide. To control this, you can use the `supported` and `notSupported` frontmatter on common pages in platforms.\n\nPage visibility works similar to the supported/notSupported attributes in other platform components (such as `PlatformSection`).\n\nFor example, if you wanted to make hide the content for a platform by default, but enable it for a guide, you can do that like so:\n\n```markdown\n---\nsupported:\n - native.wasm\nnotSupported:\n - native\n---\n```" + }, + { + "path": "contributing/platforms/platform-icons.md", + "title": "Platform Icons", + "hierarchy": [ + "Contributing", + "Platform", + "Platform Icons" + ], + "summary": "# Platform Icons", + "content": "# Platform Icons\n\nTo have consistent icons for all supported platforms across all of Sentry (the product, the docs, landing pages, etc.) we created a repo for managing those icons, called [platformicons](https://github.com/getsentry/platformicons).\n\nIf a new platform is added, follow these steps to add a new icon that can be used in the docs:\n\n1. **Add the new icon to `platformicons`:**\n\n Create a [new issue in the platformicons repository](https://github.com/getsentry/platformicons/issues) that specifies how the icon should be named and includes a link to the platform's website. Also, make sure to specify whether it is a top-level icon (like `python`) or a subitem that is only available in one specific platform (like `python.celery`).\n\n You can also create a PR in the `platformicons` repository where you add two versions of the icon. See the [README](https://github.com/getsentry/platformicons) for more info on formatting.\\`\\`\\`\n\n2. **Release a new version of `platformicons` to NPM.**\n\n If you are a Sentry employee, follow the [README.md](https://github.com/getsentry/platformicons) on how to do a release.\n\n If you are not a Sentry employee, ask on our [Discord server](https://discord.com/invite/Ww9hbqr) so someone can review your contribution and trigger the release.\n\n3. **Update the `platformicons` version used in the docs repository.**\n\n Update the version of your newly released `platformicons` in `package.json` and run `yarn install` to also have the new version in `yarn.lock`.\n\n4. **Make it available as a component in the docs repository.**\n\n Update [platformIcon.tsx](https://github.com/getsentry/sentry-docs/blob/master/src/components/platformIcon.tsx) to include your new icon. Make sure to:\n\n * Add two imports (one for each version of the icon).\n * Add the icons to `formatToSVG`.\n * Add a mapping for the platform and icon to `PLATFORM_TO_ICON`.\n\nNow the new icon is available in the docs and will be used wherever icons are rendered!\n" + }, + { + "path": "contributing/platforms/versioning.md", + "title": "Versioning", + "hierarchy": [ + "Contributing", + "Platform", + "Versioning" + ], + "summary": "# Versioning", + "content": "# Versioning\n\nVersioning allows for the maintenance of multiple versions of the same documentation, which is crucial for supporting different SDK releases. This guide explains how to create versioned documentation in the docs platform.\n\n## [Creating a Versioned Page](https://docs.sentry.io/contributing/platforms/versioning.md#creating-a-versioned-page)\n\nTo create a versioned page:\n\n1. Ensure the original page already exists.\n2. Create a new file with the same name as the original, but append `__v{VERSION}` (two underscores) to the filename before the extension.\n\n**The version should follow one of these two formats:**\n\n* Major version only (for general version ranges): `__v{MAJOR}.x`\n* Full semantic version (for specific versions): `__v{MAJOR}.{MINOR}.{PATCH}`\n\nFor example:\n\n```bash\nindex.mdx (original)\nindex__v7.x.mdx (version 7.x.x)\nindex__v7.1.0.mdx (specific version 7.1.0)\n```\n\n## [Versioning Platform Includes](https://docs.sentry.io/contributing/platforms/versioning.md#versioning-platform-includes)\n\nPages in the `platform-includes` folder can be versioned using the same method. However, the root page referencing these includes must also be versioned.\n\n## [File Structure Example](https://docs.sentry.io/contributing/platforms/versioning.md#file-structure-example)\n\n```bash\ndocs/\nβ”œβ”€β”€ getting-started/\nβ”‚ β”œβ”€β”€ index.mdx\nβ”‚ └── index__v7.x.mdx\n└── platform-includes/\n └── configuration/\n β”œβ”€β”€ example.mdx\n └── example__v7.x.mdx\n```\n\n## [Version Selection and User Experience](https://docs.sentry.io/contributing/platforms/versioning.md#version-selection-and-user-experience)\n\nWhen multiple versions of a page exist:\n\n1. A dropdown menu appears below the platform selector, displaying all available versions for the current file.\n\n2. When a user selects a version:\n\n* They are redirected to the chosen version of the page.\n* A preference is stored in localStorage, specific to the current guide or platform.\n\n3. An alert is displayed when viewing \"non-latest\" pages to inform users they're not on the most recent version.\n\n4. If a user has a stored version preference:\n\n* The app will perform a client-side redirect to this version whenever it's available for other pages.\n\nThis approach ensures users can easily navigate between versions and keep their version preference across the documentation.\n\n## [Best Practices](https://docs.sentry.io/contributing/platforms/versioning.md#best-practices)\n\n1. Only add versioning to pages when necessary, to avoid content duplication and save build times.\n2. Ensure all related content (including `platform-includes`) is versioned consistently.\n\n## [Limitations and Considerations](https://docs.sentry.io/contributing/platforms/versioning.md#limitations-and-considerations)\n\n* Versioning is only available for existing pages.\n* The versioning system relies on the file naming convention, so it's important to follow the `__v{VERSION}` format precisely.\n\nBy following these guidelines, it's possible to effectively manage multiple versions of documentation, ensuring users can access the appropriate information for their specific version of the software or API.\n" + }, + { + "path": "index.md", + "title": "Sentry Docs | Application Performance Monitoring & Error Tracking Software", + "hierarchy": [ + "Index" + ], + "summary": "# Sentry Docs | Application Performance Monitoring & Error Tracking Software", + "content": "# Sentry Docs | Application Performance Monitoring & Error Tracking Software\n" + }, + { + "path": "organization.md", + "title": "Organization Settings", + "hierarchy": [ + "Organization" + ], + "summary": "# Organization Settings", + "content": "# Organization Settings\n\n* #### [Set Up Your Organization](https://docs.sentry.io/organization/getting-started.md)\n\n Learn how to set up a Sentry organization account, so you can start fixing errors right away.\n\n* #### [Authentication](https://docs.sentry.io/organization/authentication.md)\n\n* #### [Organization and User Management](https://docs.sentry.io/organization/membership.md)\n\n Learn about the different organization-level and team-level roles and how they affect permissions in Sentry.\n\n* #### [Data Storage Location (US or EU)](https://docs.sentry.io/organization/data-storage-location.md)\n\n Choose where to store your data in the US or the EU.\n\n* #### [Dynamic Sampling](https://docs.sentry.io/organization/dynamic-sampling.md)\n\n Learn how to prioritize important events and increase visibility in lower-volume projects with Dynamic Sampling.\n\n* #### [Early Adopter Features](https://docs.sentry.io/organization/early-adopter-features.md)\n\n Learn which features are currently in the early adopter phase.\n\n* #### [Integrations](https://docs.sentry.io/organization/integrations.md)\n\n Learn more about the wide variety of apps and services integrated with Sentry and how you can add your own Sentry integration.\n" + }, + { + "path": "organization/authentication.md", + "title": "Authentication", + "hierarchy": [ + "Organization", + "Authentication" + ], + "summary": "# Authentication", + "content": "# Authentication\n\n* #### [Single Sign-On (SSO)](https://docs.sentry.io/organization/authentication/sso.md)\n\n Learn about single sign-on (SSO) and how it helps manage your organization.\n\n* #### [Two-Factor Authentication (2FA)](https://docs.sentry.io/organization/authentication/two-factor-authentication.md)\n\n Learn about adding two-factor authentication (2FA) across your organization.\n" + }, + { + "path": "organization/authentication/sso.md", + "title": "Single Sign-On (SSO)", + "hierarchy": [ + "Organization", + "Authentication", + "Sso" + ], + "summary": "# Single Sign-On (SSO)", + "content": "# Single Sign-On (SSO)\n\nSingle sign-on (or SSO) allows you to manage your organization’s entire membership via a third-party provider.\n\n## [Preface](https://docs.sentry.io/organization/authentication/sso.md#preface)\n\nBefore you get around to actually turning on SSO, you’ll want to keep in mind that once it’s activated, all existing users will need to link their account before they are able to continue using Sentry. Because of that we recommend coordinating with your team during off-peak hours. That said, it’s super quick to link accounts, so we don’t consider it a true hurdle.\n\n## [Getting Started](https://docs.sentry.io/organization/authentication/sso.md#getting-started)\n\nWith that out of the way, head on over to your organization home. You’ll see an β€œAuth” link in the sidebar if you have access to SSO. Start by hitting that, and then continue to the β€œConfigure” link next to provider you wish to configure.\n\nAdditionally we’ll automatically send each pre-existing member an email with instructions on linking their account. This will happen automatically once SSO is successfully configured. Even if they don't click the link, the next time they try to hit any page within the organization we’ll require them to link their account (with the same auth flow you just went through).\n\n## [Default Membership](https://docs.sentry.io/organization/authentication/sso.md#default-membership)\n\nEvery member who creates a new account via SSO will be given global organization access with a member role. This means that they can access events from any team, but they won’t be able to create new projects or administer current ones.\n\n## [Security](https://docs.sentry.io/organization/authentication/sso.md#security)\n\nOur SSO implementation prioritizes security. We aggressively monitor linked accounts and will disable them if there's any reasonable sign that the account’s access may have been revoked. Generally this will be transparent to you, but if the provider is functioning in an unexpected way you may experience more frequent re-authorization requests.\n\nSessions last for [Django's default session length](https://docs.djangoproject.com/en/1.11/topics/http/sessions/#using-cookie-based-sessions), which is two weeks.\n\n## [Providers](https://docs.sentry.io/organization/authentication/sso.md#providers)\n\n### [Google Business App](https://docs.sentry.io/organization/authentication/sso.md#google-business-app)\n\nThis feature is available only if your organization is on [a Trial, Team, or higher plan](https://sentry.io/pricing/).\n\nEnabling the Google integration will ask you to authenticate against a Google Apps account. Once done, membership will be restricted to only members of the given Apps domain (i.e. `sentry.io`).\n\nIf you need to allow users across multiple domains to access your organization or change your Google domain, please contact our support team.\n\n### [GitHub Organizations](https://docs.sentry.io/organization/authentication/sso.md#github-organizations)\n\nThis feature is available only if your organization is on [a Trial, Team, or higher plan](https://sentry.io/pricing/).\n\nThe GitHub integration will authenticate against all organizations, and once complete prompt you for the organization which you wish to restrict access by.\n\n### [SAML2 Identity Providers](https://docs.sentry.io/organization/authentication/sso.md#saml2-identity-providers)\n\nThis feature is available only if your organization is on a [Business or Enterprise plan](https://sentry.io/pricing/). This feature is not available on Trial plans.\n\nSentry provides [SAML2 based authentication](https://en.wikipedia.org/wiki/SAML_2.0) which may be configured manually using the generic SAML2 provider, or a specific provider listed below that provides defaults specific to that identity provider:\n\n* [AuthO](https://docs.sentry.io/organization/authentication/sso.md#auth0)\n* [Azure Active Directory](https://docs.sentry.io/organization/authentication/sso.md#azure-active-directory)\n* [Okta](https://docs.s" + }, + { + "path": "organization/authentication/sso/azure-sso.md", + "title": "Azure Active Directory SSO", + "hierarchy": [ + "Organization", + "Authentication", + "Sso", + "Azure Sso" + ], + "summary": "# Azure Active Directory SSO", + "content": "# Azure Active Directory SSO\n\n## [Installation](https://docs.sentry.io/organization/authentication/sso/azure-sso.md#installation)\n\nIf you change your organization slug, you'll need to make the same update in the steps where you enter the SAML configuration values.\n\n1. Log in to the [Azure portal](https://portal.azure.com/).\n\n2. Under \"Manage Azure Active Directory\" (the picture of the shield), click \"View\". This takes you to the **Organization Overview** page.\n\n3. If you don't require a permission group for Sentry, skip to Step 5.\n\n4. In the search bar, search for \"Groups\" then navigate to it. From there, create a new group, add an owner and members to the group. Set \"Group type\" to Office 365. For more details about group creation, see the [Azure docs](https://docs.microsoft.com/en-us/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal).\n\n5. Return to the **Overview** page. In the search bar, enter `Enterprise Applications`, then navigate to it. Click \"+ New application\". Search for `Sentry` to create the application.\n\n6. Once the application is created, you'll be directed to **Sentry - Overview**.\n\n7. Click on \"1. Assign users and groups\", then \"+ Add user\". Add yourself and the group you've created to the Sentry app. Click \"Assign\".\n\n8. Navigate back to **Overview**, click on \"2. Set up single sign-on\" and then select SAML as your single sign-on method.\n\n9. For Section (1), labeled \"Basic SAML Configuration\", enter the following data in each line and save your changes.\n\n * Identifier (Entity ID): `https://sentry.io/saml/metadata/YOUR_ORG_SLUG/`\n\n Ensure that the URL includes a trailing slash to prevent Azure from throwing a misconfiguration error (AADSTS650056).\n\n * Reply URL (Assertion Consumer Service URL): `https://sentry.io/saml/acs/YOUR_ORG_SLUG/`\n\n * Sign on URL: `https://sentry.io/auth/login/YOUR_ORG_SLUG/`\n\n * Relay State: `https://sentry.io/organizations/YOUR_ORG_SLUG/`\n\n * Logout URL: `https://sentry.io/saml/sls/YOUR_ORG_SLUG/`\n\n10. In Section (3), labeled \"SAML Signing Certificate\", copy the \"App Federation Metadata URL\".\n\n11. Navigate to your **Org Settings > Auth** (or go to `https://sentry.io/settings/YOUR_ORG_SLUG/auth/`) and click on \"Configure\" for Active Directory.\n\n12. Paste the App Federation Metadata URL from above and click \"Get Metadata\".\n\n13. In the next page, enter the following keys in their respective fields to map the attributes from AzureAD to Sentry, and then save them.\n\n * IdP User ID: `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name`\n\n * User Email: `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`\n\n * First Name: `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname`\n\n * Last Name: `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname`\n\n For more details about mappings for custom configs, see [The Role of Claims](https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims).\n\n14. Sentry will attempt to authenticate and link your account with Azure. After successful authentication, you'll be redirected to Sentry's SSO configuration page, where you can take the following actions:\n\n * You can share the \"Login URL\" value, which will be used for SP-initiated SSO, with the users in your organization.\n\n * Scroll down to the bottom and ensure that \"Require SSO\" is checked if you want to enforce logging in with Azure Active Directory.\n\n * Set a \"Default Role\" for new SSO users. Selecting \"Member\" should cover most use cases.\n\n * If you made changes, click \"Save Settings\" to complete your setup.\n\n## [SCIM Integration](https://docs.sentry.io/organization/authentication/sso/azure-sso.md#scim-integration)\n\nThis feature is only available if your organization is on a Business or Enterprise plan; it is not available on Trial plans.\n\nIf you change your organization slug, you'll need to make the same update in the steps where you enter the SCIM configu" + }, + { + "path": "organization/authentication/sso/okta-sso.md", + "title": "Okta SSO", + "hierarchy": [ + "Organization", + "Authentication", + "Sso", + "Okta Sso" + ], + "summary": "# Okta SSO", + "content": "# Okta SSO\n\n## [Installation](https://docs.sentry.io/organization/authentication/sso/okta-sso.md#installation)\n\nIf you change your organization slug, you'll need to make the same update in the steps where you enter the SAML configuration values.\n\n1. Sign in to your Okta organization with your administrator account.\n\n2. From the admin console's sidebar, click **Applications > Applications**, then click on \"Browse App Catalog\" (or \"Add Application\" for the old interface).\n\n3. Search for `Sentry`, then click \"Add Integration\" to be brought to the setup wizard.\n\n4. Provide the settings. Note that for \"1. General Settings\", you will not need to provide any special settings. For \"2. Sign On Options\", provide the following:\n\n * Base URL: `https://sentry.io`\n\n Ensure that the Base URL does not have a trailing slash or whitespace at the end as they will break the redirect from Okta to Sentry.\n\n * Organization Slug: *YOUR\\_ORG\\_SLUG*\n\n * You can find your organization slug in the URL: `https://sentry.io/organizations/YOUR_ORG_SLUG/`\n\n * Email: `Email`\n\n5. Click \"Save\" to create the Sentry app.\n\n6. When you're redirected to the app settings page, click \"Sign On\".\n\n7. Copy the \"Metadata URL\" in the set up instructions.\n\n8. Sign in to Sentry. Select **Settings > Auth > Configure Okta**.\n\n9. Paste the Metadata URL from Step 8, then click \"Continue\".\n\nSentry will attempt to authenticate and link your account with Okta. After successful authentication, you'll be redirected to Sentry's SSO configuration page, where you can:\n\n* Share the \"Login URL\" value, which will be used for SP-initiated SSO, with the users in your organization.\n\n* Scroll down to the bottom and ensure that \"Require SSO\" is checked if you want to enforce logging in with Okta.\n\n* Set a \"Default Role\" for new SSO users. Selecting \"Member\" should cover most use cases.\n\nIf you make any changes, click \"Save Settings\" to complete your set up.\n\n## [SCIM Integration](https://docs.sentry.io/organization/authentication/sso/okta-sso.md#scim-integration)\n\n* See [Okta SCIM Provisioning](https://docs.sentry.io/organization/authentication/sso/okta-sso/okta-scim.md).\n" + }, + { + "path": "organization/authentication/sso/okta-sso/okta-scim.md", + "title": "Okta SCIM Provisioning", + "hierarchy": [ + "Organization", + "Authentication", + "Sso", + "Okta Sso", + "Okta Scim" + ], + "summary": "# Okta SCIM Provisioning", + "content": "# Okta SCIM Provisioning\n\nThis feature is only available if your organization is on a Business or Enterprise plan.\n\nIf you change your organization slug, you'll also need to update it in the \"Auth\" section of your \"Organization Settings\" in Sentry.\n\n### [Supported Features](https://docs.sentry.io/organization/authentication/sso/okta-sso/okta-scim.md#supported-features)\n\n* Create users\n* Deactivate users\n* Push groups\n* Import groups\n* Configure organization-level roles\n* Update user attributes (organization-level roles only)\n\n### [Requirements](https://docs.sentry.io/organization/authentication/sso/okta-sso/okta-scim.md#requirements)\n\nOkta SCIM provisioning requires:\n\n* A subscription to Sentry Business Plan or higher.\n* Configuration of SAML SSO for Okta [as documented here](https://docs.sentry.io/organization/authentication/sso/okta-sso.md), or use the Okta sign-on tab in your Sentry Okta application to configure SAML.\n* **Selection of Email for the Application username format** in the Sign On application tab in Okta.\n\n### [Sentry Configuration](https://docs.sentry.io/organization/authentication/sso/okta-sso/okta-scim.md#sentry-configuration)\n\n1. Sign in to [sentry.io](https://sentry.io). Select **Settings > Auth**\n2. Under General Settings select \"Enable SCIM\", then \"Save Settings\" Sentry will display \"SCIM Information\" that contains your Auth Token and SCIM Base URL.\n\n### [Okta Configuration](https://docs.sentry.io/organization/authentication/sso/okta-sso/okta-scim.md#okta-configuration)\n\n1. Sign in to your Okta organization with your administrator account. From the admin console's sidebar, select Applications > Applications, then select the existing Sentry application.\n\n2. Select the \"Provisioning\" tab, then \"Configure API integration\".\n\n3. Select \"Enable API Integration\", then enter the SCIM URL from the auth settings page as the Base URL field.\n\n4. For the API Token, copy the Auth Token value from the auth settings page.\n\n5. Select \"Test API Credentials\". You should see a \"the app was verified successfully\" message appear.\n\n6. Select \"Save\" to be directed to SCIM App settings.\n\n7. On the Provisioning page, select \"To App\", then \"edit\":\n\n8. Enable both \"Create Users\" and \"Deactivate Users\", then click the \"Save\" button.\n\nOnce these changes have been made, newly assigned users will be sent an invitation email. If a user gets un-assigned, they'll be removed from their organization in Sentry.\n\nYou can use \"Push Groups\" to sync and assign groups in Okta; they'll be mirrored in Sentry teams.\n\nIf you use Okta to assign organization membership, you’ll be unable to make membership changes through Sentry and will need to continue using Okta. To remove these users, deprovision them in Okta.\n\n### [Configuring Organization-level Roles](https://docs.sentry.io/organization/authentication/sso/okta-sso/okta-scim.md#configuring-organization-level-roles)\n\nHere's how to assign an organization-level role to an Okta group:\n\n1. Add a new custom attribute to your Okta application profile\n\n 1. Navigate to your application settings in Okta\n\n 2. Under the \"Provisioning\" tab, select \"Go to Profile Editor\"\n\n 3. Select \"+ Add Attribute\"\n\n 4. Fill out the form with the following settings (You can set whatever value you want for any setting not listed below.):\n\n * Data Type: `string`\n * Display Name: `Org Role`\n * Variable Name: `sentryOrgRole`\n * External name: `sentryOrgRole`\n * External namespace: `urn:ietf:params:scim:schemas:core:2.0:User`\n * Attribute type: `Group`\n\n2. Assign a group to your okta application\n\n3. In the form, enter the string for the org-level role\n\n* If the `sentryOrgField` field is left blank, group members will be provisioned with the default organization-level role. This default role can be configured in Sentry, under Settings -> Organization -> Auth. Otherwise, the role must be one of the following:\n\n * Admin\n * Manager\n * Billing\n * Member\n\n* Invalid role names will prevent group me" + }, + { + "path": "organization/authentication/sso/ping-sso.md", + "title": "Ping Identity SSO", + "hierarchy": [ + "Organization", + "Authentication", + "Sso", + "Ping Sso" + ], + "summary": "# Ping Identity SSO", + "content": "# Ping Identity SSO\n\n## [Installation](https://docs.sentry.io/organization/authentication/sso/ping-sso.md#installation)\n\nIf you change your organization slug, you'll need to make the same update in the steps where you enter the SAML configuration values.\n\n1. Log in to [Ping Identity](https://www.pingidentity.com/en/account/sign-on.html).\n\n2. Go to the \"Adminstrators\" environment for your organization.\n\n3. If you don't require a permission group for Sentry, skip to step 5.\n\n4. In the sidebar, click on \"Identities\", then \"Groups\", and navigate to it. From there, create a new group and add yourself and other members to it. For more details about group creation, see the [Ping ID docs](https://docs.pingidentity.com/bundle/pingone/page/vdz1610472224361.html).\n\n5. In the sidebar, click on \"Connections\", then \"Applications\". Click on \"+ Application\" and for the application type, select \"Web App\" and \"SAML\".\n\n6. For section (1), labeled \"Create App Profile\", you can get the Sentry logo from [here](https://sentry.io/branding/).\n\n7. For section (2), labeled \"Configure SAML\", select \"Manually Enter\". Enter the following data in each line and save your changes.\n\n * Assertion Consumer Service (ACS) URL: `https://sentry.io/saml/acs/YOUR_ORG_SLUG/`\n\n * Entity ID: `https://sentry.io/saml/metadata/YOUR_ORG_SLUG/`\n\n * Single-Logout (SLO) Endpoint: `https://sentry.io/saml/sls/YOUR_ORG_SLUG/`\n\n * Target Application URL: `https://sentry.io/organizations/YOUR_ORG_SLUG/`\n\n8. In section (3), labeled \"Attribute Mappings\", for \"Application Attribute\" ← \"Outgoing Value\", use:\n\n * `saml_subject` ← `Email address`\n\n * `email` ← `Email address`\n\n * `first_name` ← `Given Name`\n\n * `last_name` ← `Family Name`\n\n You can use custom key values, but you will need to amend the steps below. For more details about advanced attribute mappings for custom configs, see [this guide from Ping ID](https://support.pingidentity.com/s/article/PingOne-Using-Advanced-Attribute-Mapping).\n\n9. Once the application is created, click on the Sentry application and navigate to \"Configuration\" and copy \"IDP Metadata URL\". This URL will be used in the subsequent step on Sentry.\n\n10. Go back to [Sentry](https://sentry.io). Navigate to **Settings > Auth** (or go to `https://sentry.io/settings/YOUR_ORG_SLUG/auth/`) and click on \"Configure\" for SAML2.\n\n11. Paste the IDP Metadata URL from above and click \"Get Metadata\".\n\n12. On the next page, enter the following keys in their respective fields to map the Ping ID attributes to Sentry, and then save them:\n\n * IdP User ID: `saml_subject`\n\n * User Email: `email`\n\n * First Name: `first_name`\n\n * Last Name: `last_name`\n\n13. Sentry will attempt to authenticate and link your account with Ping Identity. After successful authentication, you'll be redirected to Sentry's SSO configuration page, where you can take the following actions:\n\n * You can share the \"Login URL\" value, which will be used for SP-initiated SSO, with the users in your organization.\n\n * Scroll down to the bottom and ensure that \"Require SSO\" is checked if you want to enforce logging in with Ping.\n\n * Set a \"Default Role\" for new SSO users. Selecting \"Member\" should cover most use cases.\n\n * If you made changes, click \"Save Settings\" to complete your setup.\n" + }, + { + "path": "organization/authentication/sso/saml2.md", + "title": "Custom SAML Provider", + "hierarchy": [ + "Organization", + "Authentication", + "Sso", + "Saml2" + ], + "summary": "# Custom SAML Provider", + "content": "# Custom SAML Provider\n\nThis feature is available only if your organization is on a [Business or Enterprise plan](https://sentry.io/pricing/). This feature is not available on Trial plans.\n\nSentry provides a generic auth provider for [SAML2 based authentication](https://en.wikipedia.org/wiki/Security_Assertion_Markup_Language), which allows Owners of a Sentry organization to manually configure any SAML2-enabled IdP system. Documented below are the general steps for integration.\n\n# [Setup](https://docs.sentry.io/organization/authentication/sso/saml2.md#setup)\n\nIf you change your organization slug, you'll need to make the same update in the steps where you enter the SAML configuration values.\n\nSentry supports the following SAML services:\n\n* Identity and Service Provider initiated SSO\n* Identity Provider initiated SLO (Single Logout)\n\n## [Register Sentry with IdP](https://docs.sentry.io/organization/authentication/sso/saml2.md#register-sentry-with-idp)\n\nBefore connecting Sentry to the Identity Provider (IdP), it’s important to first register Sentry as an application on the IdP’s side. Sentry’s SAML endpoints are as follows, where `YOUR_ORG_SLUG` is substituted for your organization slug:\n\n| ACS: | `https://sentry.io/saml/acs/YOUR_ORG_SLUG/` |\n| --------- | ------------------------------------------------ |\n| SLS: | `https://sentry.io/saml/sls/YOUR_ORG_SLUG/` |\n| Metadata: | `https://sentry.io/saml/metadata/YOUR_ORG_SLUG/` |\n\n**What are these three things?**\n\n* `ACS` means *Assertion Consumer Service*. It is used for establishing a session based on rules made between your IdP and the service provider with which it is integrating. Please note that Sentry’s ACS endpoint uses HTTP-POST bindings.\n* `SLS` stands for *Single Logout Service*, and is used to address logout requests from the IdP.\n* `Metadata`, alternatively referred to as the `entityID` in some systems, refers to the configuration data for an IdP or an SP. In this case, the metadata endpoint in Sentry refers to your Sentry organization’s metadata on the Service Provider end.\n\nWhen setting these values up on the IdP end, it’s important to remember that Sentry does not need to provide a signing certificate for the integration to work.\n\n## [Register IdP with Sentry](https://docs.sentry.io/organization/authentication/sso/saml2.md#register-idp-with-sentry)\n\nThere are three distinct methods for registering your IdP with Sentry: Metadata, XML, and data fields. Each method is broken down below, and will produce the same end result.\n\n### [Using Metadata URL](https://docs.sentry.io/organization/authentication/sso/saml2.md#using-metadata-url)\n\nThis method only requires a Metadata URL provided by the IdP platform. After it has been supplied, Sentry will automatically fetch the metadata it needs.\n\n### [Using Provider XML](https://docs.sentry.io/organization/authentication/sso/saml2.md#using-provider-xml)\n\nFor this method to work, an administrator needs to provide the contents of the IdP’s generated metadata file. Once the contents are pasted directly into the text field, Sentry will do the rest. Please note that Sentry does not require a signing certificate.\n\nHere’s an example of what the Metadata XML contents look like.\n\n```xml\n<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<md:EntityDescriptor\n xmlns:md=\"urn:oasis:names:tc:SAML:2.0:metadata\"\n entityID=\"http://www.okta.com/SENTRY_APP_ID\"\n>\n <md:IDPSSODescriptor\n WantAuthnRequestsSigned=\"false\"\n protocolSupportEnumeration=\"urn:oasis:names:tc:SAML:2.0:protocol\"\n >\n <md:KeyDescriptor use=\"signing\">\n <ds:KeyInfo xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\">\n <ds:X509Data>\n <ds:X509Certificate>...</ds:X509Certificate>\n </ds:X509Data>\n </ds:KeyInfo>\n </md:KeyDescriptor>\n <md:NameIDFormat\n >urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>\n <md:NameIDFormat\n >urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>\n <md:SingleS" + }, + { + "path": "organization/authentication/two-factor-authentication.md", + "title": "Two-Factor Authentication (2FA)", + "hierarchy": [ + "Organization", + "Authentication", + "Two Factor Authentication" + ], + "summary": "# Two-Factor Authentication (2FA)", + "content": "# Two-Factor Authentication (2FA)\n\nFor an added layer of security, you can require your organization members to sign in to Sentry with two-factor authentication (2FA).\n\n## [Preface](https://docs.sentry.io/organization/authentication/two-factor-authentication.md#preface)\n\nSentry owner permissions are required to enforce two-factor authentication across your organization.\n\n1. Before you can require organization members to use 2FA, you must [enable two-factor authentication](https://sentry.io/settings/account/security/) for your own user account.\n\n2. We recommend notifying your organization members, and asking them to setup 2FA for their accounts before requiring two-factor authentication. You can see which members are enrolled on your organization's members page.\n\n## [Setup Require 2FA](https://docs.sentry.io/organization/authentication/two-factor-authentication.md#setup-require-2fa)\n\nWhen you require two-factor authentication, members who are not enrolled in 2FA will be removed from your organization. They will lose access to your organization's projects and notifications, and will be sent an email to setup 2FA. They can reinstate their access and settings within three months of their removal from your organization.\n\n1. Go to **Organization Settings** >> General Settings.\n\n2. Under Security & Privacy, toggle the **Require Two-Factor Authentication** switch.\n\n3. Click **Confirm**.\n\n## [View Removed Members](https://docs.sentry.io/organization/authentication/two-factor-authentication.md#view-removed-members)\n\nTo view members who were removed from your organization for 2FA non-compliance, you can look at your organization's audit log.\n\n1. Go to **Organization Settings** >> Audit Log.\n\n2. You can filter for action **member.pending** to see removed organization members, and action **org.edit** to see when the require\\_2fa organization setting was changed.\n\n## [Require 2FA and SSO](https://docs.sentry.io/organization/authentication/two-factor-authentication.md#require-2fa-and-sso)\n\nRequire 2FA is currently not available with single sign-on (SSO), so you would need to require two-factor authentication with your identity provider.\n\n## [Steps to Rejoin an Organization](https://docs.sentry.io/organization/authentication/two-factor-authentication.md#steps-to-rejoin-an-organization)\n\nTo reinstate your access and previous settings, you need to setup 2FA within three months of being removed from your organization.\n\nIf you were removed from an organization due to 2FA non-compliance, follow these steps to rejoin the organization and reinstate your access and settings:\n\n1. Look in your inbox for an email from Sentry titled **Mandatory: Enable Two-Factor Authentication**.\n\n2. Click the **Enable Two-Factor Authentication** button.\n\n3. If you can't find the email, ask an organization Owner or Manager to go to the **Organization Settings** >> Members page and resend your invite.\n\n4. After clicking through the email, you will be prompted to **Setup Two-Factor Authentication** before rejoining the organization.\n\n5. This will take you to your **Account Settings** >> [Security](https://sentry.io/settings/account/security/) page where you need to setup at least one form of two-factor authentication.\n\n6. Once you've enrolled in 2FA, remember to save your recovery codes in a safe place and consider adding a backup phone number.\n\n7. Then use the left sidebar to navigate to your organization.\n" + }, + { + "path": "organization/data-storage-location.md", + "title": "Data Storage Location (US or EU)", + "hierarchy": [ + "Organization", + "Data Storage Location" + ], + "summary": "# Data Storage Location (US or EU)", + "content": "# Data Storage Location (US or EU)\n\nSentry supports data storage in both the US and the EU.\n\nYou can choose where to store your data when you’re setting up your Sentry account by selecting from the dropdown menu under \"Data Storage Location\" in the \"Create a New Organization\" section.\n\n**Please note that once selected, your data storage location can’t be changed. The only way to switch it is by creating a new organization.**\n\nYour selection determines your data storage location only. Sentry will continue to access and process your data in accordance with your agreement with Sentry for the Sentry service and our [Privacy Policy](https://sentry.io/privacy/).\n\nThe table below shows the location where your data will be stored at rest, based on your selection.\n\n| **Data Storage Location** | **Physical Location** |\n| ----------------------------- | --------------------- |\n| United States of America (US) | Iowa, USA |\n| European Union (EU) | Frankfurt, Germany |\n\n## [What Types of Data Are Stored Where](https://docs.sentry.io/organization/data-storage-location.md#what-types-of-data-are-stored-where)\n\nHere’s a list of the types of data that will be stored in whichever data storage location (US or EU) you select.\n\n### [Data Stored In Selected Location (US or EU)](https://docs.sentry.io/organization/data-storage-location.md#data-stored-in-selected-location-us-or-eu)\n\n* Error events, activity, and issue links\n* Transactions\n* Profiles\n* Release health\n* Releases, debug symbols, and source maps\n* Debug symbol metadata and source map metadata\n* Session replays\n* Backups for these resources\n\n### [Data Stored in US](https://docs.sentry.io/organization/data-storage-location.md#data-stored-in-us)\n\nHere’s a list of the types of data that may be stored in the US.\n\n* User accounts, notification settings, and 2FA authenticators (User accounts are shared by many organizations.)\n* Organization integration metadata (Integrations can be shared across organizations and many of our integrations only support sending their webhooks to a singular destination.)\n* Access tokens for users and organizations\n* Organization settings, configurations, and teams\n* Organization audit logs\n* Cron check-ins\n* Project metadata\n* DSN keys\n* Detailed usage data\n* Sentry applications\n* SSO, SAML, and SCIM metadata\n\nMetadata that lets Sentry identify an organization will be replicated out of the organization's data storage location to facilitate login, and backwards-compatible APIs. You can always confirm the location of your organization by viewing your organization's settings page.\n\n### [Data Stored in All Locations (US and EU)](https://docs.sentry.io/organization/data-storage-location.md#data-stored-in-all-locations-us-and-eu)\n\nHere’s a list of the types of data that will be stored in both data storage locations (US and EU).\n\n* Uptime checks\n\n##### Uptime Monitoring\n\nFor uptime monitoring to work effectively, we perform uptime checks from multiple geolocations. As a result, uptime check data may be stored outside your selected data region, beyond the storage commitments outlined on this page.\n\n## [Using Data Storage Location APIs](https://docs.sentry.io/organization/data-storage-location.md#using-data-storage-location-apis)\n\nTo ensure that your API requests are only processed within your selected data storage location, use the region-specific domain:\n\n| **Data Storage Location** | **API domain** |\n| ----------------------------- | -------------- |\n| United States of America (US) | us.sentry.io |\n| European Union (EU) | de.sentry.io |\n\nFor [data stored in the US](https://docs.sentry.io/organization/data-storage-location.md#data-stored-in-us), your API domain should be `sentry.io`.\n\n## [Switching Data Storage Locations for Existing Organizations](https://docs.sentry.io/organization/data-storage-location.md#switching-data-storage-locations-for-existing-organizations)\n\n### [SaaS](https://docs.sentry.io/organization/data-storage" + }, + { + "path": "organization/dynamic-sampling.md", + "title": "Dynamic Sampling", + "hierarchy": [ + "Organization", + "Dynamic Sampling" + ], + "summary": "# Dynamic Sampling", + "content": "# Dynamic Sampling\n\n## [Overview](https://docs.sentry.io/organization/dynamic-sampling.md#overview)\n\nProjects that generate large event volume can quickly consume your billing quota. This may create an imbalance where high-volume projects get more visibility, leaving insufficient quota for monitoring your other projects. That's where dynamic sampling comes in.\n\nDynamic Sampling employs advanced sampling techniques to retain a representative sample of the data you send to Sentry. Its algorithms are designed to prioritize keeping samples that are valuable for debugging and analysis, while reducing the retention of common or redundant data.\n\nDynamic sampling only applies to spans and transactions, not errors.\n\nThere are two available flavors of dynamic sampling, depending on the plan type of your organization:\n\n* **Dynamic Sampling with Sampling Priorities** - available on selected Team, Business & Enterprise plans\\\n By analyzing incoming traffic patterns, Dynamic Sampling is able to automatically tailor its sample rate to both the actual traffic volume and the content of accepted transactions. For more details, check out the [Dynamic Sampling Priorities](https://docs.sentry.io/organization/dynamic-sampling.md#dynamic-sampling-priorities) section.\n* **Dynamic Sampling with Sampling Priorities & Custom Sample Rates** - available on selected Enterprise plans\\\n Configure and adjust sample rates for stored spans right from the UI without needing to modify your SDK. This makes it possible for you to make instant updates without waiting for code freezes, app store approvals, or redeployments. In addition, by analyzing incoming traffic patterns, Dynamic Sampling is able to prioritize data based on the content of accepted spans. For more details, check out the [Configuration of Custom Sample Rates](https://docs.sentry.io/organization/dynamic-sampling.md#configuration-of-custom-sample-rates) section.\n\n## [Prerequisites](https://docs.sentry.io/organization/dynamic-sampling.md#prerequisites)\n\n* [Admin-level permissions](https://docs.sentry.io/organization/membership.md).\n\n* Latest version of one of the below SDKs:\n\n * Python: 1.7.2 or later\n * JavaScript: 7.6.0 or later\n * Apple: 7.23.0 or later\n * Android: 6.5.0 or later\n * React Native: 4.3.0 or later\n * Dart and Flutter: 6.11.0 or later\n * PHP: 3.9.0 or later\n * Laravel: 3.0.0 or later\n * Symfony: 4.4.0 or later\n * Ruby: 5.5.0 or later\n * Java: 6.5.0 or later\n * .NET: 3.22.0 or later\n * Go: 0.16.0 or later\n\n## [Configuration of Custom Sample Rates](https://docs.sentry.io/organization/dynamic-sampling.md#configuration-of-custom-sample-rates)\n\nConfiguration of custom sample rates has been available on selected Enterprise plans since June 2024.\n\nIn this section, you'll learn how to use Dynamic Sampling in your organization. Dynamic Sampling offers two modes based on the desired sampling control:\n\n* **Default mode** allows you to set an organization level target sample rate and automatically adjusts project level sampling to match the organization level sample rate.\n* **Advanced mode** gives you more granular control by allowing you to manually set the sampling rate at the project level.\n\n### [Default Mode](https://docs.sentry.io/organization/dynamic-sampling.md#default-mode)\n\nTo use Dynamic Sampling in default mode, you have to specify a target sample rate for your entire organization, which determines how much incoming traffic should be stored across all your projects. Dynamic Sampling then distributes this sample rate across your projects automatically. Sample rates are adjusted continuously to account for changes in event volume over time.\n\n**The following adjustments are performed:**\n\n* Low-Volume Projects get a higher sample rate, ensuring important data isn’t missed.\n* High-Volume Projects have reduced sample rates to balance overall storage.\n* Sample rates are continuously adjusted based on recent traffic patterns, using a short sliding window to adapt to seasonal chan" + }, + { + "path": "organization/early-adopter-features.md", + "title": "Early Adopter Features", + "hierarchy": [ + "Organization", + "Early Adopter Features" + ], + "summary": "# Early Adopter Features", + "content": "# Early Adopter Features\n\nIf you’re interested in being an Early Adopter, you can turn your organization’s Early Adopter status on/off in **Settings > General Settings**. This will affect all users in your organization and can be turned back off just as easily.\n\nThis page lists the features that you'll have access to when you opt-in as \"Early Adopter\". Note that features are sometimes released to early adopters in waves, so you may not see a feature immediately upon enabling the \"Early Adopter\" setting.\n\nLimitations:\n\n* This list does not include new features that aren't controlled by the \"Early Adopter\" setting, such as alphas, closed betas, or limited availability features that require manual opt-in.\n* This list is not guaranteed to be 100% up-to-date, but it is monitored and updated frequently.\n\n## [Current Early Adopter Features](https://docs.sentry.io/organization/early-adopter-features.md#current-early-adopter-features)\n\n* [Issue Views](https://docs.sentry.io/product/issues/issue-views.md)\n* [Issue Status](https://docs.sentry.io/product/issues/states-triage.md) tags\n* [Span Summary](https://docs.sentry.io/product/insights/overview/transaction-summary.md#span-summary)\n* [Dynamic Alerts](https://docs.sentry.io/product/alerts/create-alerts/metric-alert-config.md#dynamic-alerts)\n* [New Trace Explorer With Span Metrics](https://docs.sentry.io/product/explore/new-trace-explorer.md)\n" + }, + { + "path": "organization/getting-started.md", + "title": "Set Up Your Organization", + "hierarchy": [ + "Organization", + "Getting Started" + ], + "summary": "# Set Up Your Organization", + "content": "# Set Up Your Organization\n\nIn this guide, we'll provide the recommended checklist for setting up your [Sentry organization account](https://sentry.io) so you can get started with Sentry error monitoring.\n\nIf you'd prefer a TL;DR, download our [\"Admin Quick Reference Guide\"](https://docs.sentry.io/pdfs/Admin-quick-reference-guide.pdf)\n\nWe understand that some of you are running enterprise organizations, while others of you are hobbyists just coding for fun. Below, we've linked where you should get started, depending on your situation.\n\n* You're configuring Sentry for a large organization? [Start at step 1](https://docs.sentry.io/organization/getting-started.md#1-enable-single-sign-on-access)\n* You're working on an application with a small team? [Start step 2](https://docs.sentry.io/organization/getting-started.md#2-set-up-teams)\n* You're a hobbyist or working on an app alone? [Start at step 3](https://docs.sentry.io/organization/getting-started.md#3-configure-integrations)\n\nOf course, you're welcome to go through all the steps, even if you're a team of one.\n\n## [1. Enable Single Sign-On Access](https://docs.sentry.io/organization/getting-started.md#1-enable-single-sign-on-access)\n\n[Single sign-on (SSO)](https://docs.sentry.io/organization/authentication/sso.md) allows your team to log in quickly, streamlines the on/off-boarding process for member accounts, and strengthens your login with secure credentials. Sentry provides out-of-the-box configuration for integrating SSO providers like [Okta](https://docs.sentry.io/organization/authentication/sso.md#okta) and [Azure Active Directory](https://docs.sentry.io/organization/authentication/sso.md#azure-active-directory) (SAML) or [Google](https://docs.sentry.io/organization/authentication/sso.md#google-business-app) and [GitHub](https://docs.sentry.io/organization/authentication/sso.md#github-organizations) (Oauth). In addition, we provide a generic configuration option for any other [SAML2 Identity Provider](https://docs.sentry.io/organization/authentication/sso/saml2.md).\n\nSentry also supports a subset of the specification for System for Cross-Domain Identity Management (SCIM) for [Okta](https://docs.sentry.io/organization/authentication/sso/okta-sso/okta-scim.md) and [Azure AD](https://docs.sentry.io/organization/authentication/sso/azure-sso.md#scim-integration).\n\n## [2. Set Up Teams](https://docs.sentry.io/organization/getting-started.md#2-set-up-teams)\n\nNow that SSO is configured and members have created their accounts, add them to their Sentry Teams. Teams are associated with your [Sentry projects](https://docs.sentry.io/organization/getting-started.md#4-create-projects), and their members receive issue notifications in addition to becoming issue assignees. We recommend creating Sentry teams that align with your internal team structure (for example, *#Frontend*, *#Ops*, *#SDK*, and so on). To add a new team, go to **Settings > Teams** and click \"Create Team\".\n\nClick on a team name to open the team settings and manage its associated members and projects. Under the \"Members\" tab, add existing members to your team by clicking on \"Add Member > \\[Member Name]\".\n\nYou can also invite multiple new (external) members to join your organization and team by clicking on \"Add Member > Invite Member\".\n\nLearn more about different user roles in [Organization Management](https://docs.sentry.io/organization/membership.md).\n\n## [3. Configure Integrations](https://docs.sentry.io/organization/getting-started.md#3-configure-integrations)\n\nSentry integrates into your existing workflows by providing out-of-the-box integrations with widely-used apps and services. To enable and configure integrations, go to **Settings > Integrations**. There are several types of integrations available, but we recommend that you immediately set up integrations for:\n\n* [Alerting](https://docs.sentry.io/organization/getting-started.md#31-alert-notifications)\n* [Source code management](https://docs.sentry.io/organization/ge" + }, + { + "path": "organization/integrations.md", + "title": "Integrations", + "hierarchy": [ + "Organization", + "Integrations" + ], + "summary": "# Integrations", + "content": "# Integrations\n\nSentry integrates with your favorite apps and services. Each integration offers features that help track and triage your errors. If you're experiencing issues with some integrations after making changes to your Sentry instance or organization, check out our [troubleshooting guide](https://docs.sentry.io/organization/integrations/troubleshooting.md).\n\n## [Integration Platform](https://docs.sentry.io/organization/integrations.md#integration-platform)\n\nSentry’s integration platform provides a way for external services to interact with Sentry. Integrations utilizing this platform are first-class actors within Sentry, and you can build them for [public](https://docs.sentry.io/organization/integrations/integration-platform/public-integration.md) as well as [internal](https://docs.sentry.io/organization/integrations/integration-platform/internal-integration.md) use cases.\n\nFor more details, see the [full Integration Platform documentation](https://docs.sentry.io/organization/integrations/integration-platform.md).\n\n## [Notification & Incidents](https://docs.sentry.io/organization/integrations.md#notification--incidents)\n\n| Integration | Issue alerts | Metric alerts | Link Unfurling |\n| ---------------------------------------------------------------------------------------------------------- | ------------ | ------------- | -------------- |\n| [All Quiet](https://docs.allquiet.app/integrations/inbound/sentry) | X | | |\n| [Blar](https://docs.sentry.io/organization/integrations/notification-incidents/blar.md) | X | | |\n| [Cased](https://docs.sentry.io/organization/integrations/notification-incidents/cased.md) | X | | |\n| [Datadog](https://docs.datadoghq.com/integrations/sentry/) | X | | |\n| [Glue.ai](https://docs.sentry.io/organization/integrations/notification-incidents/glueai.md) | | X | |\n| [Microsoft Teams](https://docs.sentry.io/organization/integrations/notification-incidents/msteams.md) | X | X | |\n| [Opsgenie](https://docs.sentry.io/organization/integrations/notification-incidents/opsgenie.md) | X | X | |\n| [PagerDuty](https://docs.sentry.io/organization/integrations/notification-incidents/pagerduty.md) | X | X | |\n| [PagerTree](https://docs.sentry.io/organization/integrations/notification-incidents/pagertree.md) | X | X | |\n| Pushover (Legacy) | X | | |\n| [Rootly](https://docs.sentry.io/organization/integrations/notification-incidents/rootly.md) | X | X | |\n| [SIGNL4](https://docs.sentry.io/organization/integrations/notification-incidents/signl4.md) | X | X | |\n| [Slack](https://docs.sentry.io/organization/integrations/notification-incidents/slack.md) | X | X | X |\n| [Discord](https://docs.sentry.io/organization/integrations/notification-incidents/discord.md) | X | X | |\n| [Spike.sh](https://docs.sentry.io/organization/integrations/notification-incidents/spikesh.md) | X | X | |\n| [Telegram](https://docs.sentry.io/organization/integrations/notification-incidents/telegram-alerts-bot.md) | X | X | " + }, + { + "path": "organization/integrations/cloud-monitoring.md", + "title": "Cloud Monitoring", + "hierarchy": [ + "Organization", + "Integrations", + "Cloud Monitoring" + ], + "summary": "# Cloud Monitoring", + "content": "# Cloud Monitoring\n\n* [Cloudflare Workers](https://docs.sentry.io/organization/integrations/cloud-monitoring/cloudflare-workers.md)\n* [Google Cloud Run](https://docs.sentry.io/organization/integrations/cloud-monitoring/gcp-cloud-run.md)\n* [Google Cloud Functions - Python](https://docs.sentry.io/platforms/python/integrations/gcp-functions.md)\n* [Google Cloud Functions - Node](https://docs.sentry.io/platforms/javascript/guides/gcp-functions.md)\n* [AWS Lambda - Python (Automatic)](https://docs.sentry.io/organization/integrations/cloud-monitoring/aws-lambda.md)\n* [AWS Lambda - Python (Manual)](https://docs.sentry.io/platforms/python/integrations/aws-lambda.md)\n* [AWS Lambda - Node (Automatic)](https://docs.sentry.io/organization/integrations/cloud-monitoring/aws-lambda.md)\n* [AWS Lambda - Node (Manual)](https://docs.sentry.io/platforms/javascript/guides/aws-lambda.md)\n" + }, + { + "path": "organization/integrations/cloud-monitoring/aws-lambda.md", + "title": "AWS Lambda", + "hierarchy": [ + "Organization", + "Integrations", + "Cloud Monitoring", + "Aws Lambda" + ], + "summary": "# AWS Lambda", + "content": "# AWS Lambda\n\nConnect Sentry to your AWS account to automatically add Sentry error and performance monitoring to your Node/Python Lambda functions.\n\n## [Install](https://docs.sentry.io/organization/integrations/cloud-monitoring/aws-lambda.md#install)\n\nSentry owner, manager, or admin permissions are required to install this integration.\n\n1. Navigate to **Settings > Integrations > AWS Lambda**.\n\n2. Press **Add Installation** to open the installation modal.\n\n3. Select the project for your Lambda integration. **Note:** This project cannot be changed after installation is complete. If you only have a single project, you'll skip this step.\n\n4. Click **Go To AWS**.\n\n5. Scroll to the bottom of the Create Stack page, check the box, then press **Create Stack** to create a CloudFormation stack in your current region. This stack allows Sentry to automatically instrument your Lambda functions.\n\n6. Wait for the stack to be created. Once it's confirmed and the status changes to **Create Complete**, click **I've created the stack** in the Sentry popup.\n\n7. Now copy your AWS Account ID, select the region you want to use, and press **Next**.\n\nYou need to create the CloudFormation stack only once per account, even when installing the integration in multiple regions. If you are setting up the integration in a second region, copy the externalId from the existing CloudFormation stack on the \"Parameters\" tab into the form shown above.\n\n8. Select the Lambda functions to automatically add the Sentry layer and necessary environment variables when you **Finish Setup**. **Note:** You can enable or disable Sentry on Lambda functions after installation.\n\nWait a few minutes as the Lambda functions are enabled. If any functions failed to instrument, follow the suggestions in Troubleshooting.\n\n### [Troubleshooting](https://docs.sentry.io/organization/integrations/cloud-monitoring/aws-lambda.md#troubleshooting)\n\nIf you need help solving issues with your Sentry AWS Lamba integration, you can read the edge cases documented here. If you need additional help, you can [ask on GitHub](https://github.com/getsentry/sentry-javascript/issues/new/choose). Customers on a paid plan may also contact support.\n\n* #### [Error `SentryRole already exists`](https://docs.sentry.io/organization/integrations/cloud-monitoring/aws-lambda.md#error-sentryrole-already-exists)\n\n The stack already exists in your account; you can proceed to the next step and add your AWS account information.\n\n* #### [Error `Invalid existing layer`](https://docs.sentry.io/organization/integrations/cloud-monitoring/aws-lambda.md#error-invalid-existing-layer)\n\n Your Lambda function has a layer that no longer exists. Please remove the problematic layer, then enable Sentry on the Lambda in the configuration view for the integration.\n\n* #### [Error `Please validate the CloudFormation stack was created successfully`](https://docs.sentry.io/organization/integrations/cloud-monitoring/aws-lambda.md#error-please-validate-the-cloudformation-stack-was-created-successfully)\n\n Sentry is unable to access your AWS account through your CloudFormation stack. This means either the stack has not been created or the external ID used doesn't match the one in your installation. You can go to the Parameters tab of the CloudFormation stack to copy the value of the external ID and paste it into the form field.\n\n* #### [Error `Invalid role associated with the lambda function`](https://docs.sentry.io/organization/integrations/cloud-monitoring/aws-lambda.md#error-invalid-role-associated-with-the-lambda-function)\n\n The role associated with your Lambda function no longer exists. Please add a new role to your Lambda function, then enable Sentry on the Lambda in the configuration view for the integration.\n\n## [Configure](https://docs.sentry.io/organization/integrations/cloud-monitoring/aws-lambda.md#configure)\n\nThe integration configuration view in Sentry allows you to do the following with your Lambda functions:\n\n* Enable Sentry\n* Disa" + }, + { + "path": "organization/integrations/cloud-monitoring/aws-lambda/how-it-works.md", + "title": "Lambda Layer Modifications", + "hierarchy": [ + "Organization", + "Integrations", + "Cloud Monitoring", + "Aws Lambda", + "How It Works" + ], + "summary": "# Lambda Layer Modifications", + "content": "# Lambda Layer Modifications\n\n## [Node](https://docs.sentry.io/organization/integrations/cloud-monitoring/aws-lambda/how-it-works.md#node)\n\nWhen Sentry is added to a Lambda function, the following modifications are made to your Lambda functions:\n\n* The layer for Sentry is added to your Lambdas. Any existing layers are honored and the Sentry layer is appended to the end.\n\n* Sentry adds the following environment variables\n\n * `NODE_OPTIONS`: This is to preload the `awslambda-auto` module which will automatically initialize Sentry\n * `SENTRY_DSN`: This is set to the [DSN](https://docs.sentry.io/product/sentry-basics/dsn-explainer.md) of your project\n * `SENTRY_TRACES_SAMPLE_RATE`: This sets the [sampling rate](https://docs.sentry.io/platforms/javascript/guides/node/configuration/sampling.md#sampling-transaction-events) for transactions. You can manually edit your environment variables if you want a different sampling rate.\n\n## [Python](https://docs.sentry.io/organization/integrations/cloud-monitoring/aws-lambda/how-it-works.md#python)\n\nWhen Sentry is added to a Lambda function, the following modifications are made to your Lambda functions:\n\n* The layer for Sentry is added to your Lambdas. Any existing layers are honored and the Sentry layer is appended to the end.\n\n And your Runtime handler will point to Sentry's handler that will initialize the SDK for you, and then call your Runtime handler to invoke your function\n\n* Sentry adds the following environment variables\n\n * `SENTRY_INITIAL_HANDLER`: This stores the value of your Runtime handler. If you choose to disable the Sentry layer, this value will be used to set the Runtime handler.\n * `SENTRY_DSN`: This is set to the [DSN](https://docs.sentry.io/product/sentry-basics/dsn-explainer.md) of your project\n * `SENTRY_TRACES_SAMPLE_RATE`: This sets the [sampling rate](https://docs.sentry.io/platforms/python/configuration/sampling.md#sampling-transaction-events) for transactions. You can manually edit your environment variables if you want a different sampling rate.\n" + }, + { + "path": "organization/integrations/cloud-monitoring/cloudflare-workers.md", + "title": "Cloudflare Workers", + "hierarchy": [ + "Organization", + "Integrations", + "Cloud Monitoring", + "Cloudflare Workers" + ], + "summary": "# Cloudflare Workers", + "content": "# Cloudflare Workers\n\nCloudflare Workers allow you to deploy serverless applications instantly across the globe with exceptional performance, reliability, and scale.\n\nThis integration is maintained and supported by the company that created it. For more details or questions, please contact Cloudflare through their support portal: <https://developers.cloudflare.com/support/contacting-cloudflare-support/>\n\n## [Install and Configure](https://docs.sentry.io/organization/integrations/cloud-monitoring/cloudflare-workers.md#install-and-configure)\n\nSentry owner, manager, or admin permissions are required to install this integration.\n\n1. Navigate to **Settings > Integrations > Cloudflare Workers**\n\n2. Follow the full [Cloudflare Workers installation instructions](https://developers.cloudflare.com/workers/observability/sentry-integration/).\n" + }, + { + "path": "organization/integrations/cloud-monitoring/gcp-cloud-run.md", + "title": "Google Cloud Run", + "hierarchy": [ + "Organization", + "Integrations", + "Cloud Monitoring", + "Gcp Cloud Run" + ], + "summary": "# Google Cloud Run", + "content": "# Google Cloud Run\n\nCloud Run helps developers save time in building and deploying their applications. Sentry helps save time in resolving production issues by providing detailed debugging capabilities.\n\n## [Install and Configure](https://docs.sentry.io/organization/integrations/cloud-monitoring/gcp-cloud-run.md#install-and-configure)\n\nSentry owner, manager, or admin permissions are required to install this integration.\n\n1. [Create an account](https://sentry.io/signup/) (or [Login](https://sentry.io/auth/login/)) on Sentry\n\n2. Choose your application platform\n\n3. Follow instructions to instrument your Cloud Run application. Detailed platform docs [here](https://docs.sentry.io/platforms.md).\n\n4. Deploy your Cloud Run application with GCP.\n" + }, + { + "path": "organization/integrations/compliance.md", + "title": "Compliance", + "hierarchy": [ + "Organization", + "Integrations", + "Compliance" + ], + "summary": "# Compliance", + "content": "# Compliance\n\n* [Elba](https://docs.sentry.io/organization/integrations/compliance/elba.md)\n* [Truto](https://docs.sentry.io/organization/integrations/compliance/truto.md)\n* [Vanta](https://docs.sentry.io/organization/integrations/compliance/vanta.md)\n* [Vanta EU](https://docs.sentry.io/organization/integrations/compliance/vanta-eu.md)\n" + }, + { + "path": "organization/integrations/compliance/elba.md", + "title": "Elba", + "hierarchy": [ + "Organization", + "Integrations", + "Compliance", + "Elba" + ], + "summary": "# Elba", + "content": "# Elba\n\nThis integration connects Sentry with Elba's access review platform to provide organizations with a comprehensive solution for managing and reviewing user access within Sentry. This helps users enhance security, ensure compliance, and improve operational efficiency by providing:\n\n* Risk Reduction: Regular access reviews help identify and eliminate unnecessary or unauthorized access, reducing the risk of data breaches and insider threats.\n* Proactive Management: Early detection of permission anomalies allows for prompt corrective actions.\n\nIt connects to Sentry's API to fetch detailed information about organization members, including their roles, team memberships, and permission levels. The retrieved data is presented within Elba's platform, where administrators can systematically review each user's access rights. And, The platform analyzes user permissions to identify potential security risks, such as excessive privileges or outdated access, and provides recommendations for remediation.\n\nThis integration is maintained and supported by Elba. For more details, or questions, feel free to contact <support@elba.security>.\n\n## [Install and Configure](https://docs.sentry.io/organization/integrations/compliance/elba.md#install-and-configure)\n\nSentry Owner, Manager, or Admin permissions are required to install this integration.\n\n1. Navigate to **Settings > Integrations > Elba**\n\n2. Follow the full [Elba installation instructions](https://sentry.elba.security/install).\n" + }, + { + "path": "organization/integrations/compliance/truto.md", + "title": "Truto", + "hierarchy": [ + "Organization", + "Integrations", + "Compliance", + "Truto" + ], + "summary": "# Truto", + "content": "# Truto\n\nThis integration is maintained and supported by the company that created it. For more details, or questions, feel free to contact <support@truto.one>.\n\n## [Install and Configure](https://docs.sentry.io/organization/integrations/compliance/truto.md#install-and-configure)\n\nSentry Owner, Manager, or Admin permissions are required to install this integration.\n\n1. Navigate to **Settings > Integrations > Truto**\n\n2. Follow the full [Truto installation instructions](https://truto.one/docs/integration-guides/sentry#sentry).\n" + }, + { + "path": "organization/integrations/compliance/vanta-eu.md", + "title": "Vanta EU", + "hierarchy": [ + "Organization", + "Integrations", + "Compliance", + "Vanta Eu" + ], + "summary": "# Vanta EU", + "content": "# Vanta EU\n\nSentry's Vanta EU integration automates the process of validating users and their compliance status within an organization. This saves time, reduces manual effort, and enhances the visibility of compliance-related information. Organizations benefit from real-time updates on their compliance state, helping them stay audit-ready and ensuring smoother internal operations.\n\nThis integration is maintained and supported by Vanta. For more details, questions, or support, feel free to contact Vanta Support at <support@vanta.com>.\n\n## [Install and Configure](https://docs.sentry.io/organization/integrations/compliance/vanta-eu.md#install-and-configure)\n\nSentry Owner, Manager, or Admin permissions are required to install this integration.\n\n1. Navigate to **Settings > Integrations > Vanta EU**\n\n2. Follow the full [Vanta installation instructions](https://help.vanta.com/en/articles/11345687-vanta-sentry-integration).\n" + }, + { + "path": "organization/integrations/compliance/vanta.md", + "title": "Vanta", + "hierarchy": [ + "Organization", + "Integrations", + "Compliance", + "Vanta" + ], + "summary": "# Vanta", + "content": "# Vanta\n\nSentry's Vanta integration grants Vanta read-only access to verify that Sentry organization members are associated with employees in your organization, which automates security compliance. This integration is maintained and supported by the company that created it. For more details, check out our [Integration Platform documentation](https://docs.sentry.io/organization/integrations/integration-platform.md).\n\n## [Install and Configure](https://docs.sentry.io/organization/integrations/compliance/vanta.md#install-and-configure)\n\nSentry owner, manager, or admin permissions are required to install this integration.\n\n1. Navigate to **Settings > Integrations > Vanta**\n\n2. Follow the full [Vanta installation instructions](https://help.vanta.com/en/articles/11345687-vanta-sentry-integration).\n" + }, + { + "path": "organization/integrations/data-visualization.md", + "title": "Data & Visualization", + "hierarchy": [ + "Organization", + "Integrations", + "Data Visualization" + ], + "summary": "# Data & Visualization", + "content": "# Data & Visualization\n\n* [Amazon SQS (Legacy)](https://docs.sentry.io/organization/integrations/data-visualization/amazon-sqs.md)\n* [Grafana](https://docs.sentry.io/organization/integrations/data-visualization/grafana.md)\n* [Segment (Legacy)](https://docs.sentry.io/organization/integrations/data-visualization/segment.md)\n* [Splunk (Legacy)](https://docs.sentry.io/organization/integrations/data-visualization/splunk.md)\n" + }, + { + "path": "organization/integrations/data-visualization/amazon-sqs.md", + "title": "Amazon SQS (Legacy)", + "hierarchy": [ + "Organization", + "Integrations", + "Data Visualization", + "Amazon Sqs" + ], + "summary": "# Amazon SQS (Legacy)", + "content": "# Amazon SQS (Legacy)\n\nAmazon SQS integration is deprecated and is not available to be installed on new projects.\n\nAmazon SQS is useful for a more in-depth analysis of exceptions, making it quick and easy to pipe exceptions back into your own systems. Or, use it to empower other teams, such as a Business Intelligence function.\n\nThis integration needs to be set up in each project for which you wish to use it. It is maintained and supported by the [Sentry community](https://open.sentry.io/).\n\n## [Install and Configure](https://docs.sentry.io/organization/integrations/data-visualization/amazon-sqs.md#install-and-configure)\n\nSentry owner, manager, or admin permissions are required to install this integration.\n\nNavigate to **Settings > Integrations > Amazon SQS**\n\n### [Data Forwarding](https://docs.sentry.io/organization/integrations/data-visualization/amazon-sqs.md#data-forwarding)\n\nConfigure [data forwarding](https://docs.sentry.io/concepts/data-management/data-forwarding.md) in **\\[Project] > Settings > Data Forwarding**, and provide the required information for the given integration.\n\nThe payload for Amazon is identical to our standard API event payload and will evolve over time. For more details on the format of this data, see our [API documentation](https://docs.sentry.io/api/events/retrieve-an-event-for-a-project.md).\n" + }, + { + "path": "organization/integrations/data-visualization/grafana.md", + "title": "Grafana", + "hierarchy": [ + "Organization", + "Integrations", + "Data Visualization", + "Grafana" + ], + "summary": "# Grafana", + "content": "# Grafana\n\nIf you make changes to your organization slug, you'll need to update your configuration for this integration. Learn more in our [troubleshooting guide](https://docs.sentry.io/organization/integrations/troubleshooting.md).\n\nVisualize your Sentry [Issues](https://docs.sentry.io/product/issues.md) and [Stats](https://docs.sentry.io/product/stats.md) data in Grafana with the Sentry [data source plugin](https://grafana.com/grafana/plugins/grafana-sentry-datasource/). Once installed, you can combine Sentry data with that of other sources, like your infrastructure data through Prometheus or your business data from your data warehouse, in a single dashboard.\n" + }, + { + "path": "organization/integrations/data-visualization/segment.md", + "title": "Segment (Legacy)", + "hierarchy": [ + "Organization", + "Integrations", + "Data Visualization", + "Segment" + ], + "summary": "# Segment (Legacy)", + "content": "# Segment (Legacy)\n\nSegment integration is deprecated and is not available to be installed on new projects.\n\nIf you make changes to your organization slug, you'll need to update your configuration for this integration. Learn more in our [troubleshooting guide](https://docs.sentry.io/organization/integrations/troubleshooting.md).\n\nSegment is useful for collecting, responsibly managing, and integrating your customer data with many other applications, including Sentry.\n\nThis integration needs to be set up in each project for which you wish to use it. It is maintained and supported by the [Sentry community](https://open.sentry.io/).\n\n## [Install and Configure](https://docs.sentry.io/organization/integrations/data-visualization/segment.md#install-and-configure)\n\nSentry owner, manager, or admin permissions are required to install this integration.\n\nNavigate to **Settings > Integrations > Segment**\n\n### [Data Forwarding](https://docs.sentry.io/organization/integrations/data-visualization/segment.md#data-forwarding)\n\nConfigure [data forwarding](https://docs.sentry.io/concepts/data-management/data-forwarding.md) in **\\[Project] > Settings > Data Forwarding**, and provide the required information for the given integration.\n" + }, + { + "path": "organization/integrations/data-visualization/splunk.md", + "title": "Splunk (Legacy)", + "hierarchy": [ + "Organization", + "Integrations", + "Data Visualization", + "Splunk" + ], + "summary": "# Splunk (Legacy)", + "content": "# Splunk (Legacy)\n\nSplunk integration is deprecated and is not available to be installed on new projects.\n\nConnect Splunk to Sentry with the [Data Forwarding](https://docs.sentry.io/concepts/data-management/data-forwarding.md) feature.\n\nWe only support Splunk Cloud plans. We do not support Splunk Enterprise plans. See the [Splunk documentation](https://dev.splunk.com/) for specific details on your Splunk installation.\n\nThis integration needs to be set up in each project for which you wish to use it. It is maintained and supported by the [Sentry community](https://open.sentry.io/).\n\n## [Install and Configure](https://docs.sentry.io/organization/integrations/data-visualization/splunk.md#install-and-configure)\n\nSentry owner, manager, or admin permissions are required to install this integration.\n\nNavigate to **Settings > Integrations > Splunk**\n\n### [Enabling HEC](https://docs.sentry.io/organization/integrations/data-visualization/splunk.md#enabling-hec)\n\nTo get started, you’ll need to first enable the HTTP Event Collector:\n\nUnder **Settings**, select **Data Inputs**:\n\nSelect **HTTP Event Collector** under Local Inputs:\n\nUnder your HEC settings, click \"Global Settings\":\n\nChange **All Tokens** to **Enabled**, and note the HTTP Port Number (`8088` by default):\n\nIf you’re running Splunk in a privileged environment, you may need to expose the HEC port.\n\n### [Creating a Sentry Input](https://docs.sentry.io/organization/integrations/data-visualization/splunk.md#creating-a-sentry-input)\n\nUnder HTTP Event Collector, create a new Sentry input by clicking \"New Token\":\n\nEnter a name (e.g. `Sentry`), and click \"Next\":\n\nSelect the index you wish to make accessible (e.g. `main`), and click \"Review\":\n\nYou’ll be prompted to review the input details. Click \"Submit\" to continue:\n\nThe input has now been created, and you should be presented with the **Token Value**:\n\n### [Enabling Splunk Forwarding](https://docs.sentry.io/organization/integrations/data-visualization/splunk.md#enabling-splunk-forwarding)\n\nTo enable Splunk forwarding, you’ll need the following:\n\n* Your instance URL (see note below)\n* The Sentry HEC token value\n\nIn Sentry, navigate to the project you want to forward events from, and click \"Project Settings\".\n\n### [Data Forwarding](https://docs.sentry.io/organization/integrations/data-visualization/splunk.md#data-forwarding)\n\nConfigure [data forwarding](https://docs.sentry.io/concepts/data-management/data-forwarding.md) in **\\[Project] > Settings > Data Forwarding**, and provide the required information for the given integration.\n\nAfter navigating to **Data Forwarding**, enable the Splunk integration:\n\nYour instance URL is going to vary based on the type of Splunk service you’re using. If you’re using self-service Splunk Cloud, the instance URL will be the URL of the Splunk instance running the HTTP Event Collector (HEC):\n\n```bash\nhttps://<host>:8088\n```\n\nFor all other Splunk Cloud plans, you’ll use the `http-inputs` prefix:\n\n```bash\nhttps://http-inputs-<host>:8088\n```\n\nIf you’re using Splunk behind your firewall, you’ll need to fill in the appropriate host.\n\nOnce you’ve filled in the required fields, hit **Save Changes**:\n\nWe’ll now begin forwarding all new events into your Splunk instance.\n\nSentry will internally limit the maximum number of events sent to your Splunk instance to 1000 per second.\n" + }, + { + "path": "organization/integrations/debugging.md", + "title": "Debugging", + "hierarchy": [ + "Organization", + "Integrations", + "Debugging" + ], + "summary": "# Debugging", + "content": "# Debugging\n\n* [Apigene](https://docs.sentry.io/organization/integrations/debugging/apigene.md)\n* [CodeComet](https://docs.sentry.io/organization/integrations/debugging/codecomet.md)\n* [Foam](https://docs.sentry.io/organization/integrations/debugging/foamai.md)\n* [Revise.dev](https://docs.sentry.io/organization/integrations/debugging/revisedev.md)\n* [Rookout](https://docs.sentry.io/organization/integrations/debugging/rookout.md)\n* [Sevvy](https://docs.sentry.io/organization/integrations/debugging/sevvy.md)\n* [Sourcery](https://docs.sentry.io/organization/integrations/debugging/sourcery.md)\n* [Tembo](https://docs.sentry.io/organization/integrations/debugging/tembo.md)\n" + }, + { + "path": "organization/integrations/debugging/apigene.md", + "title": "Apigene", + "hierarchy": [ + "Organization", + "Integrations", + "Debugging", + "Apigene" + ], + "summary": "# Apigene", + "content": "# Apigene\n\nApigene helps you effortlessly track and resolve application errors while enhancing performance with real-time insights.\n\nThis integration is maintained and supported by the company that created it. For more details, check out our [Integration Platform documentation](https://docs.sentry.io/organization/integrations/integration-platform.md).\n\n## [Install and Configure](https://docs.sentry.io/organization/integrations/debugging/apigene.md#install-and-configure)\n\nSentry owner, manager, or admin permissions are required to install this integration.\n\n1. Navigate to **Settings > Integrations > Apigene**\n\n2. Follow the full [Apigene installation instructions](https://www.apigene.ai/integrations/Sentry).\n" + }, + { + "path": "organization/integrations/debugging/codecomet.md", + "title": "CodeComet", + "hierarchy": [ + "Organization", + "Integrations", + "Debugging", + "Codecomet" + ], + "summary": "# CodeComet", + "content": "# CodeComet\n\nCodeComet developed an LLM-powered debugging agent that looks at error details and inspects corresponding code repositories to generate bug fixes. The end result is an explanation along with actual code for a developer to review. This integration is maintained and supported by CodeComet. For more details, questions, or support feel free to contact <support@codecomet.io>.\n\n## [Install and Configure](https://docs.sentry.io/organization/integrations/debugging/codecomet.md#install-and-configure)\n\nSentry Owner, Manager, or Admin permissions are required to install this integration.\n\n1. Navigate to **Settings > Integrations > CodeComet**\n\n2. Follow the full [CodeComet installation instructions](https://www.codecomet.io/docs/integrations#section4).\n" + }, + { + "path": "organization/integrations/debugging/foamai.md", + "title": "Foam", + "hierarchy": [ + "Organization", + "Integrations", + "Debugging", + "Foamai" + ], + "summary": "# Foam", + "content": "# Foam\n\nThis integration is maintained and supported by Foam.ai. For more details, check out our [Integration Platform documentation](https://docs.sentry.io/organization/integrations/integration-platform.md).\n\n## [Install and Configure](https://docs.sentry.io/organization/integrations/debugging/foamai.md#install-and-configure)\n\nSentry owner, manager, or admin permissions are required to install this integration.\n\n1. Navigate to **Settings > Integrations > Foam**\n\n2. Follow the interactive [set up guide from Foam](https://foam.ai/docs)\n" + }, + { + "path": "organization/integrations/debugging/revisedev.md", + "title": "Revise.dev", + "hierarchy": [ + "Organization", + "Integrations", + "Debugging", + "Revisedev" + ], + "summary": "# Revise.dev", + "content": "# Revise.dev\n\nRevise.dev is AI-powered automated code repair, and produce improvement.\n\nThis integration is maintained and supported by the company that created it. For more details, check out our [Integration Platform documentation](https://docs.sentry.io/organization/integrations/integration-platform.md).\n\n## [Install and Configure](https://docs.sentry.io/organization/integrations/debugging/revisedev.md#install-and-configure)\n\nSentry owner, manager, or admin permissions are required to install this integration.\n\n1. Navigate to **Settings > Integrations > Revise.dev**\n\n2. Follow the full [Revise.dev installation instructions](https://help.revise.dev/en/articles/10160760-sentry-installation).\n" + }, + { + "path": "organization/integrations/debugging/rookout.md", + "title": "Rookout", + "hierarchy": [ + "Organization", + "Integrations", + "Debugging", + "Rookout" + ], + "summary": "# Rookout", + "content": "# Rookout\n\nRookout adds a layer of depth to Sentry issues by allowing you to jump right from an Issue to a non-breaking breakpoint on the line that caused the error.\n\nThis integration is maintained and supported by the company that created it. For more details, check out our [Integration Platform documentation](https://docs.sentry.io/organization/integrations/integration-platform.md).\n\n## [Install and Configure](https://docs.sentry.io/organization/integrations/debugging/rookout.md#install-and-configure)\n\nSentry owner, manager, or admin permissions are required to install this integration.\n\nRookout **won't** work with self-hosted Sentry.\n\n1. Navigate to **Settings > Integrations > Rookout**\n\n2. In the resulting modal, approve the permissions by clicking \"Install\".\n\n## [Use Integration in Stack Trace](https://docs.sentry.io/organization/integrations/debugging/rookout.md#use-integration-in-stack-trace)\n\nAfter installing Rookout in Sentry, you can go straight to the line of code in your stack trace, and click the Rookout icon. That will take you directly to the same line of code in the same file inside Rookout.\n\n1. In Sentry, navigate to the specific **Issue** you want to link and navigate to the **Stack Trace**.\n\n2. In the Stack Trace, you'll see the option to open the line in Rookout by clicking on the Rookout icon.\n\n3. Clicking on the Rookout icon takes you to Rookout's web UI where you can continue the debugging process. Rookout makes the best guess for the corresponding project and file in its web UI and will take you to the correct line of code in the file.\n" + }, + { + "path": "organization/integrations/debugging/sevvy.md", + "title": "Sevvy", + "hierarchy": [ + "Organization", + "Integrations", + "Debugging", + "Sevvy" + ], + "summary": "# Sevvy", + "content": "# Sevvy\n\nThe Sevvy integration connects Sentry with Sevvy, an AI on-call engineer that monitors your production systems, debugs failures, and performs root-cause analysis using rich context from across your stack. When Issues are created or updated in Sentry, the agent enriches the event with data from your logs, metrics, source code, databases, docs, runbooks, PRs, deployments, and past incidents, summarizing the root cause and remediation steps.\n\nThis integration is maintained and supported by Sevvy. or more details, questions, or support feel free to contact <support@sevvyai.com>.\n\n## [Install and Configure](https://docs.sentry.io/organization/integrations/debugging/sevvy.md#install-and-configure)\n\nSentry owner, manager, or admin permissions are required to install this integration.\n\n1. Navigate to **Settings > Integrations > Sevvy**\n\n2. Follow the full [Sevvy installation instructions](https://docs.sevvyai.com/integrations/sentry).\n" + }, + { + "path": "organization/integrations/debugging/sourcery.md", + "title": "Sourcery", + "hierarchy": [ + "Organization", + "Integrations", + "Debugging", + "Sourcery" + ], + "summary": "# Sourcery", + "content": "# Sourcery\n\nSourcery does code reviews on pull requests to provide instant feedback on your code. This integration is maintained and supported by Sourcery. For more details, questions, or support feel free to contact <hello@sourcery.ai>.\n\n## [Install and Configure](https://docs.sentry.io/organization/integrations/debugging/sourcery.md#install-and-configure)\n\nSentry Owner, Manager, or Admin permissions are required to install this integration.\n\n1. Navigate to **Settings > Integrations > Sourcery**\n\n2. Follow the full [Sourcery installation instructions](https://docs.sourcery.ai/Integrations/sentry/).\n" + }, + { + "path": "organization/integrations/debugging/tembo.md", + "title": "Tembo", + "hierarchy": [ + "Organization", + "Integrations", + "Debugging", + "Tembo" + ], + "summary": "# Tembo", + "content": "# Tembo\n\nTembo takes postgres monitoring to PRs. It autonomously identifies database performance bottlenecks, writes optimized code fixes, and submits ready-to-deploy PRs directly to your repos. This integration is maintained and supported by Tembo. For more details, questions, or support feel free to contact <support@tembo.io>.\n\n## [Install and Configure](https://docs.sentry.io/organization/integrations/debugging/tembo.md#install-and-configure)\n\nSentry Owner, Manager, or Admin permissions are required to install this integration.\n\n1. Navigate to **Settings > Integrations > Tembo**\n\n2. Follow the full [Tembo installation instructions](https://docs.tembo.io/integrations/sentry).\n" + }, + { + "path": "organization/integrations/deployment.md", + "title": "Deployment", + "hierarchy": [ + "Organization", + "Integrations", + "Deployment" + ], + "summary": "# Deployment", + "content": "# Deployment\n\n* [Bitbucket Pipelines](https://docs.sentry.io/product/releases/setup/release-automation/bitbucket-pipelines.md)\n* [Expo](https://docs.sentry.io/organization/integrations/deployment/expo.md)\n* [GitHub Actions](https://docs.sentry.io/product/releases/setup/release-automation/github-actions.md)\n* [GitHub Deployment Gates](https://docs.sentry.io/product/releases/setup/release-automation/github-deployment-gates.md)\n* [Heroku](https://docs.sentry.io/organization/integrations/deployment/heroku.md)\n* [Netlify](https://docs.sentry.io/product/releases/setup/release-automation/netlify.md)\n* [Vercel](https://docs.sentry.io/organization/integrations/deployment/vercel.md)\n" + }, + { + "path": "organization/integrations/deployment/expo.md", + "title": "Expo", + "hierarchy": [ + "Organization", + "Integrations", + "Deployment", + "Expo" + ], + "summary": "# Expo", + "content": "# Expo\n\n## [Sentry Integration With Expo dashboard](https://docs.sentry.io/organization/integrations/deployment/expo.md#sentry-integration-with-expo-dashboard)\n\nIf you make changes to your organization slug, you'll need to update your configuration for this integration. Learn more in our [troubleshooting guide](https://docs.sentry.io/organization/integrations/troubleshooting.md).\n\nThe Sentry integration with Expo allows you to view crash reports and [Session Replays](https://docs.sentry.io/platforms/react-native/session-replay.md) for your Expo app deployments directly within your Expo Application Services (EAS) dashboard. This integration provides a direct link to Sentry stack traces with full context, sessions replays, and debugging capabilities.\n\n### [Install](https://docs.sentry.io/organization/integrations/deployment/expo.md#install)\n\nSentry owner, manager, or admin permissions are required to install this integration.\n\n1. Log in to your Expo dashboard and open **Account Settings > Overview** (`https://expo.dev/accounts/[your-account]/settings`).\n2. Locate the **Connections** section and click **Connect** next to Sentry.\n3. Login to Sentry and accept the integration into your organization. You will be redirected back to Account Settings > Overview.\n\n### [Configure](https://docs.sentry.io/organization/integrations/deployment/expo.md#configure)\n\n#### [Link Your Projects](https://docs.sentry.io/organization/integrations/deployment/expo.md#link-your-projects)\n\nAfter connecting your accounts, you need to link your Expo dashboard Project to your Sentry Project:\n\n1. Open **Projects > \\[Your Project] > Configuration > Project settings** in Expo dashboard.\n2. Click **Link** and select your Sentry Project from the dropdown.\n\n### [Usage](https://docs.sentry.io/organization/integrations/deployment/expo.md#usage)\n\nTo see your Sentry Issues and Replays in Expo dashboard, you'll first need to ensure you've created a [Expo dashboard channel](https://docs.expo.dev/eas-update/how-it-works/) and assigned builds to it to create an [EAS deployment](https://docs.expo.dev/eas-update/deployment/). Once this is done, you can view your Sentry data by:\n\n1. Open **Projects > \\[Your Project] > Updates > Deployments > \\[Deployment]** to view Sentry data from a Release.\n\nTo take advantage of this integration, you need to add the Sentry React Native SDK to your Expo application. You can easily set up the SDK by running the Sentry wizard:\n\n```bash\nnpx @sentry/wizard@latest -i reactNative\n```\n\nFor more details on using Sentry with Expo, refer to the [Sentry documentation](https://docs.sentry.io/platforms/react-native.md) for React Native applications.\n" + }, + { + "path": "organization/integrations/deployment/heroku.md", + "title": "Heroku", + "hierarchy": [ + "Organization", + "Integrations", + "Deployment", + "Heroku" + ], + "summary": "# Heroku", + "content": "# Heroku\n\nThis integration needs to be set up in each project for which you wish to use it. It is maintained and supported by the [Sentry community](https://open.sentry.io/).\n\n### [Register the Add-on](https://docs.sentry.io/organization/integrations/deployment/heroku.md#register-the-add-on)\n\nSentry provides a native add-on for Heroku. While this add-on is not required, it will allow you to maintain consolidated billing inside of Heroku, as well as enable easy configuration of your Sentry credentials.\n\nTo add Sentry to an existing Heroku app, head over to the [Sentry Heroku add-on](https://elements.heroku.com/addons/sentry) page.\n\nOnce done, you’ll be able to confirm that Sentry’s credentials are available via your config:\n\n```bash\nheroku config:get SENTRY_DSN\n```\n\nIf you’re not using the add-on, you can still bind the `SENTRY_DSN` environment variable which the SDK will automatically pick up.\n\n### [Install the SDK](https://docs.sentry.io/organization/integrations/deployment/heroku.md#install-the-sdk)\n\nWhether you’re using the add-on or not, you’ll still need to [install the SDK](https://docs.sentry.io/platforms.md) per our standard platform-specific instructions.\n\n### [Configure Releases](https://docs.sentry.io/organization/integrations/deployment/heroku.md#configure-releases)\n\nWhether you use the add-on or configure Sentry yourself, you’ll also likely want to grant access to your dyno metadata, which will allow Sentry to automatically pick up the git SHA of the release your dyno is running.\n\nTo do this, enable the `runtime-dyno-metadata` feature:\n\n```bash\nheroku labs:enable runtime-dyno-metadata -a <app name>\n```\n\nThis exposes the `HEROKU_SLUG_COMMIT` environment variable, which most Sentry SDKs will automatically detect and use for configuration.\n\nNext, you’ll want to add your repository and set up an app webhook:\n\n1. Start by connecting your repository to your Sentry organization so we automatically retrieve your commit data. Find your repository integration (GitHub, GitLab, Bitbucket, for example) in **Settings > Integrations**. From the Configurations tab, click \"Configure\".\n\n On the Configure page, click \"Add Repository\" then select the repository you want to use.\n\n2. Find the Heroku integration in **Settings > Integrations**, click \"Add to Project\", then select the project you want to use with Heroku.\n\n3. In the Heroku integration configuration, specify which repository and deploy environment to be associated with your Sentry project.\n\n4. Navigate to your project’s Release settings and copy the app webhook Heroku cli command to your Heroku configuration.\n\n5. After running the Heroku cli command you'll see a Webhooks Signing Secret. Copy and paste this into the \"Webhook Secret\" field in Sentry.\n\nYou’ll start getting rich commit information and deploy emails with each new release, as well as tracking of which release issues were seen within.\n" + }, + { + "path": "organization/integrations/deployment/vercel.md", + "title": "Vercel", + "hierarchy": [ + "Organization", + "Integrations", + "Deployment", + "Vercel" + ], + "summary": "# Vercel", + "content": "# Vercel\n\n## [Releases and Source Map Integration](https://docs.sentry.io/organization/integrations/deployment/vercel.md#releases-and-source-map-integration)\n\nIf you make changes to your organization slug, you'll need to update your configuration for this integration. Learn more in our [troubleshooting guide](https://docs.sentry.io/organization/integrations/troubleshooting.md).\n\nConnect your Sentry and Vercel projects to automatically notify Sentry of every deployment and upload source maps for your Next.js application. To learn more about using Sentry in your Next.js app, check out the [Next.js SDK](https://docs.sentry.io/platforms/javascript/guides/nextjs.md).\n\n### [Install](https://docs.sentry.io/organization/integrations/deployment/vercel.md#install)\n\nSentry owner, manager, or admin permissions are required to install this integration.\n\n1. Visit <https://vercel.com/integrations/sentry>\n\n2. Click \"Add Integration\" and follow the setup to select the Vercel scope, the Vercel projects, and review the app's permissions.\n\n ##### Important\n\n The installation created an internal integration to generate an auth token used in building releases. If the Vercel internal integration is deleted, your Vercel integration will stop working.\n\n### [Configure](https://docs.sentry.io/organization/integrations/deployment/vercel.md#configure)\n\nUse Vercel to [link projects](https://docs.sentry.io/organization/integrations/deployment/vercel.md#project-linking) for uploading source maps and notifiying Sentry of release deployment.\n\n#### [Project Linking](https://docs.sentry.io/organization/integrations/deployment/vercel.md#project-linking)\n\n1. When prompted by the installer, select a Sentry project and a Vercel project to link together.\n\n * This step will generate environment variables in the selected Vercel project. Having these set means you can skip the [CLI Configuration step](https://github.com/getsentry/sentry-webpack-plugin#cli-configuration) in the Sentry webpack plugin setup. You can see these in Vercel in **Project Settings > General > Environment Variables**.\n\n - `SENTRY_ORG` - the name of your Sentry organization\n - `SENTRY_PROJECT` - the name of your linked Sentry project\n - `SENTRY_AUTH_TOKEN` - the auth token from the Vercel Internal Integration that was created upon installation\n - `NEXT_PUBLIC_SENTRY_DSN` - the linked Sentry project's DSN for usage in the Next.js SDK\n\n2. Redeploy your Vercel project in order to trigger a release.\n\n### [Usage](https://docs.sentry.io/organization/integrations/deployment/vercel.md#usage)\n\n* If you have not already done so, [instrument your code with Sentry](https://docs.sentry.io/platforms/javascript.md).\n* Ensure you have [installed a repository integration](https://docs.sentry.io/product/releases/setup/release-automation.md) and added the relevant repository.\n* Add a Sentry bundler plugin to your bundler configuration ([webpack plugin](https://www.npmjs.com/package/@sentry/webpack-plugin), [Vite Plugin](https://www.npmjs.com/package/@sentry/vite-plugin), [Esbuild Plugin](https://www.npmjs.com/package/@sentry/esbuild-plugin), [Rollup Plugin](https://www.npmjs.com/package/@sentry/rollup-plugin)). If you are using Sentry's Next.js, or SvelteKit SDKs this will already have been done for you.\n* In case you already have a Vercel project integrated with Sentry, ensure the Sentry project you link is the one you're already using to report errors.\n\n### [Uninstallation](https://docs.sentry.io/organization/integrations/deployment/vercel.md#uninstallation)\n\n1. You can uninstall the integration from Vercel or Sentry. To do so in Sentry, navigate to **Settings > Integrations > Vercel > Configurations**, click \"Uninstall\", and confirm.\n\n2. Delete the internal integration that was created by navigating to **Settings > Developer Settings** and clicking the trash can icon next to \"Vercel Internal Integration\". You will be prompted to confirm the deletion by entering a string provided in the modal. Enter t" + }, + { + "path": "organization/integrations/feature-flag.md", + "title": "Feature Flags", + "hierarchy": [ + "Organization", + "Integrations", + "Feature Flag" + ], + "summary": "# Feature Flags", + "content": "# Feature Flags\n\n* [Flagsmith](https://docs.sentry.io/organization/integrations/feature-flag/flagsmith.md)\n* [LaunchDarkly](https://docs.sentry.io/organization/integrations/feature-flag/launchdarkly.md)\n* [Statsig](https://docs.sentry.io/organization/integrations/feature-flag/statsig.md)\n* [Split](https://docs.sentry.io/organization/integrations/feature-flag/split.md)\n* [Unleash](https://docs.sentry.io/organization/integrations/feature-flag/unleash.md)\n* [Generic](https://docs.sentry.io/organization/integrations/feature-flag/generic.md)\n" + }, + { + "path": "organization/integrations/feature-flag/flagsmith.md", + "title": "Flagsmith", + "hierarchy": [ + "Organization", + "Integrations", + "Feature Flag", + "Flagsmith" + ], + "summary": "# Flagsmith", + "content": "# Flagsmith\n\n## [Evaluation Tracking](https://docs.sentry.io/organization/integrations/feature-flag/flagsmith.md#evaluation-tracking)\n\nSentry can track flag evaluations as they happen within your application. Flag evaluations will appear in the \"Feature Flag\" section of the Issue Details page as a table, with \"suspect\" flag predictions highlighted in yellow. Learn more about how to interact with feature flag insights within the Sentry UI by reading the [Issue Details page documentation](https://docs.sentry.io/product/issues/issue-details.md#feature-flags).\n\n### [Set Up Evaluation Tracking](https://docs.sentry.io/organization/integrations/feature-flag/flagsmith.md#set-up-evaluation-tracking)\n\nFlagsmith recommends using an OpenFeature SDK combined with a [Flagsmith provider](https://openfeature.dev/ecosystem?instant_search%5Bquery%5D=flagsmith\\&instant_search%5BrefinementList%5D%5Btype%5D%5B0%5D=Provider) to evaluate feature flags. To track these evaluations, visit one of our supported languages pages for OpenFeature:\n\n* [JavaScript](https://docs.sentry.io/platforms/javascript/configuration/integrations/openfeature.md)\n* [Python](https://docs.sentry.io/platforms/python/integrations/openfeature.md)\n\nVisit the [Flagsmith documentation](https://docs.flagsmith.com/integrations/apm/sentry#evaluation-tracking-setup) for specific instructions on how to set up the OpenFeature SDK with the Flagsmith provider.\n\n## [Change Tracking](https://docs.sentry.io/organization/integrations/feature-flag/flagsmith.md#change-tracking)\n\nSentry can track changes to feature flag definitions and report suspicious feature flag edits.\n\n### [Set Up Change Tracking](https://docs.sentry.io/organization/integrations/feature-flag/flagsmith.md#set-up-change-tracking)\n\nEnabling Change Tracking is a three-step process. To get started, visit the [feature flags settings page](https://sentry.io/orgredirect/organizations/:orgslug/settings/feature-flags/change-tracking/) in a new tab. Then follow the steps listed below.\n\n1. **Click the \"Add New Provider\" button.**\n\n * One webhook secret can be registered per provider type.\n * Select Generic in the dropdown that says \"Select a provider\".\n\n2. **Register the webhook URL**.\n\n * Go to your Flagsmith project dashboard and navigate to the `/project/:projectid/integrations` page, which can be found by clicking \"Integrations\" on the top navigation bar.\n * Find the Sentry option, and click \"Add Integration\", which will open a modal.\n * Select the Environment from which flag change events will trigger.\n * Copy the webhook URL from Sentry settings and paste it into \"Webhook URL\" in the Flagsmith \"Sentry Integration\" modal.\n\n3. **Set the Signing Secret**.\n\n * Still in the Flagsmith \"Sentry Integration\" modal, type in any string between 10 and 60 characters to use as your authorization token (\"secret\").\n * Copy the authorization token from the previous step and paste it into the input box next to \"Secret\" in Sentry settings.\n\nOnce saved, Sentry will now accept and authenticate all inbound hooks to your organization's feature flag webhook endpoint.\n" + }, + { + "path": "organization/integrations/feature-flag/generic.md", + "title": "Generic", + "hierarchy": [ + "Organization", + "Integrations", + "Feature Flag", + "Generic" + ], + "summary": "# Generic", + "content": "# Generic\n\n## [Evaluation Tracking](https://docs.sentry.io/organization/integrations/feature-flag/generic.md#evaluation-tracking)\n\nSentry can track flag evaluations as they happen within your application. Flag evaluations will appear in the \"Feature Flag\" section of the Issue Details page as a table, with \"suspect\" flag predictions highlighted in yellow. Learn more about how to interact with feature flag insights within the Sentry UI by reading the [Issue Details page documentation](https://docs.sentry.io/product/issues/issue-details.md#feature-flags).\n\n### [Set Up Evaluation Tracking](https://docs.sentry.io/organization/integrations/feature-flag/generic.md#set-up-evaluation-tracking)\n\nTo set up evaluation tracking, visit the [explore page](https://docs.sentry.io/product/explore/feature-flags.md) and select the language and SDK of your choice. Not using a supported SDK? That's okay. We support generic solutions for your existing system.\n\nTo set up generic evaluation tracking, visit one of our supported languages' pages:\n\n* [JavaScript](https://docs.sentry.io/platforms/javascript/configuration/integrations/featureflags.md)\n* [Python](https://docs.sentry.io/platforms/python/feature-flags.md#generic-api)\n\n## [Change Tracking](https://docs.sentry.io/organization/integrations/feature-flag/generic.md#change-tracking)\n\nSentry can track changes to feature flag definitions and report suspicious feature flag edits.\n\nFor the generic case, you need to write a webhook that conforms to our API. You can find instructions on how to do this below.\n\n### [Set Up Change Tracking](https://docs.sentry.io/organization/integrations/feature-flag/generic.md#set-up-change-tracking)\n\nEnabling Change Tracking is a four step process. To get started, visit the [feature flags settings page](https://sentry.io/orgredirect/organizations/:orgslug/settings/feature-flags/change-tracking/) in a new tab. Then follow the steps listed below.\n\n1. **Click the \"Add New Provider\" button.**\n\n * One webhook secret can be registered per provider type.\n * Select Generic in the dropdown that says \"Select a provider\".\n\n2. **Save the webhook URL**.\n * Copy the webhook URL from Sentry settings and save it for step 4.\n\n3. **Set the Signing Secret**.\n\n * In your feature flagging system's UI, find or create a \"Signing Secret\" for this webhook. If you are writing your own webhook, secrets must be 10-64 characters long (we recommend at least 32).\n * Copy the signing secret and paste it into the input box next to \"Secret\" in Sentry settings.\n * Save the secret by clicking \"Add Provider\" in Sentry settings.\n\n4. **Write your own webhook**.\n\n * Configure your system to POST to the webhook URL, whenever a feature flag definition changes.\n * Sign your webhook payloads with the Signing Secret from step 3.\n * See [#api-documentation](https://docs.sentry.io/organization/integrations/feature-flag/generic.md#api-documentation) for more details.\n\n### [API Documentation](https://docs.sentry.io/organization/integrations/feature-flag/generic.md#api-documentation)\n\nThis section documents our authentication procedures as well as the resource's fields and structure.\n\n#### [Authentication](https://docs.sentry.io/organization/integrations/feature-flag/generic.md#authentication)\n\nAuthentication is performed using a \"signing secret\". The \"signing secret\" must be used to sign the webhook payload in your feature flagging system. Signing the payload with your secret produces a \"signature\". Sentry needs this signature so it can compare the results of our signing function to yours. Both sides must use the same signing function. Sentry uses a HMAC SHA256 hex-digest of the web hook payload. In Python this function looks like:\n\n```python\ndef hmac_sha256_hex_digest(secret: str, message: bytes):\n return hmac.new(secret.encode(), message, hashlib.sha256).hexdigest()\n```\n\nThe result of this function must be sent as a header to Sentry: `X-Sentry-Signature signature_result`.\n\n#### [API Blueprint](ht" + }, + { + "path": "organization/integrations/feature-flag/launchdarkly.md", + "title": "LaunchDarkly", + "hierarchy": [ + "Organization", + "Integrations", + "Feature Flag", + "Launchdarkly" + ], + "summary": "# LaunchDarkly", + "content": "# LaunchDarkly\n\n## [Evaluation Tracking](https://docs.sentry.io/organization/integrations/feature-flag/launchdarkly.md#evaluation-tracking)\n\nSentry can track flag evaluations as they happen within your application. Flag evaluations will appear in the \"Feature Flag\" section of the Issue Details page as a table, with \"suspect\" flag predictions highlighted in yellow. Learn more about how to interact with feature flag insights within the Sentry UI by reading the [Issue Details page documentation](https://docs.sentry.io/product/issues/issue-details.md#feature-flags).\n\n### [Set Up Evaluation Tracking](https://docs.sentry.io/organization/integrations/feature-flag/launchdarkly.md#set-up-evaluation-tracking)\n\nTo set up evaluation tracking, visit one of our supported languages pages:\n\n* [JavaScript](https://docs.sentry.io/platforms/javascript/configuration/integrations/launchdarkly.md)\n* [Python](https://docs.sentry.io/platforms/python/integrations/feature-flags/launchdarkly.md)\n\n## [Change Tracking](https://docs.sentry.io/organization/integrations/feature-flag/launchdarkly.md#change-tracking)\n\nSentry can track changes to feature flag definitions and report suspicious feature flag edits.\n\n### [Set Up Change Tracking](https://docs.sentry.io/organization/integrations/feature-flag/launchdarkly.md#set-up-change-tracking)\n\nEnabling Change Tracking is a three step process. To get started, visit the [feature flags settings page](https://sentry.io/orgredirect/organizations/:orgslug/settings/feature-flags/change-tracking/) in a new tab. Then follow the steps listed below.\n\n1. **Click the \"Add New Provider\" button.**\n\n * One webhook secret can be registered per provider type.\n * Select LaunchDarkly in the dropdown that says \"Select a provider\".\n\n2. **Register the webhook URL**.\n * Copy the webhook URL from Sentry settings and paste it into LaunchDarkly within their [webhook integration UI](https://app.launchdarkly.com/settings/integrations/webhooks/new).\n\n3. **Set the Signing Secret**.\n\n * In the LaunchDarkly webhook UI, check the box that says \"Sign this webhook\".\n * Copy the signing secret in the revealed input box and paste it into the input box next to \"Secret\" in Sentry settings.\n * Save the secret by clicking \"Add Provider\" in Sentry settings.\n * Save the webhook by clicking \"Save settings\" in LaunchDarkly.\n\nOnce saved, Sentry will now accept and authenticate all inbound hooks to your organization's feature flag webhook endpoint.\n\n## [Metrics Integration](https://docs.sentry.io/organization/integrations/feature-flag/launchdarkly.md#metrics-integration)\n\nThis integration is maintained and supported by the company that created it. For more details or questions, feel free to contact <rrosefigura@launchdarkly.com>.\n\n### [Install and Configure](https://docs.sentry.io/organization/integrations/feature-flag/launchdarkly.md#install-and-configure)\n\nSentry owner or manager permissions are required to install this integration.\n\nThe LaunchDarkly integration is only available to organizations with a Business or Enterprise plan.\n\n1. Navigate to **Settings > Integrations > LaunchDarkly**\n\n2. Follow the full [LaunchDarkly installation instructions](https://docs.launchdarkly.com/integrations/sentry).\n" + }, + { + "path": "organization/integrations/feature-flag/split.md", + "title": "Split", + "hierarchy": [ + "Organization", + "Integrations", + "Feature Flag", + "Split" + ], + "summary": "# Split", + "content": "# Split\n\nIf you make changes to your organization slug, you'll need to update your configuration for this integration. Learn more in our [troubleshooting guide](https://docs.sentry.io/organization/integrations/troubleshooting.md).\n\nThe Split integration quickly processes and displays Sentry exception data in the Split platform as track events for analysis. You can control what environments and traffic types you're capturing exceptions for in the Split dashboard without having to touch any code.\n\nThis integration is maintained and supported by the company that created it. For more details, check out our [Integration Platform documentation](https://docs.sentry.io/organization/integrations/integration-platform.md).\n\n## [Install and Configure](https://docs.sentry.io/organization/integrations/feature-flag/split.md#install-and-configure)\n\nSentry owner, manager, or admin permissions are required to install this integration. The Split integration is available only for organizations on the Business and Enterprise plans.\n\nSplit **won't** work with self-hosted Sentry.\n\n1. Navigate to **Settings > Integrations > Split**\n\n2) Then, follow the full [Split installation instructions](https://help.split.io/hc/en-us/articles/360029879431).\n" + }, + { + "path": "organization/integrations/feature-flag/statsig.md", + "title": "Statsig", + "hierarchy": [ + "Organization", + "Integrations", + "Feature Flag", + "Statsig" + ], + "summary": "# Statsig", + "content": "# Statsig\n\n## [Evaluation Tracking](https://docs.sentry.io/organization/integrations/feature-flag/statsig.md#evaluation-tracking)\n\nSentry can track flag evaluations as they happen within your application. Flag evaluations will appear in the \"Feature Flag\" section of the Issue Details page as a table, with \"suspect\" flag predictions highlighted in yellow. Learn more about how to interact with feature flag insights within the Sentry UI by reading the [Issue Details page documentation](https://docs.sentry.io/product/issues/issue-details.md#feature-flags).\n\n### [Set Up Evaluation Tracking](https://docs.sentry.io/organization/integrations/feature-flag/statsig.md#set-up-evaluation-tracking)\n\nTo set up evaluation tracking, visit one of our supported languages pages:\n\n* [JavaScript](https://docs.sentry.io/platforms/javascript/configuration/integrations/statsig.md)\n* [Python](https://docs.sentry.io/platforms/python/integrations/statsig.md)\n\n## [Change Tracking](https://docs.sentry.io/organization/integrations/feature-flag/statsig.md#change-tracking)\n\nSentry can track changes to feature flag definitions and report suspicious feature flag edits.\n\n### [Set Up Change Tracking](https://docs.sentry.io/organization/integrations/feature-flag/statsig.md#set-up-change-tracking)\n\nEnabling Change Tracking is a three-step process. To get started, visit the [feature flags settings page](https://sentry.io/orgredirect/organizations/:orgslug/settings/feature-flags/change-tracking/) in a new tab. Then follow the steps listed below.\n\n1. **Click the \"Add New Provider\" button.**\n\n * One webhook secret can be registered per provider type.\n * Select Statsig in the dropdown that says \"Select a provider\".\n\n2. **Register the webhook URL**.\n\n * Go to your Statsig console and navigate to the `/integrations/` page, which can be found by clicking settings on the left-hand sidebar navigation, then \"Integrations\" under the \"Product Configuration\" heading.\n * Select the Webhook option, which will open a modal.\n * Copy the webhook URL provided in Sentry settings and paste it into the modal's \"Webhook URL\" input box.\n\n3. **Set the Signing Secret**.\n\n * Copy the Webhook Signing Secret from below the URL, and paste it into the input box next to \"Secret\" in Sentry settings.\n * Keep this string safe and note it down somewhere in case you need it in the future. Statsig will still show you the secret when reopening the webhook modal. Keep in mind that if you click \"Generate New Key\", you will need to add the secret to Sentry settings again.\n\n4. **Optional: Event Filters**.\n\n * We currently only support change tracking events from this webhook. To avoid sending unnecessary events, click \"Event Filtering\" on the top right of the Statsig modal and check off \"Configuration Changes\". Click save to confirm.\n * If you would like to only track changes from your Statsig development, staging, and/or production environments, check off the corresponding environment(s) under \"Configuration Changes\" > \"Environments\" in Event Filtering. Click save to confirm.\n * Similar to Environments, you may also filter by Configuration Changes by \"Tags\", \"Target Apps\", or \"Teams\".\n\n5. **Save your webhook**.\n\n * Save the secret by clicking \"Add Provider\" in Sentry settings.\n * Save the webhook by clicking \"Confirm\" in Statsig.\n\nOnce saved, Sentry will now accept and authenticate all inbound hooks to your organization's feature flag webhook endpoint.\n" + }, + { + "path": "organization/integrations/feature-flag/unleash.md", + "title": "Unleash", + "hierarchy": [ + "Organization", + "Integrations", + "Feature Flag", + "Unleash" + ], + "summary": "# Unleash", + "content": "# Unleash\n\n## [Evaluation Tracking](https://docs.sentry.io/organization/integrations/feature-flag/unleash.md#evaluation-tracking)\n\nSentry can track flag evaluations as they happen within your application. Flag evaluations will appear in the \"Feature Flag\" section of the Issue Details page as a table, with \"suspect\" flag predictions highlighted in yellow. Learn more about how to interact with feature flag insights within the Sentry UI by reading the [Issue Details page documentation](https://docs.sentry.io/product/issues/issue-details.md#feature-flags).\n\n### [Set Up Evaluation Tracking](https://docs.sentry.io/organization/integrations/feature-flag/unleash.md#set-up-evaluation-tracking)\n\nTo set up evaluation tracking, visit one of our supported languages pages:\n\n* [JavaScript](https://docs.sentry.io/platforms/javascript/configuration/integrations/unleash.md)\n* [Python](https://docs.sentry.io/platforms/python/integrations/feature-flags/unleash.md)\n\n## [Change Tracking](https://docs.sentry.io/organization/integrations/feature-flag/unleash.md#change-tracking)\n\nSentry can track changes to feature flag definitions and report suspicious feature flag edits.\n\n### [Set Up Change Tracking](https://docs.sentry.io/organization/integrations/feature-flag/unleash.md#set-up-change-tracking)\n\nEnabling Change Tracking is a three-step process. To get started, visit the [feature flags settings page](https://sentry.io/orgredirect/organizations/:orgslug/settings/feature-flags/change-tracking/) in a new tab. Then follow the steps listed below.\n\n1. **Click the \"Add New Provider\" button.**\n\n * One webhook secret can be registered per provider type.\n * Select Unleash in the dropdown that says \"Select a provider\".\n\n2. **Register the webhook URL**.\n\n * Go to your Unleash homepage and navigate to the `/integrations/` page, which can be found by clicking Integrations on the left-hand sidebar navigation, under the Configure heading.\n * Select the Webhook option. You should be on the `/integrations/create/webhook/` page.\n * Copy the webhook URL from Sentry settings and paste it into Unleash within their webhook integration UI.\n * Make sure the integration is toggled to Enabled.\n\n3. **Set the Signing Secret**.\n\n * In the Unleash webhook UI, under the Authorization input box, type in any 32-character string to use as your authorization token (\"secret\"). Keep this string safe and note it down somewhere in case you need it in the future; Unleash will not show you the token once you save the webhook. We recommend not using any sensitive tokens.\n * Copy your authorization token from the Unleash UI and paste it into the input box next to \"Secret\" in Sentry settings.\n\n4. **Configure your webhook.**\n\n * Under the Events input box, specify which feature flag events you'd like to send to Sentry. We currently support the following events:\n * Save the secret by clicking \"Add Provider\" in Sentry settings.\n * Save the webhook by clicking \"Create\" in Unleash.\n\nOnce saved, Sentry will now accept and authenticate all inbound hooks to your organization's feature flag webhook endpoint.\n" + }, + { + "path": "organization/integrations/integration-platform.md", + "title": "Integration Platform", + "hierarchy": [ + "Organization", + "Integrations", + "Integration Platform" + ], + "summary": "# Integration Platform", + "content": "# Integration Platform\n\nSentry’s integration platform provides a way for external services to interact with Sentry using [webhooks](https://docs.sentry.io/organization/integrations/integration-platform/webhooks.md), [UI components](https://docs.sentry.io/organization/integrations/integration-platform/ui-components.md), and the [REST API](https://docs.sentry.io/api.md). Integrations using this platform are first-class actors within Sentry.\n\n## [Example App](https://docs.sentry.io/organization/integrations/integration-platform.md#example-app)\n\nIf you're new to the integration platform, it might help to get started with an example project. To help you out, we've built an [example application](https://github.com/getsentry/integration-platform-example), which you can use as a starting point. It demonstrates the different features and data available for your application:\n\nIt's a kanban application that uses many of the features available to Sentry integrations and it provides starter code in both Python and TypeScript. It also includes a step-by-step guide to setting up your first integration, as well as documentation and testing advice. Typically, the app should be safely consuming live Sentry data within minutes.\n\n## [Creating an Integration](https://docs.sentry.io/organization/integrations/integration-platform.md#creating-an-integration)\n\nIn [sentry.io](https://sentry.io), navigate to **Settings > Developer Settings**. From here, you can choose to create an [internal](https://docs.sentry.io/organization/integrations/integration-platform/internal-integration.md) or [public](https://docs.sentry.io/organization/integrations/integration-platform/public-integration.md) integration. Internal integrations can only be used by your organization, whereas public integrations can be published and are available for all Sentry users.\n\nThere are several configuration options for your integration, which are described briefly below. Each section provides links to more detailed information.\n\n## [Webhooks](https://docs.sentry.io/organization/integrations/integration-platform.md#webhooks)\n\nWebhooks allow your service to get requests about specific resources, depending on your selection. For more information, check out the [full Webhooks documentation](https://docs.sentry.io/organization/integrations/integration-platform/webhooks.md).\n\nIn order to receive webhook events, you must specify the webhook URL when creating an integration. After you've specified the webhook URL, you'll be able to toggle on \"Alert Rule Action\" and create issue and metric alerts that send notifications to your integration.\n\n## [UI Components](https://docs.sentry.io/organization/integrations/integration-platform.md#ui-components)\n\nThe Sentry integration platform provides the ability to add rich UI components to [sentry.io](https://sentry.io) itself through a simple, declarative syntax. For more information, check out the [full UI Components documentation](https://docs.sentry.io/organization/integrations/integration-platform/ui-components.md).\n\n## [Alerts](https://docs.sentry.io/organization/integrations/integration-platform.md#alerts)\n\nYou can make any integration available as an action in [issue alerts](https://docs.sentry.io/organization/integrations/integration-platform/webhooks/issue-alerts.md) and [metric alerts](https://docs.sentry.io/organization/integrations/integration-platform/webhooks/metric-alerts.md) by enabling the \"Alert Rule Action\" toggle. The integration will then show up as a service in the action section when creating or updating an alert rule. The interactive demo below shows how to set up an integration that can receive Sentry alerts.\n\nFor your service to receive webhooks for alert rules, you must have `Send a notification via <your integration>` as an action in the rule. Once that's set up, you'll start receiving webhook requests for triggered alerts. For more information about the request and payload, check out the [full Webhooks documentation](https://" + }, + { + "path": "organization/integrations/integration-platform/internal-integration.md", + "title": "Internal Integrations", + "hierarchy": [ + "Organization", + "Integrations", + "Integration Platform", + "Internal Integration" + ], + "summary": "# Internal Integrations", + "content": "# Internal Integrations\n\nWe've built an [example application](https://github.com/getsentry/integration-platform-example) to help you get started with building on Sentry's integration platform. Check it out for useful code snippets for adding these features in Python and TypeScript. See the [docs](https://docs.sentry.io/organization/integrations/integration-platform.md#example-app) for more information.\n\nInternal integrations are meant for custom integrations unique to your organization. They can also be as simple as an organization-wide token. Whether you are using just the API or all the integration platform features combined, internal integrations are for use within a single Sentry organization.\n\nInternal integrations don't require an OAuth flow. You receive an org-wide auth token immediately after creation:\n\nFor an example of how to build an internal integration, see [our Round Robin Issue Assignment integration](https://blog.sentry.io/2019/11/21/customize-your-sentry-workflow-a-sample-internal-integration) (or jump straight to [the code on GitHub](https://github.com/getsentry/sentry-round-robin)).\n\n## [Installation](https://docs.sentry.io/organization/integrations/integration-platform/internal-integration.md#installation)\n\nCreating an internal integration will automatically install it on your organization.\n\n## [Auth Tokens](https://docs.sentry.io/organization/integrations/integration-platform/internal-integration.md#auth-tokens)\n\nInternal integrations automatically generate an [authentication token](https://docs.sentry.io/organization/integrations/integration-platform.md#auth-tokens) when configured. If you need multiple tokens, or need to get a new one, you can go to **Settings > Developer Settings > \\[Your Internal Integration]** and do so. You can have up to 20 tokens at a time for each internal integration. These tokens do not expire automatically, but you can manually revoke them as needed.\n\n## [Image Requirements](https://docs.sentry.io/organization/integrations/integration-platform/internal-integration.md#image-requirements)\n\nInternal integrations don't require logos or icons to be uploaded, but you can upload them if you want to. The requirements for those are:\n\n* Logo size must be between 256 Γ— 256px and 1024 Γ— 1024px\n* File format must be PNG\n* Background must be transparent (unless the logo takes up the entire space)\n\nIf the integration has a [UI component](https://docs.sentry.io/organization/integrations/integration-platform/ui-components.md), you can also upload an icon that follows these requirements:\n\n* Icon size must be between 256 Γ— 256px and 1024 Γ— 1024px\n* File must be a PNG in RGBA format\n* All pixels must be black or transparent\n" + }, + { + "path": "organization/integrations/integration-platform/public-integration.md", + "title": "Public Integrations", + "hierarchy": [ + "Organization", + "Integrations", + "Integration Platform", + "Public Integration" + ], + "summary": "# Public Integrations", + "content": "# Public Integrations\n\nWe've built an [example application](https://github.com/getsentry/integration-platform-example) to help you get started with building on Sentry's integration platform. Check it out for useful code snippets for adding these features in Python and TypeScript. See the [docs](https://docs.sentry.io/organization/integrations/integration-platform.md#example-app) for more information.\n\nPublic integrations are for the \"general public\" of Sentry users. These start in an unpublished state for development purposes and can be submitted later for approval to publish. For more information, check out the [Publication section](https://docs.sentry.io/organization/integrations/integration-platform/public-integration.md#publication) of this page.\n\nThe code examples in the sections below demonstrate a potential use case that involves a Flask app receiving new issue webhooks from Sentry, calling the Sentry API for more data about the issue, and pushing it to Pushover as a generator of desktop/mobile notifications.\n\n## [Installation](https://docs.sentry.io/organization/integrations/integration-platform/public-integration.md#installation)\n\nUsers will have the option to install your integrations on the **Integrations** page in [sentry.io](https://sentry.io). If your integration is still in an unpublished state, the only Sentry organization that will be able to see or install it will be the organization that created the integration. Once published, clicking the name of the integration will allow users to see a description of your integration and the permissions that will be granted if the user chooses to install.\n\n## [OAuth Process](https://docs.sentry.io/organization/integrations/integration-platform/public-integration.md#oauth-process)\n\nAfter installation, if your user has approved all permissions, Sentry will generate a grant code and an installation ID. This information is sent by way of the `installation.created` webhook to the webhook URL specified in your configuration.\n\nHowever, if your integration has a redirect URL configured, the integration redirects the user’s browser to the configured URL with the grant code and installation ID in the query params.\n\nStart building your integration by implementing the redirect URL endpoint, `/setup` β€” typically where you exchange the grant code for a token that allows you to make API calls to Sentry:\n\n```python\nimport requests\nfrom flask import redirect, request\n\n@app.route('/setup', methods=['GET'])\ndef setup():\n code = request.args.get('code')\n install_id = request.args.get('installationId')\n\n url = u'https://sentry.io/api/0/sentry-app-installations/{}/authorizations/'\n url = url.format(install_id)\n\n payload = {\n 'grant_type': 'authorization_code',\n 'code': code,\n 'client_id': 'your-client-id',\n 'client_secret': 'your-client-secret',\n }\n\n resp = requests.post(url, json=payload)\n data = resp.json()\n\n token = data['token']\n refresh_token = data['refreshToken']\n # ... Securely store the install_id, token and refresh_token in DB ...\n\n return redirect('https://sentry.io/settings/')\n```\n\nAll public integrations can be installed via a fixed external url: `https://sentry.io/sentry-apps/<your-integration-slug>/external-install/`, that you can expose to users. Check out this example for `Linear`: <https://sentry.io/sentry-apps/linear/external-install/>. Note, if a user has multiple organizations, they'll be asked to choose the one they want for the installation from a dropdown menu.\n\n## [Auth Tokens](https://docs.sentry.io/organization/integrations/integration-platform/public-integration.md#auth-tokens)\n\nPublic integrations generate [authentication tokens](https://docs.sentry.io/organization/integrations/integration-platform.md#auth-tokens) after a successful [OAuth installation](https://docs.sentry.io/organization/integrations/integration-platform/public-integration.md#oauth-process). These tokens automatically expire every ei" + }, + { + "path": "organization/integrations/integration-platform/ui-components.md", + "title": "UI Components", + "hierarchy": [ + "Organization", + "Integrations", + "Integration Platform", + "Ui Components" + ], + "summary": "# UI Components", + "content": "# UI Components\n\nWe've built an [example application](https://github.com/getsentry/integration-platform-example) to help you get started with building on Sentry's integration platform! Check it out for useful code snippets for adding these features in Python and TypeScript. See the [docs](https://docs.sentry.io/organization/integrations/integration-platform.md#example-app) for more information.\n\nThe Sentry integration platform provides developers with the ability to define components to render within specific parts of [sentry.io](https://sentry.io), through a JSON-based schema.\n\nYou can define the following components:\n\n* [Issue Link](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/issue-link.md) (uses [FormField](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/formfield.md) components)\n* [Alert Rule Actions](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/alert-rule-action.md) (uses [FormField](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/formfield.md) components)\n* [Stack Trace Link](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/stacktrace-link.md)\n\n## [Schema](https://docs.sentry.io/organization/integrations/integration-platform/ui-components.md#schema)\n\nThe UI components are specified in the schema section of the integration details. The required form of this schema is:\n\n`schema.json`\n\n```json\n{\n \"elements\": [\n // Component schemas to be used by the integration\n // e.g. { \"type\": \"alert-rule-action\", ... }\n ]\n}\n```\n\n### [URI Guidelines](https://docs.sentry.io/organization/integrations/integration-platform/ui-components.md#uri-guidelines)\n\nThe `uri` keys in your schema elements describe the URI path that will receive a request from that UI component. Sentry will append the path in the `uri` field onto the host of your integration's *webhook URL*. For example, if the webhook URL is `https://example.com/webhook/`, and your schema's `uri` attribute is `/alerts/`, then the integration will receive requests to `https://example.com/alerts/`.\n\n## [Error Handling](https://docs.sentry.io/organization/integrations/integration-platform/ui-components.md#error-handling)\n\nComponent rendering either 100% works or shows nothing. To protect the integration from looking chaotic due to errors we have no control over, if any part of the third-party component rendering fails, nothing will render.\n\nIf there is an error in an issue linking component, the link will be disabled.\n" + }, + { + "path": "organization/integrations/integration-platform/ui-components/alert-rule-action.md", + "title": "Alert Rule Action", + "hierarchy": [ + "Organization", + "Integrations", + "Integration Platform", + "Ui Components", + "Alert Rule Action" + ], + "summary": "# Alert Rule Action", + "content": "# Alert Rule Action\n\nThe alert rule action component gives you to access to parameters to define routing or configuration in alert rules for your service. When alert rules are triggered for a user, the configured service will receive [issue alert](https://docs.sentry.io/organization/integrations/integration-platform/webhooks/issue-alerts.md) and [metric alert](https://docs.sentry.io/organization/integrations/integration-platform/webhooks/metric-alerts.md) webhook events, with the specified settings for that service, to further route the alert.\n\n## [Schema](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/alert-rule-action.md#schema)\n\n`schema.json`\n\n```json\n{\n \"elements\": [\n {\n \"type\": \"alert-rule-action\",\n \"title\": <String>,\n \"settings\": {\n \"type\": \"alert-rule-settings\",\n \"uri\": <URI>,\n \"required_fields\": <Array<FormField>>,\n \"optional_fields\": <Array<FormField>>,\n \"description\": <String>\n }\n }\n ]\n}\n```\n\n## [Attributes](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/alert-rule-action.md#attributes)\n\n* `title` - (Required) The title shown in the UI component.\n* `uri` - (Required) Sentry will make a POST request to the URI when the User submits the form. If the services fails to process the request (status code >= 400), this component will bubble up the error to the User with the provided response text. Check out our [URI Guidelines](https://docs.sentry.io/organization/integrations/integration-platform/ui-components.md#uri-guidelines) documentation for formatting help.\n* `required_fields` - (Required) List of [FormField](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/formfield.md) components the User is required to complete.\n* `optional_fields` - (Optional) List of [FormField](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/formfield.md) components the User may complete.\n* `description` - (Optional) Text that will be displayed above the form. Limited to 140 characters.\n\n## [Example](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/alert-rule-action.md#example)\n\n`schema.json`\n\n```json\n{\n \"elements\": [\n {\n \"type\": \"alert-rule-action\",\n \"title\": \"Create a Rekall Inc task\",\n \"settings\": {\n \"type\": \"alert-rule-settings\",\n \"uri\": \"/sentry/alert-rule\",\n \"required_fields\": [\n {\n \"type\": \"select\",\n \"label\": \"Project\",\n \"name\": \"project\",\n \"options\": [[\"1\", \"cornflakes\"]]\n },\n {\n \"type\": \"select\",\n \"label\": \"Assignee\",\n \"name\": \"assignee\",\n \"uri\": \"/sentry/alert-rule/options/users/\"\n }\n ]\n }\n }\n ]\n}\n```\n\n## [Issue Alert Request Format](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/alert-rule-action.md#issue-alert-request-format)\n\nWhen an issue alert fires, your service will need to read the settings from the alert payload. The `settings` are in `data.issue_alert.settings`. Check out the full [Issue Alert webhook documentation](https://docs.sentry.io/organization/integrations/integration-platform/webhooks/issue-alerts.md) for more information.\n\n```json\n{\n ...\n \"data\": {\n ...\n \"issue_alert\": {\n ...\n \"settings\": [\n {\n \"name\": \"title\",\n \"value\": \"Ticket Title\"\n },\n {\n \"name\": \"description\",\n \"value\": \"Ticket Description\"\n }\n ]\n }\n }\n}\n```\n\n## [Metric Alert Request Format](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/alert-rule-action.md#metric-alert-request-format)\n\nWhen a metric alert fires, your service will need to read the settings from the alert payload. The `settings` in this example are nested in `data.metric_alert.alert_rule.triggers[1].actions[0].setting" + }, + { + "path": "organization/integrations/integration-platform/ui-components/formfield.md", + "title": "FormField Components", + "hierarchy": [ + "Organization", + "Integrations", + "Integration Platform", + "Ui Components", + "Formfield" + ], + "summary": "# FormField Components", + "content": "# FormField Components\n\nThe [issue linking](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/issue-link.md) and [alert rule action](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/alert-rule-action.md) UI components can use `FormField` components to display attributes in their respective modals. These components can render custom forms with inputs specified according to the schemes below. They behave similarly to their HTML equivalents.\n\n## [Text](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/formfield.md#text)\n\n### [Schema](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/formfield.md#schema)\n\n`schema.json`\n\n```json\n{\n \"type\": \"text\",\n \"label\": <String>,\n \"name\": <String>,\n \"default\": <String>,\n}\n```\n\n### [Attributes](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/formfield.md#attributes)\n\n* `label` - (Required) Label text to be rendered for the form field\n\n* `name` - (Required) Value to use in `name` attribute of the field\n\n* `default` - default to pre-populate with. Options include `issue.title` and `issue.description`. Only used for [issue link](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/issue-link.md) components.\n\n * `issue.title` - title of the Sentry issue\n * `issue.description` - description of the Sentry issue\n\n## [Textarea](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/formfield.md#textarea)\n\n### [Schema](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/formfield.md#schema-1)\n\n`schema.json`\n\n```json\n{\n \"type\": \"textarea\",\n \"label\": <String>,\n \"name\": <String>,\n \"default\": <String>,\n}\n```\n\n### [Attributes](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/formfield.md#attributes-1)\n\n* `label` - (Required) Label text to be rendered for the form field\n\n* `name` - (Required) Value to use in `name` attribute of the field\n\n* `default` - default to pre-populate with options include `issue.title` and `issue.description`. Only used for [issue link](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/issue-link.md) components.\n\n * `issue.title` - title of the Sentry issue\n * `issue.description` - description of the Sentry issue\n\n## [Select](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/formfield.md#select)\n\n### [Schema](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/formfield.md#schema-2)\n\n`schema.json`\n\n```json\n{\n \"type\": \"select\",\n \"label\": <String>,\n \"name\": <String>,\n \"uri\": <URI>,\n \"async\": <Boolean>,\n \"options\": <Array<Array<String, String>>>,\n \"depends_on\": <Array<String>>,\n \"skip_load_on_open\": <Boolean>\n}\n```\n\n### [Attributes](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/formfield.md#attributes-2)\n\n* `label` - (Required) Label text to be rendered for the form field\n* `name` - (Required) Value to use in `name` attribute of the field\n* `uri` - (Required if developer doesn't provide `options`) URI to retrieve values from. Check out our [URI Guidelines](https://docs.sentry.io/organization/integrations/integration-platform/ui-components.md#uri-guidelines) documentation for formatting help.\n* `async` - (Optional) Used only if `uri` is present. If true (default), will query the URI as the user types, for autocomplete suggestions (see response format below). If false, will query the URI once initially to retrieve all possible options. This request *must* succeed, and the response *must* return data in the format Sentry expects, otherwise the entire component won't render.\n* `options` - (Required if developer doesn't provide `uri`) Static list of options in the format of `[[\"value1\", \"label1\"], [\"value2\", \"label2\"]]`\n* `depends_on` - (Option" + }, + { + "path": "organization/integrations/integration-platform/ui-components/issue-link.md", + "title": "Issue Link", + "hierarchy": [ + "Organization", + "Integrations", + "Integration Platform", + "Ui Components", + "Issue Link" + ], + "summary": "# Issue Link", + "content": "# Issue Link\n\nWith an issue linking UI component, you can connect Sentry issues with a task in your project management system. This functionality provides a way to use any project management tool you use or develop.\n\nThe issue link component displays with the text \"Link \\<Service> Issue\" in the **Issue Details** sidebar:\n\nClicking the link opens a modal allowing the user to create or link the issue to a task in the external service:\n\nWhen an external issue is created or linked in [sentry.io](https://sentry.io), a display name is shown that links back to the service where it was either created or linked. The display name is composed of two pieces: the `project` and the `identifier`. A hash (#) connects each piece. Here's an example of what it looks like in [sentry.io](https://sentry.io):\n\n## [Schema](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/issue-link.md#schema)\n\n`schema.json`\n\n```json\n{\n \"elements\": [\n {\n \"type\": \"issue-link\",\n \"link\": {\n \"uri\": <String>,\n \"required_fields\": <Array<FormField>>,\n \"optional_fields\": <Array<FormField>>\n },\n \"create\": {\n // Same as \"link\" schema\n }\n }\n ]\n}\n```\n\n## [Attributes](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/issue-link.md#attributes)\n\n* `uri` - (Required) The URI to request when the User submits the Link/Create Issue form. Check out our [URI Guidelines](https://docs.sentry.io/organization/integrations/integration-platform/ui-components.md#uri-guidelines) documentation for formatting help.\n* `required_fields` - (Required) List of [FormField](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/formfield.md) components the User is required to complete.\n* `optional_fields` - (Optional) List of [FormField](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/formfield.md) components the User may complete.\n\n## [Example](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/issue-link.md#example)\n\n`schema.json`\n\n```json\n{\n \"elements\": [\n {\n \"type\": \"issue-link\",\n \"link\": {\n \"uri\": \"/sentry/issues/link\",\n \"required_fields\": [\n {\n \"type\": \"select\",\n \"label\": \"Issue\",\n \"name\": \"issue_id\",\n \"uri\": \"/sentry/issues\"\n }\n ]\n },\n \"create\": {\n \"uri\": \"/sentry/issues/create\",\n \"required_fields\": [\n {\n \"type\": \"text\",\n \"label\": \"Title\",\n \"name\": \"title\"\n }\n ],\n \"optional_fields\": [\n {\n \"type\": \"select\",\n \"label\": \"Owner\",\n \"name\": \"owner\",\n \"uri\": \"/sentry/members\",\n \"async\": true\n }\n ]\n }\n }\n ]\n}\n```\n\n## [Request Format](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/issue-link.md#request-format)\n\nWhen a user attempts to create or link an issue, we will send a request to your service based on the provided `uri`. We send a `POST` request, so all the information is stored in the body.\n\n```json\n{\n \"fields\": <Object>,\n \"installationId\": <String>,\n \"issueId\": <String>,\n \"webUrl\": <String>,\n \"project\": {\"slug\": <String>, \"id\": <String>},\n \"actor\": {\"type\": \"user\", \"name\": <String>, \"id\": <String>},\n}\n```\n\n### [Attributes](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/issue-link.md#attributes-1)\n\n* `fields` - Key/value pairs of the data in the form fields\n\n* `installationId` - The ID of the installation associated with the request\n\n* `issueId` - The ID of the issue in Sentry\n\n* `webUrl` - The URL of the issue in Sentry\n\n* `project`\n\n * `slug` - The slug of the project in Sentry\n * `id` - The ID of the project in Sentry\n\n* `actor`\n\n * `name` - The name of the user in Sentry\n * `id` - The ID of user in Sentry\n\n## [Response For" + }, + { + "path": "organization/integrations/integration-platform/ui-components/stacktrace-link.md", + "title": "Stack Trace Link", + "hierarchy": [ + "Organization", + "Integrations", + "Integration Platform", + "Ui Components", + "Stacktrace Link" + ], + "summary": "# Stack Trace Link", + "content": "# Stack Trace Link\n\nThis feature allows you to insert a link within a stack trace frame. The link contains details about the project, the file name, and line number. This can be used to view the file on your service or continue the debugging with a helpful reference:\n\n## [Schema](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/stacktrace-link.md#schema)\n\n`schema.json`\n\n```json\n{\n \"elements\": [\n {\n \"type\": \"stacktrace-link\",\n \"uri\": <URI>,\n }\n ]\n}\n```\n\n## [Attributes](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/stacktrace-link.md#attributes)\n\n* `uri` - (Required) The link destination. Sentry will automatically add the following query params to the link. Check out our [URI Guidelines](https://docs.sentry.io/organization/integrations/integration-platform/ui-components.md#uri-guidelines) documentation for formatting help.\n\n * `installationId` - Your integration's installation ID (helps you determine the requesting Sentry org)\n * `projectSlug` - slug of the project the issue belongs to\n * `filename` - full path of the stack frame file\n * `lineNo` - line number of the stack trace in the file\n\n## [Example](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/stacktrace-link.md#example)\n\n`schema.json`\n\n```json\n{\n \"elements\": [\n {\n \"type\": \"stacktrace-link\",\n \"uri\": \"/stacktrace-redirect\"\n }\n ]\n}\n```\n\nAny time a component supports a `uri` attribute, Sentry will make a request to the third-party service using the Base URL or their `webhook_url`.\n\nFor a more complete description of the grammar, see the [source code](https://github.com/getsentry/sentry/blob/cdb843e95a0994e6e51f12a14dc19f7c6cfc162c/src/sentry/sentry_apps/api/parsers/schema.py).\n" + }, + { + "path": "organization/integrations/integration-platform/webhooks.md", + "title": "Webhooks", + "hierarchy": [ + "Organization", + "Integrations", + "Integration Platform", + "Webhooks" + ], + "summary": "# Webhooks", + "content": "# Webhooks\n\nWe've built an [example application](https://github.com/getsentry/integration-platform-example) to help you get started with building on Sentry's integration platform. Check it out for useful code snippets for adding these features in Python and TypeScript. See the [docs](https://docs.sentry.io/organization/integrations/integration-platform.md#example-app) for more information.\n\nWebhooks are a way for two applications or services to communicate over the web, allowing one application to send automatic notifications or data updates to another in near real-time.\n\nThe concept is based on HTTP callbacks, where an HTTP POST request is sent to a specific URL (an HTTP endpoint in your tech stack) with a payload. Sentry uses JSON webhooks to get error notifications to your systems or services.\n\n## [Headers](https://docs.sentry.io/organization/integrations/integration-platform/webhooks.md#headers)\n\nSentry webhooks support various functionalities and are made up of four integral HTTP headers described below:\n\n```json\n{\n \"Content-Type\": \"application/json\",\n \"Request-ID\": \"<request_uuid>\",\n \"Sentry-Hook-Resource\": \"<resource>\",\n \"Sentry-Hook-Timestamp\": \"<timestamp>\",\n \"Sentry-Hook-Signature\": \"<generated_signature>\"\n}\n```\n\nThe `Content-Type` header identifies the media type of the payload as JSON format. The `Request-ID` header provides a unique identifier for tracking and debugging specific events.\n\n### [`Sentry-Hook-Resource`](https://docs.sentry.io/organization/integrations/integration-platform/webhooks.md#sentry-hook-resource)\n\nThis header lets you know which resource from the list below triggered an action:\n\n* `installation`\n* `event_alert`\n* `issue`\n* `metric_alert`\n* `error`\n* `comment`\n* `seer`\n\n### [`Sentry-Hook-Signature`](https://docs.sentry.io/organization/integrations/integration-platform/webhooks.md#sentry-hook-signature)\n\nThis header represents a cryptographic hash generated by your *Client Secret*. Its primary purpose is to make sure the request is authentic and comes from Sentry servers.\n\n**Verifying the Signature**\n\nThe below code snippet lets you validate the signature with the event payload.\n\n```javascript\nconst crypto = require(\"crypto\");\n\nfunction verifySignature(request, secret = \"\") {\n const hmac = crypto.createHmac(\"sha256\", secret);\n hmac.update(JSON.stringify(request.body), \"utf8\");\n const digest = hmac.digest(\"hex\");\n return digest === request.headers[\"sentry-hook-signature\"];\n}\n```\n\n## [Request Structure](https://docs.sentry.io/organization/integrations/integration-platform/webhooks.md#request-structure)\n\nAll webhook requests have some common elements.\n\n`action`\n\nThe action that corresponds with the [resource](https://docs.sentry.io/organization/integrations/integration-platform/webhooks.md#sentry-hook-resource) in the header. For example, if the resource is `issue` the action could be `created`.\n\n`installation`\n\nAn object with the `uuid` of the installation so that you can map the webhook request to the appropriate installation.\n\n`data`\n\nThe data object contains information about the [resource](https://docs.sentry.io/organization/integrations/integration-platform/webhooks.md#sentry-hook-resource) and will differ in content depending on the type of webhook. This payload may be able to be customized via [UI components](https://docs.sentry.io/organization/integrations/integration-platform/ui-components.md).\n\n`actor`\n\nThe actor is who, if anyone, triggered the webhook. If a user in Sentry triggered the action, the actor is the user. If the Sentry integration itself triggers the action, the actor is the integration. If the action is triggered automatically within Sentry, the actor is \"Sentry\".\n\n```python\n# Sample cases:\n\n# User installs Sentry integration\n\"actor\": {\n \"type\": \"user\",\n \"id\": <user-id>,\n \"name\": <user-name>,\n}\n\n# Sentry integration makes request to assign an issue\n\"actor\": {\n \"type\": \"application\",\n \"id\": <sentry-app-uuid>,\n \"name\": <sentry-app-name>,\n}\n\n# Sentr" + }, + { + "path": "organization/integrations/integration-platform/webhooks/comments.md", + "title": "Comments", + "hierarchy": [ + "Organization", + "Integrations", + "Integration Platform", + "Webhooks", + "Comments" + ], + "summary": "# Comments", + "content": "# Comments\n\nSentry integrations that have subscribed to comment webhooks can receive information about a comment being created and changing state.\n\n## [Sentry-Hook-Resource Header](https://docs.sentry.io/organization/integrations/integration-platform/webhooks/comments.md#sentry-hook-resource-header)\n\n`'Sentry-Hook-Resource': 'comment'`\n\n## [Attributes](https://docs.sentry.io/organization/integrations/integration-platform/webhooks/comments.md#attributes)\n\n### [action](https://docs.sentry.io/organization/integrations/integration-platform/webhooks/comments.md#action)\n\n* type: string\n* description: can be `created`, `updated`, or `deleted`\n\n### [data\\[\"comment\"\\]](https://docs.sentry.io/organization/integrations/integration-platform/webhooks/comments.md#datacomment)\n\n* type: string\n* description: the content of the issue's comment\n\n### [data\\[\"project slug\"\\]](https://docs.sentry.io/organization/integrations/integration-platform/webhooks/comments.md#dataproject-slug)\n\n* type: string\n* description: the slug of the project the comment's issue belongs to\n\n### [data\\[\"comment\\_id\"\\]](https://docs.sentry.io/organization/integrations/integration-platform/webhooks/comments.md#datacomment_id)\n\n* type: int\n* description: the id of the comment\n\n### [data\\[\"issue\\_id\"\\]](https://docs.sentry.io/organization/integrations/integration-platform/webhooks/comments.md#dataissue_id)\n\n* type: int\n* description: the id of the issue\n\n### [data\\[\"timestamp\"\\]](https://docs.sentry.io/organization/integrations/integration-platform/webhooks/comments.md#datatimestamp)\n\n* type: datetime\n* description: when the comment was created, updated, or deleted\n\n## [Payload](https://docs.sentry.io/organization/integrations/integration-platform/webhooks/comments.md#payload)\n\n```json\n{\n \"action\": \"created\",\n \"data\": {\n \"comment\": \"adding a comment\",\n \"project_slug\": \"sentry\",\n \"comment_id\": 1234,\n \"issue_id\": 100,\n \"timestamp\": \"2022-03-02T21:51:44.118160Z\"\n },\n \"installation\": { \"uuid\": \"eac5a0ae-60ec-418f-9318-46dc5e7e52ec\" },\n \"actor\": { \"type\": \"user\", \"id\": 1, \"name\": \"colleen\" }\n}\n```\n" + }, + { + "path": "organization/integrations/integration-platform/webhooks/errors.md", + "title": "Errors", + "hierarchy": [ + "Organization", + "Integrations", + "Integration Platform", + "Webhooks", + "Errors" + ], + "summary": "# Errors", + "content": "# Errors\n\nSentry integrations that have subscribed to error webhooks can receive information about an error being created.\n\nThis feature is available only if your organization is on a [Business or Enterprise plan](https://sentry.io/pricing/).\n\n## [Sentry-Hook-Resource Header](https://docs.sentry.io/organization/integrations/integration-platform/webhooks/errors.md#sentry-hook-resource-header)\n\n`'Sentry-Hook-Resource': 'error'`\n\n## [Attributes](https://docs.sentry.io/organization/integrations/integration-platform/webhooks/errors.md#attributes)\n\n### [action](https://docs.sentry.io/organization/integrations/integration-platform/webhooks/errors.md#action)\n\n* type: string\n* description: only option currently is `created`\n\n### [data\\['error'\\]](https://docs.sentry.io/organization/integrations/integration-platform/webhooks/errors.md#dataerror)\n\n* type: object\n* description: the error that was created\n\n### [data\\['error'\\]\\['url'\\]](https://docs.sentry.io/organization/integrations/integration-platform/webhooks/errors.md#dataerrorurl)\n\n* type: string\n* description: the api url for the error\n\n### [data\\['error'\\]\\['web\\_url'\\]](https://docs.sentry.io/organization/integrations/integration-platform/webhooks/errors.md#dataerrorweb_url)\n\n* type: string\n* description: the web url for the error\n\n### [data\\['error'\\]\\['issue\\_url'\\]](https://docs.sentry.io/organization/integrations/integration-platform/webhooks/errors.md#dataerrorissue_url)\n\n* type: string\n* description: the api url for the associated issue\n\n### [data\\['event'\\]\\['issue\\_id'\\]](https://docs.sentry.io/organization/integrations/integration-platform/webhooks/errors.md#dataeventissue_id)\n\n* type: string\n* description: the id of the issue\n\nIf you've set up user identification you can find the user attributes under `data['error']['user']`.\n\n## [Payload](https://docs.sentry.io/organization/integrations/integration-platform/webhooks/errors.md#payload)\n\n```json\n{\n \"action\": \"created\",\n \"actor\": {\n \"id\": \"sentry\",\n \"name\": \"Sentry\",\n \"type\": \"application\"\n },\n \"data\": {\n \"error\": {\n \"_ref\": 1293919,\n \"_ref_version\": 2,\n \"contexts\": {\n \"browser\": {\n \"name\": \"Chrome\",\n \"type\": \"browser\",\n \"version\": \"75.0.3770\"\n },\n \"os\": {\n \"name\": \"Mac OS X\",\n \"type\": \"os\",\n \"version\": \"10.14.0\"\n }\n },\n \"culprit\": \"?(runner)\",\n \"datetime\": \"2019-08-19T20:58:37.391000Z\",\n \"dist\": null,\n \"event_id\": \"bb78c1407cea4519aa397afc059c793d\",\n \"exception\": {\n \"values\": [\n {\n \"mechanism\": {\n \"data\": {\n \"message\": \"blooopy is not defined\",\n \"mode\": \"stack\",\n \"name\": \"ReferenceError\"\n },\n \"description\": null,\n \"handled\": false,\n \"help_link\": null,\n \"meta\": null,\n \"synthetic\": null,\n \"type\": \"onerror\"\n },\n \"stacktrace\": {\n \"frames\": [\n {\n \"abs_path\": \"https://null.jsbin.com/runner\",\n \"colno\": 5,\n \"context_line\": \"<meta charset=utf-8>\",\n \"data\": {\n \"orig_in_app\": 1\n },\n \"errors\": null,\n \"filename\": \"/runner\",\n \"function\": null,\n \"image_addr\": null,\n \"in_app\": false,\n \"instruction_addr\": null,\n \"lineno\": 3,\n \"module\": \"runner\",\n \"package\": null,\n \"platform\": null,\n \"post_context\": [\n \"<title>JS Bin Runner\",\n \"\",\n \"