{"note":"OpenAPI conversion -- returning structured metadata","name":"sentry","description":"API Reference","version":"v0","base_url":"https://us.sentry.io","endpoints":220,"raw":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api API Reference\n@base https://us.sentry.io\n@version v0\n@auth Bearer bearer | Bearer DSN\n@common_fields {organization_id_or_slug: str # The ID or slug of the organization the resource belongs to.}\n@endpoints 220\n@hint download_for_search\n@toc api(220)\n\n@endpoint GET /api/0/organizations/\n@desc List Your Organizations\n@optional {owner: bool # Specify `true` to restrict results to organizations in which you are an owner., cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results., query: str # Filters results by using [query syntax](/product/sentry-basics/search/).  Valid query fields include: - `id`: The organization ID - `slug`: The organization slug - `status`: The organization's current status (one of `active`, `pending_deletion`, or `deletion_in_progress`) - `email` or `member_id`: Filter your organizations by the emails or [organization member IDs](/api/organizations/list-an-organizations-members/) of specific members included - `query`: Filter your organizations by name, slug, and members that contain this substring  Example: `query=(slug:foo AND status:active) OR (email:[thing-one@example.com,thing-two@example.com] AND query:bar)`, sortBy: str # The field to sort results by, in descending order. If not specified the results are sorted by the date they were created.  Valid fields include: - `members`: By number of members - `events`: By number of events in the past 24 hours, per_page: int # Limit the number of rows to return in the result. Default and maximum allowed is 100.}\n@returns(200)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/\n@desc Retrieve an Organization\n@optional {detailed: str # Specify `\"0\"` to return organization details that do not include projects or teams.}\n@returns(200) {features: [str], extraOptions: map, access: [str], onboardingTasks: [map], id: str, slug: str, status: map{id: str, name: str}, name: str, dateCreated: str(date-time), isEarlyAdopter: bool, require2FA: bool, avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, links: map{organizationUrl: str, regionUrl: str}, hasAuthProvider: bool, allowMemberInvite: bool, allowMemberProjectCreation: bool, allowSuperuserAccess: bool}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint PUT /api/0/organizations/{organization_id_or_slug}/\n@desc Update an Organization\n@optional {slug: str # The new slug for the organization, which needs to be unique., name: str # The new name for the organization., isEarlyAdopter: bool # Specify `true` to opt-in to new features before they're released to the public., hideAiFeatures: bool # Specify `true` to hide AI features from the organization., defaultRole: str(member/admin/manager/owner) # The default role new members will receive.  * `member` - Member * `admin` - Admin * `manager` - Manager * `owner` - Owner, openMembership: bool # Specify `true` to allow organization members to freely join any team., eventsMemberAdmin: bool # Specify `true` to allow members to delete events (including the delete & discard action) by granting them the `event:admin` scope., alertsMemberWrite: bool # Specify `true` to allow members to create, edit, and delete alert rules by granting them the `alerts:write` scope., attachmentsRole: str(member/admin/manager/owner) # The role required to download event attachments, such as native crash reports or log files.  * `member` - Member * `admin` - Admin * `manager` - Manager * `owner` - Owner, debugFilesRole: str(member/admin/manager/owner) # The role required to download debug information files, ProGuard mappings and source maps.  * `member` - Member * `admin` - Admin * `manager` - Manager * `owner` - Owner, hasGranularReplayPermissions: bool # Specify `true` to enable granular replay permissions, allowing per-member access control for replay data., replayAccessMembers: [int] # A list of user IDs who have permission to access replay data. Requires the hasGranularReplayPermissions flag to be true to be enforced., avatarType: str(letter_avatar/upload) # The type of display picture for the organization.  * `letter_avatar` - Use initials * `upload` - Upload an image, avatar: str # The image to upload as the organization avatar, in base64. Required if `avatarType` is `upload`., require2FA: bool # Specify `true` to require and enforce two-factor authentication for all members., allowSharedIssues: bool # Specify `true` to allow sharing of limited details on issues to anonymous users., enhancedPrivacy: bool # Specify `true` to enable enhanced privacy controls to limit personally identifiable information (PII) as well as source code in things like notifications., scrapeJavaScript: bool # Specify `true` to allow Sentry to scrape missing JavaScript source context when possible., storeCrashReports: int(0/1/5/10/20/50/100/-1) # How many native crash reports (such as Minidumps for improved processing and download in issue details) to store per issue.  * `0` - Disabled * `1` - 1 per issue * `5` - 5 per issue * `10` - 10 per issue * `20` - 20 per issue * `50` - 50 per issue * `100` - 100 per issue * `-1` - Unlimited, allowJoinRequests: bool # Specify `true` to allow users to request to join your organization., dataScrubber: bool # Specify `true` to require server-side data scrubbing for all projects., dataScrubberDefaults: bool # Specify `true` to apply the default scrubbers to prevent things like passwords and credit cards from being stored for all projects., sensitiveFields: [str] # A list of additional global field names to match against when scrubbing data for all projects., safeFields: [str] # A list of global field names which data scrubbers should ignore., scrubIPAddresses: bool # Specify `true` to prevent IP addresses from being stored for new events on all projects., relayPiiConfig: str # Advanced data scrubbing rules that can be configured for each project as a JSON string. The new rules will only apply to new incoming events. For more details on advanced data scrubbing, see our [full documentation](/security-legal-pii/scrubbing/advanced-datascrubbing/).  > Warning: Calling this endpoint with this field fully overwrites the advanced data scrubbing rules.  Below is an example of a payload for a set of advanced data scrubbing rules for masking credit card numbers from the log message (equivalent to `[Mask] [Credit card numbers] from [$message]` in the Sentry app) and removing a specific key called `foo` (equivalent to `[Remove] [Anything] from [extra.foo]` in the Sentry app): ```json {     relayPiiConfig: \"{\\\"rules\":{\\\"0\\\":{\\\"type\\\":\\\"creditcard\\\",\\\"redaction\\\":{\\\"method\\\":\\\"mask\\\"}},\\\"1\\\":{\\\"type\\\":\\\"anything\\\",\\\"redaction\\\":{\\\"method\\\":\\\"remove\\\"}}},\\\"applications\\\":{\\\"$message\\\":[\\\"0\\\"],\\\"extra.foo\\\":[\\\"1\\\"]}}\" } ```, trustedRelays: [map] # A list of local Relays (the name, public key, and description as a JSON) registered for the organization. This feature is only available for organizations on the Business and Enterprise plans. Read more about Relay [here](/product/relay/).                                            Below is an example of a list containing a single local Relay registered for the organization:                                           ```json                                           {                                             trustedRelays: [                                                 {                                                     name: \"my-relay\",                                                     publicKey: \"eiwr9fdruw4erfh892qy4493reyf89ur34wefd90h\",                                                     description: \"Configuration for my-relay.\"                                                 }                                             ]                                           }                                           ```, relayDsnEndpoint: str # A Relay base URL to use when displaying Client Key DSNs for this organization., issueAlertsThreadFlag: bool # Specify `true` to allow the Sentry Slack integration to post replies in threads for an Issue Alert notification. Requires a Slack integration., metricAlertsThreadFlag: bool # Specify `true` to allow the Sentry Slack integration to post replies in threads for a Metric Alert notification. Requires a Slack integration., cancelDeletion: bool # Specify `true` to restore an organization that is pending deletion.}\n@returns(200) {features: [str], extraOptions: map, access: [str], onboardingTasks: [map], id: str, slug: str, status: map{id: str, name: str}, name: str, dateCreated: str(date-time), isEarlyAdopter: bool, require2FA: bool, avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, links: map{organizationUrl: str, regionUrl: str}, hasAuthProvider: bool, allowMemberInvite: bool, allowMemberProjectCreation: bool, allowSuperuserAccess: bool, role: any, orgRole: str, targetSampleRate: num(double), samplingMode: str, planSampleRate: num(double), desiredSampleRate: num(double), experiments: map, isDefault: bool, defaultRole: str, orgRoleList: [map], teamRoleList: [map], openMembership: bool, allowSharedIssues: bool, enhancedPrivacy: bool, dataScrubber: bool, dataScrubberDefaults: bool, sensitiveFields: [str], safeFields: [str], storeCrashReports: int, attachmentsRole: str, debugFilesRole: str, eventsMemberAdmin: bool, alertsMemberWrite: bool, scrubIPAddresses: bool, scrapeJavaScript: bool, allowJoinRequests: bool, relayPiiConfig: str?, relayDsnEndpoint: str?, trustedRelays: [map], pendingAccessRequests: int, hideAiFeatures: bool, aggregatedDataConsent: bool, isDynamicallySampled: bool, issueAlertsThreadFlag: bool, metricAlertsThreadFlag: bool, requiresSso: bool, defaultAutofixAutomationTuning: str, defaultSeerScannerAutomation: bool, enableSeerCoding: bool, defaultCodingAgent: str, defaultCodingAgentIntegrationId: str?, defaultAutomatedRunStoppingPoint: str, autoEnableCodeReview: bool, autoOpenPrs: bool, defaultCodeReviewTriggers: [str], teams: [map], projects: [map]}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found, 409: Conflict, 413: Image too large.}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/config/integrations/\n@desc Get Integration Provider Information\n@optional {providerKey: str # Specific integration provider to filter by such as `slack`. See our [Integrations Documentation](/product/integrations/) for an updated list of providers.}\n@returns(200) {providers: [map]}\n@errors {404: Bad Request}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/dashboards/\n@desc List an Organization's Custom Dashboards\n@optional {per_page: int # Limit the number of rows to return in the result. Default and maximum allowed is 100., cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200)\n@errors {400: Bad Request, 403: Forbidden, 404: Not Found}\n\n@endpoint POST /api/0/organizations/{organization_id_or_slug}/dashboards/\n@desc Create a New Dashboard for an Organization\n@required {title: str # The user defined title for this dashboard.}\n@optional {id: str # A dashboard's unique id., widgets: [map{id: str, title: str, description: str, thresholds: map, display_type: str, interval: str, queries: [map], widget_type: str, limit: int, layout: any, axis_range: str, legend_type: str}] # A json list of widgets saved in this dashboard., projects: [int] # The saved projects filter for this dashboard., environment: [str] # The saved environment filter for this dashboard., period: str # The saved time range period for this dashboard., start: str(date-time) # The saved start time for this dashboard., end: str(date-time) # The saved end time for this dashboard., filters: map # The saved filters for this dashboard., utc: bool # Setting that lets you display saved time range for this dashboard in UTC., permissions: any # Permissions that restrict users from editing dashboards, is_favorited: bool=false # Favorite the dashboard automatically for the request user}\n@returns(201) {environment: [str], period: str, utc: str, expired: bool, start: str(date-time), end: str(date-time), id: str, title: str, dateCreated: str, createdBy: map?{identities: [map], avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, authenticators: [any], canReset2fa: bool, id: str, name: str, username: str, email: str, avatarUrl: str, isActive: bool, isSuspended: bool, hasPasswordAuth: bool, isManaged: bool, dateJoined: str(date-time), lastLogin: str(date-time)?, has2fa: bool, lastActive: str(date-time)?, isSuperuser: bool, isStaff: bool, experiments: map, emails: [map]}, widgets: [map], projects: [int], filters: map{release: [str], releaseId: [str], globalFilter: [map]}, permissions: map?{isEditableByEveryone: bool, teamsWithEditAccess: [int]}, isFavorited: bool, prebuiltId: int?}\n@errors {400: Bad Request, 403: Forbidden, 404: Not Found, 409: Conflict}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/dashboards/{dashboard_id}/\n@desc Retrieve an Organization's Custom Dashboard\n@required {dashboard_id: int # The ID of the dashboard you'd like to retrieve.}\n@returns(200) {environment: [str], period: str, utc: str, expired: bool, start: str(date-time), end: str(date-time), id: str, title: str, dateCreated: str, createdBy: map?{identities: [map], avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, authenticators: [any], canReset2fa: bool, id: str, name: str, username: str, email: str, avatarUrl: str, isActive: bool, isSuspended: bool, hasPasswordAuth: bool, isManaged: bool, dateJoined: str(date-time), lastLogin: str(date-time)?, has2fa: bool, lastActive: str(date-time)?, isSuperuser: bool, isStaff: bool, experiments: map, emails: [map]}, widgets: [map], projects: [int], filters: map{release: [str], releaseId: [str], globalFilter: [map]}, permissions: map?{isEditableByEveryone: bool, teamsWithEditAccess: [int]}, isFavorited: bool, prebuiltId: int?}\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint PUT /api/0/organizations/{organization_id_or_slug}/dashboards/{dashboard_id}/\n@desc Edit an Organization's Custom Dashboard\n@required {dashboard_id: int # The ID of the dashboard you'd like to retrieve.}\n@optional {id: str # A dashboard's unique id., title: str # The user-defined dashboard title., widgets: [map{id: str, title: str, description: str, thresholds: map, display_type: str, interval: str, queries: [map], widget_type: str, limit: int, layout: any, axis_range: str, legend_type: str}] # A json list of widgets saved in this dashboard., projects: [int] # The saved projects filter for this dashboard., environment: [str] # The saved environment filter for this dashboard., period: str # The saved time range period for this dashboard., start: str(date-time) # The saved start time for this dashboard., end: str(date-time) # The saved end time for this dashboard., filters: map # The saved filters for this dashboard., utc: bool # Setting that lets you display saved time range for this dashboard in UTC., permissions: any # Permissions that restrict users from editing dashboards}\n@returns(200) {environment: [str], period: str, utc: str, expired: bool, start: str(date-time), end: str(date-time), id: str, title: str, dateCreated: str, createdBy: map?{identities: [map], avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, authenticators: [any], canReset2fa: bool, id: str, name: str, username: str, email: str, avatarUrl: str, isActive: bool, isSuspended: bool, hasPasswordAuth: bool, isManaged: bool, dateJoined: str(date-time), lastLogin: str(date-time)?, has2fa: bool, lastActive: str(date-time)?, isSuperuser: bool, isStaff: bool, experiments: map, emails: [map]}, widgets: [map], projects: [int], filters: map{release: [str], releaseId: [str], globalFilter: [map]}, permissions: map?{isEditableByEveryone: bool, teamsWithEditAccess: [int]}, isFavorited: bool, prebuiltId: int?}\n@errors {400: Bad Request, 403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /api/0/organizations/{organization_id_or_slug}/dashboards/{dashboard_id}/\n@desc Delete an Organization's Custom Dashboard\n@required {dashboard_id: int # The ID of the dashboard you'd like to retrieve.}\n@returns(204) No Content\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/detectors/\n@desc Fetch an Organization's Monitors\n@optional {project: [any] # The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects. For example, the following are valid parameters: - `/?project=1234&project=56789` - `/?project=android&project=javascript-react` - `/?project=-1`, query: str # An optional search query for filtering monitors.  Available fields are: - `name` - `type`: e.g. `error`, `metric_issue`, `issue_stream` - `assignee`: email, username, #team, me, none, sortBy: str # The property to sort results by. If not specified, the results are sorted by id.  Available fields are: - `name` - `id` - `type` - `connectedWorkflows` - `latestGroup` - `openIssues`  Prefix with `-` to sort in descending order., id: [int] # The ID of the monitor you'd like to query.}\n@returns(200)\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint PUT /api/0/organizations/{organization_id_or_slug}/detectors/\n@desc Mutate an Organization's Monitors\n@required {enabled: bool # Whether to enable or disable the monitors}\n@optional {project: [any] # The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects. For example, the following are valid parameters: - `/?project=1234&project=56789` - `/?project=android&project=javascript-react` - `/?project=-1`, query: str # An optional search query for filtering monitors.  Available fields are: - `name` - `type`: e.g. `error`, `metric_issue`, `issue_stream` - `assignee`: email, username, #team, me, none, id: [int] # The ID of the monitor you'd like to query.}\n@returns(200)\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /api/0/organizations/{organization_id_or_slug}/detectors/\n@desc Bulk Delete Monitors\n@optional {project: [any] # The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects. For example, the following are valid parameters: - `/?project=1234&project=56789` - `/?project=android&project=javascript-react` - `/?project=-1`, query: str # An optional search query for filtering monitors.  Available fields are: - `name` - `type`: e.g. `error`, `metric_issue`, `issue_stream` - `assignee`: email, username, #team, me, none, sortBy: str # The property to sort results by. If not specified, the results are sorted by id.  Available fields are: - `name` - `id` - `type` - `connectedWorkflows` - `latestGroup` - `openIssues`  Prefix with `-` to sort in descending order., id: [int] # The ID of the monitor you'd like to query.}\n@returns(200) Success\n@returns(204) No Content\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/detectors/{detector_id}/\n@desc Fetch a Monitor\n@required {detector_id: int # The ID of the monitor you'd like to query.}\n@returns(200) {owner: map?{type: str, id: str, name: str, email: str}, createdBy: str?, latestGroup: map?, description: str?, id: str, projectId: str, name: str, type: str, workflowIds: [str]?, dateCreated: str(date-time), dateUpdated: str(date-time), dataSources: [map]?, conditionGroup: map?, config: map, enabled: bool}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint PUT /api/0/organizations/{organization_id_or_slug}/detectors/{detector_id}/\n@desc Update a Monitor by ID\n@required {detector_id: int # The ID of the monitor you'd like to query., name: str # Name of the monitor., type: str # The type of monitor - `metric_issue`.}\n@optional {workflow_ids: [int] # The IDs of the alerts to connect this monitor to. Use the 'Fetch Alerts' endpoint to find the IDs., data_sources: [any] # The data sources for the monitor to use based on what you want to measure.              **Number of Errors Metric Monitor**             - `eventTypes`: Any of `error` or `default`.             ```json                 [                     {                         \"aggregate\": \"count()\",                         \"dataset\" : \"events\",                         \"environment\": \"prod\",                         \"eventTypes\": [\"default\", \"error\"],                         \"query\": \"is:unresolved\",                         \"queryType\": 0,                         \"timeWindow\": 3600,                     },                 ],             ```              **Users Experiencing Errors Metric Monitor**             - `eventTypes`: Any of `error` or `default`.             ```json                 [                     {                         \"aggregate\": \"count_unique(tags[sentry:user])\",                         \"dataset\" : \"events\",                         \"environment\": \"prod\",                         \"eventTypes\": [\"default\", \"error\"],                         \"query\": \"is:unresolved\",                         \"queryType\": 0,                         \"timeWindow\": 3600,                     },                 ],             ```               **Throughput Metric Monitor**             ```json                 [                     {                         \"aggregate\":\"count(span.duration)\",                         \"dataset\":\"events_analytics_platform\",                         \"environment\":\"prod\",                         \"eventTypes\":[\"trace_item_span\"]                         \"query\":\"\",                         \"queryType\":1,                         \"timeWindow\":3600,                         \"extrapolationMode\":\"unknown\",                     },                 ],             ```              **Duration Metric Monitor**             ```json                 [                     {                         \"aggregate\":\"p95(span.duration)\",                         \"dataset\":\"events_analytics_platform\",                         \"environment\":\"prod\",                         \"eventTypes\":[\"trace_item_span\"]                         \"query\":\"\",                         \"queryType\":1,                         \"timeWindow\":3600,                         \"extrapolationMode\":\"unknown\",                     },                 ],             ```              **Failure Rate Metric Monitor**             ```json                 [                     {                         \"aggregate\":\"failure_rate()\",                         \"dataset\":\"events_analytics_platform\",                         \"environment\":\"prod\",                         \"eventTypes\":[\"trace_item_span\"]                         \"query\":\"\",                         \"queryType\":1,                         \"timeWindow\":3600,                         \"extrapolationMode\":\"unknown\",                     },                 ],             ```              **Largest Contentful Paint Metric Monitor**             - `dataset`: If a custom percentile is used, dataset is `transactions`. Otherwise, dataset is `events_analytics_platform`.             - `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.              ```json                 [                     {                         \"aggregate\":\"p95(measurements.lcp)\",                         \"dataset\":\"events_analytics_platform\",                         \"environment\":\"prod\",                         \"eventTypes\":[\"trace_item_span\"]                         \"query\":\"\",                         \"queryType\":1,                         \"timeWindow\":3600,                         \"extrapolationMode\":\"unknown\",                     },                 ],             ```              **Custom Metric Monitor**             - `dataset`: If a custom percentile is used, dataset is `transactions`. Otherwise, dataset is `events_analytics_platform`.             - `aggregate`: Valid values are:             `avg(x)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.             `p50(x)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.             `p75(x)`, where x is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.             `p95(x)`, where x is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.             `p99(x)`, where x is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.             `p100(x)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.             `percentile(x,y)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`, and `y` is the custom percentile.             `failure_rate()`             `apdex(x)`, where `x` is the value of the Apdex score.             `count()`              ```json             [                 {                     \"aggregate\": \"p75(measurements.ttfb)\"                     \"dataset\": \"events_analytics_platform\",                     \"queryType\": 1,                 },             ],, config: map # The issue detection type configuration.               - `detectionType`                 - `static`: Threshold based monitor                 - `percent`: Change based monitor                 - `dynamic`: Dynamic monitor             - `comparisonDelta`: If selecting a **change** detection type, the comparison delta is the time period at which to compare against in minutes.             For example, a value of 3600 compares the metric tracked against data 1 hour ago.                 - `300`: 5 minutes                 - `900`: 15 minutes                 - `3600`: 1 hour                 - `86400`: 1 day                 - `604800`: 1 week                 - `2592000`: 1 month              **Threshold**             ```json             {                 \"detectionType\": \"static\",             }             ```             **Change**             ```json             {                 \"detectionType\": \"percent\",                 \"comparisonDelta\": 3600,             }             ```             **Dynamic**             ```json             {                 \"detectionType\": \"dynamic\",             }             ```, condition_group: any # Issue detection configuration for when to create an issue and at what priority level.               - `logicType`: `any`             - `type`: Any of `gt` (greater than), `lte` (less than or equal), or `anomaly_detection` (dynamic)             - `comparison`: Any positive integer. This is threshold that must be crossed for the monitor to create an issue, e.g. \"Create a metric issue when there are more than 5 unresolved error events\".                 - If creating a **dynamic** monitor, see the options below.                     - `seasonality`: `auto`                     - `sensitivity`: Level of responsiveness. Options are one of `low`, `medium`, or `high`                     - `thresholdType`: If you want to be alerted to anomalies that are moving above, below, or in both directions in relation to your threshold.                         - `0`: Above                         - `1`: Below                         - `2`: Above and below              - `conditionResult`: The issue state change when the threshold is crossed.                 - `75`: High priority                 - `50`: Low priority                 - `0`: Resolved               **Threshold and Change Monitor**             ```json                 \"logicType\": \"any\",                 \"conditions\": [                     {                         \"type\": \"gt\",                         \"comparison\": 10,                         \"conditionResult\": 75                     },                     {                         \"type\": \"lte\",                         \"comparison\": 10,                         \"conditionResult\": 0                     }                 ],                 \"actions\": []             ```              **Threshold Monitor with Medium Priority**             ```json                 \"logicType\": \"any\",                 \"conditions\": [                     {                         type: \"gt\",                         comparison: 5,                         conditionResult: 75                     },                     {                         type: \"gt\",                         comparison: 2,                         conditionResult: 50                     },                     {                         type: \"lte\",                         comparison: 2,                         conditionResult: 0                     }                 ],                 \"actions\": []             ```              **Dynamic Monitor**             ```json                 \"logicType\": \"any\",                 \"conditions\": [                     {                         \"type\": \"anomaly_detection\",                         \"comparison\": {                             \"seasonality\": \"auto\",                             \"sensitivity\": \"medium\",                             \"thresholdType\": 2                         },                         \"conditionResult\": 75                     }                 ],                 \"actions\": []             ```, owner: str # The ID user or team who owns the monitor or alert prefaced by the string 'user' or 'team'.              **User**             ```json                 \"user:123456\"             ```              **Team**             ```json                 \"team:456789\"             ```, description: str # A description of the monitor. Will be used in the resulting issue., enabled: bool # Set to False if you want to disable the monitor.}\n@returns(200) {owner: map?{type: str, id: str, name: str, email: str}, createdBy: str?, latestGroup: map?, description: str?, id: str, projectId: str, name: str, type: str, workflowIds: [str]?, dateCreated: str(date-time), dateUpdated: str(date-time), dataSources: [map]?, conditionGroup: map?, config: map, enabled: bool}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /api/0/organizations/{organization_id_or_slug}/detectors/{detector_id}/\n@desc Delete a Monitor\n@required {detector_id: int # The ID of the monitor you'd like to query.}\n@returns(204) No Content\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/discover/saved/\n@desc List an Organization's Discover Saved Queries\n@optional {per_page: int # Limit the number of rows to return in the result. Default and maximum allowed is 100., cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results., query: str # The name of the Discover query you'd like to filter by., sortBy: str # The property to sort results by. If not specified, the results are sorted by query name.  Available fields are: - `name` - `dateCreated` - `dateUpdated` - `mostPopular` - `recentlyViewed` - `myqueries`}\n@returns(200)\n@errors {400: Bad Request, 403: Forbidden, 404: Not Found}\n\n@endpoint POST /api/0/organizations/{organization_id_or_slug}/discover/saved/\n@desc Create a New Saved Query\n@required {name: str # The user-defined saved query name.}\n@optional {projects: [int] # The saved projects filter for this query., queryDataset: str(discover/error-events/transaction-like)=error-events # The dataset you would like to query. Note: `discover` is a **deprecated** value. The allowed values are: `error-events`, `transaction-like`  * `discover` * `error-events` * `transaction-like`, start: str(date-time) # The saved start time for this saved query., end: str(date-time) # The saved end time for this saved query., range: str # The saved time range period for this saved query., fields: [str] # 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: - A built-in key field. See possible fields in the [properties table](/product/sentry-basics/search/searchable-properties/#properties-table), under any field that is an event property.     - example: `field=transaction` - A tag. Tags should use the `tag[]` formatting to avoid ambiguity with any fields     - example: `field=tag[isEnterprise]` - A function which will be in the format of `function_name(parameters,...)`. See possible functions in the [query builder documentation](/product/discover-queries/query-builder/#stacking-functions).     - when a function is included, Discover will group by any tags or fields     - example: `field=count_if(transaction.duration,greater,300)` - An equation when prefixed with `equation|`. Read more about [equations here](/product/discover-queries/query-builder/query-equations/).     - example: `field=equation|count_if(transaction.duration,greater,300) / count() * 100`, orderby: str # How to order the query results. Must be something in the `field` list, excluding equations., environment: [str] # The name of environments to filter by., query: str # Filters results by using [query syntax](/product/sentry-basics/search/)., yAxis: [str] # Aggregate functions to be plotted on the chart., display: str # Visualization type for saved query chart. Allowed values are: - default - previous - top5 - daily - dailytop5 - bar, topEvents: int # Number of top events' timeseries to be visualized., interval: str # Resolution of the time series.}\n@returns(201) {environment: [str], query: str, fields: [str], widths: [str], conditions: [str], aggregations: [str], range: str, start: str, end: str, orderby: str, limit: str, yAxis: [str], display: str, topEvents: int, interval: str, exploreQuery: map, id: str, name: str, projects: [int], version: int, queryDataset: str, datasetSource: str, expired: bool, dateCreated: str, dateUpdated: str, createdBy: map{identities: [map], avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, authenticators: [any], canReset2fa: bool, id: str, name: str, username: str, email: str, avatarUrl: str, isActive: bool, isSuspended: bool, hasPasswordAuth: bool, isManaged: bool, dateJoined: str(date-time), lastLogin: str(date-time)?, has2fa: bool, lastActive: str(date-time)?, isSuperuser: bool, isStaff: bool, experiments: map, emails: [map]}}\n@errors {400: Bad Request, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/discover/saved/{query_id}/\n@desc Retrieve an Organization's Discover Saved Query\n@required {query_id: int # The ID of the Discover query you'd like to retrieve.}\n@returns(200) {environment: [str], query: str, fields: [str], widths: [str], conditions: [str], aggregations: [str], range: str, start: str, end: str, orderby: str, limit: str, yAxis: [str], display: str, topEvents: int, interval: str, exploreQuery: map, id: str, name: str, projects: [int], version: int, queryDataset: str, datasetSource: str, expired: bool, dateCreated: str, dateUpdated: str, createdBy: map{identities: [map], avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, authenticators: [any], canReset2fa: bool, id: str, name: str, username: str, email: str, avatarUrl: str, isActive: bool, isSuspended: bool, hasPasswordAuth: bool, isManaged: bool, dateJoined: str(date-time), lastLogin: str(date-time)?, has2fa: bool, lastActive: str(date-time)?, isSuperuser: bool, isStaff: bool, experiments: map, emails: [map]}}\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint PUT /api/0/organizations/{organization_id_or_slug}/discover/saved/{query_id}/\n@desc Edit an Organization's Discover Saved Query\n@required {query_id: int # The ID of the Discover query you'd like to retrieve., name: str # The user-defined saved query name.}\n@optional {projects: [int] # The saved projects filter for this query., queryDataset: str(discover/error-events/transaction-like)=error-events # The dataset you would like to query. Note: `discover` is a **deprecated** value. The allowed values are: `error-events`, `transaction-like`  * `discover` * `error-events` * `transaction-like`, start: str(date-time) # The saved start time for this saved query., end: str(date-time) # The saved end time for this saved query., range: str # The saved time range period for this saved query., fields: [str] # 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: - A built-in key field. See possible fields in the [properties table](/product/sentry-basics/search/searchable-properties/#properties-table), under any field that is an event property.     - example: `field=transaction` - A tag. Tags should use the `tag[]` formatting to avoid ambiguity with any fields     - example: `field=tag[isEnterprise]` - A function which will be in the format of `function_name(parameters,...)`. See possible functions in the [query builder documentation](/product/discover-queries/query-builder/#stacking-functions).     - when a function is included, Discover will group by any tags or fields     - example: `field=count_if(transaction.duration,greater,300)` - An equation when prefixed with `equation|`. Read more about [equations here](/product/discover-queries/query-builder/query-equations/).     - example: `field=equation|count_if(transaction.duration,greater,300) / count() * 100`, orderby: str # How to order the query results. Must be something in the `field` list, excluding equations., environment: [str] # The name of environments to filter by., query: str # Filters results by using [query syntax](/product/sentry-basics/search/)., yAxis: [str] # Aggregate functions to be plotted on the chart., display: str # Visualization type for saved query chart. Allowed values are: - default - previous - top5 - daily - dailytop5 - bar, topEvents: int # Number of top events' timeseries to be visualized., interval: str # Resolution of the time series.}\n@returns(200) {environment: [str], query: str, fields: [str], widths: [str], conditions: [str], aggregations: [str], range: str, start: str, end: str, orderby: str, limit: str, yAxis: [str], display: str, topEvents: int, interval: str, exploreQuery: map, id: str, name: str, projects: [int], version: int, queryDataset: str, datasetSource: str, expired: bool, dateCreated: str, dateUpdated: str, createdBy: map{identities: [map], avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, authenticators: [any], canReset2fa: bool, id: str, name: str, username: str, email: str, avatarUrl: str, isActive: bool, isSuspended: bool, hasPasswordAuth: bool, isManaged: bool, dateJoined: str(date-time), lastLogin: str(date-time)?, has2fa: bool, lastActive: str(date-time)?, isSuperuser: bool, isStaff: bool, experiments: map, emails: [map]}}\n@errors {400: Bad Request, 403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /api/0/organizations/{organization_id_or_slug}/discover/saved/{query_id}/\n@desc Delete an Organization's Discover Saved Query\n@required {query_id: int # The ID of the Discover query you'd like to retrieve.}\n@returns(204) No Content\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/environments/\n@desc List an Organization's Environments\n@optional {visibility: str(all/hidden/visible) # The visibility of the environments to filter by. Defaults to `visible`.}\n@returns(200)\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/eventids/{event_id}/\n@desc Resolve an Event ID\n@required {event_id: str # The event ID to look up.}\n@returns(200) {organizationSlug: str, projectSlug: str, groupId: str, eventId: str, event: map{id: str, groupID: str?, eventID: str, projectID: str, message: str?, title: str, location: str?, user: map?{id: str?, email: str?, username: str?, ip_address: str?, name: str?, geo: map?, data: map?}, tags: [map], platform: str, dateReceived: str(date-time)?, contexts: map?, size: int?, entries: [any], dist: str?, sdk: map, context: map?, packages: map, type: str, metadata: any, errors: [any], occurrence: map?{id: str, projectId: int, eventId: str, fingerprint: [str], issueTitle: str, subtitle: str, resourceId: str?, evidenceData: map, evidenceDisplay: [map], type: int, detectionTime: num(double), level: str?, culprit: str?, assignee: str?, priority: int?}, _meta: map, crashFile: str?, culprit: str?, dateCreated: str(date-time), fingerprints: [str], groupingConfig: map{id: str, enhancements: str}, startTimestamp: str(date-time), endTimestamp: str(date-time), measurements: any, breakdowns: any}}\n@errors {404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/events/\n@desc Query Explore Events in Table Format\n@required {field: [str] # 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: - A built-in key field. See possible fields in the [properties table](/concepts/search/searchable-properties/), under any field that matches the dataset passed to the dataset parameter     - example: `field=transaction` - A tag. Tags should use the `tag[{name}, {type}]` formatting to avoid ambiguity with any fields,     - example: `field=tag[isEnterprise, string]`     - example: `field=tag[numberOfBytes, number]` - A function which will be in the format of `function_name(parameters,...)`. See possible functions in the [query builder documentation](/product/discover-queries/query-builder/#stacking-functions).     - when a function is included, Discover will group by any tags or fields     - example: `field=count_if(transaction.duration,greater,300)` - An equation when prefixed with `equation|`. Read more about [equations here](/product/discover-queries/query-builder/query-equations/).     - example: `field=equation|count_if(transaction.duration,greater,300) / count() * 100`, dataset: str(errors/logs/profile_functions/spans/tracemetrics/uptime_results) # Which dataset to query. The chosen dataset determines which fields are queryable. - `errors` - Error events. - `logs` - Structured log events. - `profile_functions` - Function-level Profiling data. - `spans` - Distributed tracing span events. - `tracemetrics` - Application Metrics. - `uptime_results` - Uptime monitoring check results.}\n@optional {end: str(date-time) # The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., environment: [str] # The name of environments to filter by., project: [any] # The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects. For example, the following are valid parameters: - `/?project=1234&project=56789` - `/?project=android&project=javascript-react` - `/?project=-1`, start: str(date-time) # The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., statsPeriod: str # The period of time for the query, will override the start & end parameters, a number followed by one of: - `d` for days - `h` for hours - `m` for minutes - `s` for seconds - `w` for weeks  For example, `24h`, to mean query data starting from 24 hours ago to now., per_page: int # Limit the number of rows to return in the result. Default and maximum allowed is 100., query: str # Filters results by using [query syntax](/product/sentry-basics/search/).  Example: `query=(transaction:foo AND release:abc) OR (transaction:[bar,baz] AND release:def)`, sort: str # What to order the results of the query by. Must be something in the `field` list, excluding equations., allowAggregateConditions: bool # If false, aggregate conditions in the query string are disallowed. Defaults to true., cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200) {data: [map], meta: map{fields: map, units: map, tips: map, datasetReason: str, isMetricsData: bool, isMetricsExtractedData: bool, dataset: str, discoverSplitDecision: any, dataScanned: str, bytesScanned: int, debug_info: any}}\n@errors {400: Invalid Query, 403: Forbidden}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/events-timeseries/\n@desc Query Explore Events in Timeseries Format\n@required {dataset: str(errors/logs/profile_functions/spans/tracemetrics/uptime_results) # Which dataset to query. The chosen dataset determines which fields are queryable. - `errors` - Error events. - `logs` - Structured log events. - `profile_functions` - Function-level Profiling data. - `spans` - Distributed tracing span events. - `tracemetrics` - Application Metrics. - `uptime_results` - Uptime monitoring check results.}\n@optional {end: str(date-time) # The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., environment: [str] # The name of environments to filter by., project: [any] # The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects. For example, the following are valid parameters: - `/?project=1234&project=56789` - `/?project=android&project=javascript-react` - `/?project=-1`, start: str(date-time) # The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., statsPeriod: str # The period of time for the query, will override the start & end parameters, a number followed by one of: - `d` for days - `h` for hours - `m` for minutes - `s` for seconds - `w` for weeks  For example, `24h`, to mean query data starting from 24 hours ago to now., topEvents: int # The number of top event results to return, must be between 1 and 10. When TopEvents is passed, both sort and groupBy are required parameters, comparisonDelta: int # The delta in seconds to return additional offset timeseries by, interval: int # The size of the bucket for the timeseries to have, must be a value smaller than the window being queried. If the interval is invalid a default interval will be selected instead, sort: str # What to order the results of the query by. Must be something in the `field` list, excluding equations., groupBy: [str] # List of fields to group by, *Required* for topEvents queries as this and sort determine what the top events are, yAxis: str # The aggregate field to create the timeseries for, defaults to `count()` when         not included. - `count()` - Total count of events over the period. - `avg(field)` - Average value of the field over the period. - `pXX(field)` - Percentile value of the field over the period. One of: `p50`, `p75`, `p90`, `p95`, `p99`, `p100`. - `sum(field)` - Sum of all values for the field over the period. - `min(field)` - Lowest value observed for the field over the period. - `max(field)` - Highest value observed for the field over the period. - `count_unique(field)` - Count of unique values observed for the field over the period. See *Note:* regarding accuracy on sampled data. - `epm` - Average number of events received per minute. - `eps` - Average number of events received per second. - `failure_rate()` - Percentage of events whose `status` indicates failure. - `failure_count()` - Total count of events with an error `status` over period. - `performance_score(field)` - Web Vitals performance score for the selected measurement. - `opportunity_score(field)` - Web Vitals opportunity score for the selected measurement., query: str # Filters results by using [query syntax](/product/sentry-basics/search/).  Example: `query=(transaction:foo AND release:abc) OR (transaction:[bar,baz] AND release:def)`, disableAggregateExtrapolation: str(0/1) # Whether to disable the use of extrapolation and return the sampled values, due to sampling the number returned may be less than the actual values sent to Sentry, preventMetricAggregates: str(0/1) # Whether to throw an error when aggregates are passed in the query or groupBy, excludeOther: str(0/1) # Only applicable with TopEvents, whether to include the 'other' timeseries which represents all the events that aren't in the top groups.}\n@returns(200) {meta: map{dataset: str, start: num(double), end: num(double)}, timeSeries: [map]}\n@errors {400: Invalid Query, 404: Not Found}\n\n@endpoint POST /api/0/organizations/{organization_id_or_slug}/external-users/\n@desc Create an External User\n@required {user_id: int # The user ID in Sentry., external_name: str # The associated name for the provider., provider: str(github/github_enterprise/jira_server/slack/slack_staging/perforce/gitlab/msteams/custom_scm) # The provider of the external actor.  * `github` * `github_enterprise` * `jira_server` * `slack` * `slack_staging` * `perforce` * `gitlab` * `msteams` * `custom_scm`, integration_id: int # The Integration ID., id: int # The external actor ID.}\n@optional {external_id: str # The associated user ID for provider.}\n@returns(200) {externalId: str, userId: str, teamId: str, id: str, provider: str, externalName: str, integrationId: str}\n@returns(201) {externalId: str, userId: str, teamId: str, id: str, provider: str, externalName: str, integrationId: str}\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint PUT /api/0/organizations/{organization_id_or_slug}/external-users/{external_user_id}/\n@desc Update an External User\n@required {external_user_id: int # The ID of the external user object. This is returned when creating an external user., user_id: int # The user ID in Sentry., external_name: str # The associated name for the provider., provider: str(github/github_enterprise/jira_server/slack/slack_staging/perforce/gitlab/msteams/custom_scm) # The provider of the external actor.  * `github` * `github_enterprise` * `jira_server` * `slack` * `slack_staging` * `perforce` * `gitlab` * `msteams` * `custom_scm`, integration_id: int # The Integration ID., id: int # The external actor ID.}\n@optional {external_id: str # The associated user ID for provider.}\n@returns(200) {externalId: str, userId: str, teamId: str, id: str, provider: str, externalName: str, integrationId: str}\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint DELETE /api/0/organizations/{organization_id_or_slug}/external-users/{external_user_id}/\n@desc Delete an External User\n@required {external_user_id: int # The ID of the external user object. This is returned when creating an external user.}\n@returns(204) No Content\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/forwarding/\n@desc Retrieve Data Forwarders for an Organization\n@returns(200)\n\n@endpoint POST /api/0/organizations/{organization_id_or_slug}/forwarding/\n@desc Create a Data Forwarder for an Organization\n@required {organization_id: int # The ID of the organization related to the data forwarder., provider: str(segment/sqs/splunk) # The provider of the data forwarder. One of \"segment\", \"sqs\", or \"splunk\".  * `segment` - Segment * `sqs` - Amazon SQS * `splunk` - Splunk}\n@optional {is_enabled: bool=true # Whether the data forwarder is enabled., enroll_new_projects: bool=false # Whether to enroll new projects automatically, after they're created., config: map # The configuration for the data forwarder, specific to the provider type.  For a 'sqs' provider, the required keys are queue_url, region, access_key, secret_key. If using a FIFO queue, you must also provide a message_group_id, though s3_bucket is optional.  For a 'segment' provider, the required keys are write_key.  For a 'splunk' provider, the required keys are instance_url, index, source, token., project_ids: [int] # The IDs of the projects connected to the data forwarder. Missing project IDs will be unenrolled if previously enrolled.}\n@returns(201) {id: str, organizationId: str, isEnabled: bool, enrollNewProjects: bool, enrolledProjects: [map], provider: str, config: map?, projectConfigs: [map], dateAdded: str(date-time), dateUpdated: str(date-time)}\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint PUT /api/0/organizations/{organization_id_or_slug}/forwarding/{data_forwarder_id}/\n@desc Update a Data Forwarder for an Organization\n@required {data_forwarder_id: int # The ID of the data forwarder you'd like to query., organization_id: int # The ID of the organization related to the data forwarder., provider: str(segment/sqs/splunk) # The provider of the data forwarder. One of \"segment\", \"sqs\", or \"splunk\".  * `segment` - Segment * `sqs` - Amazon SQS * `splunk` - Splunk}\n@optional {is_enabled: bool=true # Whether the data forwarder is enabled., enroll_new_projects: bool=false # Whether to enroll new projects automatically, after they're created., config: map # The configuration for the data forwarder, specific to the provider type.  For a 'sqs' provider, the required keys are queue_url, region, access_key, secret_key. If using a FIFO queue, you must also provide a message_group_id, though s3_bucket is optional.  For a 'segment' provider, the required keys are write_key.  For a 'splunk' provider, the required keys are instance_url, index, source, token., project_ids: [int] # The IDs of the projects connected to the data forwarder. Missing project IDs will be unenrolled if previously enrolled.}\n@returns(200) {id: str, organizationId: str, isEnabled: bool, enrollNewProjects: bool, enrolledProjects: [map], provider: str, config: map?, projectConfigs: [map], dateAdded: str(date-time), dateUpdated: str(date-time)}\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint DELETE /api/0/organizations/{organization_id_or_slug}/forwarding/{data_forwarder_id}/\n@desc Delete a Data Forwarder for an Organization\n@required {data_forwarder_id: int # The ID of the data forwarder you'd like to query.}\n@returns(204) No Content\n@errors {403: Forbidden}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/integrations/\n@desc List an Organization's Available Integrations\n@optional {providerKey: str # Specific integration provider to filter by such as `slack`. See our [Integrations Documentation](/product/integrations/) for an updated list of providers., features: [str] # Integration features to filter by. See our [Integrations Documentation](/product/integrations/) for an updated list of features. Current available ones are: - `alert-rule` - `chat-unfurl` - `codeowners` - `commits` - `data-forwarding` - `deployment` - `enterprise-alert-rule` - `enterprise-incident-management` - `incident-management` - `issue-basic` - `issue-sync` - `mobile` - `serverless` - `session-replay` - `stacktrace-link` - `ticket-rules`, includeConfig: bool # Specify `True` to fetch third-party integration configurations. Note that this can add several seconds to the response time., cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200)\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/integrations/{integration_id}/\n@desc Retrieve an Integration for an Organization\n@required {integration_id: str # The ID of the integration installed on the organization.}\n@returns(200) {id: str, name: str, icon: str?, domainName: str?, accountType: str?, scopes: [str]?, status: str, provider: any, configOrganization: any, configData: any, externalId: str, organizationId: int, organizationIntegrationStatus: str, gracePeriodEnd: str?}\n\n@endpoint DELETE /api/0/organizations/{organization_id_or_slug}/integrations/{integration_id}/\n@desc Delete an Integration for an Organization\n@required {integration_id: str # The ID of the integration installed on the organization.}\n@returns(204) No Content\n@errors {404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/issues/\n@desc List an Organization's Issues\n@optional {environment: [str] # The name of environments to filter by., project: [any] # The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects. For example, the following are valid parameters: - `/?project=1234&project=56789` - `/?project=android&project=javascript-react` - `/?project=-1`, statsPeriod: str # The period of time for the query, will override the start & end parameters, a number followed by one of: - `d` for days - `h` for hours - `m` for minutes - `s` for seconds - `w` for weeks  For example, `24h`, to mean query data starting from 24 hours ago to now., start: str(date-time) # The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., end: str(date-time) # The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., groupStatsPeriod: str(/14d/24h/auto) # The timeline on which stats for the groups should be presented., shortIdLookup: str(0/1) # 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., query: str=is:unresolved # 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., viewId: str # The ID of the view to use. If no query is present, the view's query and filters will be applied., sort: str(date/freq/inbox/new/recommended/trends/user)=date # The sort order of the view. Options include 'Last Seen' (`date`), 'First Seen' (`new`), 'Trends' (`trends`), 'Events' (`freq`), 'Users' (`user`), 'Date Added' (`inbox`), and 'Recommended' (`recommended`)., limit: int=100 # The maximum number of issues to affect. The maximum is 100., expand: [str] # Additional data to include in the response., collapse: [str] # Fields to remove from the response to improve query performance., cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200)\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint PUT /api/0/organizations/{organization_id_or_slug}/issues/\n@desc Bulk Mutate an Organization's Issues\n@required {inbox: bool # If true, marks the issue as reviewed by the requestor., status: str(resolved/unresolved/ignored/resolvedInNextRelease/muted) # Limit mutations to only issues with the given status.  * `resolved` * `unresolved` * `ignored` * `resolvedInNextRelease` * `muted`, statusDetails: any # Additional details about the resolution. Status detail updates that include release data are only allowed for issues within a single project., substatus: str(archived_until_escalating/archived_until_condition_met/archived_forever/escalating/ongoing/regressed/new) # The new substatus of the issue.  * `archived_until_escalating` * `archived_until_condition_met` * `archived_forever` * `escalating` * `ongoing` * `regressed` * `new`, hasSeen: bool # If true, marks the issue as seen by the requestor., isBookmarked: bool # If true, bookmarks the issue for the requestor., isPublic: bool # If true, publishes the issue., isSubscribed: bool # If true, subscribes the requestor to the issue., merge: bool # If true, merges the issues together., discard: bool # If true, discards the issues instead of updating them., assignedTo: str # The user or team that should be assigned to the issues. Values take the form of ``, `user:`, ``, ``, or `team:`., priority: str(low/medium/high) # The priority that should be set for the issues  * `low` * `medium` * `high`}\n@optional {environment: [str] # The name of environments to filter by., project: [any] # The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects. For example, the following are valid parameters: - `/?project=1234&project=56789` - `/?project=android&project=javascript-react` - `/?project=-1`, id: [int] # The list of issue IDs to mutate. It is optional for status updates, in which an implicit `update all` is assumed., query: str=is:unresolved # 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., viewId: str # The ID of the view to use. If no query is present, the view's query and filters will be applied., sort: str(date/freq/inbox/new/recommended/trends/user)=date # The sort order of the view. Options include 'Last Seen' (`date`), 'First Seen' (`new`), 'Trends' (`trends`), 'Events' (`freq`), 'Users' (`user`), 'Date Added' (`inbox`), and 'Recommended' (`recommended`)., limit: int=100 # The maximum number of issues to affect. The maximum is 100.}\n@returns(200) {assignedTo: map{type: str, id: str, name: str, email: str}, discard: bool, hasSeen: bool, inbox: bool, isBookmarked: bool, isPublic: bool, isSubscribed: bool, merge: map{parent: str, children: [str]}, priority: str, shareId: str, status: str, statusDetails: map{inNextRelease: bool, inRelease: str, inCommit: map{commit: str, repository: str}, ignoreDuration: int, ignoreCount: int, ignoreWindow: int, ignoreUserCount: int, ignoreUserWindow: int}, subscriptionDetails: map{disabled: bool, reason: str}, substatus: str}\n@returns(204) No Content\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /api/0/organizations/{organization_id_or_slug}/issues/\n@desc Bulk Remove an Organization's Issues\n@optional {environment: [str] # The name of environments to filter by., project: [any] # The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects. For example, the following are valid parameters: - `/?project=1234&project=56789` - `/?project=android&project=javascript-react` - `/?project=-1`, id: [int] # The list of issue IDs to be removed. If not provided, it will attempt to remove the first 1000 issues., query: str=is:unresolved # 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., viewId: str # The ID of the view to use. If no query is present, the view's query and filters will be applied., sort: str(date/freq/inbox/new/recommended/trends/user)=date # The sort order of the view. Options include 'Last Seen' (`date`), 'First Seen' (`new`), 'Trends' (`trends`), 'Events' (`freq`), 'Users' (`user`), 'Date Added' (`inbox`), and 'Recommended' (`recommended`)., limit: int=100 # The maximum number of issues to affect. The maximum is 100.}\n@returns(204) No Content\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/members/\n@desc List an Organization's Members\n@optional {cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint POST /api/0/organizations/{organization_id_or_slug}/members/\n@desc Add a Member to an Organization\n@required {email: str(email) # The email address to send the invitation to.}\n@optional {orgRole: str(billing/member/manager/owner/admin)=member # The organization-level role of the new member. Roles include:  * `billing` - Can manage payment and compliance details. * `member` - Can view and act on events, as well as view most other data within the organization. * `manager` - Has full management access to all teams and projects. Can also manage         the organization's membership. * `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. * `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., teamRoles: [map] # The team and team-roles assigned to the member. Team roles can be either:         - `contributor` - Can view and act on issues. Depending on organization settings, they can also add team members.         - `admin` - Has full management access to their team's membership and projects., sendInvite: bool=true # Whether or not to send an invite notification through email. Defaults to True., reinvite: bool # Whether or not to re-invite a user who has already been invited to the organization. Defaults to True.}\n@returns(201) {externalUsers: [map], id: str, email: str, name: str, user: map{identities: [map], avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, authenticators: [any], canReset2fa: bool, id: str, name: str, username: str, email: str, avatarUrl: str, isActive: bool, isSuspended: bool, hasPasswordAuth: bool, isManaged: bool, dateJoined: str(date-time), lastLogin: str(date-time)?, has2fa: bool, lastActive: str(date-time)?, isSuperuser: bool, isStaff: bool, experiments: map, emails: [map]}, orgRole: str, pending: bool, expired: bool, flags: map{idp:provisioned: bool, idp:role-restricted: bool, sso:linked: bool, sso:invalid: bool, member-limit:restricted: bool, partnership:restricted: bool}, dateCreated: str(date-time), inviteStatus: str, inviterName: str?}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/members/{member_id}/\n@desc Retrieve an Organization Member\n@required {member_id: str # The ID of the organization member.}\n@returns(200) {externalUsers: [map], role: str, roleName: str, id: str, email: str, name: str, user: map{identities: [map], avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, authenticators: [any], canReset2fa: bool, id: str, name: str, username: str, email: str, avatarUrl: str, isActive: bool, isSuspended: bool, hasPasswordAuth: bool, isManaged: bool, dateJoined: str(date-time), lastLogin: str(date-time)?, has2fa: bool, lastActive: str(date-time)?, isSuperuser: bool, isStaff: bool, experiments: map, emails: [map]}, orgRole: str, pending: bool, expired: bool, flags: map{idp:provisioned: bool, idp:role-restricted: bool, sso:linked: bool, sso:invalid: bool, member-limit:restricted: bool, partnership:restricted: bool}, dateCreated: str(date-time), inviteStatus: str, inviterName: str?, teams: [str], teamRoles: [map], invite_link: str?, isOnlyOwner: bool, orgRoleList: [map], teamRoleList: [map]}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint PUT /api/0/organizations/{organization_id_or_slug}/members/{member_id}/\n@desc Update an Organization Member's Roles\n@required {member_id: str # The ID of the member to update.}\n@optional {orgRole: str(billing/member/manager/owner/admin) # The organization role of the member. The options are:  * `billing` - Can manage payment and compliance details. * `member` - Can view and act on events, as well as view most other data within the organization. * `manager` - Has full management access to all teams and projects. Can also manage         the organization's membership. * `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. * `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., teamRoles: [map] # Configures the team role of the member. The two roles are: - `contributor` - Can view and act on issues. Depending on organization settings, they can also add team members. - `admin` - Has full management access to their team's membership and projects. ```json {     \"teamRoles\": [         {             \"teamSlug\": \"ancient-gabelers\",             \"role\": \"admin\"         },         {             \"teamSlug\": \"powerful-abolitionist\",             \"role\": \"contributor\"         }     ] } ```}\n@returns(200) {externalUsers: [map], role: str, roleName: str, id: str, email: str, name: str, user: map{identities: [map], avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, authenticators: [any], canReset2fa: bool, id: str, name: str, username: str, email: str, avatarUrl: str, isActive: bool, isSuspended: bool, hasPasswordAuth: bool, isManaged: bool, dateJoined: str(date-time), lastLogin: str(date-time)?, has2fa: bool, lastActive: str(date-time)?, isSuperuser: bool, isStaff: bool, experiments: map, emails: [map]}, orgRole: str, pending: bool, expired: bool, flags: map{idp:provisioned: bool, idp:role-restricted: bool, sso:linked: bool, sso:invalid: bool, member-limit:restricted: bool, partnership:restricted: bool}, dateCreated: str(date-time), inviteStatus: str, inviterName: str?, teams: [str], teamRoles: [map], invite_link: str?, isOnlyOwner: bool, orgRoleList: [map], teamRoleList: [map]}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden}\n\n@endpoint DELETE /api/0/organizations/{organization_id_or_slug}/members/{member_id}/\n@desc Delete an Organization Member\n@required {member_id: str # The ID of the member to delete.}\n@returns(204) No Content\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint POST /api/0/organizations/{organization_id_or_slug}/members/{member_id}/teams/{team_id_or_slug}/\n@desc Add an Organization Member to a Team\n@required {member_id: str # The ID of the organization member to add to the team, team_id_or_slug: str # The ID or slug of the team the resource belongs to.}\n@returns(201) {id: str, slug: str, name: str, dateCreated: str(date-time)?, isMember: bool, teamRole: str?, flags: map, access: [str], hasAccess: bool, isPending: bool, memberCount: int, avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}}\n@returns(202) Accepted\n@returns(204) No Content\n@errors {401: Unauthorized, 403: This team is managed through your organization's identity provider, 404: Not Found}\n\n@endpoint PUT /api/0/organizations/{organization_id_or_slug}/members/{member_id}/teams/{team_id_or_slug}/\n@desc Update an Organization Member's Team Role\n@required {member_id: str # The ID of the organization member to change, team_id_or_slug: str # The ID or slug of the team the resource belongs to.}\n@optional {teamRole: str(contributor/admin)=contributor # The team-level role to switch to. Valid roles include:  * `contributor` - Contributors can view and act on events, as well as view most other data within the team's projects. * `admin` - Admin privileges on the team. They can create and remove projects, and can manage the team's memberships.}\n@returns(200) {isActive: bool, teamRole: str}\n@errors {400: Bad Request, 404: Not Found}\n\n@endpoint DELETE /api/0/organizations/{organization_id_or_slug}/members/{member_id}/teams/{team_id_or_slug}/\n@desc Delete an Organization Member from a Team\n@required {member_id: str # The ID of the organization member to delete from the team, team_id_or_slug: str # The ID or slug of the team the resource belongs to.}\n@returns(200) {id: str, slug: str, name: str, dateCreated: str(date-time)?, isMember: bool, teamRole: str?, flags: map, access: [str], hasAccess: bool, isPending: bool, memberCount: int, avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}}\n@errors {400: Bad Request, 403: This team is managed through your organization's identity provider, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/monitors/\n@desc Retrieve Monitors for an Organization\n@optional {project: [any] # The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects. For example, the following are valid parameters: - `/?project=1234&project=56789` - `/?project=android&project=javascript-react` - `/?project=-1`, environment: [str] # The name of environments to filter by., owner: str # The owner of the monitor, in the format `user:id` or `team:id`. May be specified multiple times., cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint POST /api/0/organizations/{organization_id_or_slug}/monitors/\n@desc Create a Monitor\n@required {project: str # The project ID or slug to associate the monitor to., name: str # Name of the monitor. Used for notifications. If not set the slug will be derived from your monitor name., config: any # The configuration for the monitor.}\n@optional {slug: str # Uniquely identifies your monitor within your organization. Changing this slug will require updates to any instrumented check-in calls., status: str(active/disabled)=active # Status of the monitor. Disabled monitors will not accept events and will not count towards the monitor quota.  * `active` * `disabled`, owner: str # The ID of the team or user that owns the monitor. (eg. user:51 or team:6), is_muted: bool # Disable creation of monitor incidents}\n@returns(201) {alertRule: map{targets: [map], environment: str}, id: str, name: str, slug: str, status: str, isMuted: bool, isUpserting: bool, config: map{schedule_type: str, schedule: any, checkin_margin: int?, max_runtime: int?, timezone: str?, failure_issue_threshold: int?, recovery_threshold: int?, alert_rule_id: int?}, dateCreated: str(date-time), project: map{stats: any, transactionStats: any, sessionStats: any, id: str, slug: str, name: str, platform: str?, dateCreated: str(date-time), isBookmarked: bool, isMember: bool, features: [str], firstEvent: str(date-time)?, firstTransactionEvent: bool, access: [str], hasAccess: bool, hasFeedbacks: bool, hasFlags: bool, hasMinifiedStackTrace: bool, hasMonitors: bool, hasNewFeedbacks: bool, hasProfiles: bool, hasReplays: bool, hasSessions: bool, hasInsightsHttp: bool, hasInsightsDb: bool, hasInsightsAssets: bool, hasInsightsAppStart: bool, hasInsightsScreenLoad: bool, hasInsightsVitals: bool, hasInsightsCaches: bool, hasInsightsQueues: bool, hasInsightsAgentMonitoring: bool, hasInsightsMCP: bool, hasLogs: bool, hasTraceMetrics: bool, isInternal: bool, isPublic: bool, avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, color: str, status: str}, environments: map{name: str, status: str, isMuted: bool, dateCreated: str(date-time), lastCheckIn: str(date-time), nextCheckIn: str(date-time), nextCheckInLatest: str(date-time), activeIncident: map?{startingTimestamp: str(date-time), resolvingTimestamp: str(date-time), brokenNotice: map?{userNotifiedTimestamp: str(date-time), environmentMutedTimestamp: str(date-time)}}}, owner: map{type: str, id: str, name: str, email: str}}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/monitors/{monitor_id_or_slug}/\n@desc Retrieve a Monitor\n@required {monitor_id_or_slug: str # The ID or slug of the monitor.}\n@optional {environment: [str] # The name of environments to filter by.}\n@returns(200) {alertRule: map{targets: [map], environment: str}, id: str, name: str, slug: str, status: str, isMuted: bool, isUpserting: bool, config: map{schedule_type: str, schedule: any, checkin_margin: int?, max_runtime: int?, timezone: str?, failure_issue_threshold: int?, recovery_threshold: int?, alert_rule_id: int?}, dateCreated: str(date-time), project: map{stats: any, transactionStats: any, sessionStats: any, id: str, slug: str, name: str, platform: str?, dateCreated: str(date-time), isBookmarked: bool, isMember: bool, features: [str], firstEvent: str(date-time)?, firstTransactionEvent: bool, access: [str], hasAccess: bool, hasFeedbacks: bool, hasFlags: bool, hasMinifiedStackTrace: bool, hasMonitors: bool, hasNewFeedbacks: bool, hasProfiles: bool, hasReplays: bool, hasSessions: bool, hasInsightsHttp: bool, hasInsightsDb: bool, hasInsightsAssets: bool, hasInsightsAppStart: bool, hasInsightsScreenLoad: bool, hasInsightsVitals: bool, hasInsightsCaches: bool, hasInsightsQueues: bool, hasInsightsAgentMonitoring: bool, hasInsightsMCP: bool, hasLogs: bool, hasTraceMetrics: bool, isInternal: bool, isPublic: bool, avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, color: str, status: str}, environments: map{name: str, status: str, isMuted: bool, dateCreated: str(date-time), lastCheckIn: str(date-time), nextCheckIn: str(date-time), nextCheckInLatest: str(date-time), activeIncident: map?{startingTimestamp: str(date-time), resolvingTimestamp: str(date-time), brokenNotice: map?{userNotifiedTimestamp: str(date-time), environmentMutedTimestamp: str(date-time)}}}, owner: map{type: str, id: str, name: str, email: str}}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint PUT /api/0/organizations/{organization_id_or_slug}/monitors/{monitor_id_or_slug}/\n@desc Update a Monitor\n@required {monitor_id_or_slug: str # The ID or slug of the monitor., project: str # The project ID or slug to associate the monitor to., name: str # Name of the monitor. Used for notifications. If not set the slug will be derived from your monitor name., config: any # The configuration for the monitor.}\n@optional {slug: str # Uniquely identifies your monitor within your organization. Changing this slug will require updates to any instrumented check-in calls., status: str(active/disabled)=active # Status of the monitor. Disabled monitors will not accept events and will not count towards the monitor quota.  * `active` * `disabled`, owner: str # The ID of the team or user that owns the monitor. (eg. user:51 or team:6), is_muted: bool # Disable creation of monitor incidents}\n@returns(200) {alertRule: map{targets: [map], environment: str}, id: str, name: str, slug: str, status: str, isMuted: bool, isUpserting: bool, config: map{schedule_type: str, schedule: any, checkin_margin: int?, max_runtime: int?, timezone: str?, failure_issue_threshold: int?, recovery_threshold: int?, alert_rule_id: int?}, dateCreated: str(date-time), project: map{stats: any, transactionStats: any, sessionStats: any, id: str, slug: str, name: str, platform: str?, dateCreated: str(date-time), isBookmarked: bool, isMember: bool, features: [str], firstEvent: str(date-time)?, firstTransactionEvent: bool, access: [str], hasAccess: bool, hasFeedbacks: bool, hasFlags: bool, hasMinifiedStackTrace: bool, hasMonitors: bool, hasNewFeedbacks: bool, hasProfiles: bool, hasReplays: bool, hasSessions: bool, hasInsightsHttp: bool, hasInsightsDb: bool, hasInsightsAssets: bool, hasInsightsAppStart: bool, hasInsightsScreenLoad: bool, hasInsightsVitals: bool, hasInsightsCaches: bool, hasInsightsQueues: bool, hasInsightsAgentMonitoring: bool, hasInsightsMCP: bool, hasLogs: bool, hasTraceMetrics: bool, isInternal: bool, isPublic: bool, avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, color: str, status: str}, environments: map{name: str, status: str, isMuted: bool, dateCreated: str(date-time), lastCheckIn: str(date-time), nextCheckIn: str(date-time), nextCheckInLatest: str(date-time), activeIncident: map?{startingTimestamp: str(date-time), resolvingTimestamp: str(date-time), brokenNotice: map?{userNotifiedTimestamp: str(date-time), environmentMutedTimestamp: str(date-time)}}}, owner: map{type: str, id: str, name: str, email: str}}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /api/0/organizations/{organization_id_or_slug}/monitors/{monitor_id_or_slug}/\n@desc Delete a Monitor or Monitor Environments\n@required {monitor_id_or_slug: str # The ID or slug of the monitor.}\n@optional {environment: [str] # The name of environments to filter by.}\n@returns(202) Accepted\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/monitors/{monitor_id_or_slug}/checkins/\n@desc Retrieve Check-Ins for a Monitor\n@required {monitor_id_or_slug: str # The ID or slug of the monitor.}\n@optional {cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/notifications/actions/\n@desc List Spike Protection Notifications\n@optional {project: [any] # The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects. For example, the following are valid parameters: - `/?project=1234&project=56789` - `/?project=android&project=javascript-react` - `/?project=-1`, project_id_or_slug: [str] # The legacy project slug filter. Prefer `project`, which accepts project IDs or slugs. Use `$all` to include all available projects. For example, the following are valid parameters: - `/?projectSlug=$all` - `/?projectSlug=android&projectSlug=javascript-react`, triggerType: str # Type of the trigger that causes the notification. The only supported value right now is: `spike-protection`}\n@returns(201) {id: int, organizationId: int, integrationId: int?, sentryAppId: int?, projects: [int], serviceType: str?, triggerType: str, targetType: str?, targetIdentifier: str?, targetDisplay: str?}\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint POST /api/0/organizations/{organization_id_or_slug}/notifications/actions/\n@desc Create a Spike Protection Notification Action\n@required {trigger_type: str # Type of the trigger that causes the notification. The only supported trigger right now is: `spike-protection`., service_type: str # Service that is used for sending the notification. - `email` - `slack` - `sentry_notification` - `pagerduty` - `opsgenie`}\n@optional {integration_id: int # ID of the integration used as the notification service. See [List Integrations](https://docs.sentry.io/api/integrations/list-an-organizations-available-integrations/) to retrieve a full list of integrations.  Required if **service_type** is `slack`, `pagerduty` or `opsgenie`., target_identifier: str # ID of the notification target, like a Slack channel ID.  Required if **service_type** is `slack` or `opsgenie`., target_display: str # Name of the notification target, like a Slack channel name.  Required if **service_type** is `slack` or `opsgenie`., projects: [str] # List of project IDs or slugs that the Notification Action is created for.}\n@returns(201) {id: int, organizationId: int, integrationId: int?, sentryAppId: int?, projects: [int], serviceType: str?, triggerType: str, targetType: str?, targetIdentifier: str?, targetDisplay: str?}\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/notifications/actions/{action_id}/\n@desc Retrieve a Spike Protection Notification Action\n@required {action_id: int # ID of the notification action to retrieve}\n@returns(200) {id: int, organizationId: int, integrationId: int?, sentryAppId: int?, projects: [int], serviceType: str?, triggerType: str, targetType: str?, targetIdentifier: str?, targetDisplay: str?}\n\n@endpoint PUT /api/0/organizations/{organization_id_or_slug}/notifications/actions/{action_id}/\n@desc Update a Spike Protection Notification Action\n@required {action_id: int # ID of the notification action to retrieve, trigger_type: str # Type of the trigger that causes the notification. The only supported trigger right now is: `spike-protection`., service_type: str # Service that is used for sending the notification. - `email` - `slack` - `sentry_notification` - `pagerduty` - `opsgenie`}\n@optional {integration_id: int # ID of the integration used as the notification service. See [List Integrations](https://docs.sentry.io/api/integrations/list-an-organizations-available-integrations/) to retrieve a full list of integrations.  Required if **service_type** is `slack`, `pagerduty` or `opsgenie`., target_identifier: str # ID of the notification target, like a Slack channel ID.  Required if **service_type** is `slack` or `opsgenie`., target_display: str # Name of the notification target, like a Slack channel name.  Required if **service_type** is `slack` or `opsgenie`., projects: [str] # List of project IDs or slugs that the Notification Action is created for.}\n@returns(202) {id: int, organizationId: int, integrationId: int?, sentryAppId: int?, projects: [int], serviceType: str?, triggerType: str, targetType: str?, targetIdentifier: str?, targetDisplay: str?}\n@errors {400: Bad Request}\n\n@endpoint DELETE /api/0/organizations/{organization_id_or_slug}/notifications/actions/{action_id}/\n@desc Delete a Spike Protection Notification Action\n@required {action_id: int # ID of the notification action to retrieve}\n@returns(204) No Content\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/preprodartifacts/{artifact_id}/install-details/\n@desc Retrieve install info for a given artifact\n@required {artifact_id: str # The ID of the build artifact.}\n@returns(200) {buildId: str, state: str, appInfo: map{appId: str?, name: str?, version: str?, buildNumber: int?, artifactType: str?, dateAdded: str?, dateBuilt: str?}, gitInfo: map?{headSha: str?, baseSha: str?, provider: str?, headRepoName: str?, baseRepoName: str?, headRef: str?, baseRef: str?, prNumber: int?}, platform: str?, projectId: str, projectSlug: str, buildConfiguration: str?, isInstallable: bool, installUrl: str?, installUrlExpiresAt: str?, downloadCount: int, releaseNotes: str?, installGroups: [str]?, isCodeSignatureValid: bool?, profileName: str?, codesigningType: str?}\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/preprodartifacts/{artifact_id}/size-analysis/\n@desc Retrieve Size Analysis results for a given artifact\n@required {artifact_id: str # The ID of the build artifact.}\n@optional {baseArtifactId: str # Optional ID of the base artifact to compare against. If not provided, uses the default base head artifact.}\n@returns(200) {buildId: str, state: str, appInfo: map{appId: str?, name: str?, version: str?, buildNumber: int?, artifactType: str?, dateAdded: str?, dateBuilt: str?}, gitInfo: map?{headSha: str?, baseSha: str?, provider: str?, headRepoName: str?, baseRepoName: str?, headRef: str?, baseRef: str?, prNumber: int?}, errorCode: str?, errorMessage: str?, downloadSize: int?, installSize: int?, analysisDuration: num(double)?, analysisVersion: str?, baseBuildId: str?, baseAppInfo: map?{appId: str?, name: str?, version: str?, buildNumber: int?, artifactType: str?, dateAdded: str?, dateBuilt: str?}, insights: map?, appComponents: [map]?, comparisons: [map]?}\n@errors {400: Bad Request, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/preprodartifacts/snapshots/{snapshot_id}/\n@desc Retrieve Snapshot details\n@required {snapshot_id: str # The ID of the snapshot.}\n@optional {compact_metadata: str # Set to '1' or 'true' to strip image metadata to display_name, image_file_name, group, and description only.}\n@returns(200) {head_artifact_id: str, base_artifact_id: str?, project_id: str, comparison_type: str, state: str, vcs_info: map{head_sha: str?, base_sha: str?, provider: str?, head_repo_name: str?, base_repo_name: str?, head_ref: str?, base_ref: str?, pr_number: int?}, app_id: str?, is_selective: bool, images: [map], image_count: int, added: [map], added_count: int, removed: [map], removed_count: int, renamed: [map], renamed_count: int, changed: [map], changed_count: int, unchanged: [map], unchanged_count: int, errored: [map], errored_count: int, skipped: [map], skipped_count: int, diff_threshold: num(double)?, comparison_state: str?, approval_status: str?, comparison_error_message: str?, approvers: [map]}\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /api/0/organizations/{organization_id_or_slug}/preprodartifacts/snapshots/{snapshot_id}/\n@desc Delete a Snapshot\n@required {snapshot_id: str # The ID of the snapshot to delete.}\n@returns(204) No response body\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/preprodartifacts/snapshots/{snapshot_id}/images/{image_identifier}/\n@desc Retrieve Snapshot image detail\n@required {snapshot_id: str # The ID of the snapshot., image_identifier: str # The image filename or content hash.}\n@returns(200) {image_file_name: str, comparison_status: str?, head_image: map?{key: str, display_name: str?, group: str?, image_file_name: str, width: int, height: int, canvas_theme: str?, diff_threshold: num(double)?, description: str?, tags: map?, image_url: str}, base_image: map?{key: str, display_name: str?, group: str?, image_file_name: str, width: int, height: int, canvas_theme: str?, diff_threshold: num(double)?, description: str?, tags: map?, image_url: str}, diff_image_url: str?, diff_percentage: num(double)?, previous_image_file_name: str?}\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/preprodartifacts/snapshots/latest-base/\n@desc Retrieve latest base Snapshot\n@required {app_id: str # App identifier to match.}\n@optional {branch: str # Git branch name to filter on., project: any # Project ID or slug to scope the lookup., compact_metadata: str # Set to '1' or 'true' to strip image metadata to display_name, image_file_name, group, description, and image_url only.}\n@returns(200) {head_artifact_id: str, project_id: str, project_slug: str, app_id: str?, image_count: int, images: [map], diff_threshold: num(double)?, date_added: str, vcs_info: map{head_sha: str?, base_sha: str?, head_ref: str?, base_ref: str?, head_repo_name: str?, pr_number: int?}}\n@errors {400: Bad Request, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/profiling/chunks/\n@desc Retrieve Profile Chunks for an Organization\n@required {project: str # The ID or slug of the project to fetch chunks for. Exactly one project must be specified., profiler_id: str # The continuous-profiler ID to fetch chunks for.}\n@optional {statsPeriod: str # The period of time for the query, will override the start & end parameters, a number followed by one of: - `d` for days - `h` for hours - `m` for minutes - `s` for seconds - `w` for weeks  For example, `24h`, to mean query data starting from 24 hours ago to now., start: str(date-time) # The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., end: str(date-time) # The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`.}\n@returns(200)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/profiling/flamegraph/\n@desc Retrieve a Flamegraph for an Organization\n@optional {project: [any] # The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects. For example, the following are valid parameters: - `/?project=1234&project=56789` - `/?project=android&project=javascript-react` - `/?project=-1`, environment: [str] # The name of environments to filter by., statsPeriod: str # The period of time for the query, will override the start & end parameters, a number followed by one of: - `d` for days - `h` for hours - `m` for minutes - `s` for seconds - `w` for weeks  For example, `24h`, to mean query data starting from 24 hours ago to now., start: str(date-time) # The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., end: str(date-time) # The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., dataSource: str(functions/profiles/spans/transactions) # Source dataset to build the flamegraph from. Defaults to `functions` when `fingerprint` is set and `transactions` otherwise., fingerprint: int # A UInt32 function fingerprint. Only valid when `dataSource=functions`., query: str # Sentry [search syntax](https://docs.sentry.io/concepts/search/) to filter the candidate profiles., expand: [str] # Optional expansions. Pass `metrics` to include flamegraph metric aggregates in the response.}\n@returns(200)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/project-keys/\n@desc List an Organization's Client Keys\n@optional {cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results., team: str # Filter keys by team slug or ID. If provided, only keys for projects belonging to this team will be returned., status: str(active/inactive) # Filter keys by status. Options are 'active' or 'inactive'.  * `active` * `inactive`}\n@returns(200)\n@errors {400: Bad Request, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/projects/\n@desc List an Organization's Projects\n@optional {cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results., per_page: int # Limit the number of rows to return in the result. Default and maximum allowed is 100., query: str # Filter projects by name or slug.}\n@returns(200)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint POST /api/0/organizations/{organization_id_or_slug}/projects/\n@desc Create a Project for an Organization\n@required {name: str # The name for the project.}\n@optional {slug: str # Uniquely identifies a project and is used for the interface.         If not provided, it is automatically generated from the name., platform: str # The platform for the project., default_rules: bool # 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@returns(201) {latestDeploys: map?, options: map, stats: any, transactionStats: any, sessionStats: any, id: str, slug: str, name: str, platform: str?, dateCreated: str(date-time), isBookmarked: bool, isMember: bool, features: [str], firstEvent: str(date-time)?, firstTransactionEvent: bool, access: [str], hasAccess: bool, hasFeedbacks: bool, hasFlags: bool, hasMinifiedStackTrace: bool, hasMonitors: bool, hasNewFeedbacks: bool, hasProfiles: bool, hasReplays: bool, hasSessions: bool, hasInsightsHttp: bool, hasInsightsDb: bool, hasInsightsAssets: bool, hasInsightsAppStart: bool, hasInsightsScreenLoad: bool, hasInsightsVitals: bool, hasInsightsCaches: bool, hasInsightsQueues: bool, hasInsightsAgentMonitoring: bool, hasInsightsMCP: bool, hasLogs: bool, hasTraceMetrics: bool, team: map?{id: str, name: str, slug: str}, teams: [map], platforms: [str], hasUserReports: bool, environments: [str], latestRelease: map?{version: str}}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found, 409: Conflict}\n\n@endpoint POST /api/0/organizations/{organization_id_or_slug}/projects/{project_id_or_slug}/detectors/\n@desc Create a Monitor for a Project\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., name: str # Name of the monitor., type: str # The type of monitor - `metric_issue`.}\n@optional {workflow_ids: [int] # The IDs of the alerts to connect this monitor to. Use the 'Fetch Alerts' endpoint to find the IDs., data_sources: [any] # The data sources for the monitor to use based on what you want to measure.              **Number of Errors Metric Monitor**             - `eventTypes`: Any of `error` or `default`.             ```json                 [                     {                         \"aggregate\": \"count()\",                         \"dataset\" : \"events\",                         \"environment\": \"prod\",                         \"eventTypes\": [\"default\", \"error\"],                         \"query\": \"is:unresolved\",                         \"queryType\": 0,                         \"timeWindow\": 3600,                     },                 ],             ```              **Users Experiencing Errors Metric Monitor**             - `eventTypes`: Any of `error` or `default`.             ```json                 [                     {                         \"aggregate\": \"count_unique(tags[sentry:user])\",                         \"dataset\" : \"events\",                         \"environment\": \"prod\",                         \"eventTypes\": [\"default\", \"error\"],                         \"query\": \"is:unresolved\",                         \"queryType\": 0,                         \"timeWindow\": 3600,                     },                 ],             ```               **Throughput Metric Monitor**             ```json                 [                     {                         \"aggregate\":\"count(span.duration)\",                         \"dataset\":\"events_analytics_platform\",                         \"environment\":\"prod\",                         \"eventTypes\":[\"trace_item_span\"]                         \"query\":\"\",                         \"queryType\":1,                         \"timeWindow\":3600,                         \"extrapolationMode\":\"unknown\",                     },                 ],             ```              **Duration Metric Monitor**             ```json                 [                     {                         \"aggregate\":\"p95(span.duration)\",                         \"dataset\":\"events_analytics_platform\",                         \"environment\":\"prod\",                         \"eventTypes\":[\"trace_item_span\"]                         \"query\":\"\",                         \"queryType\":1,                         \"timeWindow\":3600,                         \"extrapolationMode\":\"unknown\",                     },                 ],             ```              **Failure Rate Metric Monitor**             ```json                 [                     {                         \"aggregate\":\"failure_rate()\",                         \"dataset\":\"events_analytics_platform\",                         \"environment\":\"prod\",                         \"eventTypes\":[\"trace_item_span\"]                         \"query\":\"\",                         \"queryType\":1,                         \"timeWindow\":3600,                         \"extrapolationMode\":\"unknown\",                     },                 ],             ```              **Largest Contentful Paint Metric Monitor**             - `dataset`: If a custom percentile is used, dataset is `transactions`. Otherwise, dataset is `events_analytics_platform`.             - `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.              ```json                 [                     {                         \"aggregate\":\"p95(measurements.lcp)\",                         \"dataset\":\"events_analytics_platform\",                         \"environment\":\"prod\",                         \"eventTypes\":[\"trace_item_span\"]                         \"query\":\"\",                         \"queryType\":1,                         \"timeWindow\":3600,                         \"extrapolationMode\":\"unknown\",                     },                 ],             ```              **Custom Metric Monitor**             - `dataset`: If a custom percentile is used, dataset is `transactions`. Otherwise, dataset is `events_analytics_platform`.             - `aggregate`: Valid values are:             `avg(x)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.             `p50(x)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.             `p75(x)`, where x is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.             `p95(x)`, where x is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.             `p99(x)`, where x is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.             `p100(x)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.             `percentile(x,y)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`, and `y` is the custom percentile.             `failure_rate()`             `apdex(x)`, where `x` is the value of the Apdex score.             `count()`              ```json             [                 {                     \"aggregate\": \"p75(measurements.ttfb)\"                     \"dataset\": \"events_analytics_platform\",                     \"queryType\": 1,                 },             ],, config: map # The issue detection type configuration.               - `detectionType`                 - `static`: Threshold based monitor                 - `percent`: Change based monitor                 - `dynamic`: Dynamic monitor             - `comparisonDelta`: If selecting a **change** detection type, the comparison delta is the time period at which to compare against in minutes.             For example, a value of 3600 compares the metric tracked against data 1 hour ago.                 - `300`: 5 minutes                 - `900`: 15 minutes                 - `3600`: 1 hour                 - `86400`: 1 day                 - `604800`: 1 week                 - `2592000`: 1 month              **Threshold**             ```json             {                 \"detectionType\": \"static\",             }             ```             **Change**             ```json             {                 \"detectionType\": \"percent\",                 \"comparisonDelta\": 3600,             }             ```             **Dynamic**             ```json             {                 \"detectionType\": \"dynamic\",             }             ```, condition_group: any # Issue detection configuration for when to create an issue and at what priority level.               - `logicType`: `any`             - `type`: Any of `gt` (greater than), `lte` (less than or equal), or `anomaly_detection` (dynamic)             - `comparison`: Any positive integer. This is threshold that must be crossed for the monitor to create an issue, e.g. \"Create a metric issue when there are more than 5 unresolved error events\".                 - If creating a **dynamic** monitor, see the options below.                     - `seasonality`: `auto`                     - `sensitivity`: Level of responsiveness. Options are one of `low`, `medium`, or `high`                     - `thresholdType`: If you want to be alerted to anomalies that are moving above, below, or in both directions in relation to your threshold.                         - `0`: Above                         - `1`: Below                         - `2`: Above and below              - `conditionResult`: The issue state change when the threshold is crossed.                 - `75`: High priority                 - `50`: Low priority                 - `0`: Resolved               **Threshold and Change Monitor**             ```json                 \"logicType\": \"any\",                 \"conditions\": [                     {                         \"type\": \"gt\",                         \"comparison\": 10,                         \"conditionResult\": 75                     },                     {                         \"type\": \"lte\",                         \"comparison\": 10,                         \"conditionResult\": 0                     }                 ],                 \"actions\": []             ```              **Threshold Monitor with Medium Priority**             ```json                 \"logicType\": \"any\",                 \"conditions\": [                     {                         type: \"gt\",                         comparison: 5,                         conditionResult: 75                     },                     {                         type: \"gt\",                         comparison: 2,                         conditionResult: 50                     },                     {                         type: \"lte\",                         comparison: 2,                         conditionResult: 0                     }                 ],                 \"actions\": []             ```              **Dynamic Monitor**             ```json                 \"logicType\": \"any\",                 \"conditions\": [                     {                         \"type\": \"anomaly_detection\",                         \"comparison\": {                             \"seasonality\": \"auto\",                             \"sensitivity\": \"medium\",                             \"thresholdType\": 2                         },                         \"conditionResult\": 75                     }                 ],                 \"actions\": []             ```, owner: str # The ID user or team who owns the monitor or alert prefaced by the string 'user' or 'team'.              **User**             ```json                 \"user:123456\"             ```              **Team**             ```json                 \"team:456789\"             ```, description: str # A description of the monitor. Will be used in the resulting issue., enabled: bool # Set to False if you want to disable the monitor.}\n@returns(201) {owner: map?{type: str, id: str, name: str, email: str}, createdBy: str?, latestGroup: map?, description: str?, id: str, projectId: str, name: str, type: str, workflowIds: [str]?, dateCreated: str(date-time), dateUpdated: str(date-time), dataSources: [map]?, conditionGroup: map?, config: map, enabled: bool}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/relay_usage/\n@desc List an Organization's trusted Relays\n@returns(200)\n@errors {404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/release-threshold-statuses/\n@desc Retrieve Statuses of Release Thresholds (Alpha)\n@required {start: str(date-time) # The start of the time series range as an explicit datetime, either in UTC ISO8601 or epoch seconds. Use along with `end`., end: str(date-time) # The inclusive end of the time series range as an explicit datetime, either in UTC ISO8601 or epoch seconds. Use along with `start`.}\n@optional {environment: [str] # A list of environment names to filter your results by., projectSlug: [str] # A list of project slugs to filter your results by., release: [str] # A list of release versions to filter your results by., project: [any] # A list of project IDs or slugs to filter your results by.}\n@returns(200)\n@errors {400: Bad Request}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/releases/\n@desc List an Organization's Releases\n@optional {project: [any] # The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects. For example, the following are valid parameters: - `/?project=1234&project=56789` - `/?project=android&project=javascript-react` - `/?project=-1`, environment: [str] # The name of environments to filter by., query: str # Case-insensitive substring match against the release version., per_page: int # Limit the number of rows to return in the result. Default and maximum allowed is 100., cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint POST /api/0/organizations/{organization_id_or_slug}/releases/\n@desc Create a New Release for an Organization\n@required {version: str # A version identifier for this release. Can be a version number, a commit hash, and so on., projects: [any] # A list of project slugs that are involved in this release.}\n@optional {ref: str # An optional commit reference. This is useful if a tagged version has been provided., url: str(uri) # A URL that points to the release. For instance, this can be the path to an online interface to the source code, such as a GitHub URL., dateReleased: str(date-time) # An optional date that indicates when the release went live.  If not provided the current time is used., commits: [map{id!: str, repository: str, message: str, author_name: str, author_email: str, timestamp: str(date-time), patch_set: [map]}] # An optional list of commit data to be associated., status: str # The status of the release. Can be `open` or `archived`., owner: str # The username of the user to set as the release owner., headCommits: [map{currentId!: str, repository!: str, previousId: str}] # (Deprecated) Use `refs` instead. An optional list of head commits to associate with the release, one per repository., refs: [map{commit!: str, repository!: str, previousCommit: str}] # An optional list of commit references, one per repository, used to associate commits with the release.}\n@returns(201) {ref: str?, url: str?, dateReleased: str(date-time)?, dateCreated: str(date-time)?, dateStarted: str(date-time)?, owner: map?, lastCommit: map?, lastDeploy: map?{dateStarted: str?, url: str?, id: str, environment: str, dateFinished: str, name: str}, firstEvent: str(date-time)?, lastEvent: str(date-time)?, currentProjectMeta: map?, userAgent: str?, adoptionStages: map?, id: int, version: str, newGroups: int, status: str, shortVersion: str, versionInfo: map?{description: str, package: str?, version: map, buildHash: str?}, data: map, commitCount: int, deployCount: int, authors: [any], projects: [map]}\n@returns(208) Already Reported\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/releases/{version}/\n@desc Retrieve an Organization's Release\n@required {version: str # The version identifier of the release}\n@optional {project_id: str # Deprecated. Use project instead., project: any # The project ID or slug to filter by. Overrides project_id when both are sent., health: bool # Whether or not to include health data with the release. By default, this is false., adoptionStages: bool # Whether or not to include adoption stages with the release. By default, this is false., summaryStatsPeriod: str(14d/1d/1h/24h/2d/30d/48h/7d/90d) # The period of time used to query summary stats for the release. By default, this is 14d., healthStatsPeriod: str(14d/1d/1h/24h/2d/30d/48h/7d/90d) # The period of time used to query health stats for the release. By default, this is 24h if health is enabled., sort: str(crash_free_sessions/crash_free_users/date/sessions/users) # The field used to sort results by. By default, this is `date`., status: str(archived/open) # Release statuses that you can filter by., query: str # Filters results by using [query syntax](/product/sentry-basics/search/).  Example: `query=(transaction:foo AND release:abc) OR (transaction:[bar,baz] AND release:def)`}\n@returns(200) {ref: str?, url: str?, dateReleased: str(date-time)?, dateCreated: str(date-time)?, dateStarted: str(date-time)?, owner: map?, lastCommit: map?, lastDeploy: map?{dateStarted: str?, url: str?, id: str, environment: str, dateFinished: str, name: str}, firstEvent: str(date-time)?, lastEvent: str(date-time)?, currentProjectMeta: map?, userAgent: str?, adoptionStages: map?, id: int, version: str, newGroups: int, status: str, shortVersion: str, versionInfo: map?{description: str, package: str?, version: map, buildHash: str?}, data: map, commitCount: int, deployCount: int, authors: [any], projects: [map]}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint PUT /api/0/organizations/{organization_id_or_slug}/releases/{version}/\n@desc Update an Organization's Release\n@required {version: str # The version identifier of the release}\n@optional {ref: str # An optional commit reference. This is useful if a tagged version has been provided., url: str(uri) # A URL that points to the release. For instance, this can be the path to an online interface to the source code, such as a GitHub URL., dateReleased: str(date-time) # An optional date that indicates when the release went live.  If not provided the current time is used., commits: [map{id!: str, repository: str, message: str, author_name: str, author_email: str, timestamp: str(date-time), patch_set: [map]}] # An optional list of commit data to be associated., refs: [map{commit!: str, repository!: str, previousCommit: str}] # 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@returns(200) {ref: str?, url: str?, dateReleased: str(date-time)?, dateCreated: str(date-time)?, dateStarted: str(date-time)?, owner: map?, lastCommit: map?, lastDeploy: map?{dateStarted: str?, url: str?, id: str, environment: str, dateFinished: str, name: str}, firstEvent: str(date-time)?, lastEvent: str(date-time)?, currentProjectMeta: map?, userAgent: str?, adoptionStages: map?, id: int, version: str, newGroups: int, status: str, shortVersion: str, versionInfo: map?{description: str, package: str?, version: map, buildHash: str?}, data: map, commitCount: int, deployCount: int, authors: [any], projects: [map]}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /api/0/organizations/{organization_id_or_slug}/releases/{version}/\n@desc Delete an Organization's Release\n@required {version: str # The version identifier of the release}\n@returns(204) No Content\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/releases/{version}/commits/\n@desc List an Organization Release's Commits\n@required {version: str # The version identifier of the release}\n@optional {cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/releases/{version}/deploys/\n@desc List a Release's Deploys\n@required {version: str # The version identifier of the release}\n@optional {cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200)\n\n@endpoint POST /api/0/organizations/{organization_id_or_slug}/releases/{version}/deploys/\n@desc Create a Deploy\n@required {version: str # The version identifier of the release, environment: str # The environment you're deploying to}\n@optional {name: str # The optional name of the deploy, url: str(uri) # The optional URL that points to the deploy, dateStarted: str(date-time) # An optional date that indicates when the deploy started, dateFinished: str(date-time) # An optional date that indicates when the deploy ended. If not provided, the current time is used., projects: [str] # 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@returns(201) {id: str, environment: str, dateStarted: str(date-time)?, dateFinished: str(date-time), name: str?, url: str(uri)?}\n@errors {400: Bad Request}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/releases/{version}/files/\n@desc List an Organization's Release Files\n@required {version: str # The version identifier of the release}\n@optional {query: [str] # If set, only files with these partial names will be returned., checksum: [str] # If set, only files with these exact checksums will be returned., cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint POST /api/0/organizations/{organization_id_or_slug}/releases/{version}/files/\n@desc Upload a New Organization Release File\n@required {version: str # The version identifier of the release}\n@returns(201) {id: str, name: str, dist: str?, headers: map, size: int, sha1: str, dateCreated: str(date-time)}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found, 409: Conflict}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/releases/{version}/files/{file_id}/\n@desc Retrieve an Organization Release's File\n@required {version: str # The version identifier of the release, file_id: str # The ID of the release file.}\n@optional {download: str # If set, download the file contents instead of returning metadata.}\n@returns(200) {id: str, name: str, dist: str?, headers: map, size: int, sha1: str, dateCreated: str(date-time)}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint PUT /api/0/organizations/{organization_id_or_slug}/releases/{version}/files/{file_id}/\n@desc Update an Organization Release File\n@required {version: str # The version identifier of the release, file_id: str # The ID of the release file., name: str # The new name (full path) of the file.}\n@returns(200) {id: str, name: str, dist: str?, headers: map, size: int, sha1: str, dateCreated: str(date-time)}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /api/0/organizations/{organization_id_or_slug}/releases/{version}/files/{file_id}/\n@desc Delete an Organization Release's File\n@required {version: str # The version identifier of the release, file_id: str # The ID of the release file.}\n@returns(204) No Content\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/replay-count/\n@desc Retrieve a Count of Replays for a Given Issue or Transaction\n@optional {environment: [str] # The name of environments to filter by., start: str(date-time) # The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., end: str(date-time) # The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., statsPeriod: str # The period of time for the query, will override the start & end parameters, a number followed by one of: - `d` for days - `h` for hours - `m` for minutes - `s` for seconds - `w` for weeks  For example, `24h`, to mean query data starting from 24 hours ago to now., project: [any] # The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects. For example, the following are valid parameters: - `/?project=1234&project=56789` - `/?project=android&project=javascript-react` - `/?project=-1`, project_id_or_slug: [str] # The legacy project slug filter. Prefer `project`, which accepts project IDs or slugs. Use `$all` to include all available projects. For example, the following are valid parameters: - `/?projectSlug=$all` - `/?projectSlug=android&projectSlug=javascript-react`, query: str # Filters results by using [query syntax](/product/sentry-basics/search/).  Example: `query=(transaction:foo AND release:abc) OR (transaction:[bar,baz] AND release:def)`, data_source: str(discover/events/search_issues/transactions) # The data source to query replays from. Defaults to 'discover'., returnIds: bool # If true, return issue IDs rather than counts.}\n@returns(200)\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/replay-selectors/\n@desc List an Organization's Selectors\n@optional {environment: [str] # The environment to filter by., statsPeriod: str # 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`., start: str(date-time) # 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`., end: str(date-time) # 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`., project: [any] # A list of project IDs or slugs to filter by., projectSlug: [str] # A list of project slugs to filter your results by., sort: str # The field to sort the output by., sortBy: str # The field to sort the output by., orderBy: str # The field to sort the output by., cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results., per_page: int # Limit the number of rows to return in the result. Default and maximum allowed is 100., query: str # Filters results by using [query syntax](/product/sentry-basics/search/).  Example: `query=(transaction:foo AND release:abc) OR (transaction:[bar,baz] AND release:def)`}\n@returns(200) {data: [map]}\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/replays/\n@desc List an Organization's Replays\n@optional {statsPeriod: str # 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`., start: str(date-time) # 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`., end: str(date-time) # 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`., field: [str] # Specifies a field that should be marshaled in the output. Invalid fields will be rejected., project: [any] # A list of project IDs or slugs to filter by., projectSlug: [str] # A list of project slugs to filter your results by., environment: str # The environment to filter by., sort: str # The field to sort the output by., sortBy: str # The field to sort the output by., orderBy: str # The field to sort the output by., query: str # A structured query string to filter the output by., per_page: int # Limit the number of rows to return in the result., cursor: str # The cursor parameter is used to paginate results. See [here](https://docs.sentry.io/api/pagination/) for how to use this query parameter}\n@returns(200) {data: [map]}\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/replays/{replay_id}/\n@desc Retrieve a Replay Instance\n@required {replay_id: str # The ID of the replay you'd like to retrieve. It is a 32-character hexadecimal string.}\n@optional {statsPeriod: str # 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`., start: str(date-time) # 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`., end: str(date-time) # 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`., field: [str] # Specifies a field that should be marshaled in the output. Invalid fields will be rejected., project: [any] # A list of project IDs or slugs to filter by., projectSlug: [str] # A list of project slugs to filter your results by., environment: str # The environment to filter by., sort: str # The field to sort the output by., sortBy: str # The field to sort the output by., orderBy: str # The field to sort the output by., query: str # A structured query string to filter the output by., per_page: int # Limit the number of rows to return in the result., cursor: str # The cursor parameter is used to paginate results. See [here](https://docs.sentry.io/api/pagination/) for how to use this query parameter}\n@returns(200) {data: map{id: str, project_id: str, trace_ids: [str], error_ids: [str], environment: str?, tags: any, user: map{id: str?, username: str?, email: str?, ip: str?, display_name: str?, geo: map{city: str?, country_code: str?, region: str?, subdivision: str?}}, sdk: map{name: str?, version: str?}, os: map{name: str?, version: str?}, browser: map{name: str?, version: str?}, device: map{name: str?, brand: str?, model: str?, family: str?}, ota_updates: map{channel: str?, runtime_version: str?, update_id: str?}, is_archived: bool?, urls: [str]?, clicks: [map], count_dead_clicks: int?, count_rage_clicks: int?, count_errors: int?, duration: int?, finished_at: str?, started_at: str?, activity: int?, count_urls: int?, replay_type: str, count_segments: int?, platform: str?, releases: [str], dist: str?, count_warnings: int?, count_infos: int?, has_viewed: bool}}\n@errors {400: Bad Request, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/repos/\n@desc List an Organization's Repositories\n@optional {query: str # Filter repositories by name., status: str(active/deleted) # Filter repositories by status. Defaults to `active`., integration_id: str # Filter repositories by integration ID., expand: [str] # Optional repository fields to expand, such as `settings`., cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/repos/{repo_id}/commits/\n@desc List a Repository's Commits\n@required {repo_id: str # The repository ID.}\n@optional {cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200)\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/scim/v2/Groups\n@desc List an Organization's Paginated Teams\n@optional {startIndex: int=1 # SCIM 1-offset based index for pagination., count: int=100 # The maximum number of results the query should return, maximum of 100., filter: str # A SCIM filter expression. The only operator currently supported is `eq`., excludedAttributes: [str] # Fields that should be left off of return values. Right now the only supported field for this query is members.}\n@returns(200) {schemas: [str], totalResults: int, startIndex: int, itemsPerPage: int, Resources: [map]}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint POST /api/0/organizations/{organization_id_or_slug}/scim/v2/Groups\n@desc Provision a New Team\n@required {displayName: str # The slug of the team that is shown in the UI.}\n@returns(201) {schemas: [str], id: str, displayName: str, meta: map{resourceType: str}, members: [map]}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/scim/v2/Groups/{team_id_or_slug}\n@desc Query an Individual Team\n@required {team_id_or_slug: str # The ID or slug of the team the resource belongs to.}\n@returns(200) {schemas: [str], id: str, displayName: str, meta: map{resourceType: str}, members: [map]}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint PATCH /api/0/organizations/{organization_id_or_slug}/scim/v2/Groups/{team_id_or_slug}\n@desc Update a Team's Attributes\n@required {team_id_or_slug: str # The ID or slug of the team the resource belongs to., Operations: [map{op!: str, value: map, path: str}] # The list of operations to perform. Valid operations are: * Renaming a team: ```json {     \"Operations\": [{         \"op\": \"replace\",         \"value\": {             \"id\": 23,             \"displayName\": \"newName\"         }     }] } ``` * Adding a member to a team: ```json {     \"Operations\": [{         \"op\": \"add\",         \"path\": \"members\",         \"value\": [             {                 \"value\": 23,                 \"display\": \"testexample@example.com\"             }         ]     }] } ``` * Removing a member from a team: ```json {     \"Operations\": [{         \"op\": \"remove\",         \"path\": \"members[value eq \"23\"]\"     }] } ``` * Replacing an entire member set of a team: ```json {     \"Operations\": [{         \"op\": \"replace\",         \"path\": \"members\",         \"value\": [             {                 \"value\": 23,                 \"display\": \"testexample2@sentry.io\"             },             {                 \"value\": 24,                 \"display\": \"testexample3@sentry.io\"             }         ]     }] } ```}\n@returns(204) Success\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /api/0/organizations/{organization_id_or_slug}/scim/v2/Groups/{team_id_or_slug}\n@desc Delete an Individual Team\n@required {team_id_or_slug: str # The ID or slug of the team the resource belongs to.}\n@returns(204) Success\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/scim/v2/Users\n@desc List an Organization's SCIM Members\n@optional {startIndex: int=1 # SCIM 1-offset based index for pagination., count: int=100 # The maximum number of results the query should return, maximum of 100., filter: str # A SCIM filter expression. The only operator currently supported is `eq`., excludedAttributes: [str] # Fields that should be left off of return values. Right now the only supported field for this query is members.}\n@returns(200) {schemas: [str], totalResults: int, startIndex: int, itemsPerPage: int, Resources: [map]}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint POST /api/0/organizations/{organization_id_or_slug}/scim/v2/Users\n@desc Provision a New Organization Member\n@required {userName: str(email) # The SAML field used for email.}\n@optional {sentryOrgRole: str(billing/member/manager/admin) # The organization role of the member. If unspecified, this will be                     set to the organization's default role. The options are:  * `billing` - Can manage payment and compliance details. * `member` - Can view and act on events, as well as view most other data within the organization. * `manager` - Has full management access to all teams and projects. Can also manage         the organization's membership. * `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@returns(201) {active: bool, schemas: [str], id: str, userName: str, name: map{givenName: str, familyName: str}, emails: [map], meta: map{resourceType: str}, sentryOrgRole: str}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/scim/v2/Users/{member_id}\n@desc Query an Individual Organization Member\n@required {member_id: str # The ID of the member to query.}\n@returns(200) {active: bool, schemas: [str], id: str, userName: str, name: map{givenName: str, familyName: str}, emails: [map], meta: map{resourceType: str}, sentryOrgRole: str}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint PATCH /api/0/organizations/{organization_id_or_slug}/scim/v2/Users/{member_id}\n@desc Update an Organization Member's Attributes\n@required {member_id: str # The ID of the member to update., Operations: [map{op!: str, value!: any, path: str}] # 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. ```json {     \"Operations\": [{         \"op\": \"replace\",         \"path\": \"active\",         \"value\": False     }] } ```}\n@returns(204) Success\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /api/0/organizations/{organization_id_or_slug}/scim/v2/Users/{member_id}\n@desc Delete an Organization Member via SCIM\n@required {member_id: str # The ID of the member to delete.}\n@returns(204) Success\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/sentry-apps/\n@desc Retrieve the custom integrations created by an organization\n@returns(200)\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/sessions/\n@desc Retrieve Release Health Session Statistics\n@required {field: [str] # The list of fields to query.  The available fields are - `sum(session)` - `count_unique(user)` - `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. - `crash_rate`, `crash_free_rate` applied to `user` or `session`. For example, `crash_free_rate(user)`}\n@optional {start: str(date-time) # The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., end: str(date-time) # The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., environment: [str] # The name of environments to filter by., statsPeriod: str # The period of time for the query, will override the start & end parameters, a number followed by one of: - `d` for days - `h` for hours - `m` for minutes - `s` for seconds - `w` for weeks  For example, `24h`, to mean query data starting from 24 hours ago to now., project: [any] # The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects. For example, the following are valid parameters: - `/?project=1234&project=56789` - `/?project=android&project=javascript-react` - `/?project=-1`, per_page: int # The number of groups to return per request., interval: str # Resolution of the time series, given in the same format as `statsPeriod`.  The default and         the minimum interval is `1h`., groupBy: [str] # The list of properties to group by.  The available groupBy conditions are `project`,         `release`, `environment` and `session.status`., orderBy: str # An optional field to order by, which must be one of the fields provided in `field`. Use `-`         for descending order, for example, `-sum(session)`, includeTotals: int # Specify `0` to exclude totals from the response. The default is `1`, includeSeries: int # Specify `0` to exclude series from the response. The default is `1`, query: str # Filters results by using [query syntax](/product/sentry-basics/search/).  Example: `query=(transaction:foo AND release:abc) OR (transaction:[bar,baz] AND release:def)`}\n@returns(200) {start: str(date-time), end: str(date-time), intervals: [str], groups: [map], query: str}\n@errors {400: Bad Request, 401: Unauthorized}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/shortids/{issue_id}/\n@desc Resolve a Short ID\n@required {issue_id: str # The short ID of the issue to resolve.}\n@optional {collapse: [str] # Fields to remove from the response to improve query performance.}\n@returns(200) {organizationSlug: str, projectSlug: str, groupId: str, group: map{isUnhandled: bool, count: str, userCount: int, firstSeen: str(date-time)?, lastSeen: str(date-time)?, id: str, shareId: str?, shortId: str, title: str, culprit: str?, permalink: str, logger: str?, level: str, status: str, statusDetails: map{autoResolved: bool, ignoreCount: int, ignoreUntil: str(date-time), ignoreUserCount: int, ignoreUserWindow: int, ignoreWindow: int, actor: map{identities: [map], avatar: map, authenticators: [any], canReset2fa: bool, id: str, name: str, username: str, email: str, avatarUrl: str, isActive: bool, isSuspended: bool, hasPasswordAuth: bool, isManaged: bool, dateJoined: str(date-time), lastLogin: str(date-time)?, has2fa: bool, lastActive: str(date-time)?, isSuperuser: bool, isStaff: bool, experiments: map, emails: [map]}, inNextRelease: bool, inRelease: str, inCommit: str, pendingEvents: int, info: any}, substatus: str?, isPublic: bool, platform: str?, priority: str?, priorityLockedAt: str(date-time)?, seerFixabilityScore: num(double)?, seerAutofixLastTriggered: str(date-time)?, seerExplorerAutofixLastTriggered: str(date-time)?, project: map{id: str, name: str, slug: str, platform: str?}, type: str, issueType: str, issueCategory: str, metadata: map, numComments: int, assignedTo: map?{type: str, id: str, name: str, email: str}, isBookmarked: bool, isSubscribed: bool, subscriptionDetails: map?{disabled: bool, reason: str}, hasSeen: bool, annotations: [map]}, shortId: str}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/stats-summary/\n@desc Retrieve an Organization's Events Count by Project\n@required {field: str(sum(quantity)/sum(times_seen)) # the `sum(quantity)` field is bytes for attachments, and all others the 'event' count for those types of events.  `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.  * `sum(quantity)` * `sum(times_seen)`}\n@optional {statsPeriod: str # 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`., interval: str # 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., start: str(date-time) # 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`., end: str(date-time) # 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`., project: [any] # The ID of the projects to filter by., category: str(error/transaction/attachment/replays/profiles) # If filtering by attachments, you cannot filter by any other category due to quantity values becoming nonsensical (combining bytes and event counts).  If filtering by `error`, it will automatically add `default` and `security` as we currently roll those two categories into `error` for displaying.  * `error` * `transaction` * `attachment` * `replays` * `profiles`, outcome: str(accepted/filtered/rate_limited/invalid/abuse/client_discard/cardinality_limited) # See https://docs.sentry.io/product/stats/ for more information on outcome statuses.  * `accepted` * `filtered` * `rate_limited` * `invalid` * `abuse` * `client_discard` * `cardinality_limited`, reason: str # The reason field will contain why an event was filtered/dropped., download: bool # Download the API response in as a csv file}\n@returns(200) {start: str, end: str, projects: [map]}\n@errors {401: Unauthorized, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/stats_v2/\n@desc Retrieve Event Counts for an Organization (v2)\n@required {groupBy: [str] # 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., field: str(sum(quantity)/sum(times_seen)) # the `sum(quantity)` field is bytes for attachments, and all others the 'event' count for those types of events.  `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.  * `sum(quantity)` * `sum(times_seen)`}\n@optional {statsPeriod: str # 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`., interval: str # 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., start: str(date-time) # 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`., end: str(date-time) # 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`., project: [any] # The ID of the projects to filter by.  Use `-1` to include all accessible projects., category: str(error/transaction/attachment/replay/profile/profile_duration/profile_duration_ui/profile_chunk/profile_chunk_ui/monitor) # Filter by data category. Each category represents a different type of data:  - `error`: Error events (includes `default` and `security` categories) - `transaction`: Transaction events - `attachment`: File attachments (note: cannot be combined with other categories since quantity represents bytes) - `replay`: Session replay events - `profile`: Performance profiles - `profile_duration`: Profile duration data (note: cannot be combined with other categories since quantity represents milliseconds) - `profile_duration_ui`: Profile duration (UI) data (note: cannot be combined with other categories since quantity represents milliseconds) - `profile_chunk`: Profile chunk data - `profile_chunk_ui`: Profile chunk (UI) data - `monitor`: Cron monitor events  * `error` * `transaction` * `attachment` * `replay` * `profile` * `profile_duration` * `profile_duration_ui` * `profile_chunk` * `profile_chunk_ui` * `monitor`, outcome: str(accepted/filtered/rate_limited/invalid/abuse/client_discard/cardinality_limited) # See https://docs.sentry.io/product/stats/ for more information on outcome statuses.  * `accepted` * `filtered` * `rate_limited` * `invalid` * `abuse` * `client_discard` * `cardinality_limited`, reason: str # The reason field will contain why an event was filtered/dropped.}\n@returns(200) {start: str, end: str, intervals: [str], groups: [map]}\n@errors {401: Unauthorized, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/tags/\n@desc List an Organization's Tags\n@optional {project: [any] # The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects. For example, the following are valid parameters: - `/?project=1234&project=56789` - `/?project=android&project=javascript-react` - `/?project=-1`, environment: [str] # The name of environments to filter by., statsPeriod: str # The period of time for the query, will override the start & end parameters, a number followed by one of: - `d` for days - `h` for hours - `m` for minutes - `s` for seconds - `w` for weeks  For example, `24h`, to mean query data starting from 24 hours ago to now., start: str(date-time) # The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., end: str(date-time) # The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., dataset: str(discover/events/replays/search_issues) # The dataset to query. Defaults to `discover`., use_cache: str(0/1) # Set to `\"1\"` to enable caching for the tag key query., useFlagsBackend: str(0/1) # Set to `\"1\"` to query feature flags instead of tags.}\n@returns(200)\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/teams/\n@desc List an Organization's Teams\n@optional {detailed: str # Specify `\"0\"` to return team details that do not include projects., cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results., per_page: int # Limit the number of rows to return in the result. Default and maximum allowed is 100., query: str # Filter teams by name or slug.}\n@returns(200)\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint POST /api/0/organizations/{organization_id_or_slug}/teams/\n@desc Create a New Team\n@optional {slug: str # Uniquely identifies a team and is used for the interface. If not         provided, it is automatically generated from the name., name: str # **`[DEPRECATED]`** The name for the team. If not provided, it is         automatically generated from the slug}\n@returns(201) {id: str, slug: str, name: str, dateCreated: str(date-time)?, isMember: bool, teamRole: str?, flags: map, access: [str], hasAccess: bool, isPending: bool, memberCount: int, avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, externalTeams: [map], organization: map{features: [str], extraOptions: map, access: [str], onboardingTasks: [map], id: str, slug: str, status: map{id: str, name: str}, name: str, dateCreated: str(date-time), isEarlyAdopter: bool, require2FA: bool, avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, links: map{organizationUrl: str, regionUrl: str}, hasAuthProvider: bool, allowMemberInvite: bool, allowMemberProjectCreation: bool, allowSuperuserAccess: bool}, projects: [map]}\n@errors {400: Bad Request, 403: Forbidden, 404: A team with this slug already exists.}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/trace-items/attributes/\n@desc List Trace Item Attributes\n@optional {statsPeriod: str # The period of time for the query, will override the start & end parameters, a number followed by one of: - `d` for days - `h` for hours - `m` for minutes - `s` for seconds - `w` for weeks  For example, `24h`, to mean query data starting from 24 hours ago to now., start: str(date-time) # The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., end: str(date-time) # The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., dataset: str(logs/preprod/processing_errors/spans/tracemetrics) # The trace item dataset to list attributes for. One of `itemType` or `dataset` is required., itemType: str(logs/preprod/processing_errors/spans/tracemetrics) # Deprecated alias of `dataset`. Use `dataset` instead., attributeType: [str] # Filter to attributes of one or more types. Defaults to all types., substringMatch: str # Restrict results to attribute names containing this substring (case-sensitive)., query: str # Sentry [search syntax](https://docs.sentry.io/concepts/search/) to filter trace items before computing attributes., cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/trace-meta/{trace_id}/\n@desc Retrieve Trace Metadata\n@required {trace_id: str # The ID of the trace, a 32-character hexadecimal string.}\n@optional {statsPeriod: str # The period of time for the query, will override the start & end parameters, a number followed by one of: - `d` for days - `h` for hours - `m` for minutes - `s` for seconds - `w` for weeks  For example, `24h`, to mean query data starting from 24 hours ago to now., start: str(date-time) # The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., end: str(date-time) # The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., include_uptime: str(0/1) # Set to `1` to include uptime check counts in the response. Defaults to `0` (disabled).}\n@returns(200) {uptimeCount: int, errorsCount: int, logsCount: num(double), metricsCount: num(double), performanceIssuesCount: int, spansCount: num(double), transactionChildCountMap: [map], spansCountMap: map}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/trace/{trace_id}/\n@desc Retrieve a Trace\n@required {trace_id: str # The ID of the trace, a 32-character hexadecimal string.}\n@optional {statsPeriod: str # The period of time for the query, will override the start & end parameters, a number followed by one of: - `d` for days - `h` for hours - `m` for minutes - `s` for seconds - `w` for weeks  For example, `24h`, to mean query data starting from 24 hours ago to now., start: str(date-time) # The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., end: str(date-time) # The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., referrer: str # Internal referrer identifier used for query tracing. Most clients can omit this., errorId: str # A 32-character hexadecimal event ID to bias the trace results toward including., additional_attributes: [str] # Additional span attributes to include on each event. Repeat to request multiple., include_uptime: str(0/1) # Set to `1` to include uptime check results in the trace. Defaults to `0`.}\n@returns(200)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/user-teams/\n@desc List a User's Teams for an Organization\n@returns(200)\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/workflows/\n@desc Fetch Alerts\n@optional {sortBy: str # The field to sort results by. If not specified, the results are sorted by id.  Available fields are: - `name` - `id` - `dateCreated` - `dateUpdated` - `connectedDetectors` - `actions` - `priorityDetector`  Prefix with `-` to sort in descending order., query: str # An optional search query for filtering alerts., id: [int] # The ID of the alert you'd like to query., project: [any] # The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects. For example, the following are valid parameters: - `/?project=1234&project=56789` - `/?project=android&project=javascript-react` - `/?project=-1`}\n@returns(200)\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint POST /api/0/organizations/{organization_id_or_slug}/workflows/\n@desc Create an Alert for an Organization\n@required {name: str # The name of the alert}\n@optional {id: str # The ID of the existing alert, enabled: bool=true # Whether the alert is enabled or disabled, detector_ids: [int] # The IDs of the monitors to connect this alert to. Use 'Fetch an Organization's Monitors' to find the IDs., config: map # Typically the frequency at which the alert will fire, in minutes.          - `0`: 0 minutes         - `5`: 5 minutes         - `10`: 10 minutes         - `30`: 30 minutes         - `60`: 1 hour         - `180`: 3 hours         - `720`: 12 hours         - `1440`: 24 hours          ```json             {                 \"frequency\":3600             }         ```, environment: str # The name of the environment for the alert to evaluate in, triggers: any # The conditions on which the alert will trigger. See available options below. Note: `seer_activity_trigger` may not be available to all organizations.         ```json             \"triggers\": {                 \"organizationId\": \"1\",                 \"logicType\": \"any-short\",                 \"conditions\": [                     {                         \"type\": \"first_seen_event\",                         \"comparison\": true,                         \"conditionResult\": true                     },                     {                         \"type\": \"issue_resolved_trigger\",                         \"comparison\": true,                         \"conditionResult\": true                     },                     {                         \"type\": \"reappeared_event\",                         \"comparison\": true,                         \"conditionResult\": true                     },                     {                         \"type\": \"regression_event\",                         \"comparison\": true,                         \"conditionResult\": true                     },                     {                         \"type\": \"seer_activity_trigger\",                         \"comparison\": [                             \"rca_started\",                             \"rca_completed\",                             \"solution_started\",                             \"solution_completed\",                             \"coding_started\",                             \"coding_completed\",                             \"pr_created\",                             \"iteration_started\",                             \"iteration_completed\"                         ],                         \"conditionResult\": true                     }                 ],                 \"actions\": []             }         ```, action_filters: [map] # The filters to run before the action will fire and the action(s) to fire.          `logicType` can be one of `any-short`, `all`, or `none`.          Below is a basic example. See below for all other options.          ```json             \"actionFilters\": [                 {                     \"logicType\": \"any\",                     \"conditions\": [                         {                             \"type\": \"level\",                             \"comparison\": {                                 \"level\": 50,                                 \"match\": \"eq\"                             },                             \"conditionResult\": true                         }                     ],                     \"actions\": [                         {                             \"id\": \"123\",                             \"type\": \"email\",                             \"integrationId\": null,                             \"data\": {},                             \"config\": {                                 \"targetType\": \"user\",                                 \"targetDisplay\": null,                                 \"targetIdentifier\": \"56789\"                             },                             \"status\": \"active\"                         }                     ]                 }             ]         ```          ## Conditions          **Issue Age**         - `time`: One of `minute`, `hour`, `day`, or `week`.         - `value`: A positive integer.         - `comparisonType`: One of `older` or `newer`.         ```json             {                 \"type\": \"age_comparison\",                 \"comparison\": {                     \"time\": \"minute\",                     \"value\": 10,                     \"comparisonType\": \"older\"                 },                 \"conditionResult\": true             }          ```          **Issue Assignment**         - `targetType`: Who the issue is assigned to             - `Unassigned`: Unassigned             - `Member`: Assigned to a user             - `Team`: Assigned to a team         - `targetIdentifier`: The ID of the user or team from the `targetType`. Enter \"\" if `targetType` is `Unassigned`.         ```json             {                 \"type\": \"assigned_to\",                 \"comparison\": {                     \"targetType\": \"Member\",                     \"targetIdentifier\": 123456                 },                 \"conditionResult\": true             }         ```          **Issue Category**         - `value`: The issue category to filter to.             - `1`: Error issues             - `6`: Feedback issues             - `10`: Outage issues             - `11`: Metric issues             - `12`: DB Query issues             - `13`: HTTP Client issues             - `14`: Front end issues             - `15`: Mobile issues         ```json             {                 \"type\": \"issue_category\",                 \"comparison\": {                     \"value\": 1                 },                 \"conditionResult\": true             }         ```          **Issue Frequency**         - `value`: A positive integer representing how many times the issue has to happen before the alert will fire.         ```json             {                 \"type\": \"issue_occurrences\",                 \"comparison\": {                     \"value\": 10                 },                 \"conditionResult\": true             }         ```          **De-escalation**         ```json             {                 \"type\": \"issue_priority_deescalating\",                 \"comparison\": true,                 \"conditionResult\": true             }         ```          **Issue Priority**         - `comparison`: The priority the issue must be for the alert to fire.             - `75`: High priority             - `50`: Medium priority             - `25`: Low priority         ```json             {                 \"type\": \"issue_priority_greater_or_equal\",                 \"comparison\": 75,                 \"conditionResult\": true             }         ```          **Number of Users Affected**         - `value`: A positive integer representing the number of users that must be affected before the alert will fire.         - `filters`: A list of additional sub-filters to evaluate before the alert will fire.         - `interval`: The time period in which to evaluate the value. e.g. Number of users affected by an issue is more than `value` in `interval`.             - `1min`: 1 minute             - `5min`: 5 minutes             - `15min`: 15 minutes             - `1hr`: 1 hour             - `1d`: 1 day             - `1w`: 1 week             - `30d`: 30 days         ```json             {                 \"type\": \"event_unique_user_frequency_count\",                 \"comparison\": {                     \"value\": 100,                     \"filters\": [{\"key\": \"foo\", \"match\": \"eq\", \"value\": \"bar\"}],                     \"interval\": \"1h\"                 },                 \"conditionResult\": true             }         ```          **Number of Events**         - `value`: A positive integer representing the number of events in an issue that must come in before the alert will fire         - `interval`: The time period in which to evaluate the value. e.g. Number of events in an issue is more than `value` in `interval`.             - `1min`: 1 minute             - `5min`: 5 minutes             - `15min`: 15 minutes             - `1hr`: 1 hour             - `1d`: 1 day             - `1w`: 1 week             - `30d`: 30 days         ```json             {                 \"type\": \"event_frequency_count\",                 \"comparison\": {                     \"value\": 100,                     \"interval\": \"1h\"                 },                 \"conditionResult\": true             }         ```          **Percent of Events**         - `value`: A positive integer representing the number of events in an issue that must come in before the alert will fire         - `interval`: The time period in which to evaluate the value. e.g. Number of events in an issue is `comparisonInterval` percent higher `value` compared to `interval`.             - `1min`: 1 minute             - `5min`: 5 minutes             - `15min`: 15 minutes             - `1hr`: 1 hour             - `1d`: 1 day             - `1w`: 1 week             - `30d`: 30 days         - `comparisonInterval`: The time period to compare against. See `interval` for options.         ```json             {                 \"type\": \"event_frequency_percent\",                 \"comparison\": {                     \"value\": 100,                     \"interval\": \"1h\",                     \"comparisonInterval\": \"1w\"                 },                 \"conditionResult\": true             }          ```          **Percentage of Sessions Affected Count**         - `value`: A positive integer representing the number of events in an issue that must come in before the alert will fire         - `interval`: The time period in which to evaluate the value. e.g. Percentage of sessions affected by an issue is more than `value` in `interval`.             - `1min`: 1 minute             - `5min`: 5 minutes             - `15min`: 15 minutes             - `1hr`: 1 hour             - `1d`: 1 day             - `1w`: 1 week             - `30d`: 30 days         ```json             {                 \"type\": \"percent_sessions_count\",                 \"comparison\": {                     \"value\": 10,                     \"interval\": \"1h\"                 },                 \"conditionResult\": true             }         ```          **Percentage of Sessions Affected Percent**         - `value`: A positive integer representing the number of events in an issue that must come in before the alert will fire         - `interval`: The time period in which to evaluate the value. e.g. Percentage of sessions affected by an issue is `comparisonInterval` percent higher `value` compared to `interval`.             - `1min`: 1 minute             - `5min`: 5 minutes             - `15min`: 15 minutes             - `1hr`: 1 hour             - `1d`: 1 day             - `1w`: 1 week             - `30d`: 30 days         - `comparisonInterval`: The time period to compare against. See `interval` for options.         ```json             {                 \"type\": \"percent_sessions_percent\",                 \"comparison\": {                     \"value\": 10,                     \"interval\": \"1h\"                 },                 \"conditionResult\": true             }         ```          **Event Attribute**         The event's `attribute` value `match` `value`          - `attribute`: The event attribute to match on. Valid values are: `message`, `platform`, `environment`, `type`, `error.handled`, `error.unhandled`, `error.main_thread`, `exception.type`, `exception.value`, `user.id`, `user.email`, `user.username`, `user.ip_address`, `http.method`, `http.url`, `http.status_code`, `sdk.name`, `stacktrace.code`, `stacktrace.module`, `stacktrace.filename`, `stacktrace.abs_path`, `stacktrace.package`, `unreal.crash_type`, `app.in_foreground`.         - `match`: The comparison operator             - `co`: Contains             - `nc`: Does not contain             - `eq`: Equals             - `ne`: Does not equal             - `sw`: Starts with             - `ew`: Ends with             - `is`: Is set             - `ns`: Is not set         - `value`: A string. Not required when match is `is` or `ns`.          ```json             {                 \"type\": \"event_attribute\",                 \"comparison\": {                     \"match\": \"co\",                     \"value\": \"bar\",                     \"attribute\": \"message\"                 },                 \"conditionResult\": true             }         ```          **Tagged Event**         The event's tags `key` match `value`         - `key`: The tag value         - `match`: The comparison operator             - `co`: Contains             - `nc`: Does not contain             - `eq`: Equals             - `ne`: Does not equal             - `sw`: Starts with             - `ew`: Ends with             - `is`: Is set             - `ns`: Is not set         - `value`: A string. Not required when match is `is` or `ns`.          ```json             {                 \"type\": \"tagged_event\",                 \"comparison\": {                     \"key\": \"level\",                     \"match\": \"eq\",                     \"value\": \"error\"                 },                 \"conditionResult\": true             }         ```          **Latest Release**         The event is from the latest release          ```json             {                 \"type\": \"latest_release\",                 \"comparison\": true,                 \"conditionResult\": true             }         ```          **Release Age**         ```json             {                 \"type\": \"latest_adopted_release\",                 \"comparison\": {                     \"environment\": \"12345\",                     \"ageComparison\": \"older\",                     \"releaseAgeType\": \"oldest\"                 },                 \"conditionResult\": true             }         ```          **Event Level**         The event's level is `match` `level`         - `match`: The comparison operator             - `eq`: Equal             - `gte`: Greater than or equal             - `lte`: Less than or equal         - `level`: The event level             - `50`: Fatal             - `40`: Error             - `30`: Warning             - `20`: Info             - `10`: Debug             - `0`: Sample          ```json             {                 \"type\": \"level\",                 \"comparison\": {                     \"level\": 50,                     \"match\": \"eq\"                 },                 \"conditionResult\": true             }         ```          ## Actions         A list of actions that take place when all required conditions and filters for the alert are met. See below for a list of possible actions.           **Notify on Preferred Channel**         - `data`: A dictionary with the fallthrough type option when choosing to notify Suggested Assignees. Leave empty if notifying a user or team.             - `fallthroughType`                 - `ActiveMembers`                 - `AllMembers`                 - `NoOne`         - `config`: A dictionary with the configuration options for notification.             - `targetType`: The type of recipient to notify                 - `user`: User                 - `team`: Team                 - `issue_owners`: Suggested Assignees             - `targetDisplay`: null             - `targetIdentifier`: The id of the user or team to notify. Leave null for Suggested Assignees.          ```json             {                 \"type\":\"email\",                 \"integrationId\":null,                 \"data\":{},                 \"config\":{                     \"targetType\":\"user\",                     \"targetDisplay\":null,                     \"targetIdentifier\":\"232692\"                 },                 \"status\":\"active\"             },             {                 \"type\":\"email\",                 \"integrationId\":null,                 \"data\":{                     \"fallthroughType\":\"ActiveMembers\"                 },                 \"config\":{                     \"targetType\":\"issue_owners\",                     \"targetDisplay\":null,                     \"targetIdentifier\":\"\"}                 ,                 \"status\":\"active\"             }         ```         **Notify on Slack**         - `targetDisplay`: The name of the channel to notify in.         `integrationId`: The stringified ID of the integration.          ```json             {                 \"type\":\"slack\",                 \"config\":{                     \"targetType\":\"specific\",                     \"targetIdentifier\":\"\",                     \"targetDisplay\":\"notify-errors\"                 },                 \"integrationId\":\"1\",                 \"data\":{},                 \"status\":\"active\"             }         ```          **Notify on PagerDuty**         - `targetDisplay`: The name of the service to create the ticket in.         - `integrationId`: The stringified ID of the integration.         - `data[\"priority\"]`: The severity level for the notification.          ```json             {                 \"type\":\"pagerduty\",                 \"config\":{                     \"targetType\":\"specific\",                     \"targetIdentifier\":\"123456\",                     \"targetDisplay\":\"Error Service\"                     },                 \"integrationId\":\"2345\",                 \"data\":{                     \"priority\":\"default\"                 },                 \"status\":\"active\"             }         ```          **Notify on Discord**         - `targetDisplay`: The name of the service to create the ticket in.         - `integrationId`: The stringified ID of the integration.         - `data[\"tags\"]`: Comma separated list of tags to add to the notification.          ```json             {                 \"type\":\"discord\",                 \"config\":{                     \"targetType\":\"specific\",                     \"targetIdentifier\":\"12345\",                     \"targetDisplay\":\"\",                     },                 \"integrationId\":\"1234\",                 \"data\":{                     \"tags\":\"transaction,environment\"                 },                 \"status\":\"active\"             }         ```          **Notify on MSTeams**         - `targetIdentifier` - The integration ID associated with the Microsoft Teams team.         - `targetDisplay` - The name of the channel to send the notification to.         - `integrationId`: The stringified ID of the integration.         ```json             {                 \"type\":\"msteams\",                 \"config\":{                     \"targetType\":\"specific\",                     \"targetIdentifier\":\"19:a4b3kghaghgkjah357y6847@thread.skype\",                     \"targetDisplay\":\"notify-errors\"                 },                 \"integrationId\":\"1\",                 \"data\":{},                 \"status\":\"active\"             }         ```          **Notify on OpsGenie**         - `targetDisplay`: The name of the Opsgenie team.         - `targetIdentifier`: The ID of the Opsgenie team to send the notification to.         - `integrationId`: The stringified ID of the integration.         - `data[\"priority\"]`: The priority level for the notification.          ```json             {                 \"type\":\"opsgenie\",                 \"config\":{                     \"targetType\":\"specific\",                     \"targetIdentifier\":\"123456-Error-Service\",                     \"targetDisplay\":\"Error Service\"                     },                 \"integrationId\":\"2345\",                 \"data\":{                     \"priority\":\"P3\"                 },                 \"status\":\"active\"             }         ```          **Notify on Azure DevOps**         - `integrationId`: The stringified ID of the integration.         - `data` - A list of any fields you want to include in the ticket as objects.          ```json             {                 \"type\":\"vsts\",                 \"config\":{                     \"targetType\":\"specific\",                     \"targetIdentifier\":\",                     \"targetDisplay\":\"\"                     },                 \"integrationId\":\"2345\",                 \"data\":{...},                 \"status\":\"active\"             }         ```          **Create a Jira ticket**         - `integrationId`: The stringified ID of the integration.         - `data` - A list of any fields you want to include in the ticket as objects.          ```json             {                 \"type\":\"jira\",                 \"config\":{                     \"targetType\":\"specific\",                     \"targetIdentifier\":\",                     \"targetDisplay\":\"\"                     },                 \"integrationId\":\"2345\",                 \"data\":{...},                 \"status\":\"active\"             }         ```          **Create a Jira Server ticket**         - `integrationId`: The stringified ID of the integration.         - `data` - A list of any fields you want to include in the ticket as objects.          ```json             {                 \"type\":\"jira_server\",                 \"config\":{                     \"targetType\":\"specific\",                     \"targetIdentifier\":\",                     \"targetDisplay\":\"\"                     },                 \"integrationId\":\"2345\",                 \"data\":{...},                 \"status\":\"active\"             }         ```          **Create a GitHub issue**         - `integrationId`: The stringified ID of the integration.         - `data` - A list of any fields you want to include in the ticket as objects.          ```json             {                 \"type\":\"github\",                 \"config\":{                     \"targetType\":\"specific\",                     \"targetIdentifier\":\",                     \"targetDisplay\":\"\"                     },                 \"integrationId\":\"2345\",                 \"data\":{                   \"additional_fields\": {                       \"assignee\": \"\",                       \"integration\": \"2345\",                       \"labels\": [],                       \"repo\": \"example-repo\",                   },                   \"dynamic_form_fields\": [                       {                         \"choices\": [[\"YourOrg/example-repo\", \"example-repo\"]],                         \"default\": \"YourOrg/example-repo\",                         \"label\": \"GitHub Repository\",                         \"name\": \"repo\",                         \"required\": true                         \"type\": \"select\",                         \"updatesForm\": true,                         \"url\": \"/extensions/github/search/example-repo/1234567/\",                       },                   ],                 },                 \"status\":\"active\"             }         ```, owner: str # The ID user or team who owns the monitor or alert prefaced by the string 'user' or 'team'.              **User**             ```json                 \"user:123456\"             ```              **Team**             ```json                 \"team:456789\"             ```}\n@returns(201) {id: str, name: str, organizationId: str, createdBy: str?, dateCreated: str(date-time), dateUpdated: str(date-time), triggers: map?{id: str, organizationId: str, logicType: str, conditions: any, actions: any}, actionFilters: [map]?, environment: str?, config: map, detectorIds: [str]?, enabled: bool, lastTriggered: str(date-time)?, owner: str?}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint PUT /api/0/organizations/{organization_id_or_slug}/workflows/\n@desc Mutate an Organization's Alerts\n@required {enabled: bool # Whether to enable or disable the alerts}\n@optional {query: str # An optional search query for filtering alerts., id: [int] # The ID of the alert you'd like to query., project: [any] # The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects. For example, the following are valid parameters: - `/?project=1234&project=56789` - `/?project=android&project=javascript-react` - `/?project=-1`}\n@returns(200)\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /api/0/organizations/{organization_id_or_slug}/workflows/\n@desc Bulk Delete Alerts\n@optional {query: str # An optional search query for filtering alerts., id: [int] # The ID of the alert you'd like to query., project: [any] # The IDs or slugs of projects to filter by. Project slugs are unique within each organization. Omit this parameter to include all accessible projects. `-1` is also accepted to include all accessible projects. For example, the following are valid parameters: - `/?project=1234&project=56789` - `/?project=android&project=javascript-react` - `/?project=-1`}\n@returns(200) Success\n@returns(204) No Content\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/workflows/{workflow_id}/\n@desc Fetch an Alert\n@required {workflow_id: int # The ID of the alert you'd like to query.}\n@returns(200) {id: str, name: str, organizationId: str, createdBy: str?, dateCreated: str(date-time), dateUpdated: str(date-time), triggers: map?{id: str, organizationId: str, logicType: str, conditions: any, actions: any}, actionFilters: [map]?, environment: str?, config: map, detectorIds: [str]?, enabled: bool, lastTriggered: str(date-time)?, owner: str?}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint PUT /api/0/organizations/{organization_id_or_slug}/workflows/{workflow_id}/\n@desc Update an Alert by ID\n@required {workflow_id: int # The ID of the alert you'd like to query., name: str # The name of the alert}\n@optional {id: str # The ID of the existing alert, enabled: bool=true # Whether the alert is enabled or disabled, detector_ids: [int] # The IDs of the monitors to connect this alert to. Use 'Fetch an Organization's Monitors' to find the IDs., config: map # Typically the frequency at which the alert will fire, in minutes.          - `0`: 0 minutes         - `5`: 5 minutes         - `10`: 10 minutes         - `30`: 30 minutes         - `60`: 1 hour         - `180`: 3 hours         - `720`: 12 hours         - `1440`: 24 hours          ```json             {                 \"frequency\":3600             }         ```, environment: str # The name of the environment for the alert to evaluate in, triggers: any # The conditions on which the alert will trigger. See available options below. Note: `seer_activity_trigger` may not be available to all organizations.         ```json             \"triggers\": {                 \"organizationId\": \"1\",                 \"logicType\": \"any-short\",                 \"conditions\": [                     {                         \"type\": \"first_seen_event\",                         \"comparison\": true,                         \"conditionResult\": true                     },                     {                         \"type\": \"issue_resolved_trigger\",                         \"comparison\": true,                         \"conditionResult\": true                     },                     {                         \"type\": \"reappeared_event\",                         \"comparison\": true,                         \"conditionResult\": true                     },                     {                         \"type\": \"regression_event\",                         \"comparison\": true,                         \"conditionResult\": true                     },                     {                         \"type\": \"seer_activity_trigger\",                         \"comparison\": [                             \"rca_started\",                             \"rca_completed\",                             \"solution_started\",                             \"solution_completed\",                             \"coding_started\",                             \"coding_completed\",                             \"pr_created\",                             \"iteration_started\",                             \"iteration_completed\"                         ],                         \"conditionResult\": true                     }                 ],                 \"actions\": []             }         ```, action_filters: [map] # The filters to run before the action will fire and the action(s) to fire.          `logicType` can be one of `any-short`, `all`, or `none`.          Below is a basic example. See below for all other options.          ```json             \"actionFilters\": [                 {                     \"logicType\": \"any\",                     \"conditions\": [                         {                             \"type\": \"level\",                             \"comparison\": {                                 \"level\": 50,                                 \"match\": \"eq\"                             },                             \"conditionResult\": true                         }                     ],                     \"actions\": [                         {                             \"id\": \"123\",                             \"type\": \"email\",                             \"integrationId\": null,                             \"data\": {},                             \"config\": {                                 \"targetType\": \"user\",                                 \"targetDisplay\": null,                                 \"targetIdentifier\": \"56789\"                             },                             \"status\": \"active\"                         }                     ]                 }             ]         ```          ## Conditions          **Issue Age**         - `time`: One of `minute`, `hour`, `day`, or `week`.         - `value`: A positive integer.         - `comparisonType`: One of `older` or `newer`.         ```json             {                 \"type\": \"age_comparison\",                 \"comparison\": {                     \"time\": \"minute\",                     \"value\": 10,                     \"comparisonType\": \"older\"                 },                 \"conditionResult\": true             }          ```          **Issue Assignment**         - `targetType`: Who the issue is assigned to             - `Unassigned`: Unassigned             - `Member`: Assigned to a user             - `Team`: Assigned to a team         - `targetIdentifier`: The ID of the user or team from the `targetType`. Enter \"\" if `targetType` is `Unassigned`.         ```json             {                 \"type\": \"assigned_to\",                 \"comparison\": {                     \"targetType\": \"Member\",                     \"targetIdentifier\": 123456                 },                 \"conditionResult\": true             }         ```          **Issue Category**         - `value`: The issue category to filter to.             - `1`: Error issues             - `6`: Feedback issues             - `10`: Outage issues             - `11`: Metric issues             - `12`: DB Query issues             - `13`: HTTP Client issues             - `14`: Front end issues             - `15`: Mobile issues         ```json             {                 \"type\": \"issue_category\",                 \"comparison\": {                     \"value\": 1                 },                 \"conditionResult\": true             }         ```          **Issue Frequency**         - `value`: A positive integer representing how many times the issue has to happen before the alert will fire.         ```json             {                 \"type\": \"issue_occurrences\",                 \"comparison\": {                     \"value\": 10                 },                 \"conditionResult\": true             }         ```          **De-escalation**         ```json             {                 \"type\": \"issue_priority_deescalating\",                 \"comparison\": true,                 \"conditionResult\": true             }         ```          **Issue Priority**         - `comparison`: The priority the issue must be for the alert to fire.             - `75`: High priority             - `50`: Medium priority             - `25`: Low priority         ```json             {                 \"type\": \"issue_priority_greater_or_equal\",                 \"comparison\": 75,                 \"conditionResult\": true             }         ```          **Number of Users Affected**         - `value`: A positive integer representing the number of users that must be affected before the alert will fire.         - `filters`: A list of additional sub-filters to evaluate before the alert will fire.         - `interval`: The time period in which to evaluate the value. e.g. Number of users affected by an issue is more than `value` in `interval`.             - `1min`: 1 minute             - `5min`: 5 minutes             - `15min`: 15 minutes             - `1hr`: 1 hour             - `1d`: 1 day             - `1w`: 1 week             - `30d`: 30 days         ```json             {                 \"type\": \"event_unique_user_frequency_count\",                 \"comparison\": {                     \"value\": 100,                     \"filters\": [{\"key\": \"foo\", \"match\": \"eq\", \"value\": \"bar\"}],                     \"interval\": \"1h\"                 },                 \"conditionResult\": true             }         ```          **Number of Events**         - `value`: A positive integer representing the number of events in an issue that must come in before the alert will fire         - `interval`: The time period in which to evaluate the value. e.g. Number of events in an issue is more than `value` in `interval`.             - `1min`: 1 minute             - `5min`: 5 minutes             - `15min`: 15 minutes             - `1hr`: 1 hour             - `1d`: 1 day             - `1w`: 1 week             - `30d`: 30 days         ```json             {                 \"type\": \"event_frequency_count\",                 \"comparison\": {                     \"value\": 100,                     \"interval\": \"1h\"                 },                 \"conditionResult\": true             }         ```          **Percent of Events**         - `value`: A positive integer representing the number of events in an issue that must come in before the alert will fire         - `interval`: The time period in which to evaluate the value. e.g. Number of events in an issue is `comparisonInterval` percent higher `value` compared to `interval`.             - `1min`: 1 minute             - `5min`: 5 minutes             - `15min`: 15 minutes             - `1hr`: 1 hour             - `1d`: 1 day             - `1w`: 1 week             - `30d`: 30 days         - `comparisonInterval`: The time period to compare against. See `interval` for options.         ```json             {                 \"type\": \"event_frequency_percent\",                 \"comparison\": {                     \"value\": 100,                     \"interval\": \"1h\",                     \"comparisonInterval\": \"1w\"                 },                 \"conditionResult\": true             }          ```          **Percentage of Sessions Affected Count**         - `value`: A positive integer representing the number of events in an issue that must come in before the alert will fire         - `interval`: The time period in which to evaluate the value. e.g. Percentage of sessions affected by an issue is more than `value` in `interval`.             - `1min`: 1 minute             - `5min`: 5 minutes             - `15min`: 15 minutes             - `1hr`: 1 hour             - `1d`: 1 day             - `1w`: 1 week             - `30d`: 30 days         ```json             {                 \"type\": \"percent_sessions_count\",                 \"comparison\": {                     \"value\": 10,                     \"interval\": \"1h\"                 },                 \"conditionResult\": true             }         ```          **Percentage of Sessions Affected Percent**         - `value`: A positive integer representing the number of events in an issue that must come in before the alert will fire         - `interval`: The time period in which to evaluate the value. e.g. Percentage of sessions affected by an issue is `comparisonInterval` percent higher `value` compared to `interval`.             - `1min`: 1 minute             - `5min`: 5 minutes             - `15min`: 15 minutes             - `1hr`: 1 hour             - `1d`: 1 day             - `1w`: 1 week             - `30d`: 30 days         - `comparisonInterval`: The time period to compare against. See `interval` for options.         ```json             {                 \"type\": \"percent_sessions_percent\",                 \"comparison\": {                     \"value\": 10,                     \"interval\": \"1h\"                 },                 \"conditionResult\": true             }         ```          **Event Attribute**         The event's `attribute` value `match` `value`          - `attribute`: The event attribute to match on. Valid values are: `message`, `platform`, `environment`, `type`, `error.handled`, `error.unhandled`, `error.main_thread`, `exception.type`, `exception.value`, `user.id`, `user.email`, `user.username`, `user.ip_address`, `http.method`, `http.url`, `http.status_code`, `sdk.name`, `stacktrace.code`, `stacktrace.module`, `stacktrace.filename`, `stacktrace.abs_path`, `stacktrace.package`, `unreal.crash_type`, `app.in_foreground`.         - `match`: The comparison operator             - `co`: Contains             - `nc`: Does not contain             - `eq`: Equals             - `ne`: Does not equal             - `sw`: Starts with             - `ew`: Ends with             - `is`: Is set             - `ns`: Is not set         - `value`: A string. Not required when match is `is` or `ns`.          ```json             {                 \"type\": \"event_attribute\",                 \"comparison\": {                     \"match\": \"co\",                     \"value\": \"bar\",                     \"attribute\": \"message\"                 },                 \"conditionResult\": true             }         ```          **Tagged Event**         The event's tags `key` match `value`         - `key`: The tag value         - `match`: The comparison operator             - `co`: Contains             - `nc`: Does not contain             - `eq`: Equals             - `ne`: Does not equal             - `sw`: Starts with             - `ew`: Ends with             - `is`: Is set             - `ns`: Is not set         - `value`: A string. Not required when match is `is` or `ns`.          ```json             {                 \"type\": \"tagged_event\",                 \"comparison\": {                     \"key\": \"level\",                     \"match\": \"eq\",                     \"value\": \"error\"                 },                 \"conditionResult\": true             }         ```          **Latest Release**         The event is from the latest release          ```json             {                 \"type\": \"latest_release\",                 \"comparison\": true,                 \"conditionResult\": true             }         ```          **Release Age**         ```json             {                 \"type\": \"latest_adopted_release\",                 \"comparison\": {                     \"environment\": \"12345\",                     \"ageComparison\": \"older\",                     \"releaseAgeType\": \"oldest\"                 },                 \"conditionResult\": true             }         ```          **Event Level**         The event's level is `match` `level`         - `match`: The comparison operator             - `eq`: Equal             - `gte`: Greater than or equal             - `lte`: Less than or equal         - `level`: The event level             - `50`: Fatal             - `40`: Error             - `30`: Warning             - `20`: Info             - `10`: Debug             - `0`: Sample          ```json             {                 \"type\": \"level\",                 \"comparison\": {                     \"level\": 50,                     \"match\": \"eq\"                 },                 \"conditionResult\": true             }         ```          ## Actions         A list of actions that take place when all required conditions and filters for the alert are met. See below for a list of possible actions.           **Notify on Preferred Channel**         - `data`: A dictionary with the fallthrough type option when choosing to notify Suggested Assignees. Leave empty if notifying a user or team.             - `fallthroughType`                 - `ActiveMembers`                 - `AllMembers`                 - `NoOne`         - `config`: A dictionary with the configuration options for notification.             - `targetType`: The type of recipient to notify                 - `user`: User                 - `team`: Team                 - `issue_owners`: Suggested Assignees             - `targetDisplay`: null             - `targetIdentifier`: The id of the user or team to notify. Leave null for Suggested Assignees.          ```json             {                 \"type\":\"email\",                 \"integrationId\":null,                 \"data\":{},                 \"config\":{                     \"targetType\":\"user\",                     \"targetDisplay\":null,                     \"targetIdentifier\":\"232692\"                 },                 \"status\":\"active\"             },             {                 \"type\":\"email\",                 \"integrationId\":null,                 \"data\":{                     \"fallthroughType\":\"ActiveMembers\"                 },                 \"config\":{                     \"targetType\":\"issue_owners\",                     \"targetDisplay\":null,                     \"targetIdentifier\":\"\"}                 ,                 \"status\":\"active\"             }         ```         **Notify on Slack**         - `targetDisplay`: The name of the channel to notify in.         `integrationId`: The stringified ID of the integration.          ```json             {                 \"type\":\"slack\",                 \"config\":{                     \"targetType\":\"specific\",                     \"targetIdentifier\":\"\",                     \"targetDisplay\":\"notify-errors\"                 },                 \"integrationId\":\"1\",                 \"data\":{},                 \"status\":\"active\"             }         ```          **Notify on PagerDuty**         - `targetDisplay`: The name of the service to create the ticket in.         - `integrationId`: The stringified ID of the integration.         - `data[\"priority\"]`: The severity level for the notification.          ```json             {                 \"type\":\"pagerduty\",                 \"config\":{                     \"targetType\":\"specific\",                     \"targetIdentifier\":\"123456\",                     \"targetDisplay\":\"Error Service\"                     },                 \"integrationId\":\"2345\",                 \"data\":{                     \"priority\":\"default\"                 },                 \"status\":\"active\"             }         ```          **Notify on Discord**         - `targetDisplay`: The name of the service to create the ticket in.         - `integrationId`: The stringified ID of the integration.         - `data[\"tags\"]`: Comma separated list of tags to add to the notification.          ```json             {                 \"type\":\"discord\",                 \"config\":{                     \"targetType\":\"specific\",                     \"targetIdentifier\":\"12345\",                     \"targetDisplay\":\"\",                     },                 \"integrationId\":\"1234\",                 \"data\":{                     \"tags\":\"transaction,environment\"                 },                 \"status\":\"active\"             }         ```          **Notify on MSTeams**         - `targetIdentifier` - The integration ID associated with the Microsoft Teams team.         - `targetDisplay` - The name of the channel to send the notification to.         - `integrationId`: The stringified ID of the integration.         ```json             {                 \"type\":\"msteams\",                 \"config\":{                     \"targetType\":\"specific\",                     \"targetIdentifier\":\"19:a4b3kghaghgkjah357y6847@thread.skype\",                     \"targetDisplay\":\"notify-errors\"                 },                 \"integrationId\":\"1\",                 \"data\":{},                 \"status\":\"active\"             }         ```          **Notify on OpsGenie**         - `targetDisplay`: The name of the Opsgenie team.         - `targetIdentifier`: The ID of the Opsgenie team to send the notification to.         - `integrationId`: The stringified ID of the integration.         - `data[\"priority\"]`: The priority level for the notification.          ```json             {                 \"type\":\"opsgenie\",                 \"config\":{                     \"targetType\":\"specific\",                     \"targetIdentifier\":\"123456-Error-Service\",                     \"targetDisplay\":\"Error Service\"                     },                 \"integrationId\":\"2345\",                 \"data\":{                     \"priority\":\"P3\"                 },                 \"status\":\"active\"             }         ```          **Notify on Azure DevOps**         - `integrationId`: The stringified ID of the integration.         - `data` - A list of any fields you want to include in the ticket as objects.          ```json             {                 \"type\":\"vsts\",                 \"config\":{                     \"targetType\":\"specific\",                     \"targetIdentifier\":\",                     \"targetDisplay\":\"\"                     },                 \"integrationId\":\"2345\",                 \"data\":{...},                 \"status\":\"active\"             }         ```          **Create a Jira ticket**         - `integrationId`: The stringified ID of the integration.         - `data` - A list of any fields you want to include in the ticket as objects.          ```json             {                 \"type\":\"jira\",                 \"config\":{                     \"targetType\":\"specific\",                     \"targetIdentifier\":\",                     \"targetDisplay\":\"\"                     },                 \"integrationId\":\"2345\",                 \"data\":{...},                 \"status\":\"active\"             }         ```          **Create a Jira Server ticket**         - `integrationId`: The stringified ID of the integration.         - `data` - A list of any fields you want to include in the ticket as objects.          ```json             {                 \"type\":\"jira_server\",                 \"config\":{                     \"targetType\":\"specific\",                     \"targetIdentifier\":\",                     \"targetDisplay\":\"\"                     },                 \"integrationId\":\"2345\",                 \"data\":{...},                 \"status\":\"active\"             }         ```          **Create a GitHub issue**         - `integrationId`: The stringified ID of the integration.         - `data` - A list of any fields you want to include in the ticket as objects.          ```json             {                 \"type\":\"github\",                 \"config\":{                     \"targetType\":\"specific\",                     \"targetIdentifier\":\",                     \"targetDisplay\":\"\"                     },                 \"integrationId\":\"2345\",                 \"data\":{                   \"additional_fields\": {                       \"assignee\": \"\",                       \"integration\": \"2345\",                       \"labels\": [],                       \"repo\": \"example-repo\",                   },                   \"dynamic_form_fields\": [                       {                         \"choices\": [[\"YourOrg/example-repo\", \"example-repo\"]],                         \"default\": \"YourOrg/example-repo\",                         \"label\": \"GitHub Repository\",                         \"name\": \"repo\",                         \"required\": true                         \"type\": \"select\",                         \"updatesForm\": true,                         \"url\": \"/extensions/github/search/example-repo/1234567/\",                       },                   ],                 },                 \"status\":\"active\"             }         ```, owner: str # The ID user or team who owns the monitor or alert prefaced by the string 'user' or 'team'.              **User**             ```json                 \"user:123456\"             ```              **Team**             ```json                 \"team:456789\"             ```}\n@returns(200) {id: str, name: str, organizationId: str, createdBy: str?, dateCreated: str(date-time), dateUpdated: str(date-time), triggers: map?{id: str, organizationId: str, logicType: str, conditions: any, actions: any}, actionFilters: [map]?, environment: str?, config: map, detectorIds: [str]?, enabled: bool, lastTriggered: str(date-time)?, owner: str?}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /api/0/organizations/{organization_id_or_slug}/workflows/{workflow_id}/\n@desc Delete an Alert\n@required {workflow_id: int # The ID of the alert you'd like to query.}\n@returns(204) No Content\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/\n@desc Retrieve a Project\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.}\n@returns(200) {stats: any, transactionStats: any, sessionStats: any, id: str, slug: str, name: str, platform: str?, dateCreated: str(date-time), isBookmarked: bool, isMember: bool, features: [str], firstEvent: str(date-time)?, firstTransactionEvent: bool, access: [str], hasAccess: bool, hasFeedbacks: bool, hasFlags: bool, hasMinifiedStackTrace: bool, hasMonitors: bool, hasNewFeedbacks: bool, hasProfiles: bool, hasReplays: bool, hasSessions: bool, hasInsightsHttp: bool, hasInsightsDb: bool, hasInsightsAssets: bool, hasInsightsAppStart: bool, hasInsightsScreenLoad: bool, hasInsightsVitals: bool, hasInsightsCaches: bool, hasInsightsQueues: bool, hasInsightsAgentMonitoring: bool, hasInsightsMCP: bool, hasLogs: bool, hasTraceMetrics: bool, isInternal: bool, isPublic: bool, avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, color: str, status: str, team: map{id: str, name: str, slug: str}, teams: [map], latestRelease: map?{version: str}, options: map, digestsMinDelay: int, digestsMaxDelay: int, subjectPrefix: str, allowedDomains: [str], resolveAge: int, dataScrubber: bool, dataScrubberDefaults: bool, safeFields: [str], storeCrashReports: int?, sensitiveFields: [str], subjectTemplate: str, securityToken: str, securityTokenHeader: str?, verifySSL: bool, scrubIPAddresses: bool, scrapeJavaScript: bool, highlightTags: [str], highlightContext: map, highlightPreset: map{tags: [str], context: map}, groupingConfig: str, derivedGroupingEnhancements: str, groupingEnhancements: str, secondaryGroupingExpiry: int, secondaryGroupingConfig: str?, fingerprintingRules: str, organization: map{features: [str], extraOptions: map, access: [str], onboardingTasks: [map], id: str, slug: str, status: map{id: str, name: str}, name: str, dateCreated: str(date-time), isEarlyAdopter: bool, require2FA: bool, avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, links: map{organizationUrl: str, regionUrl: str}, hasAuthProvider: bool, allowMemberInvite: bool, allowMemberProjectCreation: bool, allowSuperuserAccess: bool}, platforms: [str], processingIssues: int, defaultEnvironment: str?, relayPiiConfig: str?, builtinSymbolSources: [str], dynamicSamplingBiases: [map]?, symbolSources: str, isDynamicallySampled: bool, tempestFetchScreenshots: bool, autofixAutomationTuning: str, seerScannerAutomation: bool, seerNightshiftTweaks: any, scmSourceContextEnabled: bool, debugFilesRole: str?}\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint PUT /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/\n@desc Update a Project\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.}\n@optional {isBookmarked: bool # Enables starring the project within the projects tab. Can be updated with **`project:read`** permission., name: str # The name for the project, slug: str # Uniquely identifies a project and is used for the interface., platform: str # The platform for the project, subjectPrefix: str # Custom prefix for emails from this project., subjectTemplate: str # The email subject to use (excluding the prefix) for individual alerts. Here are the list of variables you can use: - `$title` - `$shortID` - `$projectID` - `$orgID` - `${tag:key}` - such as `${tag:environment}` or `${tag:release}`., resolveAge: int # Automatically resolve an issue if it hasn't been seen for this many hours. Set to `0` to disable auto-resolve., highlightContext: map # A JSON mapping of context types to lists of strings for their keys. E.g. `{'user': ['id', 'email']}`, highlightTags: [str] # A list of strings with tag keys to highlight on this project's issues. E.g. `['release', 'environment']`, scmSourceContextEnabled: bool # Enable on-demand source context fetching from SCM integrations for stack traces.}\n@returns(200) {stats: any, transactionStats: any, sessionStats: any, id: str, slug: str, name: str, platform: str?, dateCreated: str(date-time), isBookmarked: bool, isMember: bool, features: [str], firstEvent: str(date-time)?, firstTransactionEvent: bool, access: [str], hasAccess: bool, hasFeedbacks: bool, hasFlags: bool, hasMinifiedStackTrace: bool, hasMonitors: bool, hasNewFeedbacks: bool, hasProfiles: bool, hasReplays: bool, hasSessions: bool, hasInsightsHttp: bool, hasInsightsDb: bool, hasInsightsAssets: bool, hasInsightsAppStart: bool, hasInsightsScreenLoad: bool, hasInsightsVitals: bool, hasInsightsCaches: bool, hasInsightsQueues: bool, hasInsightsAgentMonitoring: bool, hasInsightsMCP: bool, hasLogs: bool, hasTraceMetrics: bool, isInternal: bool, isPublic: bool, avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, color: str, status: str, team: map{id: str, name: str, slug: str}, teams: [map], latestRelease: map?{version: str}, options: map, digestsMinDelay: int, digestsMaxDelay: int, subjectPrefix: str, allowedDomains: [str], resolveAge: int, dataScrubber: bool, dataScrubberDefaults: bool, safeFields: [str], storeCrashReports: int?, sensitiveFields: [str], subjectTemplate: str, securityToken: str, securityTokenHeader: str?, verifySSL: bool, scrubIPAddresses: bool, scrapeJavaScript: bool, highlightTags: [str], highlightContext: map, highlightPreset: map{tags: [str], context: map}, groupingConfig: str, derivedGroupingEnhancements: str, groupingEnhancements: str, secondaryGroupingExpiry: int, secondaryGroupingConfig: str?, fingerprintingRules: str, organization: map{features: [str], extraOptions: map, access: [str], onboardingTasks: [map], id: str, slug: str, status: map{id: str, name: str}, name: str, dateCreated: str(date-time), isEarlyAdopter: bool, require2FA: bool, avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, links: map{organizationUrl: str, regionUrl: str}, hasAuthProvider: bool, allowMemberInvite: bool, allowMemberProjectCreation: bool, allowSuperuserAccess: bool}, platforms: [str], processingIssues: int, defaultEnvironment: str?, relayPiiConfig: str?, builtinSymbolSources: [str], dynamicSamplingBiases: [map]?, symbolSources: str, isDynamicallySampled: bool, tempestFetchScreenshots: bool, autofixAutomationTuning: str, seerScannerAutomation: bool, seerNightshiftTweaks: any, scmSourceContextEnabled: bool, debugFilesRole: str?}\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/\n@desc Delete a Project\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.}\n@returns(204) No Content\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/environments/\n@desc List a Project's Environments\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.}\n@optional {visibility: str(all/hidden/visible) # The visibility of the environments to filter by. Defaults to `visible`.}\n@returns(200)\n@errors {400: Invalid value for 'visibility'., 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint PUT /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/environments/\n@desc Bulk update the visibility for a project's environments.\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., environmentNames: [str] # List of environment names to update. Maximum 1000., isHidden: bool # Specify `true` to hide or `false` to show the specified environments.}\n@returns(200)\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/environments/{environment}/\n@desc Retrieve a Project Environment\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., environment: str # The name of the environment.}\n@returns(200) {id: str, name: str, isHidden: bool}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint PUT /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/environments/{environment}/\n@desc Update a Project Environment\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., environment: str # The name of the environment., isHidden: bool # Specify `true` to make the environment visible or `false` to make the environment hidden.}\n@returns(200) {id: str, name: str, isHidden: bool}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/events/\n@desc List a Project's Error Events\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.}\n@optional {statsPeriod: str # The period of time for the query, will override the start & end parameters, a number followed by one of: - `d` for days - `h` for hours - `m` for minutes - `s` for seconds - `w` for weeks  For example, `24h`, to mean query data starting from 24 hours ago to now., start: str(date-time) # The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., end: str(date-time) # The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results., full: bool=false # Specify true to include the full event body, including the stacktrace, in the event payload., sample: bool=false # Return events in pseudo-random order. This is deterministic so an identical query will always return the same events in the same order.}\n@returns(200)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/events/{event_id}/\n@desc Retrieve an Event for a Project\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., event_id: str # The ID of the event. It is a 32-character hexadecimal string as reported by the client.}\n@optional {environment: [str] # The name of environments to filter by.}\n@returns(200) {id: str, groupID: str?, eventID: str, projectID: str, message: str?, title: str, location: str?, user: map?{id: str?, email: str?, username: str?, ip_address: str?, name: str?, geo: map?, data: map?}, tags: [map], platform: str, dateReceived: str(date-time)?, contexts: map?, size: int?, entries: [any], dist: str?, sdk: map, context: map?, packages: map, type: str, metadata: any, errors: [any], occurrence: map?{id: str, projectId: int, eventId: str, fingerprint: [str], issueTitle: str, subtitle: str, resourceId: str?, evidenceData: map, evidenceDisplay: [map], type: int, detectionTime: num(double), level: str?, culprit: str?, assignee: str?, priority: int?}, _meta: map, crashFile: str?, culprit: str?, dateCreated: str(date-time), fingerprints: [str], groupingConfig: map{id: str, enhancements: str}, startTimestamp: str(date-time), endTimestamp: str(date-time), measurements: any, breakdowns: any, release: map?{id: int, commitCount: int, data: map, dateCreated: str(date-time), dateReleased: str(date-time)?, deployCount: int, ref: str?, lastCommit: map?, lastDeploy: map?{dateStarted: str?, url: str?, id: str, environment: str, dateFinished: str, name: str}, status: str, url: str?, userAgent: str?, version: str?, versionInfo: map?{description: str, package: str?, version: map, buildHash: str?}}, userReport: map?{id: str, eventID: str, name: str?, email: str?, comments: str, dateCreated: str, user: map?{id: str, username: str?, email: str?, name: str?, ipAddress: str?, avatarUrl: str?}, event: map{id: str, eventID: str}}, sdkUpdates: [map], resolvedWith: [str], nextEventID: str?, previousEventID: str?}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/events/{event_id}/attachments/\n@desc List an Event's Attachments\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., event_id: str # The ID of the event. It is a 32-character hexadecimal string as reported by the client.}\n@optional {query: str # Filter the attachments by name (substring match) or by attachment kind. Use `is:screenshot` to restrict the results to screenshot attachments., cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/events/{event_id}/attachments/{attachment_id}/\n@desc Retrieve an Event Attachment\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., event_id: str # The ID of the event. It is a 32-character hexadecimal string as reported by the client., attachment_id: str # The numeric ID of the attachment, as returned from the attachments list endpoint.}\n@returns(200) {id: str, event_id: str, type: str, name: str, mimetype: str?, dateCreated: str(date-time), size: int, headers: map, sha1: str?}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/events/{event_id}/source-map-debug/\n@desc Get Debug Information Related to Source Maps for a Given Event\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., event_id: str # The ID of the event. It is a 32-character hexadecimal string as reported by the client.}\n@returns(200) {dist: str?, release: str?, exceptions: [map], has_debug_ids: bool, min_debug_id_sdk_version: str?, sdk_version: str?, project_has_some_artifact_bundle: bool, release_has_some_artifact: bool, has_uploaded_some_artifact_with_a_debug_id: bool, sdk_debug_id_support: str, has_scraping_data: bool}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/files/dsyms/\n@desc List a Project's Debug Information Files\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.}\n@optional {query: str # Substring filter matched against object name, debug ID, code ID, CPU name, and file headers., debug_id: str # Filter results to debug information files matching the given debug ID., code_id: str # Filter results to debug information files matching the given code ID., file_formats: [str] # Restrict results to one or more file formats., cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/filters/\n@desc List a Project's Data Filters\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.}\n@returns(200)\n@errors {403: Forbidden}\n\n@endpoint PUT /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/filters/{filter_id}/\n@desc Update an Inbound Data Filter\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., filter_id: str # The type of filter toggle to update. The options are: - `browser-extensions` - Filter out errors known to be caused by browser extensions. - `localhost` - Filter out events coming from localhost. This applies to both IPv4 (``127.0.0.1``) and IPv6 (``::1``) addresses. - `filtered-transaction` - Filter out transactions for healthcheck and ping endpoints. - `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. - `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@optional {active: bool # Toggle the browser-extensions, localhost, filtered-transaction, or web-crawlers filter on or off., subfilters: [str] # Specifies which legacy browser filters should be active. Anything excluded from the list will be disabled. The options are: - `ie` - Internet Explorer Version 11 and lower - `edge` - Edge Version 110 and lower - `safari` - Safari Version 15 and lower - `firefox` - Firefox Version 110 and lower - `chrome` - Chrome Version 110 and lower - `opera` - Opera Version 99 and lower - `android` - Android Version 3 and lower - `opera_mini` - Opera Mini Version 34 and lower  Deprecated options: - `ie_pre_9` - Internet Explorer Version 8 and lower - `ie9` - Internet Explorer Version 9 - `ie10` - Internet Explorer Version 10 - `ie11` - Internet Explorer Version 11 - `safari_pre_6` - Safari Version 5 and lower - `opera_pre_15` - Opera Version 14 and lower - `opera_mini_pre_8` - Opera Mini Version 8 and lower - `android_pre_4` - Android Version 3 and lower - `edge_pre_79` - Edge Version 18 and lower (non Chromium based)}\n@returns(204) No Content\n@errors {400: Bad Request, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/keys/\n@desc List a Project's Client Keys\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.}\n@optional {cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results., status: str # Filter client keys by `active` or `inactive`. Defaults to returning all keys if not specified.}\n@returns(200)\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint POST /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/keys/\n@desc Create a New Client Key\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.}\n@optional {name: str # The optional name of the key. If not provided it will be automatically generated., rateLimit: map{count: int, window: int} # Applies a rate limit to cap the number of errors accepted during a given time window. To disable entirely set `rateLimit` to null. ```json {     \"rateLimit\": {         \"window\": 7200, // time in seconds         \"count\": 1000 // error cap     } } ```, useCase: str(user/profiling/tempest/demo)=user # * `user` * `profiling` * `tempest` * `demo`}\n@returns(201) {id: str, name: str, label: str, public: str?, secret: str?, projectId: int, isActive: bool, rateLimit: map?{window: int, count: int}, dsn: map{secret: str, public: str, csp: str, security: str, minidump: str, nel: str, unreal: str, crons: str, cdn: str, playstation: str, integration: str, otlp_traces: str, otlp_logs: str}, browserSdkVersion: str, browserSdk: map{choices: [[str]]}, dateCreated: str(date-time)?, dynamicSdkLoaderOptions: map{hasReplay: bool, hasPerformance: bool, hasDebug: bool, hasFeedback: bool, hasLogsAndMetrics: bool}, useCase: str}\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/keys/{key_id}/\n@desc Retrieve a Client Key\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., key_id: str # The ID of the client key}\n@returns(200) {id: str, name: str, label: str, public: str?, secret: str?, projectId: int, isActive: bool, rateLimit: map?{window: int, count: int}, dsn: map{secret: str, public: str, csp: str, security: str, minidump: str, nel: str, unreal: str, crons: str, cdn: str, playstation: str, integration: str, otlp_traces: str, otlp_logs: str}, browserSdkVersion: str, browserSdk: map{choices: [[str]]}, dateCreated: str(date-time)?, dynamicSdkLoaderOptions: map{hasReplay: bool, hasPerformance: bool, hasDebug: bool, hasFeedback: bool, hasLogsAndMetrics: bool}, useCase: str}\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint PUT /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/keys/{key_id}/\n@desc Update a Client Key\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., key_id: str # The ID of the key to update.}\n@optional {name: str # The name for the client key, isActive: bool # Activate or deactivate the client key., rateLimit: map{count: int, window: int} # Applies a rate limit to cap the number of errors accepted during a given time window. To disable entirely set `rateLimit` to null. ```json {     \"rateLimit\": {         \"window\": 7200, // time in seconds         \"count\": 1000 // error cap     } } ```, browserSdkVersion: str(latest/7.x) # The Sentry Javascript SDK version to use. The currently supported options are:  * `latest` - Most recent version * `7.x` - Version 7 releases, dynamicSdkLoaderOptions: map{hasReplay: bool, hasPerformance: bool, hasDebug: bool, hasFeedback: bool, hasLogsAndMetrics: bool} # Configures multiple options for the Javascript Loader Script. - `Performance Monitoring` - `Debug Bundles & Logging` - `Session Replay` - Note that the loader will load the ES6 bundle instead of the ES5 bundle. - `User Feedback` - Note that the loader will load the ES6 bundle instead of the ES5 bundle. - `Logs and Metrics` - Note that the loader will load the ES6 bundle instead of the ES5 bundle. Requires SDK >= 10.0.0. ```json {     \"dynamicSdkLoaderOptions\": {         \"hasReplay\": true,         \"hasPerformance\": true,         \"hasDebug\": true,         \"hasFeedback\": true,         \"hasLogsAndMetrics\": true     } } ```}\n@returns(200) {id: str, name: str, label: str, public: str?, secret: str?, projectId: int, isActive: bool, rateLimit: map?{window: int, count: int}, dsn: map{secret: str, public: str, csp: str, security: str, minidump: str, nel: str, unreal: str, crons: str, cdn: str, playstation: str, integration: str, otlp_traces: str, otlp_logs: str}, browserSdkVersion: str, browserSdk: map{choices: [[str]]}, dateCreated: str(date-time)?, dynamicSdkLoaderOptions: map{hasReplay: bool, hasPerformance: bool, hasDebug: bool, hasFeedback: bool, hasLogsAndMetrics: bool}, useCase: str}\n@errors {400: Bad Request, 403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/keys/{key_id}/\n@desc Delete a Client Key\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., key_id: str # The ID of the key to delete.}\n@returns(204) No Content\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/members/\n@desc List a Project's Organization Members\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.}\n@returns(200)\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/monitors/{monitor_id_or_slug}/\n@desc Retrieve a Monitor for a Project\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., monitor_id_or_slug: str # The ID or slug of the monitor.}\n@returns(200) {alertRule: map{targets: [map], environment: str}, id: str, name: str, slug: str, status: str, isMuted: bool, isUpserting: bool, config: map{schedule_type: str, schedule: any, checkin_margin: int?, max_runtime: int?, timezone: str?, failure_issue_threshold: int?, recovery_threshold: int?, alert_rule_id: int?}, dateCreated: str(date-time), project: map{stats: any, transactionStats: any, sessionStats: any, id: str, slug: str, name: str, platform: str?, dateCreated: str(date-time), isBookmarked: bool, isMember: bool, features: [str], firstEvent: str(date-time)?, firstTransactionEvent: bool, access: [str], hasAccess: bool, hasFeedbacks: bool, hasFlags: bool, hasMinifiedStackTrace: bool, hasMonitors: bool, hasNewFeedbacks: bool, hasProfiles: bool, hasReplays: bool, hasSessions: bool, hasInsightsHttp: bool, hasInsightsDb: bool, hasInsightsAssets: bool, hasInsightsAppStart: bool, hasInsightsScreenLoad: bool, hasInsightsVitals: bool, hasInsightsCaches: bool, hasInsightsQueues: bool, hasInsightsAgentMonitoring: bool, hasInsightsMCP: bool, hasLogs: bool, hasTraceMetrics: bool, isInternal: bool, isPublic: bool, avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, color: str, status: str}, environments: map{name: str, status: str, isMuted: bool, dateCreated: str(date-time), lastCheckIn: str(date-time), nextCheckIn: str(date-time), nextCheckInLatest: str(date-time), activeIncident: map?{startingTimestamp: str(date-time), resolvingTimestamp: str(date-time), brokenNotice: map?{userNotifiedTimestamp: str(date-time), environmentMutedTimestamp: str(date-time)}}}, owner: map{type: str, id: str, name: str, email: str}}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint PUT /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/monitors/{monitor_id_or_slug}/\n@desc Update a Monitor for a Project\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., monitor_id_or_slug: str # The ID or slug of the monitor., project: str # The project ID or slug to associate the monitor to., name: str # Name of the monitor. Used for notifications. If not set the slug will be derived from your monitor name., config: any # The configuration for the monitor.}\n@optional {slug: str # Uniquely identifies your monitor within your organization. Changing this slug will require updates to any instrumented check-in calls., status: str(active/disabled)=active # Status of the monitor. Disabled monitors will not accept events and will not count towards the monitor quota.  * `active` * `disabled`, owner: str # The ID of the team or user that owns the monitor. (eg. user:51 or team:6), is_muted: bool # Disable creation of monitor incidents}\n@returns(200) {alertRule: map{targets: [map], environment: str}, id: str, name: str, slug: str, status: str, isMuted: bool, isUpserting: bool, config: map{schedule_type: str, schedule: any, checkin_margin: int?, max_runtime: int?, timezone: str?, failure_issue_threshold: int?, recovery_threshold: int?, alert_rule_id: int?}, dateCreated: str(date-time), project: map{stats: any, transactionStats: any, sessionStats: any, id: str, slug: str, name: str, platform: str?, dateCreated: str(date-time), isBookmarked: bool, isMember: bool, features: [str], firstEvent: str(date-time)?, firstTransactionEvent: bool, access: [str], hasAccess: bool, hasFeedbacks: bool, hasFlags: bool, hasMinifiedStackTrace: bool, hasMonitors: bool, hasNewFeedbacks: bool, hasProfiles: bool, hasReplays: bool, hasSessions: bool, hasInsightsHttp: bool, hasInsightsDb: bool, hasInsightsAssets: bool, hasInsightsAppStart: bool, hasInsightsScreenLoad: bool, hasInsightsVitals: bool, hasInsightsCaches: bool, hasInsightsQueues: bool, hasInsightsAgentMonitoring: bool, hasInsightsMCP: bool, hasLogs: bool, hasTraceMetrics: bool, isInternal: bool, isPublic: bool, avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, color: str, status: str}, environments: map{name: str, status: str, isMuted: bool, dateCreated: str(date-time), lastCheckIn: str(date-time), nextCheckIn: str(date-time), nextCheckInLatest: str(date-time), activeIncident: map?{startingTimestamp: str(date-time), resolvingTimestamp: str(date-time), brokenNotice: map?{userNotifiedTimestamp: str(date-time), environmentMutedTimestamp: str(date-time)}}}, owner: map{type: str, id: str, name: str, email: str}}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/monitors/{monitor_id_or_slug}/\n@desc Delete a Monitor or Monitor Environments for a Project\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., monitor_id_or_slug: str # The ID or slug of the monitor.}\n@optional {environment: [str] # The name of environments to filter by.}\n@returns(202) Accepted\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/monitors/{monitor_id_or_slug}/checkins/\n@desc Retrieve Check-Ins for a Monitor by Project\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., monitor_id_or_slug: str # The ID or slug of the monitor.}\n@returns(200)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/ownership/\n@desc Retrieve Ownership Configuration for a Project\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.}\n@returns(200) {schema: map?{$version: int, rules: [map]}, raw: str, fallthrough: bool, dateCreated: str(date-time), lastUpdated: str(date-time), isActive: bool, autoAssignment: str, codeownersAutoSync: bool}\n\n@endpoint PUT /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/ownership/\n@desc Update Ownership Configuration for a Project\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.}\n@optional {raw: str # Raw input for ownership configuration. See the [Ownership Rules Documentation](/product/issues/ownership-rules/) to learn more., fallthrough: bool # A boolean determining who to assign ownership to when an ownership rule has no match. If set to `True`, all project members are made owners. Otherwise, no owners are set., autoAssignment: str # Auto-assignment settings. The available options are: - Auto Assign to Issue Owner - Auto Assign to Suspect Commits - Turn off Auto-Assignment, codeownersAutoSync: bool=true # Set to `True` to sync issue owners with CODEOWNERS updates in a release.}\n@returns(202) {schema: map?{$version: int, rules: [map]}, raw: str, fallthrough: bool, dateCreated: str(date-time), lastUpdated: str(date-time), isActive: bool, autoAssignment: str, codeownersAutoSync: bool}\n@errors {400: Bad Request}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/preprod/size-analysis/status-check-rules/\n@desc Retrieve Size Analysis status check rules for a project\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.}\n@returns(200) {enabled: bool, rules: [map]}\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/preprod/snapshots/status-check-rules/\n@desc Retrieve Snapshot status check rules for a project\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.}\n@returns(200) {enabled: bool, rules: map{failOnAdded: bool, failOnRemoved: bool, failOnChanged: bool, failOnRenamed: bool}}\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/preprodartifacts/build-distribution/latest/\n@desc Get the latest installable build for a project\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., appId: str # App identifier (exact match)., platform: str # Platform: \"apple\" or \"android\".}\n@optional {buildVersion: str # Current build version. When provided, enables check-for-updates mode., buildNumber: int # Current build number. Either this or mainBinaryIdentifier must be provided when buildVersion is set., mainBinaryIdentifier: str # UUID of the main binary (e.g. Mach-O UUID for Apple builds). Either this or buildNumber must be provided when buildVersion is set., buildConfiguration: str # Filter by build configuration name (exact match)., codesigningType: str # Filter by code signing type., installGroups: [str] # Filter by install group name (repeatable for multiple groups).}\n@returns(200) {latestArtifact: map?{buildId: str, state: str, appInfo: map{appId: str?, name: str?, version: str?, buildNumber: int?, artifactType: str?, dateAdded: str?, dateBuilt: str?}, gitInfo: map?{headSha: str?, baseSha: str?, provider: str?, headRepoName: str?, baseRepoName: str?, headRef: str?, baseRef: str?, prNumber: int?}, platform: str?, projectId: str, projectSlug: str, buildConfiguration: str?, isInstallable: bool, installUrl: str?, installUrlExpiresAt: str?, downloadCount: int, releaseNotes: str?, installGroups: [str]?, isCodeSignatureValid: bool?, profileName: str?, codesigningType: str?}, currentArtifact: map?{buildId: str, state: str, appInfo: map{appId: str?, name: str?, version: str?, buildNumber: int?, artifactType: str?, dateAdded: str?, dateBuilt: str?}, gitInfo: map?{headSha: str?, baseSha: str?, provider: str?, headRepoName: str?, baseRepoName: str?, headRef: str?, baseRef: str?, prNumber: int?}, platform: str?, projectId: str, projectSlug: str, buildConfiguration: str?, isInstallable: bool, installUrl: str?, installUrlExpiresAt: str?, downloadCount: int, releaseNotes: str?, installGroups: [str]?, isCodeSignatureValid: bool?, profileName: str?, codesigningType: str?}}\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint POST /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/preprodartifacts/snapshots/\n@desc Upload a Snapshot\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.}\n@returns(200) {artifactId: str, snapshotMetricsId: str, imageCount: int, snapshotUrl: str}\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/profiling/profiles/{profile_id}/\n@desc Retrieve a Profile\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., profile_id: str # The ID of the profile. Either a numeric ID or a 32-character hexadecimal string.}\n@returns(200)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/releases/\n@desc List a Project's Releases\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.}\n@optional {environment: [str] # The name of environments to filter by., query: str # Case-insensitive substring match against the release version., per_page: int # Limit the number of rows to return in the result. Default and maximum allowed is 100., cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/releases/{version}/commits/\n@desc List a Project Release's Commits\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., version: str # The version identifier of the release}\n@optional {cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/releases/{version}/files/\n@desc List a Project's Release Files\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., version: str # The version identifier of the release}\n@optional {query: [str] # If set, only files with these partial names will be returned., checksum: [str] # If set, only files with these exact checksums will be returned., cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint POST /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/releases/{version}/files/\n@desc Upload a New Project Release File\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., version: str # The version identifier of the release}\n@returns(201) {id: str, name: str, dist: str?, headers: map, size: int, sha1: str, dateCreated: str(date-time)}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found, 409: Conflict}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/releases/{version}/files/{file_id}/\n@desc Retrieve a Project Release's File\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., version: str # The version identifier of the release, file_id: str # The ID of the release file.}\n@optional {download: str # If set, download the file contents instead of returning metadata.}\n@returns(200) {id: str, name: str, dist: str?, headers: map, size: int, sha1: str, dateCreated: str(date-time)}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint PUT /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/releases/{version}/files/{file_id}/\n@desc Update a Project Release File\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., version: str # The version identifier of the release, file_id: str # The ID of the release file., name: str # The new name (full path) of the file.}\n@returns(200) {id: str, name: str, dist: str?, headers: map, size: int, sha1: str, dateCreated: str(date-time)}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/releases/{version}/files/{file_id}/\n@desc Delete a Project Release's File\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., version: str # The version identifier of the release, file_id: str # The ID of the release file.}\n@returns(204) No Content\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/replays/{replay_id}/\n@desc Delete a Replay Instance\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., replay_id: str # The ID of the replay you'd like to retrieve. It is a 32-character hexadecimal string.}\n@returns(204) No Content\n@errors {404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/replays/{replay_id}/clicks/\n@desc List Clicked Nodes\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., replay_id: str # The ID of the replay you'd like to retrieve. It is a 32-character hexadecimal string.}\n@optional {cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results., environment: [str] # The name of environments to filter by., per_page: int # Limit the number of rows to return in the result. Default and maximum allowed is 100., query: str # Filters results by using [query syntax](/product/sentry-basics/search/).  Example: `query=(transaction:foo AND release:abc) OR (transaction:[bar,baz] AND release:def)`}\n@returns(200) {data: [map]}\n@errors {400: Bad Request, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/replays/{replay_id}/recording-segments/\n@desc List Recording Segments\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., replay_id: str # The ID of the replay you'd like to retrieve. It is a 32-character hexadecimal string.}\n@optional {cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results., per_page: int # Limit the number of rows to return in the result. Default and maximum allowed is 100.}\n@returns(200)\n@errors {400: Bad Request, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/replays/{replay_id}/recording-segments/{segment_id}/\n@desc Retrieve a Recording Segment\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., replay_id: str # The ID of the replay you'd like to retrieve. It is a 32-character hexadecimal string., segment_id: int # The ID of the segment you'd like to retrieve.}\n@returns(200) {data: map{replayId: str, segmentId: int, projectId: str, dateAdded: str?}}\n@errors {400: Bad Request, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/replays/{replay_id}/viewed-by/\n@desc List Users Who Have Viewed a Replay\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., replay_id: str # The ID of the replay you'd like to retrieve. It is a 32-character hexadecimal string.}\n@returns(200) {data: map{viewed_by: [map]}}\n@errors {400: Bad Request, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/replays/jobs/delete/\n@desc List Replay Batch-Deletion Jobs\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.}\n@returns(200) {data: [map]}\n@errors {403: Forbidden}\n\n@endpoint POST /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/replays/jobs/delete/\n@desc Create Replay Batch Deletion Job\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., data: map{rangeStart!: str(date-time), rangeEnd!: str(date-time), environments!: [str], query!: str}}\n@returns(201) {data: map{id: int, dateCreated: str, dateUpdated: str, rangeStart: str, rangeEnd: str, environments: [str], status: str, query: str, countDeleted: int}}\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/replays/jobs/delete/{job_id}/\n@desc Retrieve a Replay Batch-Deletion Job\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., job_id: int # The ID of the replay deletion job you'd like to retrieve.}\n@returns(200) {data: map{id: int, dateCreated: str, dateUpdated: str, rangeStart: str, rangeEnd: str, environments: [str], status: str, query: str, countDeleted: int}}\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint POST /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/repo/\n@desc Link a Repository to a Project\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., repositoryId: int # The ID of the repository to link.}\n@returns(201) {id: str, projectId: str, repositoryId: str, source: str, created: bool}\n@errors {400: Bad Request, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/stats/\n@desc Retrieve Event Counts for a Project\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.}\n@optional {stat: str(blacklisted/generated/received/rejected) # The name of the stat to query. Defaults to `received`., since: num(double) # A UNIX timestamp (in seconds) that sets the start of the query range., until: num(double) # A UNIX timestamp (in seconds) that sets the end of the query range., resolution: str(10s/1d/1h) # An explicit time series resolution.}\n@returns(200)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/symbol-sources/\n@desc Retrieve a Project's Symbol Sources\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.}\n@optional {id: str # The ID of the source to look up. If this is not provided, all sources are returned.}\n@returns(200)\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint POST /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/symbol-sources/\n@desc Add a Symbol Source to a Project\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., type: str(http/gcs/s3) # The type of the source.  * `http` - SymbolServer (HTTP) * `gcs` - Google Cloud Storage * `s3` - Amazon S3, name: str # The human-readable name of the source.}\n@optional {id: str # The internal ID of the source. Must be distinct from all other source IDs and cannot start with '`sentry:`'. If this is not provided, a new UUID will be generated., layout: map{type!: str, casing!: str} # Layout settings for the source. This is required for HTTP, GCS, and S3 sources.  **`type`** ***(string)*** - The layout of the folder structure. The options are: - `native` - Platform-Specific (SymStore / GDB / LLVM) - `symstore` - Microsoft SymStore - `symstore_index2` - Microsoft SymStore (with index2.txt) - `ssqp` - Microsoft SSQP - `unified` - Unified Symbol Server Layout - `debuginfod` - debuginfod  **`casing`** ***(string)*** - The layout of the folder structure. The options are: - `default` - Default (mixed case) - `uppercase` - Uppercase - `lowercase` - Lowercase  ```json {     \"layout\": {         \"type\": \"native\"         \"casing\": \"default\"     } } ```, filters: map{filetypes: [str], path_patterns: [str], requires_checksum: bool} # Filter settings for the source. This is optional for all sources.  **`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: - `pe` - Windows executable files - `pdb` - Windows debug files - `portablepdb` - .NET portable debug files - `mach_code` - MacOS executable files - `mach_debug` - MacOS debug files - `elf_code` - ELF executable files - `elf_debug` - ELF debug files - `wasm_code` - WASM executable files - `wasm_debug` - WASM debug files - `breakpad` - Breakpad symbol files - `sourcebundle` - Source code bundles - `uuidmap` - Apple UUID mapping files - `bcsymbolmap` - Apple bitcode symbol maps - `il2cpp` - Unity IL2CPP mapping files - `proguard` - ProGuard mapping files  **`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.  **`requires_checksum`** ***(boolean)*** - Whether this source requires a debug checksum to be sent with each request. Defaults to `false`.  ```json {     \"filters\": {         \"filetypes\": [\"pe\", \"pdb\", \"portablepdb\"],         \"path_patterns\": [\"*ffmpeg*\"]     } } ```, url: str # The source's URL. Optional for HTTP sources, invalid for all others., username: str # The user name for accessing the source. Optional for HTTP sources, invalid for all others., password: str # The password for accessing the source. Optional for HTTP sources, invalid for all others., bucket: str # The GCS or S3 bucket where the source resides. Required for GCS and S3 source, invalid for HTTP sources., region: str(us-east-2/us-east-1/us-west-1/us-west-2/ap-east-1/ap-south-1/ap-northeast-2/ap-southeast-1/ap-southeast-2/ap-northeast-1/ca-central-1/cn-north-1/cn-northwest-1/eu-central-1/eu-west-1/eu-west-2/eu-west-3/eu-north-1/sa-east-1/us-gov-east-1/us-gov-west-1) # The source's [S3 region](https://docs.aws.amazon.com/general/latest/gr/s3.html). Required for S3 sources, invalid for all others.  * `us-east-2` - US East (Ohio) * `us-east-1` - US East (N. Virginia) * `us-west-1` - US West (N. California) * `us-west-2` - US West (Oregon) * `ap-east-1` - Asia Pacific (Hong Kong) * `ap-south-1` - Asia Pacific (Mumbai) * `ap-northeast-2` - Asia Pacific (Seoul) * `ap-southeast-1` - Asia Pacific (Singapore) * `ap-southeast-2` - Asia Pacific (Sydney) * `ap-northeast-1` - Asia Pacific (Tokyo) * `ca-central-1` - Canada (Central) * `cn-north-1` - China (Beijing) * `cn-northwest-1` - China (Ningxia) * `eu-central-1` - EU (Frankfurt) * `eu-west-1` - EU (Ireland) * `eu-west-2` - EU (London) * `eu-west-3` - EU (Paris) * `eu-north-1` - EU (Stockholm) * `sa-east-1` - South America (São Paulo) * `us-gov-east-1` - AWS GovCloud (US-East) * `us-gov-west-1` - AWS GovCloud (US), access_key: str # The [AWS Access Key](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html#access-keys-and-secret-access-keys).Required for S3 sources, invalid for all others., secret_key: str # The [AWS Secret Access Key](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html#access-keys-and-secret-access-keys).Required for S3 sources, invalid for all others., prefix: str # The GCS or [S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html) prefix. Optional for GCS and S3 sourcse, invalid for HTTP., client_email: str # The GCS email address for authentication. Required for GCS sources, invalid for all others., private_key: str # The GCS private key. Required for GCS sources if not using impersonated tokens. Invalid for all others.}\n@returns(201)\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint PUT /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/symbol-sources/\n@desc Update a Project's Symbol Source\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., id: str # The ID of the source to update., type: str(http/gcs/s3) # The type of the source.  * `http` - SymbolServer (HTTP) * `gcs` - Google Cloud Storage * `s3` - Amazon S3, name: str # The human-readable name of the source.}\n@optional {id: str # The internal ID of the source. Must be distinct from all other source IDs and cannot start with '`sentry:`'. If this is not provided, a new UUID will be generated., layout: map{type!: str, casing!: str} # Layout settings for the source. This is required for HTTP, GCS, and S3 sources.  **`type`** ***(string)*** - The layout of the folder structure. The options are: - `native` - Platform-Specific (SymStore / GDB / LLVM) - `symstore` - Microsoft SymStore - `symstore_index2` - Microsoft SymStore (with index2.txt) - `ssqp` - Microsoft SSQP - `unified` - Unified Symbol Server Layout - `debuginfod` - debuginfod  **`casing`** ***(string)*** - The layout of the folder structure. The options are: - `default` - Default (mixed case) - `uppercase` - Uppercase - `lowercase` - Lowercase  ```json {     \"layout\": {         \"type\": \"native\"         \"casing\": \"default\"     } } ```, filters: map{filetypes: [str], path_patterns: [str], requires_checksum: bool} # Filter settings for the source. This is optional for all sources.  **`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: - `pe` - Windows executable files - `pdb` - Windows debug files - `portablepdb` - .NET portable debug files - `mach_code` - MacOS executable files - `mach_debug` - MacOS debug files - `elf_code` - ELF executable files - `elf_debug` - ELF debug files - `wasm_code` - WASM executable files - `wasm_debug` - WASM debug files - `breakpad` - Breakpad symbol files - `sourcebundle` - Source code bundles - `uuidmap` - Apple UUID mapping files - `bcsymbolmap` - Apple bitcode symbol maps - `il2cpp` - Unity IL2CPP mapping files - `proguard` - ProGuard mapping files  **`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.  **`requires_checksum`** ***(boolean)*** - Whether this source requires a debug checksum to be sent with each request. Defaults to `false`.  ```json {     \"filters\": {         \"filetypes\": [\"pe\", \"pdb\", \"portablepdb\"],         \"path_patterns\": [\"*ffmpeg*\"]     } } ```, url: str # The source's URL. Optional for HTTP sources, invalid for all others., username: str # The user name for accessing the source. Optional for HTTP sources, invalid for all others., password: str # The password for accessing the source. Optional for HTTP sources, invalid for all others., bucket: str # The GCS or S3 bucket where the source resides. Required for GCS and S3 source, invalid for HTTP sources., region: str(us-east-2/us-east-1/us-west-1/us-west-2/ap-east-1/ap-south-1/ap-northeast-2/ap-southeast-1/ap-southeast-2/ap-northeast-1/ca-central-1/cn-north-1/cn-northwest-1/eu-central-1/eu-west-1/eu-west-2/eu-west-3/eu-north-1/sa-east-1/us-gov-east-1/us-gov-west-1) # The source's [S3 region](https://docs.aws.amazon.com/general/latest/gr/s3.html). Required for S3 sources, invalid for all others.  * `us-east-2` - US East (Ohio) * `us-east-1` - US East (N. Virginia) * `us-west-1` - US West (N. California) * `us-west-2` - US West (Oregon) * `ap-east-1` - Asia Pacific (Hong Kong) * `ap-south-1` - Asia Pacific (Mumbai) * `ap-northeast-2` - Asia Pacific (Seoul) * `ap-southeast-1` - Asia Pacific (Singapore) * `ap-southeast-2` - Asia Pacific (Sydney) * `ap-northeast-1` - Asia Pacific (Tokyo) * `ca-central-1` - Canada (Central) * `cn-north-1` - China (Beijing) * `cn-northwest-1` - China (Ningxia) * `eu-central-1` - EU (Frankfurt) * `eu-west-1` - EU (Ireland) * `eu-west-2` - EU (London) * `eu-west-3` - EU (Paris) * `eu-north-1` - EU (Stockholm) * `sa-east-1` - South America (São Paulo) * `us-gov-east-1` - AWS GovCloud (US-East) * `us-gov-west-1` - AWS GovCloud (US), access_key: str # The [AWS Access Key](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html#access-keys-and-secret-access-keys).Required for S3 sources, invalid for all others., secret_key: str # The [AWS Secret Access Key](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html#access-keys-and-secret-access-keys).Required for S3 sources, invalid for all others., prefix: str # The GCS or [S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html) prefix. Optional for GCS and S3 sourcse, invalid for HTTP., client_email: str # The GCS email address for authentication. Required for GCS sources, invalid for all others., private_key: str # The GCS private key. Required for GCS sources if not using impersonated tokens. Invalid for all others.}\n@returns(200)\n@errors {400: Bad Request, 403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/symbol-sources/\n@desc Delete a Symbol Source from a Project\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., id: str # The ID of the source to delete.}\n@returns(204) No Content\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/teams/\n@desc List a Project's Teams\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.}\n@optional {cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200)\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint POST /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/teams/{team_id_or_slug}/\n@desc Add a Team to a Project\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., team_id_or_slug: str # The ID or slug of the team the resource belongs to.}\n@returns(201) {stats: any, transactionStats: any, sessionStats: any, id: str, slug: str, name: str, platform: str?, dateCreated: str(date-time), isBookmarked: bool, isMember: bool, features: [str], firstEvent: str(date-time)?, firstTransactionEvent: bool, access: [str], hasAccess: bool, hasFeedbacks: bool, hasFlags: bool, hasMinifiedStackTrace: bool, hasMonitors: bool, hasNewFeedbacks: bool, hasProfiles: bool, hasReplays: bool, hasSessions: bool, hasInsightsHttp: bool, hasInsightsDb: bool, hasInsightsAssets: bool, hasInsightsAppStart: bool, hasInsightsScreenLoad: bool, hasInsightsVitals: bool, hasInsightsCaches: bool, hasInsightsQueues: bool, hasInsightsAgentMonitoring: bool, hasInsightsMCP: bool, hasLogs: bool, hasTraceMetrics: bool, isInternal: bool, isPublic: bool, avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, color: str, status: str, team: map{id: str, name: str, slug: str}, teams: [map]}\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/teams/{team_id_or_slug}/\n@desc Delete a Team from a Project\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization., team_id_or_slug: str # The ID or slug of the team the resource belongs to.}\n@returns(200) {stats: any, transactionStats: any, sessionStats: any, id: str, slug: str, name: str, platform: str?, dateCreated: str(date-time), isBookmarked: bool, isMember: bool, features: [str], firstEvent: str(date-time)?, firstTransactionEvent: bool, access: [str], hasAccess: bool, hasFeedbacks: bool, hasFlags: bool, hasMinifiedStackTrace: bool, hasMonitors: bool, hasNewFeedbacks: bool, hasProfiles: bool, hasReplays: bool, hasSessions: bool, hasInsightsHttp: bool, hasInsightsDb: bool, hasInsightsAssets: bool, hasInsightsAppStart: bool, hasInsightsScreenLoad: bool, hasInsightsVitals: bool, hasInsightsCaches: bool, hasInsightsQueues: bool, hasInsightsAgentMonitoring: bool, hasInsightsMCP: bool, hasLogs: bool, hasTraceMetrics: bool, isInternal: bool, isPublic: bool, avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, color: str, status: str, team: map{id: str, name: str, slug: str}, teams: [map]}\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/users/\n@desc List a Project's Users\n@required {project_id_or_slug: str # The ID or slug of the project the resource belongs to. Project slugs are unique within each organization.}\n@optional {query: str # 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`., cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/seer/models/\n@desc List Seer AI Models\n@returns(200) {models: [str]}\n\n@endpoint GET /api/0/sentry-apps/{sentry_app_id_or_slug}/\n@desc Retrieve a custom integration by ID or slug.\n@required {sentry_app_id_or_slug: str # The ID or slug of the custom integration.}\n@returns(200) {allowedOrigins: [str], avatars: [map], events: [str], featureData: [str], isAlertable: bool, metadata: str, name: str, schema: str, scopes: [str], slug: str, status: str, uuid: str, verifyInstall: bool, webhookHeaders: [str], isDisabled: bool, author: str?, overview: str?, popularity: int?, redirectUrl: str?, webhookUrl: str?, clientSecret: str?, datePublished: str(date-time), clientId: str, owner: map{id: int, slug: str}}\n\n@endpoint PUT /api/0/sentry-apps/{sentry_app_id_or_slug}/\n@desc Update an existing custom integration.\n@required {sentry_app_id_or_slug: str # The ID or slug of the custom integration., name: str # The name of the custom integration., scopes: [str] # The custom integration's permission scopes for API access.}\n@optional {author: str # The custom integration's author., events: [str] # Webhook events the custom integration is subscribed to., schema: map # The UI components schema, used to render the custom integration's configuration UI elements. See our [schema docs](https://docs.sentry.io/organization/integrations/integration-platform/ui-components/) for more information., webhookUrl: str(uri) # The webhook destination URL., redirectUrl: str(uri) # The post-installation redirect URL., isInternal: bool=false # Whether or not the integration is internal only. False means the integration is public., isAlertable: bool=false # Marks whether or not the custom integration can be used in an alert rule., overview: str # The custom integration's description., verifyInstall: bool=true # Whether or not an installation of the custom integration should be verified., allowedOrigins: [str] # The list of allowed origins for CORS., webhookHeaders: [str] # Custom headers sent with every webhook request. Each entry is a single 'Header-Name: value' pair.}\n@returns(200) {allowedOrigins: [str], avatars: [map], events: [str], featureData: [str], isAlertable: bool, metadata: str, name: str, schema: str, scopes: [str], slug: str, status: str, uuid: str, verifyInstall: bool, webhookHeaders: [str], isDisabled: bool, author: str?, overview: str?, popularity: int?, redirectUrl: str?, webhookUrl: str?, clientSecret: str?, datePublished: str(date-time), clientId: str, owner: map{id: int, slug: str}}\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint DELETE /api/0/sentry-apps/{sentry_app_id_or_slug}/\n@desc Delete a custom integration.\n@required {sentry_app_id_or_slug: str # The ID or slug of the custom integration.}\n@returns(204) No Content\n@errors {403: Forbidden}\n\n@endpoint GET /api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/\n@desc Retrieve a Team\n@required {team_id_or_slug: str # The ID or slug of the team the resource belongs to.}\n@optional {expand: str # List of strings to opt in to additional data. Supports `projects`, `externalTeams`., collapse: str # List of strings to opt out of certain pieces of data. Supports `organization`.}\n@returns(200) {id: str, slug: str, name: str, dateCreated: str(date-time)?, isMember: bool, teamRole: str?, flags: map, access: [str], hasAccess: bool, isPending: bool, memberCount: int, avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, externalTeams: [map], organization: map{features: [str], extraOptions: map, access: [str], onboardingTasks: [map], id: str, slug: str, status: map{id: str, name: str}, name: str, dateCreated: str(date-time), isEarlyAdopter: bool, require2FA: bool, avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, links: map{organizationUrl: str, regionUrl: str}, hasAuthProvider: bool, allowMemberInvite: bool, allowMemberProjectCreation: bool, allowSuperuserAccess: bool}, projects: [map]}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint PUT /api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/\n@desc Update a Team\n@required {team_id_or_slug: str # The ID or slug of the team the resource belongs to., slug: str # Uniquely identifies a team. This is must be available.}\n@optional {name: str # The name of the team.}\n@returns(200) {id: str, slug: str, name: str, dateCreated: str(date-time)?, isMember: bool, teamRole: str?, flags: map, access: [str], hasAccess: bool, isPending: bool, memberCount: int, avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, externalTeams: [map], organization: map{features: [str], extraOptions: map, access: [str], onboardingTasks: [map], id: str, slug: str, status: map{id: str, name: str}, name: str, dateCreated: str(date-time), isEarlyAdopter: bool, require2FA: bool, avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, links: map{organizationUrl: str, regionUrl: str}, hasAuthProvider: bool, allowMemberInvite: bool, allowMemberProjectCreation: bool, allowSuperuserAccess: bool}, projects: [map]}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/\n@desc Delete a Team\n@required {team_id_or_slug: str # The ID or slug of the team the resource belongs to.}\n@returns(204) No Content\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint POST /api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/external-teams/\n@desc Create an External Team\n@required {team_id_or_slug: str # The ID or slug of the team the resource belongs to., external_name: str # The associated name for the provider., provider: str(github/github_enterprise/jira_server/slack/slack_staging/perforce/gitlab/msteams/custom_scm) # The provider of the external actor.  * `github` * `github_enterprise` * `jira_server` * `slack` * `slack_staging` * `perforce` * `gitlab` * `msteams` * `custom_scm`, integration_id: int # The Integration ID.}\n@optional {external_id: str # The associated user ID for provider.}\n@returns(200) {externalId: str, userId: str, teamId: str, id: str, provider: str, externalName: str, integrationId: str}\n@returns(201) {externalId: str, userId: str, teamId: str, id: str, provider: str, externalName: str, integrationId: str}\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint PUT /api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/external-teams/{external_team_id}/\n@desc Update an External Team\n@required {team_id_or_slug: str # The ID or slug of the team the resource belongs to., external_team_id: int # The ID of the external team object. This is returned when creating an external team., external_name: str # The associated name for the provider., provider: str(github/github_enterprise/jira_server/slack/slack_staging/perforce/gitlab/msteams/custom_scm) # The provider of the external actor.  * `github` * `github_enterprise` * `jira_server` * `slack` * `slack_staging` * `perforce` * `gitlab` * `msteams` * `custom_scm`, integration_id: int # The Integration ID.}\n@optional {external_id: str # The associated user ID for provider.}\n@returns(200) {externalId: str, userId: str, teamId: str, id: str, provider: str, externalName: str, integrationId: str}\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint DELETE /api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/external-teams/{external_team_id}/\n@desc Delete an External Team\n@required {team_id_or_slug: str # The ID or slug of the team the resource belongs to., external_team_id: int # The ID of the external team object. This is returned when creating an external team.}\n@returns(204) No Content\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint GET /api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/members/\n@desc List a Team's Members\n@required {team_id_or_slug: str # The ID or slug of the team the resource belongs to.}\n@optional {cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200)\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/projects/\n@desc List a Team's Projects\n@required {team_id_or_slug: str # The ID or slug of the team the resource belongs to.}\n@optional {cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200)\n@errors {403: Forbidden, 404: Team not found.}\n\n@endpoint POST /api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/projects/\n@desc Create a New Project\n@required {team_id_or_slug: str # The ID or slug of the team the resource belongs to., name: str # The name for the project.}\n@optional {slug: str # Uniquely identifies a project and is used for the interface.         If not provided, it is automatically generated from the name., platform: str # The platform for the project., default_rules: bool # 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@returns(201) {latestDeploys: map?, options: map, stats: any, transactionStats: any, sessionStats: any, id: str, slug: str, name: str, platform: str?, dateCreated: str(date-time), isBookmarked: bool, isMember: bool, features: [str], firstEvent: str(date-time)?, firstTransactionEvent: bool, access: [str], hasAccess: bool, hasFeedbacks: bool, hasFlags: bool, hasMinifiedStackTrace: bool, hasMonitors: bool, hasNewFeedbacks: bool, hasProfiles: bool, hasReplays: bool, hasSessions: bool, hasInsightsHttp: bool, hasInsightsDb: bool, hasInsightsAssets: bool, hasInsightsAppStart: bool, hasInsightsScreenLoad: bool, hasInsightsVitals: bool, hasInsightsCaches: bool, hasInsightsQueues: bool, hasInsightsAgentMonitoring: bool, hasInsightsMCP: bool, hasLogs: bool, hasTraceMetrics: bool, team: map?{id: str, name: str, slug: str}, teams: [map], platforms: [str], hasUserReports: bool, environments: [str], latestRelease: map?{version: str}}\n@errors {400: Bad Request, 403: Forbidden, 404: Team not found., 409: A project with this slug already exists.}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/tags/{key}/values/\n@desc Return a list of values associated with this key.  The `query`\n@required {project_id_or_slug: str # The ID or slug of the project., key: str # The tag key to look up.}\n@optional {cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200) Success\n@errors {403: Forbidden}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/user-feedback/\n@desc Return a list of user feedback items within this project.\n@required {project_id_or_slug: str # The ID or slug of the project.}\n@optional {cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200) Success\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint POST /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/user-feedback/\n@desc *This endpoint is DEPRECATED. We document it here for older SDKs and users who are still migrating to the [User Feedback Widget](https://docs.sentry.io/product/user-feedback/#user-feedback-widget) or [API](https://docs.sentry.io/platforms/javascript/user-feedback/#user-feedback-api)(multi-platform). If you are a new user, do not use this endpoint - unless you don't have a JS frontend, and your platform's SDK does not offer a feedback API.*\n@required {project_id_or_slug: str # The ID or slug of the project., event_id: str # The event ID. This can be retrieved from the [beforeSend callback](https://docs.sentry.io/platforms/javascript/configuration/filtering/#using-beforesend)., name: str # User's name., email: str # User's email address., comments: str # Comments supplied by user.}\n@returns(200) {comments: str, dateCreated: str, email: str, event: map{eventID: str, id: str?}, eventID: str, id: str, issue: map?, name: str, user: map?} # Success\n@errors {400: Bad Input, 403: Forbidden, 404: The requested resource does not exist, 409: Conflict}\n@example_request {\"event_id\":\"14bad9a2e3774046977a21440ddb39b2\",\"name\":\"Jane Schmidt\",\"email\":\"jane@empowerplant.io\",\"comments\":\"It broke!\"}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/hooks/\n@desc Return a list of service hooks bound to a project.\n@required {project_id_or_slug: str # The ID or slug of the project the client keys belong to.}\n@optional {cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200) Success\n@errors {403: You do not have that feature enabled}\n\n@endpoint POST /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/hooks/\n@desc Register a new service hook on a project.\n@required {project_id_or_slug: str # The ID or slug of the project the client keys belong to., url: str # The URL for the webhook., events: [str] # The events to subscribe to.}\n@returns(201) {dateCreated: str, events: [str], id: str, secret: str, status: str, url: str} # Success\n@errors {403: You do not have that feature enabled, 404: The requested resource does not exist}\n@example_request {\"url\":\"https://empowerplant.io/sentry-hook\",\"events\":[\"event.alert\",\"event.created\"]}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/hooks/{hook_id}/\n@desc Return a service hook bound to a project.\n@required {project_id_or_slug: str # The ID or slug of the project the client keys belong to., hook_id: str # The GUID of the service hook.}\n@returns(200) {dateCreated: str, events: [str], id: str, secret: str, status: str, url: str} # Success\n@errors {403: Forbidden, 404: The requested resource does not exist}\n\n@endpoint PUT /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/hooks/{hook_id}/\n@desc Update a service hook.\n@required {project_id_or_slug: str # The ID or slug of the project the client keys belong to., hook_id: str # The GUID of the service hook., url: str # The URL for the webhook., events: [str] # The events to subscribe to.}\n@returns(200) {dateCreated: str, events: [str], id: str, secret: str, status: str, url: str} # Success\n@errors {400: Bad Input, 403: Forbidden, 404: The requested resource does not exist}\n@example_request {\"url\":\"https://empowerplant.io/sentry-hook\",\"events\":[\"event.alert\",\"event.created\"]}\n\n@endpoint DELETE /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/hooks/{hook_id}/\n@desc Remove a service hook.\n@required {project_id_or_slug: str # The ID or slug of the project the client keys belong to., hook_id: str # The GUID of the service hook.}\n@returns(204) Success\n@errors {403: Forbidden, 404: The requested resource does not exist}\n\n@endpoint GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/issues/\n@desc **Deprecated**: This endpoint has been replaced with the [Organization Issues endpoint](/api/events/list-an-organizations-issues/) which\n@required {project_id_or_slug: str # The ID or slug of the project the issues belong to.}\n@optional {statsPeriod: str # An optional stat period (can be one of `\"24h\"`, `\"14d\"`, and `\"\"`), defaults to \"24h\" if not provided., shortIdLookup: bool # 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., query: str # An optional Sentry structured search query. If not provided an implied `\"is:unresolved\"` is assumed., hashes: str # 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., sort: str(date/new/trends/freq/user/inbox)=date # The sort order of the issues. Options include 'Last Seen' (`date`), 'First Seen' (`new`), 'Trends' (`trends`), 'Events' (`freq`), 'Users' (`user`), and 'Date Added' (`inbox`)., limit: int=100 # The maximum number of issues to return. The maximum is 100., cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200) Success\n@errors {403: Forbidden}\n\n@endpoint PUT /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/issues/\n@desc Bulk mutate various attributes on issues.  The list of issues to modify is given through the `id` query parameter.  It is repeated for each issue that should be modified.\n@required {project_id_or_slug: str # The ID or slug of the project the issues belong to.}\n@optional {id: int # 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., status: str # Optionally limits the query to issues of the specified status. Valid values are `\"resolved\"`, `\"reprocessing\"`, `\"unresolved\"`, and `\"ignored\"`., status: str # The new status for the issues. Valid values are `\"resolved\"`, `\"resolvedInNextRelease\"`, `\"unresolved\"`, and `\"ignored\"`., statusDetails: map{inRelease: str, inNextRelease: bool, inCommit: str, ignoreDuration: int, ignoreCount: int, ignoreWindow: int, ignoreUserCount: int, ignoreUserWindow: int} # Additional details about the resolution. Valid values are `\"inRelease\"`, `\"inNextRelease\"`, `\"inCommit\"`, `\"ignoreDuration\"`, `\"ignoreCount\"`, `\"ignoreWindow\"`, `\"ignoreUserCount\"`, and `\"ignoreUserWindow\"`., ignoreDuration: int # The number of minutes to ignore this issue., isPublic: bool # Sets the issue to public or private., merge: bool # Allows to merge or unmerge different issues., assignedTo: str # The actor ID (or username) of the user or team that should be assigned to this issue., hasSeen: bool # In case this API call is invoked with a user context this allows changing of the flag that indicates if the user has seen the event., isBookmarked: bool # In case this API call is invoked with a user context this allows changing of the bookmark flag.}\n@returns(200) {isPublic: bool, status: str, statusDetails: map} # Success\n@errors {400: Bad Input, 403: Forbidden, 404: The requested resource does not exist}\n@example_request {\"isPublic\":false,\"status\":\"unresolved\"}\n\n@endpoint DELETE /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/issues/\n@desc Permanently remove the given issues. The list of issues to modify is given through the `id` query parameter.  It is repeated for each issue that should be removed.\n@required {project_id_or_slug: str # The ID or slug of the project the issues belong to.}\n@optional {id: int # 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@returns(204) Success\n@errors {403: Forbidden, 404: Project not found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/tags/{key}/values/\n@desc List a Tag's Values for an Issue\n@required {issue_id: str # The ID of the issue you'd like to query., key: str # The tag key to look the values up for.}\n@optional {sort: str(age/count/date/id) # Sort order of the resulting tag values. Prefix with '-' for descending order. Default is '-id'., environment: [str] # The name of environments to filter by.}\n@returns(200)\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/releases/{version}/commitfiles/\n@desc Retrieve files changed in a release's commits\n@required {version: str # The version identifier of the release.}\n@returns(200) Success\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/sentry-app-installations/\n@desc Return a list of integration platform installations for a given organization.\n@optional {cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200) Success\n@errors {403: Forbidden, 404: Not Found}\n\n@endpoint POST /api/0/sentry-app-installations/{uuid}/external-issues/\n@desc Create or update an external issue from an integration platform integration.\n@required {uuid: str # The uuid of the integration platform integration., issueId: int # The ID of the Sentry issue to link the external issue to., webUrl: str # The URL of the external service to link the issue to., project: str # The external service's project., identifier: str # A unique identifier of the external issue.}\n@returns(200) {id: str, issueId: str, serviceType: str, displayName: str, webUrl: str} # Success\n@errors {403: Forbidden, 404: Not Found}\n@example_request {\"issueId\":1,\"webUrl\":\"https://somerandom.io/project/issue-id\",\"project\":\"ExternalProj\",\"identifier\":\"issue-1\"}\n\n@endpoint DELETE /api/0/sentry-app-installations/{uuid}/external-issues/{external_issue_id}/\n@desc Delete an external issue.\n@required {uuid: str # The uuid of the integration platform integration., external_issue_id: str # The ID of the external issue.}\n@returns(204) Success\n@errors {403: Forbidden, 404: External issue not found}\n\n@endpoint POST /api/0/organizations/{organization_id_or_slug}/spike-protections/\n@desc Enables Spike Protection feature for some of the projects within the organization.\n@required {projects: [str] # Slugs of projects to enable Spike Protection for. Set to `$all` to enable Spike Protection for all the projects in the organization.}\n@returns(201) Success\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint DELETE /api/0/organizations/{organization_id_or_slug}/spike-protections/\n@desc Disables Spike Protection feature for some of the projects within the organization.\n@required {projects: [str] # Slugs of projects to disable Spike Protection for. Set to `$all` to disable Spike Protection for all the projects in the organization.}\n@returns(200) Success\n@errors {400: Bad Request, 403: Forbidden}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/\n@desc Retrieve an Issue\n@required {issue_id: str # The ID of the issue you'd like to query.}\n@optional {environment: [str] # The name of environments to filter by., expand: [str] # Additional data to include in the response., collapse: [str] # Fields to remove from the response to improve query performance.}\n@returns(200) {isUnhandled: bool, count: str, userCount: int, firstSeen: str(date-time)?, lastSeen: str(date-time)?, id: str, shareId: str?, shortId: str, title: str, culprit: str?, permalink: str, logger: str?, level: str, status: str, statusDetails: map{autoResolved: bool, ignoreCount: int, ignoreUntil: str(date-time), ignoreUserCount: int, ignoreUserWindow: int, ignoreWindow: int, actor: map{identities: [map], avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, authenticators: [any], canReset2fa: bool, id: str, name: str, username: str, email: str, avatarUrl: str, isActive: bool, isSuspended: bool, hasPasswordAuth: bool, isManaged: bool, dateJoined: str(date-time), lastLogin: str(date-time)?, has2fa: bool, lastActive: str(date-time)?, isSuperuser: bool, isStaff: bool, experiments: map, emails: [map]}, inNextRelease: bool, inRelease: str, inCommit: str, pendingEvents: int, info: any}, substatus: str?, isPublic: bool, platform: str?, priority: str?, priorityLockedAt: str(date-time)?, seerFixabilityScore: num(double)?, seerAutofixLastTriggered: str(date-time)?, seerExplorerAutofixLastTriggered: str(date-time)?, project: map{id: str, name: str, slug: str, platform: str?}, type: str, issueType: str, issueCategory: str, metadata: map, numComments: int, assignedTo: map?{type: str, id: str, name: str, email: str}, isBookmarked: bool, isSubscribed: bool, subscriptionDetails: map?{disabled: bool, reason: str}, hasSeen: bool, annotations: [map], firstRelease: map?, lastRelease: map?, tags: [map], stats: map, inbox: map?{reason: int, reason_details: map?{until: str?, count: int?, window: int?, user_count: int?, user_window: int?}, date_added: str(date-time)}, owners: [map]?, forecast: map, integrationIssues: [map], sentryAppIssues: [map], latestEventHasAttachments: bool, activity: [map], seenBy: [map], userReportCount: int, participants: [map]}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/\n@desc Update an Issue\n@required {issue_id: str # The ID of the issue you'd like to query., inbox: bool # If true, marks the issue as reviewed by the requestor., status: str(resolved/unresolved/ignored/resolvedInNextRelease/muted) # Limit mutations to only issues with the given status.  * `resolved` * `unresolved` * `ignored` * `resolvedInNextRelease` * `muted`, statusDetails: any # Additional details about the resolution. Status detail updates that include release data are only allowed for issues within a single project., substatus: str(archived_until_escalating/archived_until_condition_met/archived_forever/escalating/ongoing/regressed/new) # The new substatus of the issue.  * `archived_until_escalating` * `archived_until_condition_met` * `archived_forever` * `escalating` * `ongoing` * `regressed` * `new`, hasSeen: bool # If true, marks the issue as seen by the requestor., isBookmarked: bool # If true, bookmarks the issue for the requestor., isPublic: bool # If true, publishes the issue., isSubscribed: bool # If true, subscribes the requestor to the issue., merge: bool # If true, merges the issues together., discard: bool # If true, discards the issues instead of updating them., assignedTo: str # The user or team that should be assigned to the issues. Values take the form of ``, `user:`, ``, ``, or `team:`., priority: str(low/medium/high) # The priority that should be set for the issues  * `low` * `medium` * `high`}\n@returns(200) {isUnhandled: bool, count: str, userCount: int, firstSeen: str(date-time)?, lastSeen: str(date-time)?, id: str, shareId: str?, shortId: str, title: str, culprit: str?, permalink: str, logger: str?, level: str, status: str, statusDetails: map{autoResolved: bool, ignoreCount: int, ignoreUntil: str(date-time), ignoreUserCount: int, ignoreUserWindow: int, ignoreWindow: int, actor: map{identities: [map], avatar: map{avatarType: str, avatarUuid: str?, avatarUrl: str?}, authenticators: [any], canReset2fa: bool, id: str, name: str, username: str, email: str, avatarUrl: str, isActive: bool, isSuspended: bool, hasPasswordAuth: bool, isManaged: bool, dateJoined: str(date-time), lastLogin: str(date-time)?, has2fa: bool, lastActive: str(date-time)?, isSuperuser: bool, isStaff: bool, experiments: map, emails: [map]}, inNextRelease: bool, inRelease: str, inCommit: str, pendingEvents: int, info: any}, substatus: str?, isPublic: bool, platform: str?, priority: str?, priorityLockedAt: str(date-time)?, seerFixabilityScore: num(double)?, seerAutofixLastTriggered: str(date-time)?, seerExplorerAutofixLastTriggered: str(date-time)?, project: map{id: str, name: str, slug: str, platform: str?}, type: str, issueType: str, issueCategory: str, metadata: map, numComments: int, assignedTo: map?{type: str, id: str, name: str, email: str}, isBookmarked: bool, isSubscribed: bool, subscriptionDetails: map?{disabled: bool, reason: str}, hasSeen: bool, annotations: [map]}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint DELETE /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/\n@desc Remove an Issue\n@required {issue_id: str # The ID of the issue you'd like to query.}\n@returns(202) Accepted\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/autofix/\n@desc Retrieve Seer Issue Fix State\n@required {issue_id: str # The ID of the issue you'd like to query.}\n@returns(200) {autofix: map?}\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint POST /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/autofix/\n@desc Start Seer Issue Fix\n@required {issue_id: str # The ID of the issue you'd like to query.}\n@optional {step: str(root_cause/solution/code_changes/pr_iteration/open_pr/coding_agent_handoff)=root_cause # Which autofix step to run.  * `root_cause` * `solution` * `code_changes` * `pr_iteration` * `open_pr` * `coding_agent_handoff`, stopping_point: str(root_cause/solution/code_changes/open_pr) # Where the issue fix process should stop. If not provided, will run to root cause.  * `root_cause` * `solution` * `code_changes` * `open_pr`, run_id: int # **Deprecated** in favor of sentry_run_id; retained for backward compatibility. The existing run's numeric Seer id to continue. If neither run_id nor sentry_run_id is provided, starts a new run., sentry_run_id: str(uuid) # Existing run's UUID to continue. Preferred over run_id, and takes precedence when both are given., integration_id: int # Coding agent integration ID. Required for coding_agent_handoff step (unless provider is specified)., provider: str # Coding agent provider (e.g., 'github_copilot'). Alternative to integration_id for user-authenticated providers., user_context: str # Optional user context to append to the step prompt., repo_name: str # Optional repository name for which to create the pull request. Do not pass a repository name to create pull requests in all relevant repositories., insert_index: int # Block index to insert at. When provided, truncates blocks after this point for retry-from-step., referrer: str # Referrer identifying where the issue fix was triggered from.}\n@returns(202) {run_id: int, sentry_run_id: str?}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/events/\n@desc List an Issue's Events\n@required {issue_id: str # The ID of the issue you'd like to query.}\n@optional {start: str(date-time) # The start of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., end: str(date-time) # The end of the period of time for the query, expected in ISO-8601 format. For example, `2001-12-14T12:34:56.7890`., statsPeriod: str # The period of time for the query, will override the start & end parameters, a number followed by one of: - `d` for days - `h` for hours - `m` for minutes - `s` for seconds - `w` for weeks  For example, `24h`, to mean query data starting from 24 hours ago to now., environment: [str] # The name of environments to filter by., full: bool=false # Specify true to include the full event body, including the stacktrace, in the event payload., sample: bool=false # Return events in pseudo-random order. This is deterministic so an identical query will always return the same events in the same order., query: str # An optional search query for filtering events. See [search syntax](https://docs.sentry.io/concepts/search/) and queryable event properties at [Sentry Search Documentation](https://docs.sentry.io/concepts/search/searchable-properties/events/) for more information. An example query might be `query=transaction:foo AND release:abc`, per_page: int # Limit the number of rows to return in the result. Default and maximum allowed is 100., cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200)\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/events/{event_id}/\n@desc Retrieve an Issue Event\n@required {issue_id: str # The ID of the issue you'd like to query., event_id: str(latest/oldest/recommended) # The ID of the event to retrieve, or 'latest', 'oldest', or 'recommended'.}\n@optional {environment: [str] # The name of environments to filter by.}\n@returns(200) {id: str, groupID: str?, eventID: str, projectID: str, message: str?, title: str, location: str?, user: map?{id: str?, email: str?, username: str?, ip_address: str?, name: str?, geo: map?, data: map?}, tags: [map], platform: str, dateReceived: str(date-time)?, contexts: map?, size: int?, entries: [any], dist: str?, sdk: map, context: map?, packages: map, type: str, metadata: any, errors: [any], occurrence: map?{id: str, projectId: int, eventId: str, fingerprint: [str], issueTitle: str, subtitle: str, resourceId: str?, evidenceData: map, evidenceDisplay: [map], type: int, detectionTime: num(double), level: str?, culprit: str?, assignee: str?, priority: int?}, _meta: map, crashFile: str?, culprit: str?, dateCreated: str(date-time), fingerprints: [str], groupingConfig: map{id: str, enhancements: str}, startTimestamp: str(date-time), endTimestamp: str(date-time), measurements: any, breakdowns: any, release: map?{id: int, commitCount: int, data: map, dateCreated: str(date-time), dateReleased: str(date-time)?, deployCount: int, ref: str?, lastCommit: map?, lastDeploy: map?{dateStarted: str?, url: str?, id: str, environment: str, dateFinished: str, name: str}, status: str, url: str?, userAgent: str?, version: str?, versionInfo: map?{description: str, package: str?, version: map, buildHash: str?}}, userReport: map?{id: str, eventID: str, name: str?, email: str?, comments: str, dateCreated: str, user: map?{id: str, username: str?, email: str?, name: str?, ipAddress: str?, avatarUrl: str?}, event: map{id: str, eventID: str}}, sdkUpdates: [map], resolvedWith: [str], nextEventID: str?, previousEventID: str?}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/external-issues/\n@desc Retrieve custom integration issue links for the given Sentry issue\n@required {issue_id: str # The ID of the issue you'd like to query.}\n@returns(200)\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/hashes/\n@desc List an Issue's Hashes\n@required {issue_id: str # The ID of the issue you'd like to query.}\n@optional {full: bool=true # Specify true to include the full event body, including the stacktrace, in the event payload., cursor: str # A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.}\n@returns(200)\n@errors {401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/integrations/{integration_id}/\n@desc Retrieve the form fields needed to either link an existing external issue\n@required {issue_id: str # The ID of the issue you'd like to query., integration_id: str # The ID of the integration installed on the organization., action: str(create/link) # Whether to fetch the config for linking an existing external issue (`link`) or creating a new one (`create`).}\n@returns(200) {id: str, name: str, icon: str?, domainName: str?, accountType: str?, scopes: [str]?, status: str, provider: map{key: str, slug: str, name: str, canAdd: bool, canDisable: bool, features: [str], aspects: map}, linkIssueConfig: [map], createIssueConfig: [map]}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@endpoint POST /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/integrations/{integration_id}/\n@desc Create a new issue in the external provider (such as a Jira ticket or GitHub\n@required {issue_id: str # The ID of the issue you'd like to query., integration_id: str # The ID of the integration installed on the organization., title: str # The title of the external issue to create.}\n@optional {description: str # The description (body) of the external issue to create.}\n@returns(201) {id: int, key: str, url: str, integrationId: int, displayName: str}\n@errors {400: Bad Request, 401: Unauthorized, 404: Not Found}\n\n@endpoint PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/integrations/{integration_id}/\n@desc Link an issue that already exists in the external provider (such as a Jira\n@required {issue_id: str # The ID of the issue you'd like to query., integration_id: str # The ID of the integration installed on the organization., externalIssue: str # The identifier of the existing external issue to link, as understood by the provider (such as a Jira issue key).}\n@returns(201) {id: int, key: str, url: str, integrationId: int, displayName: str}\n@errors {400: Bad Request, 401: Unauthorized, 404: Not Found}\n\n@endpoint DELETE /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/integrations/{integration_id}/\n@desc Remove the link between a Sentry issue and an external issue. If no other\n@required {issue_id: str # The ID of the issue you'd like to query., integration_id: str # The ID of the integration installed on the organization., externalIssue: int # The ID of the `ExternalIssue` link to remove.}\n@returns(204) No Content\n@errors {400: Bad Request, 403: Forbidden, 404: Not Found}\n\n@endpoint GET /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/tags/{key}/\n@desc Retrieve Tag Details\n@required {issue_id: str # The ID of the issue you'd like to query., key: str # The tag key to look the values up for.}\n@optional {environment: [str] # The name of environments to filter by.}\n@returns(200) {uniqueValues: int?, totalValues: int?, topValues: [map]?, key: str, name: str}\n@errors {400: Bad Request, 401: Unauthorized, 403: Forbidden, 404: Not Found}\n\n@end\n"}