Skip to content

Instantly share code, notes, and snippets.

@ruanmartinelli
Created March 1, 2024 19:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ruanmartinelli/92fb8b1befc2c5d2b3ce07ffb0984808 to your computer and use it in GitHub Desktop.
Save ruanmartinelli/92fb8b1befc2c5d2b3ce07ffb0984808 to your computer and use it in GitHub Desktop.
This file has been truncated, but you can view the full file.
{
"openapi": "3.0.3",
"info": {
"title": "API Reference",
"version": "v0",
"description": "Sentry Public API",
"termsOfService": "http://sentry.io/terms/",
"contact": {
"email": "partners@sentry.io"
},
"license": {
"name": "Apache 2.0",
"url": "http://www.apache.org/licenses/LICENSE-2.0.html"
}
},
"paths": {
"/api/0/organizations/{organization_slug}/alert-rules/": {
"get": {
"operationId": "List an Organization's Metric Alert Rules",
"description": "Return a list of active metric alert rules bound to an organization.\n\nA metric alert rule is a configuration that defines the conditions for triggering an alert.\nIt specifies the metric type, function, time interval, and threshold\nvalues that determine when an alert should be triggered. Metric alert rules are used to monitor\nand notify you when certain metrics, like error count, latency, or failure rate, cross a\npredefined threshold. These rules help you proactively identify and address issues in your\nproject.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
}
],
"tags": [
"Alerts"
],
"security": [
{
"auth_token": [
"alert_rule:read",
"alerts:read",
"org:admin",
"org:read",
"org:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"description": "This represents a Sentry Metric Alert Rule.",
"properties": {
"environment": {
"type": "string",
"nullable": true
},
"projects": {
"type": "array",
"items": {
"type": "string"
},
"nullable": true
},
"queryType": {
"type": "integer",
"nullable": true
},
"resolveThreshold": {
"type": "number",
"format": "double",
"nullable": true
},
"dataset": {
"type": "string",
"nullable": true
},
"thresholdType": {
"type": "integer",
"nullable": true
},
"eventTypes": {
"type": "array",
"items": {
"type": "string"
},
"nullable": true
},
"owner": {
"type": "string",
"nullable": true
},
"originalAlertRuleId": {
"type": "string",
"nullable": true
},
"comparisonDelta": {
"type": "number",
"format": "double",
"nullable": true
},
"snooze": {
"type": "boolean",
"nullable": true
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"organizationId": {
"type": "string"
},
"query": {
"type": "string"
},
"aggregate": {
"type": "string"
},
"timeWindow": {
"type": "integer"
},
"triggers": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"dateModified": {
"type": "string",
"format": "date-time"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"createdBy": {
"type": "object",
"additionalProperties": {}
},
"monitorType": {
"type": "integer"
}
},
"required": [
"aggregate",
"createdBy",
"dateCreated",
"dateModified",
"id",
"monitorType",
"name",
"organizationId",
"query",
"timeWindow",
"triggers"
]
}
},
"examples": {
"ListMetricAlertRulesForAnOrganization": {
"value": [
{
"id": "7",
"name": "Counting Bad Request and Unauthorized Errors in Prod",
"organizationId": "237655244234",
"queryType": 0,
"dataset": "events",
"query": "tags[http.status_code]:[400, 401]",
"aggregate": "count()",
"thresholdType": 0,
"resolveThreshold": null,
"timeWindow": 1440,
"environment": "prod",
"triggers": [
{
"id": "394289",
"alertRuleId": "17723",
"label": "critical",
"thresholdType": 0,
"alertThreshold": 100,
"resolveThreshold": null,
"dateCreated": "2023-09-25T22:15:26.375126Z",
"actions": [
{
"id": "394280",
"alertRuleTriggerId": "92481",
"type": "slack",
"targetType": "specific",
"targetIdentifier": "30489048931789",
"inputChannelId": "#my-channel",
"integrationId": "8753467",
"sentryAppId": null,
"dateCreated": "2023-09-25T22:15:26.375126Z"
}
]
}
],
"projects": [
"super-cool-project"
],
"owner": "user:53256",
"originalAlertRuleId": null,
"comparisonDelta": null,
"dateModified": "2023-09-25T22:15:26.375126Z",
"dateCreated": "2023-09-25T22:15:26.375126Z",
"createdBy": {
"id": 983948,
"name": "John Doe",
"email": "john.doe@sentry.io"
},
"monitorType": 0
}
],
"summary": "List metric alert rules for an organization"
}
}
}
},
"description": ""
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"post": {
"operationId": "Create a Metric Alert Rule for an Organization",
"description": "Create a new metric alert rule for the given organization.\n\nA metric alert rule is a configuration that defines the conditions for triggering an alert.\nIt specifies the metric type, function, time interval, and threshold\nvalues that determine when an alert should be triggered. Metric alert rules are used to monitor\nand notify you when certain metrics, like error count, latency, or failure rate, cross a\npredefined threshold. These rules help you proactively identify and address issues in your\nproject.\n\n## Metric Alert Rule Types\nBelow are the types of metric alert rules you can create and the parameter values required\nto set them up. All other parameters can be customized based on how you want the alert\nrule to work. Scroll down to Body Parameters for more information. Visit the\n[Alert Types](/product/alerts/alert-types/#metric-alerts) docs for more details on each\nmetric alert rule type.\n\n### [Number of Errors](/product/alerts/alert-types/#number-of-errors)\n- `eventTypes`: Any of `error` or `default`.\n```json\n{\n \"queryType\": 0,\n \"dataset\": \"events\",\n \"aggregate\": \"count()\",\n \"eventTypes\": [\"error\", \"default\"]\n}\n```\n\n### [Users Experiencing Errors](/product/alerts/alert-types/#users-experiencing-errors)\n- `eventTypes`: Any of `error` or `default`.\n```json\n{\n \"queryType\": 0,\n \"dataset\": \"events\",\n \"aggregate\": \"count_unique(user)\"\n}\n```\n\n### [Crash Free Session Rate](/product/alerts/alert-types/#crash-free-session-rate)\n```json\n{\n \"queryType\": 2,\n \"dataset\": \"metrics\",\n \"aggregate\": \"percentage(sessions_crashed, sessions) AS _crash_rate_alert_aggregate\"\n}\n```\n\n### [Crash Free User Rate](/product/alerts/alert-types/#crash-free-user-rate)\n```json\n{\n \"queryType\": 2,\n \"dataset\": \"metrics\",\n \"aggregate\": \"percentage(users_crashed, users) AS _crash_rate_alert_aggregate\"\n}\n```\n\n### [Throughput](/product/alerts/alert-types/#throughput)\n```json\n{\n \"queryType\": 1,\n \"dataset\": \"transactions\",\n \"aggregate\": \"count()\"\n}\n```\n\n### [Transaction Duration](/product/alerts/alert-types/#transaction-duration)\n- `dataset`: If a custom percentile is used, `dataset` is `transactions`. Otherwise, `dataset` is `generic_metrics`.\n- `aggregate`: Valid values are `avg(transaction.duration)`, `p50(transaction.duration)`, `p75(transaction.duration)`, `p95(transaction.duration)`, `p99(transaction.duration)`, `p100(transaction.duration)`, and `percentile(transaction.duration,x)`, where `x` is your custom percentile.\n```json\n{\n \"queryType\": 1,\n \"dataset\": \"generic_metrics\",\n \"aggregate\": \"avg(transaction.duration)\"\n}\n```\n\n### [Apdex](/product/alerts/alert-types/#apdex)\n- `aggregate`: `apdex(x)` where `x` is the value of the Apdex score.\n```json\n{\n \"queryType\": 1,\n \"dataset\": \"transactions\",\n \"aggregate\": \"apdex(300)\"\n}\n```\n\n### [Failure Rate](/product/alerts/alert-types/#failure-rate)\n```json\n{\n \"queryType\": 1,\n \"dataset\": \"transactions\",\n \"aggregate\": \"failure_rate()\"\n}\n```\n\n### [Largest Contentful Paint](/product/alerts/alert-types/#largest-contentful-display)\n- `dataset`: If a custom percentile is used, `dataset` is `transactions`. Otherwise, `dataset` is `generic_metrics`.\n- `aggregate`: Valid values are `avg(measurements.lcp)`, `p50(measurements.lcp)`, `p75(measurements.lcp)`, `p95(measurements.lcp)`, `p99(measurements.lcp)`, `p100(measurements.lcp)`, and `percentile(measurements.lcp,x)`, where `x` is your custom percentile.\n```json\n{\n \"queryType\": 1,\n \"dataset\": \"generic_metrics\",\n \"aggregate\": \"p50(measurements.lcp)\"\n}\n```\n\n### [First Input Delay](/product/alerts/alert-types/#first-input-delay)\n- `dataset`: If a custom percentile is used, `dataset` is `transactions`. Otherwise, `dataset` is `generic_metrics`.\n- `aggregate`: Valid values are `avg(measurements.fid)`, `p50(measurements.fid)`, `p75(measurements.fid)`, `p95(measurements.fid)`, `p99(measurements.fid)`, `p100(measurements.fid)`, and `percentile(measurements.fid,x)`, where `x` is your custom percentile.\n```json\n{\n \"queryType\": 1,\n \"dataset\": \"generic_metrics\",\n \"aggregate\": \"p100(measurements.fid)\"\n}\n```\n\n### [Cumulative Layout Shift](/product/alerts/alert-types/#cumulative-layout-shift)\n- `dataset`: If a custom percentile is used, `dataset` is `transactions`. Otherwise, `dataset` is `generic_metrics`.\n- `aggregate`: Valid values are `avg(measurements.cls)`, `p50(measurements.cls)`, `p75(measurements.cls)`, `p95(measurements.cls)`, `p99(measurements.cls)`, `p100(measurements.cls)`, and `percentile(measurements.cls,x)`, where `x` is your custom percentile.\n```json\n{\n \"queryType\": 1,\n \"dataset\": \"transactions\",\n \"aggregate\": \"percentile(measurements.cls,0.2)\"\n}\n```\n\n### [Custom Metric](/product/alerts/alert-types/#custom-metric)\n- `dataset`: If a custom percentile is used, `dataset` is `transactions`. Otherwise, `dataset` is `generic_metrics`.\n- `aggregate`: Valid values are:\n - `avg(x)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.\n - `p50(x)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.\n - `p75(x)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.\n - `p95(x)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.\n - `p99(x)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.\n - `p100(x)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`.\n - `percentile(x,y)`, where `x` is `transaction.duration`, `measurements.cls`, `measurements.fcp`, `measurements.fid`, `measurements.fp`, `measurements.lcp`, `measurements.ttfb`, or `measurements.ttfb.requesttime`, and `y` is the custom percentile.\n - `failure_rate()`\n - `apdex(x)`, where `x` is the value of the Apdex score.\n - `count()`\n```json\n{\n \"queryType\": 1,\n \"dataset\": \"generic_metrics\",\n \"aggregate\": \"p75(measurements.ttfb)\"\n}\n```",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
}
],
"tags": [
"Alerts"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name for the rule, which has a maximimum length of 256 characters.",
"maxLength": 256
},
"aggregate": {
"type": "string",
"description": "A string representing the aggregate function used in this alert rule. Valid aggregate functions are `count`, `count_unique`, `percentage`, `avg`, `apdex`, `failure_rate`, `p50`, `p75`, `p95`, `p99`, `p100`, and `percentile`. See [Metric Alert Rule Types](#metric-alert-rule-types) for valid configurations."
},
"timeWindow": {
"enum": [
1,
5,
10,
15,
30,
60,
120,
240,
1440
],
"type": "integer",
"description": "The time period to aggregate over.\n\n* `1` - 1 minute\n* `5` - 5 minutes\n* `10` - 10 minutes\n* `15` - 15 minutes\n* `30` - 30 minutes\n* `60` - 1 hour\n* `120` - 2 hours\n* `240` - 4 hours\n* `1440` - 24 hours"
},
"projects": {
"type": "array",
"items": {
"type": "string"
},
"description": "Metric alerts are currently limited to one project. The array should contain a single slug, representing the project to filter by."
},
"query": {
"type": "string",
"description": "An event search query to subscribe to and monitor for alerts. For example, to filter transactions so that only those with status code 400 are included, you could use `\"query\": \"http.status_code:400\"`. Use an empty string for no filter."
},
"thresholdType": {
"enum": [
0,
1
],
"type": "integer",
"description": "The comparison operator for the critical and warning thresholds. The comparison operator for the resolved threshold is automatically set to the opposite operator. When a percentage change threshold is used, `0` is equivalent to \"Higher than\" and `1` is equivalent to \"Lower than\".\n\n* `0` - Above\n* `1` - Below"
},
"triggers": {
"type": "array",
"items": {},
"description": "\nA list of triggers, where each trigger is an object with the following fields:\n- `label`: One of `critical` or `warning`. A `critical` trigger is always required.\n- `alertThreshold`: The value that the subscription needs to reach to trigger the\nalert rule.\n- `actions`: A list of actions that take place when the threshold is met. Set as an empty list if no actions are to take place.\n```json\ntriggers: [\n {\n \"label\": \"critical\",\n \"alertThreshold\": 50,\n \"actions\": [\n {\n \"type\": \"slack\",\n \"targetType\": \"specific\",\n \"targetIdentifier\": \"#get-crit\",\n \"inputChannelId\": 2454362\n \"integrationId\": 653532,\n }\n ]\n },\n {\n \"label\": \"warning\",\n \"alertThreshold\": 25,\n \"actions\": []\n }\n]\n```\nMetric alert rule trigger actions follow the following structure:\n- `type`: The type of trigger action. Valid values are `email`, `slack`, `msteams`, `pagerduty`, `sentry_app`, `sentry_notification`, and `opsgenie`.\n- `targetType`: The type of target the notification will be sent to. Valid values are `specific` (`targetIdentifier` is a direct reference used by the service, like an email address or a Slack channel ID), `user` (`targetIdentifier` is a Sentry user ID), `team` (`targetIdentifier` is a Sentry team ID), and `sentry_app` (`targetIdentifier` is a SentryApp ID).\n- `targetIdentifier`: The ID of the target. This must be an integer for PagerDuty and Sentry apps, and a string for all others. Examples of appropriate values include a Slack channel name (`#my-channel`), a user ID, a team ID, a Sentry app ID, etc.\n- `inputChannelId`: The ID of the Slack channel. This is only used for the Slack action, and can be used as an alternative to providing the `targetIdentifier`.\n- `integrationId`: The integration ID. This is required for every action type excluding `email` and `sentry_app.`\n- `sentryAppId`: The ID of the Sentry app. This is required when `type` is `sentry_app`.\n"
},
"environment": {
"type": "string",
"nullable": true,
"description": "The name of the environment to filter by. Defaults to all environments."
},
"dataset": {
"type": "string",
"description": "The name of the dataset that this query will be executed on. Valid values are `events`, `transactions`, `metrics`, `sessions`, and `generic-metrics`. Defaults to `events`. See [Metric Alert Rule Types](#metric-alert-rule-types) for valid configurations."
},
"queryType": {
"enum": [
0,
1,
2
],
"type": "integer",
"description": "The type of query. If no value is provided, `queryType` is set to the default for the specified `dataset.` See [Metric Alert Rule Types](#metric-alert-rule-types) for valid configurations.\n\n* `0` - event.type:error\n* `1` - event.type:transaction\n* `2` - None"
},
"eventTypes": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of event types that this alert will be related to. Valid values are `default` (events captured using [Capture Message](/product/sentry-basics/integrate-backend/capturing-errors/#capture-message)), `error` and `transaction`."
},
"comparisonDelta": {
"type": "integer",
"description": "An optional int representing the time delta to use as the comparison period, in minutes. Required when using a percentage change threshold (\"x%\" higher or lower compared to `comparisonDelta` minutes ago). A percentage change threshold cannot be used for [Crash Free Session Rate](#crash-free-session-rate) or [Crash Free User Rate](#crash-free-user-rate)."
},
"resolveThreshold": {
"type": "number",
"format": "double",
"description": "Optional value that the metric needs to reach to resolve the alert. If no value is provided, this is set automatically based on the lowest severity trigger's `alertThreshold`. For example, if the alert is set to trigger at the warning level when the number of errors is above 50, then the alert would be set to resolve when there are less than 50 errors. If `thresholdType` is `0`, `resolveThreshold` must be greater than the critical threshold, otherwise, it must be less than the critical threshold."
},
"owner": {
"type": "string",
"nullable": true,
"description": "The ID of the team or user that owns the rule."
}
},
"required": [
"aggregate",
"name",
"projects",
"query",
"thresholdType",
"timeWindow",
"triggers"
]
}
}
},
"required": true
},
"security": [
{
"auth_token": [
"alert_rule:write",
"alerts:write",
"org:admin",
"org:write"
]
}
],
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "This represents a Sentry Metric Alert Rule.",
"properties": {
"environment": {
"type": "string",
"nullable": true
},
"projects": {
"type": "array",
"items": {
"type": "string"
},
"nullable": true
},
"queryType": {
"type": "integer",
"nullable": true
},
"resolveThreshold": {
"type": "number",
"format": "double",
"nullable": true
},
"dataset": {
"type": "string",
"nullable": true
},
"thresholdType": {
"type": "integer",
"nullable": true
},
"eventTypes": {
"type": "array",
"items": {
"type": "string"
},
"nullable": true
},
"owner": {
"type": "string",
"nullable": true
},
"originalAlertRuleId": {
"type": "string",
"nullable": true
},
"comparisonDelta": {
"type": "number",
"format": "double",
"nullable": true
},
"snooze": {
"type": "boolean",
"nullable": true
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"organizationId": {
"type": "string"
},
"query": {
"type": "string"
},
"aggregate": {
"type": "string"
},
"timeWindow": {
"type": "integer"
},
"triggers": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"dateModified": {
"type": "string",
"format": "date-time"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"createdBy": {
"type": "object",
"additionalProperties": {}
},
"monitorType": {
"type": "integer"
}
},
"required": [
"aggregate",
"createdBy",
"dateCreated",
"dateModified",
"id",
"monitorType",
"name",
"organizationId",
"query",
"timeWindow",
"triggers"
]
},
"examples": {
"CreateAMetricAlertRuleForAnOrganization": {
"value": {
"id": "177104",
"name": "Apdex % Check",
"organizationId": "4505676595200000",
"queryType": 2,
"dataset": "metrics",
"query": "",
"aggregate": "percentage(sessions_crashed, sessions) AS _crash_rate_alert_aggregate",
"thresholdType": 0,
"resolveThreshold": 80,
"timeWindow": 120,
"environment": null,
"triggers": [
{
"id": "293990",
"alertRuleId": "177104",
"label": "critical",
"thresholdType": 0,
"alertThreshold": 75,
"resolveThreshold": 80,
"dateCreated": "2023-09-25T22:01:28.673305Z",
"actions": [
{
"id": "281887",
"alertRuleTriggerId": "293990",
"type": "email",
"targetType": "team",
"targetIdentifier": "2378589792734981",
"inputChannelId": null,
"integrationId": null,
"sentryAppId": null,
"dateCreated": "2023-09-25T22:01:28.680793Z"
}
]
},
{
"id": "492849",
"alertRuleId": "482923",
"label": "warning",
"thresholdType": 1,
"alertThreshold": 50,
"resolveThreshold": 80,
"dateCreated": "2023-09-25T22:01:28.673305Z",
"actions": []
}
],
"projects": [
"our-project"
],
"owner": "team:4505676595200000",
"originalAlertRuleId": null,
"comparisonDelta": 10080,
"dateModified": "2023-09-25T22:01:28.637506Z",
"dateCreated": "2023-09-25T22:01:28.637514Z",
"createdBy": {
"id": 2837708,
"name": "Jane Doe",
"email": "jane.doe@sentry.io"
},
"monitorType": 0
},
"summary": "Create a metric alert rule for an organization"
}
}
}
},
"description": ""
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/organizations/{organization_slug}/alert-rules/{alert_rule_id}/": {
"get": {
"operationId": "Retrieve a Metric Alert Rule for an Organization",
"description": "Return details on an individual metric alert rule.\n\nA metric alert rule is a configuration that defines the conditions for triggering an alert.\nIt specifies the metric type, function, time interval, and threshold\nvalues that determine when an alert should be triggered. Metric alert rules are used to monitor\nand notify you when certain metrics, like error count, latency, or failure rate, cross a\npredefined threshold. These rules help you proactively identify and address issues in your\nproject.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "alert_rule_id",
"schema": {
"type": "integer"
},
"description": "The ID of the rule you'd like to query.",
"required": true
}
],
"tags": [
"Alerts"
],
"security": [
{
"auth_token": [
"alert_rule:read",
"alerts:read",
"org:admin",
"org:read",
"org:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "This represents a Sentry Metric Alert Rule.",
"properties": {
"environment": {
"type": "string",
"nullable": true
},
"projects": {
"type": "array",
"items": {
"type": "string"
},
"nullable": true
},
"queryType": {
"type": "integer",
"nullable": true
},
"resolveThreshold": {
"type": "number",
"format": "double",
"nullable": true
},
"dataset": {
"type": "string",
"nullable": true
},
"thresholdType": {
"type": "integer",
"nullable": true
},
"eventTypes": {
"type": "array",
"items": {
"type": "string"
},
"nullable": true
},
"owner": {
"type": "string",
"nullable": true
},
"originalAlertRuleId": {
"type": "string",
"nullable": true
},
"comparisonDelta": {
"type": "number",
"format": "double",
"nullable": true
},
"snooze": {
"type": "boolean",
"nullable": true
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"organizationId": {
"type": "string"
},
"query": {
"type": "string"
},
"aggregate": {
"type": "string"
},
"timeWindow": {
"type": "integer"
},
"triggers": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"dateModified": {
"type": "string",
"format": "date-time"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"createdBy": {
"type": "object",
"additionalProperties": {}
},
"monitorType": {
"type": "integer"
}
},
"required": [
"aggregate",
"createdBy",
"dateCreated",
"dateModified",
"id",
"monitorType",
"name",
"organizationId",
"query",
"timeWindow",
"triggers"
]
},
"examples": {
"GetDetailedViewAboutAMetricAlertRule": {
"value": {
"id": "177412243058",
"name": "My Metric Alert Rule",
"organizationId": "4505676595200000",
"queryType": 0,
"dataset": "events",
"query": "",
"aggregate": "count_unique(user)",
"thresholdType": 0,
"resolveThreshold": null,
"timeWindow": 60,
"environment": null,
"triggers": [
{
"id": "294385908",
"alertRuleId": "177412243058",
"label": "critical",
"thresholdType": 0,
"alertThreshold": 31,
"resolveThreshold": null,
"dateCreated": "2023-09-26T22:14:17.557579Z",
"actions": []
}
],
"projects": [
"my-coolest-project"
],
"owner": "team:29508397892374892",
"dateModified": "2023-09-26T22:14:17.522166Z",
"dateCreated": "2023-09-26T22:14:17.522196Z",
"createdBy": {
"id": 2834985497897,
"name": "Somebody That I Used to Know",
"email": "anon@sentry.io"
},
"eventTypes": [
"default",
"error"
],
"monitorType": 0
},
"summary": "Get detailed view about a metric alert rule"
}
}
}
},
"description": ""
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"put": {
"operationId": "Update a Metric Alert Rule",
"description": "Updates a metric alert rule. See **Metric Alert Rule Types** under\n[Create a Metric Alert Rule for an Organization](/api/alerts/create-a-metric-alert-rule-for-an-organization/#metric-alert-rule-types)\nto see valid request body configurations for different types of metric alert rule types.\n> Warning: Calling this endpoint fully overwrites the specified metric alert.\n\nA metric alert rule is a configuration that defines the conditions for triggering an alert.\nIt specifies the metric type, function, time interval, and threshold\nvalues that determine when an alert should be triggered. Metric alert rules are used to monitor\nand notify you when certain metrics, like error count, latency, or failure rate, cross a\npredefined threshold. These rules help you proactively identify and address issues in your\nproject.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "alert_rule_id",
"schema": {
"type": "integer"
},
"description": "The ID of the rule you'd like to query.",
"required": true
}
],
"tags": [
"Alerts"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name for the rule.",
"maxLength": 256
},
"aggregate": {
"type": "string",
"description": "A string representing the aggregate function used in this alert rule. Valid aggregate functions are `count`, `count_unique`, `percentage`, `avg`, `apdex`, `failure_rate`, `p50`, `p75`, `p95`, `p99`, `p100`, and `percentile`. See **Metric Alert Rule Types** under [Create a Metric Alert Rule](/api/alerts/create-a-metric-alert-rule-for-an-organization/#metric-alert-rule-types) for valid configurations."
},
"timeWindow": {
"enum": [
1,
5,
10,
15,
30,
60,
120,
240,
1440
],
"type": "integer",
"description": "The time period to aggregate over.\n\n* `1` - 1 minute\n* `5` - 5 minutes\n* `10` - 10 minutes\n* `15` - 15 minutes\n* `30` - 30 minutes\n* `60` - 1 hour\n* `120` - 2 hours\n* `240` - 4 hours\n* `1440` - 24 hours"
},
"projects": {
"type": "array",
"items": {
"type": "string"
},
"description": "The names of the projects to filter by."
},
"query": {
"type": "string",
"description": "An event search query to subscribe to and monitor for alerts. For example, to filter transactions so that only those with status code 400 are included, you could use `\"query\": \"http.status_code:400\"`. Use an empty string for no filter."
},
"thresholdType": {
"enum": [
0,
1
],
"type": "integer",
"description": "The comparison operator for the critical and warning thresholds. The comparison operator for the resolved threshold is automatically set to the opposite operator. When a percentage change threshold is used, `0` is equivalent to \"Higher than\" and `1` is equivalent to \"Lower than\".\n\n* `0` - Above\n* `1` - Below"
},
"triggers": {
"type": "array",
"items": {},
"description": "\nA list of triggers, where each trigger is an object with the following fields:\n- `label`: One of `critical` or `warning`. A `critical` trigger is always required.\n- `alertThreshold`: The value that the subscription needs to reach to trigger the\nalert rule.\n- `actions`: A list of actions that take place when the threshold is met. Set as an empty list if no actions are to take place.\n```json\ntriggers: [\n {\n \"label\": \"critical\",\n \"alertThreshold\": 100,\n \"actions\": [\n {\n \"type\": \"email\",\n \"targetType\": \"user\",\n \"targetIdentifier\": \"23489853\",\n \"inputChannelId\": None\n \"integrationId\": None,\n \"sentryAppId\": None\n }\n ]\n },\n {\n \"label\": \"warning\",\n \"alertThreshold\": 75,\n \"actions\": []\n }\n]\n```\nMetric alert rule trigger actions follow the following structure:\n- `type`: The type of trigger action. Valid values are `email`, `slack`, `msteams`, `pagerduty`, `sentry_app`, `sentry_notification`, and `opsgenie`.\n- `targetType`: The type of target the notification will be sent to. Valid values are `specific`, `user`, `team`, and `sentry_app`.\n- `targetIdentifier`: The ID of the target. This must be an integer for PagerDuty and Sentry apps, and a string for all others. Examples of appropriate values include a Slack channel name (`#my-channel`), a user ID, a team ID, a Sentry app ID, etc.\n- `inputChannelId`: The ID of the Slack channel. This is only used for the Slack action, and can be used as an alternative to providing the `targetIdentifier`.\n- `integrationId`: The integration ID. This is required for every action type except `email` and `sentry_app.`\n- `sentryAppId`: The ID of the Sentry app. This is required when `type` is `sentry_app`.\n"
},
"environment": {
"type": "string",
"nullable": true,
"description": "The name of the environment to filter by. Defaults to all environments."
},
"dataset": {
"type": "string",
"description": "The name of the dataset that this query will be executed on. Valid values are `events`, `transactions`, `metrics`, `sessions`, and `generic-metrics`. Defaults to `events`. See **Metric Alert Rule Types** under [Create a Metric Alert Rule](/api/alerts/create-a-metric-alert-rule-for-an-organization/#metric-alert-rule-types) for valid configurations."
},
"queryType": {
"enum": [
0,
1,
2
],
"type": "integer",
"description": "The type of query. If no value is provided, `queryType` is set to the default for the specified `dataset.` See **Metric Alert Rule Types** under [Create a Metric Alert Rule](/api/alerts/create-a-metric-alert-rule-for-an-organization/#metric-alert-rule-types) for valid configurations.\n\n* `0` - event.type:error\n* `1` - event.type:transaction\n* `2` - None"
},
"eventTypes": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of event types that this alert will be related to. Valid values are `default` (events captured using [Capture Message](/product/sentry-basics/integrate-backend/capturing-errors/#capture-message)), `error` and `transaction`."
},
"comparisonDelta": {
"type": "integer",
"description": "An optional int representing the time delta to use as the comparison period, in minutes. Required when using a percentage change threshold (\"x%\" higher or lower compared to `comparisonDelta` minutes ago). A percentage change threshold cannot be used for [Crash Free Session Rate](/api/alerts/create-a-metric-alert-rule-for-an-organization/#crash-free-session-rate) or [Crash Free User Rate](/api/alerts/create-a-metric-alert-rule-for-an-organization/#crash-free-user-rate)."
},
"resolveThreshold": {
"type": "number",
"format": "double",
"description": "Optional value that the metric needs to reach to resolve the alert. If no value is provided, this is set automatically based on the lowest severity trigger's `alertThreshold`. For example, if the alert is set to trigger at the warning level when the number of errors is above 50, then the alert would be set to resolve when there are less than 50 errors. If `thresholdType` is `0`, `resolveThreshold` must be greater than the critical threshold. Otherwise, it must be less than the critical threshold."
},
"owner": {
"type": "string",
"nullable": true,
"description": "The ID of the team or user that owns the rule."
}
},
"required": [
"aggregate",
"name",
"projects",
"query",
"thresholdType",
"timeWindow",
"triggers"
]
}
}
},
"required": true
},
"security": [
{
"auth_token": [
"alert_rule:write",
"alerts:write",
"org:admin",
"org:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "This represents a Sentry Metric Alert Rule.",
"properties": {
"environment": {
"type": "string",
"nullable": true
},
"projects": {
"type": "array",
"items": {
"type": "string"
},
"nullable": true
},
"queryType": {
"type": "integer",
"nullable": true
},
"resolveThreshold": {
"type": "number",
"format": "double",
"nullable": true
},
"dataset": {
"type": "string",
"nullable": true
},
"thresholdType": {
"type": "integer",
"nullable": true
},
"eventTypes": {
"type": "array",
"items": {
"type": "string"
},
"nullable": true
},
"owner": {
"type": "string",
"nullable": true
},
"originalAlertRuleId": {
"type": "string",
"nullable": true
},
"comparisonDelta": {
"type": "number",
"format": "double",
"nullable": true
},
"snooze": {
"type": "boolean",
"nullable": true
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"organizationId": {
"type": "string"
},
"query": {
"type": "string"
},
"aggregate": {
"type": "string"
},
"timeWindow": {
"type": "integer"
},
"triggers": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"dateModified": {
"type": "string",
"format": "date-time"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"createdBy": {
"type": "object",
"additionalProperties": {}
},
"monitorType": {
"type": "integer"
}
},
"required": [
"aggregate",
"createdBy",
"dateCreated",
"dateModified",
"id",
"monitorType",
"name",
"organizationId",
"query",
"timeWindow",
"triggers"
]
},
"examples": {
"UpdateAMetricAlertRule": {
"value": {
"id": "345989573",
"name": "P30 Transaction Duration",
"organizationId": "02403489017",
"queryType": 1,
"dataset": "transactions",
"query": "",
"aggregate": "percentile(transaction.duration,0.3)",
"thresholdType": 1,
"resolveThreshold": null,
"timeWindow": 60,
"environment": null,
"triggers": [
{
"id": "0543809890",
"alertRuleId": "345989573",
"label": "critical",
"thresholdType": 1,
"alertThreshold": 70,
"resolveThreshold": null,
"dateCreated": "2023-09-25T23:35:31.832084Z",
"actions": []
}
],
"projects": [
"backend"
],
"owner": "team:9390258908",
"originalAlertRuleId": null,
"comparisonDelta": 10080,
"dateModified": "2023-09-25T23:35:31.787866Z",
"dateCreated": "2023-09-25T23:35:31.787875Z",
"createdBy": {
"id": 902843590658,
"name": "Spongebob Squarepants",
"email": "spongebob.s@example.com"
},
"monitorType": 0
},
"summary": "Update a metric alert rule"
}
}
}
},
"description": ""
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"delete": {
"operationId": "Delete a Metric Alert Rule",
"description": "Delete a specific metric alert rule.\n\nA metric alert rule is a configuration that defines the conditions for triggering an alert.\nIt specifies the metric type, function, time interval, and threshold\nvalues that determine when an alert should be triggered. Metric alert rules are used to monitor\nand notify you when certain metrics, like error count, latency, or failure rate, cross a\npredefined threshold. These rules help you proactively identify and address issues in your\nproject.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "alert_rule_id",
"schema": {
"type": "integer"
},
"description": "The ID of the rule you'd like to query.",
"required": true
}
],
"tags": [
"Alerts"
],
"security": [
{
"auth_token": [
"alert_rule:write",
"alerts:write",
"org:admin",
"org:write"
]
}
],
"responses": {
"202": {
"description": "Accepted"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/organizations/{organization_slug}/events/": {
"get": {
"operationId": "Query Discover Events in Table Format",
"description": "Retrieves discover (also known as events) data for a given organization.\n\n**Eventsv2 Deprecation Note**: Users who may be using the `eventsv2` endpoint should update their requests to the `events` endpoint outline in this document.\nThe `eventsv2` endpoint is not a public endpoint and has no guaranteed availability. If you are not making any API calls to `eventsv2`, you can safely ignore this.\nChanges between `eventsv2` and `events` include:\n- Field keys in the response now match the keys in the requested `field` param exactly.\n- The `meta` object in the response now shows types in the nested `field` object.\n\nAside from the url change, there are no changes to the request payload itself.\n\n**Note**: This endpoint is intended to get a table of results, and is not for doing a full export of data sent to\nSentry.\n\nThe `field` query parameter determines what fields will be selected in the `data` and `meta` keys of the endpoint response.\n- The `data` key contains a list of results row by row that match the `query` made\n- The `meta` key contains information about the response, including the unit or type of the fields requested",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "query",
"name": "field",
"schema": {
"type": "array",
"items": {
"type": "string"
}
},
"description": "The fields, functions, or equations to request for the query. At most 20 fields can be selected per request. Each field can be one of the following types:\n- A built-in key field. See possible fields in the [properties table](/product/sentry-basics/search/searchable-properties/#properties-table), under any field that is an event property.\n - example: `field=transaction`\n- A tag. Tags should use the `tag[]` formatting to avoid ambiguity with any fields\n - example: `field=tag[isEnterprise]`\n- A function which will be in the format of `function_name(parameters,...)`. See possible functions in the [query builder documentation](/product/discover-queries/query-builder/#stacking-functions).\n - when a function is included, Discover will group by any tags or fields\n - example: `field=count_if(transaction.duration,greater,300)`\n- An equation when prefixed with `equation|`. Read more about [equations here](https://docs.sentry.io/product/discover-queries/query-builder/query-equations/).\n - example: `field=equation|count_if(transaction.duration,greater,300) / count() * 100`\n",
"required": true
},
{
"in": "query",
"name": "end",
"schema": {
"type": "string",
"format": "date-time"
},
"description": "The end of the period of time for the query, expected in ISO-8601 format. For example `2001-12-14T12:34:56.7890`."
},
{
"in": "query",
"name": "environment",
"schema": {
"type": "array",
"items": {
"type": "string"
}
},
"description": "The name of environments to filter by."
},
{
"in": "query",
"name": "project",
"schema": {
"type": "array",
"items": {
"type": "integer"
}
},
"description": "The IDs of projects to filter by. `-1` means all available projects.\nFor example the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=-1`\n"
},
{
"in": "query",
"name": "start",
"schema": {
"type": "string",
"format": "date-time"
},
"description": "The start of the period of time for the query, expected in ISO-8601 format. For example `2001-12-14T12:34:56.7890`."
},
{
"in": "query",
"name": "statsPeriod",
"schema": {
"type": "string"
},
"description": "The period of time for the query, will override the start & end parameters, a number followed by one of:\n- `d` for days\n- `h` for hours\n- `m` for minutes\n- `s` for seconds\n- `w` for weeks\n\nFor example `24h`, to mean query data starting from 24 hours ago to now."
},
{
"in": "query",
"name": "per_page",
"schema": {
"type": "integer"
},
"description": "Limit the number of rows to return in the result. Default and maximum allowed is 100."
},
{
"in": "query",
"name": "query",
"schema": {
"type": "string"
},
"description": "The search filter for your query, read more about query syntax [here](https://docs.sentry.io/product/sentry-basics/search/).\n\nexample: `query=(transaction:foo AND release:abc) OR (transaction:[bar,baz] AND release:def)`\n"
},
{
"in": "query",
"name": "sort",
"schema": {
"type": "string"
},
"description": "What to order the results of the query by. Must be something in the `field` list, excluding equations."
}
],
"tags": [
"Discover"
],
"security": [
{
"auth_token": [
"org:admin",
"org:read",
"org:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"meta": {
"type": "object",
"properties": {
"fields": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"datasetReason": {
"type": "string"
},
"isMetricsData": {
"type": "boolean"
},
"isMetricsExtractedData": {
"type": "boolean"
}
},
"required": [
"fields"
]
}
},
"required": [
"data",
"meta"
]
},
"examples": {
"QueryEvents": {
"value": {
"data": [
{
"count_if(transaction.duration,greater,300)": 5,
"count()": 10,
"equation|count_if(transaction.duration,greater,300) / count() * 100": 50,
"transaction": "foo"
},
{
"count_if(transaction.duration,greater,300)": 3,
"count()": 20,
"equation|count_if(transaction.duration,greater,300) / count() * 100": 15,
"transaction": "bar"
},
{
"count_if(transaction.duration,greater,300)": 8,
"count()": 40,
"equation|count_if(transaction.duration,greater,300) / count() * 100": 20,
"transaction": "baz"
}
],
"meta": {
"fields": {
"count_if(transaction.duration,greater,300)": "integer",
"count()": "integer",
"equation|count_if(transaction.duration,greater,300) / count() * 100": "number",
"transaction": "string"
}
}
},
"summary": "Query Events"
}
}
}
},
"description": ""
},
"400": {
"description": "Invalid Query"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/organizations/{organization_slug}/integrations/": {
"get": {
"operationId": "List an Organization's Available Integrations",
"description": "Lists all the available Integrations for an Organization.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "query",
"name": "providerKey",
"schema": {
"type": "string"
},
"description": "Specific integration provider to filter by such as `slack`. See our [Integrations Documentation](/product/integrations/) for an updated list of providers."
},
{
"in": "query",
"name": "features",
"schema": {
"type": "array",
"items": {
"type": "string"
}
},
"description": "Integration features to filter by. See our [Integrations Documentation](/product/integrations/) for an updated list of features. Current available ones are:\n- alert-rule\n- chat-unfurl\n- codeowners\n- commits\n- data-forwarding\n- deployment\n- enterprise-alert-rule\n- enterprise-incident-management\n- incident-management\n- issue-basic\n- issue-sync\n- mobile\n- serverless\n- session-replay\n- stacktrace-link\n- ticket-rules\n "
},
{
"in": "query",
"name": "includeConfig",
"schema": {
"type": "boolean"
},
"description": "Specify `True` to fetch third-party integration configurations. Note that this can add several seconds to the response time."
}
],
"tags": [
"Integrations"
],
"security": [
{
"auth_token": [
"org:admin",
"org:integrations",
"org:read",
"org:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"icon": {
"type": "string",
"nullable": true
},
"domainName": {
"type": "string",
"nullable": true
},
"accountType": {
"type": "string",
"nullable": true
},
"scopes": {
"type": "array",
"items": {
"type": "string"
},
"nullable": true
},
"status": {
"type": "string"
},
"provider": {},
"configOrganization": {},
"configData": {},
"externalId": {
"type": "string"
},
"organizationId": {
"type": "integer"
},
"organizationIntegrationStatus": {
"type": "string"
},
"gracePeriodEnd": {
"type": "string",
"nullable": true
}
},
"required": [
"accountType",
"configData",
"configOrganization",
"domainName",
"externalId",
"gracePeriodEnd",
"icon",
"id",
"name",
"organizationId",
"organizationIntegrationStatus",
"provider",
"scopes",
"status"
]
}
},
"examples": {
"ListAllAvailableIntegrationsForAlphabetSoupFactory": {
"value": [
{
"id": "24817",
"name": "Alphabet Soup Factory",
"icon": "https://avatars.slack-edge.com/alphabet-soup",
"domainName": "alphabet-soup.slack.com",
"accountType": null,
"scopes": [
"channels:read",
"chat:write",
"chat:write.customize",
"chat:write.public",
"commands",
"groups:read",
"im:history",
"im:read",
"links:read",
"links:write",
"team:read",
"users:read"
],
"status": "active",
"provider": {
"key": "slack",
"slug": "slack",
"name": "Slack",
"canAdd": true,
"canDisable": false,
"features": [
"alert-rule",
"chat-unfurl"
],
"aspects": {
"alerts": [
{
"type": "info",
"text": "The Slack integration adds a new Alert Rule action to all projects. To enable automatic notifications sent to Slack you must create a rule using the slack workspace action in your project settings."
}
]
}
},
"configOrganization": [],
"configData": {
"installationType": "born_as_bot"
},
"externalId": "7252394",
"organizationId": 6234528,
"organizationIntegrationStatus": "active",
"gracePeriodEnd": null
}
],
"summary": "List All Available Integrations for Alphabet Soup Factory"
}
}
}
},
"description": ""
}
}
}
},
"/api/0/organizations/{organization_slug}/members/{member_id}/": {
"get": {
"operationId": "Retrieve an Organization Member",
"description": "Retrieve an organization member's details.\n\nWill return a pending invite as long as it's already approved.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "member_id",
"schema": {
"type": "string"
},
"description": "The ID of the organization member.",
"required": true
}
],
"tags": [
"Organizations"
],
"security": [
{
"auth_token": [
"member:admin",
"member:read",
"member:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"externalUsers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"externalId": {
"type": "string"
},
"userId": {
"type": "string"
},
"teamId": {
"type": "string"
},
"id": {
"type": "string"
},
"provider": {
"type": "string"
},
"externalName": {
"type": "string"
},
"integrationId": {
"type": "string"
}
},
"required": [
"externalName",
"id",
"integrationId",
"provider"
]
}
},
"role": {
"type": "string"
},
"roleName": {
"type": "string"
},
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
},
"user": {
"type": "object",
"properties": {
"identities": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"organization": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"name",
"slug"
]
},
"provider": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
]
},
"dateVerified": {
"type": "string",
"format": "date-time"
},
"dateSynced": {
"type": "string",
"format": "date-time"
}
},
"required": [
"dateSynced",
"dateVerified",
"id",
"name",
"organization",
"provider"
]
}
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
},
"avatarUrl": {
"type": "string",
"nullable": true
}
}
},
"authenticators": {
"type": "array",
"items": {}
},
"canReset2fa": {
"type": "boolean"
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"username": {
"type": "string"
},
"email": {
"type": "string"
},
"avatarUrl": {
"type": "string"
},
"isActive": {
"type": "boolean"
},
"hasPasswordAuth": {
"type": "boolean"
},
"isManaged": {
"type": "boolean"
},
"dateJoined": {
"type": "string",
"format": "date-time"
},
"lastLogin": {
"type": "string",
"format": "date-time"
},
"has2fa": {
"type": "boolean"
},
"lastActive": {
"type": "string",
"format": "date-time"
},
"isSuperuser": {
"type": "boolean"
},
"isStaff": {
"type": "boolean"
},
"experiments": {
"type": "object",
"additionalProperties": {}
},
"emails": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"is_verified": {
"type": "boolean"
}
},
"required": [
"email",
"id",
"is_verified"
]
}
}
},
"required": [
"avatarUrl",
"dateJoined",
"email",
"emails",
"experiments",
"has2fa",
"hasPasswordAuth",
"id",
"isActive",
"isManaged",
"isStaff",
"isSuperuser",
"lastActive",
"lastLogin",
"name",
"username"
]
},
"orgRole": {
"type": "string"
},
"pending": {
"type": "boolean"
},
"expired": {
"type": "boolean"
},
"flags": {
"type": "object",
"properties": {
"idp:provisioned": {
"type": "boolean"
},
"idp:role-restricted": {
"type": "boolean"
},
"sso:linked": {
"type": "boolean"
},
"sso:invalid": {
"type": "boolean"
},
"member-limit:restricted": {
"type": "boolean"
},
"partnership:restricted": {
"type": "boolean"
}
},
"required": [
"idp:provisioned",
"idp:role-restricted",
"member-limit:restricted",
"partnership:restricted",
"sso:invalid",
"sso:linked"
]
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"inviteStatus": {
"type": "string"
},
"inviterName": {
"type": "string",
"nullable": true
},
"teams": {
"type": "array",
"items": {
"type": "string"
}
},
"teamRoles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"teamSlug": {
"type": "string"
},
"role": {
"type": "string"
}
},
"required": [
"role",
"teamSlug"
]
}
},
"roles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"desc": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
}
},
"allowed": {
"type": "boolean"
},
"isAllowed": {
"type": "boolean"
},
"isRetired": {
"type": "boolean"
},
"is_global": {
"type": "boolean"
},
"isGlobal": {
"type": "boolean"
},
"minimumTeamRole": {
"type": "string"
}
},
"required": [
"allowed",
"desc",
"id",
"isAllowed",
"isGlobal",
"isRetired",
"is_global",
"minimumTeamRole",
"name",
"scopes"
]
}
},
"invite_link": {
"type": "string",
"nullable": true
},
"isOnlyOwner": {
"type": "boolean"
},
"orgRoleList": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"desc": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
}
},
"allowed": {
"type": "boolean"
},
"isAllowed": {
"type": "boolean"
},
"isRetired": {
"type": "boolean"
},
"is_global": {
"type": "boolean"
},
"isGlobal": {
"type": "boolean"
},
"minimumTeamRole": {
"type": "string"
}
},
"required": [
"allowed",
"desc",
"id",
"isAllowed",
"isGlobal",
"isRetired",
"is_global",
"minimumTeamRole",
"name",
"scopes"
]
}
},
"teamRoleList": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"desc": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
}
},
"allowed": {
"type": "boolean"
},
"isAllowed": {
"type": "boolean"
},
"isRetired": {
"type": "boolean"
},
"isMinimumRoleFor": {
"type": "string",
"nullable": true
}
},
"required": [
"allowed",
"desc",
"id",
"isAllowed",
"isMinimumRoleFor",
"isRetired",
"name",
"scopes"
]
}
}
},
"required": [
"dateCreated",
"email",
"expired",
"flags",
"id",
"inviteStatus",
"invite_link",
"inviterName",
"isOnlyOwner",
"name",
"orgRole",
"orgRoleList",
"pending",
"teamRoleList",
"teamRoles",
"teams",
"user"
]
}
}
},
"description": ""
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"put": {
"operationId": "Update an Organization Member's Roles",
"description": "Update a member's organization and team-level roles.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "member_id",
"schema": {
"type": "string"
},
"description": "The ID of the member to update.",
"required": true
}
],
"tags": [
"Organizations"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"orgRole": {
"enum": [
"billing",
"member",
"manager",
"owner"
],
"type": "string",
"description": "The organization role of the member. The options are:\n\n* `billing` - Can manage payment and compliance details.\n* `member` - Can view and act on events, as well as view most other data within the organization.\n* `manager` - Has full management access to all teams and projects. Can also manage\n the organization's membership.\n* `owner` - Has unrestricted access to the organization, its data, and its\n settings. Can add, modify, and delete projects and members, as well as\n make billing and plan changes."
},
"teamRoles": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
},
"nullable": true,
"default": [],
"description": "\nConfigures the team role of the member. The two roles are:\n- `contributor` - Can view and act on issues. Depending on organization settings, they can also add team members.\n- `admin` - Has full management access to their team's membership and projects.\n```json\n{\n \"teamRoles\": [\n {\n \"teamSlug\": \"ancient-gabelers\",\n \"role\": \"admin\"\n },\n {\n \"teamSlug\": \"powerful-abolitionist\",\n \"role\": \"contributor\"\n }\n ]\n}\n```\n"
}
}
}
}
}
},
"security": [
{
"auth_token": [
"member:admin",
"member:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"externalUsers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"externalId": {
"type": "string"
},
"userId": {
"type": "string"
},
"teamId": {
"type": "string"
},
"id": {
"type": "string"
},
"provider": {
"type": "string"
},
"externalName": {
"type": "string"
},
"integrationId": {
"type": "string"
}
},
"required": [
"externalName",
"id",
"integrationId",
"provider"
]
}
},
"role": {
"type": "string"
},
"roleName": {
"type": "string"
},
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
},
"user": {
"type": "object",
"properties": {
"identities": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"organization": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"name",
"slug"
]
},
"provider": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
]
},
"dateVerified": {
"type": "string",
"format": "date-time"
},
"dateSynced": {
"type": "string",
"format": "date-time"
}
},
"required": [
"dateSynced",
"dateVerified",
"id",
"name",
"organization",
"provider"
]
}
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
},
"avatarUrl": {
"type": "string",
"nullable": true
}
}
},
"authenticators": {
"type": "array",
"items": {}
},
"canReset2fa": {
"type": "boolean"
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"username": {
"type": "string"
},
"email": {
"type": "string"
},
"avatarUrl": {
"type": "string"
},
"isActive": {
"type": "boolean"
},
"hasPasswordAuth": {
"type": "boolean"
},
"isManaged": {
"type": "boolean"
},
"dateJoined": {
"type": "string",
"format": "date-time"
},
"lastLogin": {
"type": "string",
"format": "date-time"
},
"has2fa": {
"type": "boolean"
},
"lastActive": {
"type": "string",
"format": "date-time"
},
"isSuperuser": {
"type": "boolean"
},
"isStaff": {
"type": "boolean"
},
"experiments": {
"type": "object",
"additionalProperties": {}
},
"emails": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"is_verified": {
"type": "boolean"
}
},
"required": [
"email",
"id",
"is_verified"
]
}
}
},
"required": [
"avatarUrl",
"dateJoined",
"email",
"emails",
"experiments",
"has2fa",
"hasPasswordAuth",
"id",
"isActive",
"isManaged",
"isStaff",
"isSuperuser",
"lastActive",
"lastLogin",
"name",
"username"
]
},
"orgRole": {
"type": "string"
},
"pending": {
"type": "boolean"
},
"expired": {
"type": "boolean"
},
"flags": {
"type": "object",
"properties": {
"idp:provisioned": {
"type": "boolean"
},
"idp:role-restricted": {
"type": "boolean"
},
"sso:linked": {
"type": "boolean"
},
"sso:invalid": {
"type": "boolean"
},
"member-limit:restricted": {
"type": "boolean"
},
"partnership:restricted": {
"type": "boolean"
}
},
"required": [
"idp:provisioned",
"idp:role-restricted",
"member-limit:restricted",
"partnership:restricted",
"sso:invalid",
"sso:linked"
]
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"inviteStatus": {
"type": "string"
},
"inviterName": {
"type": "string",
"nullable": true
},
"teams": {
"type": "array",
"items": {
"type": "string"
}
},
"teamRoles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"teamSlug": {
"type": "string"
},
"role": {
"type": "string"
}
},
"required": [
"role",
"teamSlug"
]
}
},
"roles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"desc": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
}
},
"allowed": {
"type": "boolean"
},
"isAllowed": {
"type": "boolean"
},
"isRetired": {
"type": "boolean"
},
"is_global": {
"type": "boolean"
},
"isGlobal": {
"type": "boolean"
},
"minimumTeamRole": {
"type": "string"
}
},
"required": [
"allowed",
"desc",
"id",
"isAllowed",
"isGlobal",
"isRetired",
"is_global",
"minimumTeamRole",
"name",
"scopes"
]
}
},
"invite_link": {
"type": "string",
"nullable": true
},
"isOnlyOwner": {
"type": "boolean"
},
"orgRoleList": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"desc": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
}
},
"allowed": {
"type": "boolean"
},
"isAllowed": {
"type": "boolean"
},
"isRetired": {
"type": "boolean"
},
"is_global": {
"type": "boolean"
},
"isGlobal": {
"type": "boolean"
},
"minimumTeamRole": {
"type": "string"
}
},
"required": [
"allowed",
"desc",
"id",
"isAllowed",
"isGlobal",
"isRetired",
"is_global",
"minimumTeamRole",
"name",
"scopes"
]
}
},
"teamRoleList": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"desc": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
}
},
"allowed": {
"type": "boolean"
},
"isAllowed": {
"type": "boolean"
},
"isRetired": {
"type": "boolean"
},
"isMinimumRoleFor": {
"type": "string",
"nullable": true
}
},
"required": [
"allowed",
"desc",
"id",
"isAllowed",
"isMinimumRoleFor",
"isRetired",
"name",
"scopes"
]
}
}
},
"required": [
"dateCreated",
"email",
"expired",
"flags",
"id",
"inviteStatus",
"invite_link",
"inviterName",
"isOnlyOwner",
"name",
"orgRole",
"orgRoleList",
"pending",
"teamRoleList",
"teamRoles",
"teams",
"user"
]
},
"examples": {
"UpdateOrganizationMember": {
"value": {
"id": "57377908164",
"email": "sirpenguin@antarcticarocks.com",
"name": "Sir Penguin",
"user": {
"id": "280094367316",
"name": "Sir Penguin",
"username": "sirpenguin@antarcticarocks.com",
"email": "sirpenguin@antarcticarocks.com",
"avatarUrl": "https://secure.gravatar.com/avatar/16aeb26c5fdba335c7078e9e9ddb5149?s=32&d=mm",
"isActive": true,
"hasPasswordAuth": true,
"isManaged": false,
"dateJoined": "2021-07-06T21:13:58.375239Z",
"lastLogin": "2021-08-02T18:25:00.051182Z",
"has2fa": false,
"lastActive": "2021-08-02T21:32:18.836829Z",
"isSuperuser": false,
"isStaff": false,
"experiments": {},
"emails": [
{
"id": "2153450836",
"email": "sirpenguin@antarcticarocks.com",
"is_verified": true
}
],
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
},
"authenticators": [],
"canReset2fa": true
},
"role": "member",
"orgRole": "member",
"roleName": "Member",
"pending": false,
"expired": false,
"flags": {
"idp:provisioned": false,
"idp:role-restricted": false,
"sso:linked": false,
"sso:invalid": false,
"member-limit:restricted": false,
"partnership:restricted": false
},
"dateCreated": "2021-07-06T21:13:01.120263Z",
"inviteStatus": "approved",
"inviterName": "maininviter@antarcticarocks.com",
"teams": [
"cool-team",
"ancient-gabelers"
],
"teamRoles": [
{
"teamSlug": "ancient-gabelers",
"role": "admin"
},
{
"teamSlug": "powerful-abolitionist",
"role": "contributor"
}
],
"invite_link": null,
"isOnlyOwner": false,
"orgRoleList": [
{
"id": "billing",
"name": "Billing",
"desc": "Can manage subscription and billing details.",
"scopes": [
"org:billing"
],
"allowed": true,
"isAllowed": true,
"isRetired": false,
"is_global": false,
"isGlobal": false,
"minimumTeamRole": "contributor"
},
{
"id": "member",
"name": "Member",
"desc": "Members can view and act on events, as well as view most other data within the organization.",
"scopes": [
"team:read",
"project:releases",
"org:read",
"event:read",
"alerts:write",
"member:read",
"alerts:read",
"event:admin",
"project:read",
"event:write"
],
"allowed": true,
"isAllowed": true,
"isRetired": false,
"is_global": false,
"isGlobal": false,
"minimumTeamRole": "contributor"
},
{
"id": "admin",
"name": "Admin",
"desc": "Admin privileges on any teams of which they're a member. They can create new teams and projects, as well as remove teams and projects on which they already hold membership (or all teams, if open membership is enabled). Additionally, they can manage memberships of teams that they are members of. They cannot invite members to the organization.",
"scopes": [
"team:admin",
"org:integrations",
"project:admin",
"team:read",
"project:releases",
"org:read",
"team:write",
"event:read",
"alerts:write",
"member:read",
"alerts:read",
"event:admin",
"project:read",
"event:write",
"project:write"
],
"allowed": true,
"isAllowed": true,
"isRetired": true,
"is_global": false,
"isGlobal": false,
"minimumTeamRole": "admin"
},
{
"id": "manager",
"name": "Manager",
"desc": "Gains admin access on all teams as well as the ability to add and remove members.",
"scopes": [
"team:admin",
"org:integrations",
"project:releases",
"team:write",
"member:read",
"org:write",
"project:write",
"project:admin",
"team:read",
"org:read",
"event:read",
"member:write",
"alerts:write",
"alerts:read",
"event:admin",
"project:read",
"event:write",
"member:admin"
],
"allowed": true,
"isAllowed": true,
"isRetired": false,
"is_global": true,
"isGlobal": true,
"minimumTeamRole": "admin"
},
{
"id": "owner",
"name": "Owner",
"desc": "Unrestricted access to the organization, its data, and its settings. Can add, modify, and delete projects and members, as well as make billing and plan changes.",
"scopes": [
"team:admin",
"org:integrations",
"project:releases",
"org:admin",
"team:write",
"member:read",
"org:write",
"project:write",
"project:admin",
"team:read",
"org:read",
"event:read",
"member:write",
"alerts:write",
"org:billing",
"alerts:read",
"event:admin",
"project:read",
"event:write",
"member:admin"
],
"allowed": true,
"isAllowed": true,
"isRetired": false,
"is_global": true,
"isGlobal": true,
"minimumTeamRole": "admin"
}
],
"teamRoleList": [
{
"id": "contributor",
"name": "Contributor",
"desc": "Contributors can view and act on events, as well as view most other data within the team's projects.",
"scopes": [
"team:read",
"project:releases",
"org:read",
"event:read",
"member:read",
"alerts:read",
"project:read",
"event:write"
],
"allowed": false,
"isAllowed": false,
"isRetired": false,
"isMinimumRoleFor": null
},
{
"id": "admin",
"name": "Team Admin",
"desc": "Admin privileges on the team. They can create and remove projects, and can manage the team's memberships. They cannot invite members to the organization.",
"scopes": [
"team:admin",
"org:integrations",
"project:admin",
"team:read",
"project:releases",
"org:read",
"team:write",
"event:read",
"alerts:write",
"member:read",
"alerts:read",
"event:admin",
"project:read",
"event:write",
"project:write"
],
"allowed": false,
"isAllowed": false,
"isRetired": false,
"isMinimumRoleFor": "admin"
}
]
},
"summary": "Update organization member"
}
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
}
},
"delete": {
"operationId": "Delete an Organization Member",
"description": "Remove an organization member.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "member_id",
"schema": {
"type": "string"
},
"description": "The ID of the member to delete.",
"required": true
}
],
"tags": [
"Organizations"
],
"security": [
{
"auth_token": [
"member:admin",
"member:read",
"member:write"
]
}
],
"responses": {
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/organizations/{organization_slug}/members/{member_id}/teams/{team_slug}/": {
"post": {
"operationId": "Add an Organization Member to a Team",
"description": "This request can return various success codes depending on the context of the team:\n- **`201`**: The member has been successfully added.\n- **`202`**: The member needs permission to join the team and an access request\nhas been generated.\n- **`204`**: The member is already on the team.\n\nIf the team is provisioned through an identity provider, the member cannot join the\nteam through Sentry.\n\nNote the permission scopes vary depending on the organization setting `\"Open Membership\"`\nand the type of authorization token. The following table outlines the accepted scopes.\n<table style=\"width: 100%;\">\n<thead>\n <tr>\n <th style=\"width: 33%;\"></th>\n <th colspan=\"2\" style=\"text-align: center; font-weight: bold; width: 33%;\">Open Membership</th>\n </tr>\n</thead>\n<tbody>\n <tr>\n <td style=\"width: 34%;\"></td>\n <td style=\"text-align: center; font-weight: bold; width: 33%;\">On</td>\n <td style=\"text-align: center; font-weight: bold; width: 33%;\">Off</td>\n </tr>\n <tr>\n <td style=\"text-align: center; font-weight: bold; vertical-align: middle;\"><a\n href=\"https://docs.sentry.io/api/auth/#auth-tokens\">Org Auth Token</a></td>\n <td style=\"text-align: left; width: 33%;\">\n <ul style=\"list-style-type: none; padding-left: 0;\">\n <li><strong style=\"color: #9c5f99;\">&bull; org:read</strong></li>\n </ul>\n </td>\n <td style=\"text-align: left; width: 33%;\">\n <ul style=\"list-style-type: none; padding-left: 0;\">\n <li><strong style=\"color: #9c5f99;\">&bull; org:write</strong></li>\n <li><strong style=\"color: #9c5f99;\">&bull; team:write</strong></li>\n </ul>\n </td>\n </tr>\n <tr>\n <td style=\"text-align: center; font-weight: bold; vertical-align: middle;\"><a\n href=\"https://docs.sentry.io/api/auth/#user-authentication-tokens\">User Auth Token</a></td>\n <td style=\"text-align: left; width: 33%;\">\n <ul style=\"list-style-type: none; padding-left: 0;\">\n <li><strong style=\"color: #9c5f99;\">&bull; org:read</strong></li>\n </ul>\n </td>\n <td style=\"text-align: left; width: 33%;\">\n <ul style=\"list-style-type: none; padding-left: 0;\">\n <li><strong style=\"color: #9c5f99;\">&bull; org:read*</strong></li>\n <li><strong style=\"color: #9c5f99;\">&bull; org:write</strong></li>\n <li><strong style=\"color: #9c5f99;\">&bull; org:read +</strong></li>\n <li><strong style=\"color: #9c5f99;\">&nbsp; &nbsp;team:write**</strong></li>\n </ul>\n </td>\n </tr>\n</tbody>\n</table>\n\n\n*Organization members are restricted to this scope. When sending a request, it will always\nreturn a 202 and request an invite to the team.\n\n\n\\*\\*Team Admins must have both **`org:read`** and **`team:write`** scopes in their user\nauthorization token to add members to their teams.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "member_id",
"schema": {
"type": "string"
},
"description": "The ID of the organization member to add to the team",
"required": true
},
{
"in": "path",
"name": "team_slug",
"schema": {
"type": "string"
},
"description": "The slug of the team the resource belongs to.",
"required": true
}
],
"tags": [
"Teams"
],
"security": [
{
"auth_token": [
"org:read",
"org:write",
"team:write"
]
}
],
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"isMember": {
"type": "boolean"
},
"teamRole": {
"type": "string",
"nullable": true
},
"flags": {
"type": "object",
"additionalProperties": {}
},
"access": {
"type": "array",
"items": {
"type": "string"
}
},
"hasAccess": {
"type": "boolean"
},
"isPending": {
"type": "boolean"
},
"memberCount": {
"type": "integer"
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
},
"avatarUrl": {
"type": "string",
"nullable": true
}
}
}
},
"required": [
"access",
"avatar",
"dateCreated",
"flags",
"hasAccess",
"id",
"isMember",
"isPending",
"memberCount",
"name",
"slug",
"teamRole"
]
},
"examples": {
"Join,RequestAccessToOrAddAMemberToATeam": {
"value": {
"id": "4502349234123",
"slug": "ancient-gabelers",
"name": "Ancient Gabelers",
"dateCreated": "2023-05-31T19:47:53.621181Z",
"isMember": true,
"teamRole": "contributor",
"flags": {
"idp:provisioned": false
},
"access": [
"alerts:read",
"event:write",
"project:read",
"team:read",
"member:read",
"project:releases",
"event:read",
"org:read"
],
"hasAccess": true,
"isPending": false,
"memberCount": 3,
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
}
},
"summary": "Join, request access to or add a member to a team"
}
}
}
},
"description": ""
},
"202": {
"description": "Accepted"
},
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "This team is managed through your organization's identity provider"
},
"404": {
"description": "Not Found"
}
}
},
"delete": {
"operationId": "Delete an Organization Member from a Team",
"description": "Delete an organization member from a team.\n\nNote the permission scopes vary depending on the type of authorization token. The following\ntable outlines the accepted scopes.\n<table style=\"width: 100%;\">\n <tr style=\"width: 50%;\">\n <td style=\"width: 50%; text-align: center; font-weight: bold; vertical-align: middle;\"><a href=\"https://docs.sentry.io/api/auth/#auth-tokens\">Org Auth Token</a></td>\n <td style=\"width: 50%; text-align: left;\">\n <ul style=\"list-style-type: none; padding-left: 0;\">\n <li><strong style=\"color: #9c5f99;\">&bull; org:write</strong></li>\n <li><strong style=\"color: #9c5f99;\">&bull; org:admin</strong></li>\n <li><strong style=\"color: #9c5f99;\">&bull; team:admin</strong></li>\n </ul>\n </td>\n </tr>\n <tr style=\"width: 50%;\">\n <td style=\"width: 50%; text-align: center; font-weight: bold; vertical-align: middle;\"><a href=\"https://docs.sentry.io/api/auth/#user-authentication-tokens\">User Auth Token</a></td>\n <td style=\"width: 50%; text-align: left;\">\n <ul style=\"list-style-type: none; padding-left: 0;\">\n <li><strong style=\"color: #9c5f99;\">&bull; org:read*</strong></li>\n <li><strong style=\"color: #9c5f99;\">&bull; org:write</strong></li>\n <li><strong style=\"color: #9c5f99;\">&bull; org:admin</strong></li>\n <li><strong style=\"color: #9c5f99;\">&bull; team:admin</strong></li>\n <li><strong style=\"color: #9c5f99;\">&bull; org:read + team:admin**</strong></li>\n </ul>\n </td>\n </tr>\n</table>\n\n\n\\***`org:read`** can only be used to remove yourself from the teams you are a member of.\n\n\n\\*\\*Team Admins must have both **`org:read`** and **`team:admin`** scopes in their user\nauthorization token to delete members from their teams.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "member_id",
"schema": {
"type": "string"
},
"description": "The ID of the organization member to delete from the team",
"required": true
},
{
"in": "path",
"name": "team_slug",
"schema": {
"type": "string"
},
"description": "The slug of the team the resource belongs to.",
"required": true
}
],
"tags": [
"Teams"
],
"security": [
{
"auth_token": [
"org:admin",
"org:read",
"org:write",
"team:admin"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"isMember": {
"type": "boolean"
},
"teamRole": {
"type": "string",
"nullable": true
},
"flags": {
"type": "object",
"additionalProperties": {}
},
"access": {
"type": "array",
"items": {
"type": "string"
}
},
"hasAccess": {
"type": "boolean"
},
"isPending": {
"type": "boolean"
},
"memberCount": {
"type": "integer"
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
},
"avatarUrl": {
"type": "string",
"nullable": true
}
}
}
},
"required": [
"access",
"avatar",
"dateCreated",
"flags",
"hasAccess",
"id",
"isMember",
"isPending",
"memberCount",
"name",
"slug",
"teamRole"
]
},
"examples": {
"RemoveAMemberFromATeam": {
"value": {
"id": "4502349234123",
"slug": "ancient-gabelers",
"name": "Ancient Gabelers",
"dateCreated": "2023-05-31T19:47:53.621181Z",
"isMember": false,
"teamRole": null,
"flags": {
"idp:provisioned": false
},
"access": [
"alerts:read",
"event:write",
"project:read",
"team:read",
"member:read",
"project:releases",
"event:read",
"org:read"
],
"hasAccess": true,
"isPending": false,
"memberCount": 3,
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
}
},
"summary": "Remove a member from a team"
}
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
},
"403": {
"description": "This team is managed through your organization's identity provider"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/organizations/{organization_slug}/monitors/": {
"get": {
"operationId": "Retrieve Monitors for an Organization",
"description": "Lists monitors, including nested monitor environments. May be filtered to a project or environment.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "query",
"name": "project",
"schema": {
"type": "array",
"items": {
"type": "integer"
}
},
"description": "The IDs of projects to filter by. `-1` means all available projects.\nFor example the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=-1`\n"
},
{
"in": "query",
"name": "environment",
"schema": {
"type": "array",
"items": {
"type": "string"
}
},
"description": "The name of environments to filter by."
}
],
"tags": [
"Crons"
],
"security": [
{
"auth_token": [
"org:admin",
"org:read",
"org:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"alertRule": {
"type": "object",
"properties": {
"targets": {
"type": "array",
"items": {
"type": "object",
"properties": {
"targetIdentifier": {
"type": "integer"
},
"targetType": {
"type": "string"
}
},
"required": [
"targetIdentifier",
"targetType"
]
}
},
"environment": {
"type": "string"
}
},
"required": [
"environment",
"targets"
]
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"status": {
"type": "string"
},
"isMuted": {
"type": "boolean"
},
"type": {
"enum": [
"cron_job",
"unknown"
],
"type": "string"
},
"config": {
"type": "object",
"properties": {
"schedule_type": {
"enum": [
"crontab",
"interval"
],
"type": "string"
},
"schedule": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "integer"
},
"minLength": 2,
"maxLength": 2
}
]
},
"checkin_margin": {
"type": "integer",
"nullable": true
},
"max_runtime": {
"type": "integer",
"nullable": true
},
"timezone": {
"type": "string",
"nullable": true
},
"failure_issue_threshold": {
"type": "integer",
"nullable": true
},
"recovery_threshold": {
"type": "integer",
"nullable": true
},
"alert_rule_id": {
"type": "integer",
"nullable": true
}
},
"required": [
"alert_rule_id",
"checkin_margin",
"failure_issue_threshold",
"max_runtime",
"recovery_threshold",
"schedule",
"schedule_type",
"timezone"
]
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"project": {
"type": "object",
"properties": {
"stats": {},
"transactionStats": {},
"sessionStats": {},
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"platform": {
"type": "string",
"nullable": true
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"isBookmarked": {
"type": "boolean"
},
"isMember": {
"type": "boolean"
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"firstEvent": {
"type": "string",
"format": "date-time",
"nullable": true
},
"firstTransactionEvent": {
"type": "boolean"
},
"access": {
"type": "array",
"items": {
"type": "string"
}
},
"hasAccess": {
"type": "boolean"
},
"hasCustomMetrics": {
"type": "boolean"
},
"hasMinifiedStackTrace": {
"type": "boolean"
},
"hasMonitors": {
"type": "boolean"
},
"hasProfiles": {
"type": "boolean"
},
"hasReplays": {
"type": "boolean"
},
"hasSessions": {
"type": "boolean"
},
"isInternal": {
"type": "boolean"
},
"isPublic": {
"type": "boolean"
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
},
"avatarUrl": {
"type": "string",
"nullable": true
}
}
},
"color": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"access",
"avatar",
"color",
"dateCreated",
"features",
"firstEvent",
"firstTransactionEvent",
"hasAccess",
"hasCustomMetrics",
"hasMinifiedStackTrace",
"hasMonitors",
"hasProfiles",
"hasReplays",
"hasSessions",
"id",
"isBookmarked",
"isInternal",
"isMember",
"isPublic",
"name",
"platform",
"slug",
"status"
]
},
"environments": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"status": {
"type": "string"
},
"isMuted": {
"type": "boolean"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"lastCheckIn": {
"type": "string",
"format": "date-time"
},
"nextCheckIn": {
"type": "string",
"format": "date-time"
},
"nextCheckInLatest": {
"type": "string",
"format": "date-time"
}
},
"required": [
"dateCreated",
"isMuted",
"lastCheckIn",
"name",
"nextCheckIn",
"nextCheckInLatest",
"status"
]
}
},
"required": [
"config",
"dateCreated",
"environments",
"id",
"isMuted",
"name",
"project",
"slug",
"status",
"type"
]
}
}
}
},
"description": ""
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"post": {
"operationId": "Create a Monitor",
"description": "Create a new monitor.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
}
],
"tags": [
"Crons"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.",
"properties": {
"name": {
"type": "string",
"description": "Name of the monitor. Used for notifications.",
"maxLength": 128
},
"type": {
"enum": [
"cron_job"
],
"type": "string",
"description": "* `cron_job` - cron_job"
},
"slug": {
"type": "string",
"description": "Uniquely identifies your monitor within your organization. Changing this slug will require updates to any instrumented check-in calls.",
"maxLength": 50,
"pattern": "^(?![0-9]+$)[a-z0-9_\\-]+$"
},
"status": {
"enum": [
"active",
"disabled"
],
"type": "string",
"default": "active",
"description": "Status of the monitor. Disabled monitors will not accept events and will not count towards the monitor quota.\n\n* `active` - active\n* `disabled` - disabled"
},
"is_muted": {
"type": "boolean",
"description": "Disable creation of monitor incidents"
}
},
"required": [
"name",
"type"
]
}
}
},
"required": true
},
"security": [
{
"auth_token": [
"org:admin",
"org:read",
"org:write"
]
}
],
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"alertRule": {
"type": "object",
"properties": {
"targets": {
"type": "array",
"items": {
"type": "object",
"properties": {
"targetIdentifier": {
"type": "integer"
},
"targetType": {
"type": "string"
}
},
"required": [
"targetIdentifier",
"targetType"
]
}
},
"environment": {
"type": "string"
}
},
"required": [
"environment",
"targets"
]
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"status": {
"type": "string"
},
"isMuted": {
"type": "boolean"
},
"type": {
"enum": [
"cron_job",
"unknown"
],
"type": "string"
},
"config": {
"type": "object",
"properties": {
"schedule_type": {
"enum": [
"crontab",
"interval"
],
"type": "string"
},
"schedule": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "integer"
},
"minLength": 2,
"maxLength": 2
}
]
},
"checkin_margin": {
"type": "integer",
"nullable": true
},
"max_runtime": {
"type": "integer",
"nullable": true
},
"timezone": {
"type": "string",
"nullable": true
},
"failure_issue_threshold": {
"type": "integer",
"nullable": true
},
"recovery_threshold": {
"type": "integer",
"nullable": true
},
"alert_rule_id": {
"type": "integer",
"nullable": true
}
},
"required": [
"alert_rule_id",
"checkin_margin",
"failure_issue_threshold",
"max_runtime",
"recovery_threshold",
"schedule",
"schedule_type",
"timezone"
]
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"project": {
"type": "object",
"properties": {
"stats": {},
"transactionStats": {},
"sessionStats": {},
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"platform": {
"type": "string",
"nullable": true
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"isBookmarked": {
"type": "boolean"
},
"isMember": {
"type": "boolean"
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"firstEvent": {
"type": "string",
"format": "date-time",
"nullable": true
},
"firstTransactionEvent": {
"type": "boolean"
},
"access": {
"type": "array",
"items": {
"type": "string"
}
},
"hasAccess": {
"type": "boolean"
},
"hasCustomMetrics": {
"type": "boolean"
},
"hasMinifiedStackTrace": {
"type": "boolean"
},
"hasMonitors": {
"type": "boolean"
},
"hasProfiles": {
"type": "boolean"
},
"hasReplays": {
"type": "boolean"
},
"hasSessions": {
"type": "boolean"
},
"isInternal": {
"type": "boolean"
},
"isPublic": {
"type": "boolean"
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
},
"avatarUrl": {
"type": "string",
"nullable": true
}
}
},
"color": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"access",
"avatar",
"color",
"dateCreated",
"features",
"firstEvent",
"firstTransactionEvent",
"hasAccess",
"hasCustomMetrics",
"hasMinifiedStackTrace",
"hasMonitors",
"hasProfiles",
"hasReplays",
"hasSessions",
"id",
"isBookmarked",
"isInternal",
"isMember",
"isPublic",
"name",
"platform",
"slug",
"status"
]
},
"environments": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"status": {
"type": "string"
},
"isMuted": {
"type": "boolean"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"lastCheckIn": {
"type": "string",
"format": "date-time"
},
"nextCheckIn": {
"type": "string",
"format": "date-time"
},
"nextCheckInLatest": {
"type": "string",
"format": "date-time"
}
},
"required": [
"dateCreated",
"isMuted",
"lastCheckIn",
"name",
"nextCheckIn",
"nextCheckInLatest",
"status"
]
}
},
"required": [
"config",
"dateCreated",
"environments",
"id",
"isMuted",
"name",
"project",
"slug",
"status",
"type"
]
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/organizations/{organization_slug}/monitors/{monitor_slug}/": {
"get": {
"operationId": "Retrieve a Monitor",
"description": "Retrieves details for a monitor.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "monitor_slug",
"schema": {
"type": "string"
},
"description": "The slug of the monitor.",
"required": true
},
{
"in": "query",
"name": "environment",
"schema": {
"type": "array",
"items": {
"type": "string"
}
},
"description": "The name of environments to filter by."
}
],
"tags": [
"Crons"
],
"security": [
{
"auth_token": [
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"alertRule": {
"type": "object",
"properties": {
"targets": {
"type": "array",
"items": {
"type": "object",
"properties": {
"targetIdentifier": {
"type": "integer"
},
"targetType": {
"type": "string"
}
},
"required": [
"targetIdentifier",
"targetType"
]
}
},
"environment": {
"type": "string"
}
},
"required": [
"environment",
"targets"
]
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"status": {
"type": "string"
},
"isMuted": {
"type": "boolean"
},
"type": {
"enum": [
"cron_job",
"unknown"
],
"type": "string"
},
"config": {
"type": "object",
"properties": {
"schedule_type": {
"enum": [
"crontab",
"interval"
],
"type": "string"
},
"schedule": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "integer"
},
"minLength": 2,
"maxLength": 2
}
]
},
"checkin_margin": {
"type": "integer",
"nullable": true
},
"max_runtime": {
"type": "integer",
"nullable": true
},
"timezone": {
"type": "string",
"nullable": true
},
"failure_issue_threshold": {
"type": "integer",
"nullable": true
},
"recovery_threshold": {
"type": "integer",
"nullable": true
},
"alert_rule_id": {
"type": "integer",
"nullable": true
}
},
"required": [
"alert_rule_id",
"checkin_margin",
"failure_issue_threshold",
"max_runtime",
"recovery_threshold",
"schedule",
"schedule_type",
"timezone"
]
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"project": {
"type": "object",
"properties": {
"stats": {},
"transactionStats": {},
"sessionStats": {},
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"platform": {
"type": "string",
"nullable": true
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"isBookmarked": {
"type": "boolean"
},
"isMember": {
"type": "boolean"
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"firstEvent": {
"type": "string",
"format": "date-time",
"nullable": true
},
"firstTransactionEvent": {
"type": "boolean"
},
"access": {
"type": "array",
"items": {
"type": "string"
}
},
"hasAccess": {
"type": "boolean"
},
"hasCustomMetrics": {
"type": "boolean"
},
"hasMinifiedStackTrace": {
"type": "boolean"
},
"hasMonitors": {
"type": "boolean"
},
"hasProfiles": {
"type": "boolean"
},
"hasReplays": {
"type": "boolean"
},
"hasSessions": {
"type": "boolean"
},
"isInternal": {
"type": "boolean"
},
"isPublic": {
"type": "boolean"
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
},
"avatarUrl": {
"type": "string",
"nullable": true
}
}
},
"color": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"access",
"avatar",
"color",
"dateCreated",
"features",
"firstEvent",
"firstTransactionEvent",
"hasAccess",
"hasCustomMetrics",
"hasMinifiedStackTrace",
"hasMonitors",
"hasProfiles",
"hasReplays",
"hasSessions",
"id",
"isBookmarked",
"isInternal",
"isMember",
"isPublic",
"name",
"platform",
"slug",
"status"
]
},
"environments": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"status": {
"type": "string"
},
"isMuted": {
"type": "boolean"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"lastCheckIn": {
"type": "string",
"format": "date-time"
},
"nextCheckIn": {
"type": "string",
"format": "date-time"
},
"nextCheckInLatest": {
"type": "string",
"format": "date-time"
}
},
"required": [
"dateCreated",
"isMuted",
"lastCheckIn",
"name",
"nextCheckIn",
"nextCheckInLatest",
"status"
]
}
},
"required": [
"config",
"dateCreated",
"environments",
"id",
"isMuted",
"name",
"project",
"slug",
"status",
"type"
]
}
}
},
"description": ""
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"put": {
"operationId": "Update a Monitor",
"description": "Update a monitor.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "monitor_slug",
"schema": {
"type": "string"
},
"description": "The slug of the monitor.",
"required": true
}
],
"tags": [
"Crons"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.",
"properties": {
"name": {
"type": "string",
"description": "Name of the monitor. Used for notifications.",
"maxLength": 128
},
"type": {
"enum": [
"cron_job"
],
"type": "string",
"description": "* `cron_job` - cron_job"
},
"slug": {
"type": "string",
"description": "Uniquely identifies your monitor within your organization. Changing this slug will require updates to any instrumented check-in calls.",
"maxLength": 50,
"pattern": "^(?![0-9]+$)[a-z0-9_\\-]+$"
},
"status": {
"enum": [
"active",
"disabled"
],
"type": "string",
"default": "active",
"description": "Status of the monitor. Disabled monitors will not accept events and will not count towards the monitor quota.\n\n* `active` - active\n* `disabled` - disabled"
},
"is_muted": {
"type": "boolean",
"description": "Disable creation of monitor incidents"
}
},
"required": [
"name",
"type"
]
}
}
},
"required": true
},
"security": [
{
"auth_token": [
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"alertRule": {
"type": "object",
"properties": {
"targets": {
"type": "array",
"items": {
"type": "object",
"properties": {
"targetIdentifier": {
"type": "integer"
},
"targetType": {
"type": "string"
}
},
"required": [
"targetIdentifier",
"targetType"
]
}
},
"environment": {
"type": "string"
}
},
"required": [
"environment",
"targets"
]
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"status": {
"type": "string"
},
"isMuted": {
"type": "boolean"
},
"type": {
"enum": [
"cron_job",
"unknown"
],
"type": "string"
},
"config": {
"type": "object",
"properties": {
"schedule_type": {
"enum": [
"crontab",
"interval"
],
"type": "string"
},
"schedule": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "integer"
},
"minLength": 2,
"maxLength": 2
}
]
},
"checkin_margin": {
"type": "integer",
"nullable": true
},
"max_runtime": {
"type": "integer",
"nullable": true
},
"timezone": {
"type": "string",
"nullable": true
},
"failure_issue_threshold": {
"type": "integer",
"nullable": true
},
"recovery_threshold": {
"type": "integer",
"nullable": true
},
"alert_rule_id": {
"type": "integer",
"nullable": true
}
},
"required": [
"alert_rule_id",
"checkin_margin",
"failure_issue_threshold",
"max_runtime",
"recovery_threshold",
"schedule",
"schedule_type",
"timezone"
]
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"project": {
"type": "object",
"properties": {
"stats": {},
"transactionStats": {},
"sessionStats": {},
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"platform": {
"type": "string",
"nullable": true
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"isBookmarked": {
"type": "boolean"
},
"isMember": {
"type": "boolean"
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"firstEvent": {
"type": "string",
"format": "date-time",
"nullable": true
},
"firstTransactionEvent": {
"type": "boolean"
},
"access": {
"type": "array",
"items": {
"type": "string"
}
},
"hasAccess": {
"type": "boolean"
},
"hasCustomMetrics": {
"type": "boolean"
},
"hasMinifiedStackTrace": {
"type": "boolean"
},
"hasMonitors": {
"type": "boolean"
},
"hasProfiles": {
"type": "boolean"
},
"hasReplays": {
"type": "boolean"
},
"hasSessions": {
"type": "boolean"
},
"isInternal": {
"type": "boolean"
},
"isPublic": {
"type": "boolean"
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
},
"avatarUrl": {
"type": "string",
"nullable": true
}
}
},
"color": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"access",
"avatar",
"color",
"dateCreated",
"features",
"firstEvent",
"firstTransactionEvent",
"hasAccess",
"hasCustomMetrics",
"hasMinifiedStackTrace",
"hasMonitors",
"hasProfiles",
"hasReplays",
"hasSessions",
"id",
"isBookmarked",
"isInternal",
"isMember",
"isPublic",
"name",
"platform",
"slug",
"status"
]
},
"environments": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"status": {
"type": "string"
},
"isMuted": {
"type": "boolean"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"lastCheckIn": {
"type": "string",
"format": "date-time"
},
"nextCheckIn": {
"type": "string",
"format": "date-time"
},
"nextCheckInLatest": {
"type": "string",
"format": "date-time"
}
},
"required": [
"dateCreated",
"isMuted",
"lastCheckIn",
"name",
"nextCheckIn",
"nextCheckInLatest",
"status"
]
}
},
"required": [
"config",
"dateCreated",
"environments",
"id",
"isMuted",
"name",
"project",
"slug",
"status",
"type"
]
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"delete": {
"operationId": "Delete a Monitor or Monitor Environments",
"description": "Delete a monitor or monitor environments.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "monitor_slug",
"schema": {
"type": "string"
},
"description": "The slug of the monitor.",
"required": true
},
{
"in": "query",
"name": "environment",
"schema": {
"type": "array",
"items": {
"type": "string"
}
},
"description": "The name of environments to filter by."
}
],
"tags": [
"Crons"
],
"security": [
{
"auth_token": [
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"202": {
"description": "Accepted"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/organizations/{organization_slug}/monitors/{monitor_slug}/checkins/": {
"get": {
"operationId": "Retrieve Check-Ins for a Monitor",
"description": "Retrieve a list of check-ins for a monitor",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "monitor_slug",
"schema": {
"type": "string"
},
"description": "The slug of the monitor.",
"required": true
}
],
"tags": [
"Crons"
],
"security": [
{
"auth_token": [
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"groups": {
"type": "array",
"items": {
"type": "string"
}
},
"id": {
"type": "string"
},
"environment": {
"type": "string"
},
"status": {
"type": "string"
},
"duration": {
"type": "integer"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"attachmentId": {
"type": "string"
},
"expectedTime": {
"type": "string",
"format": "date-time"
},
"monitorConfig": {}
},
"required": [
"attachmentId",
"dateCreated",
"duration",
"environment",
"expectedTime",
"id",
"monitorConfig",
"status"
]
}
}
}
},
"description": ""
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"post": {
"operationId": "Create a New Check-In",
"description": "Creates a new check-in for a monitor.\n\nIf `status` is not present, it will be assumed that the check-in is starting, and be marked as `in_progress`.\n\nTo achieve a ping-like behavior, you can simply define `status` and optionally `duration` and\nthis check-in will be automatically marked as finished.\n\nNote: If a DSN is utilized for authentication, the response will be limited in details.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "monitor_slug",
"schema": {
"type": "string"
},
"description": "The slug of the monitor.",
"required": true
}
],
"tags": [
"Crons"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"status": {
"enum": [
"ok",
"error",
"in_progress"
],
"type": "string",
"description": "The status of the job run.\n\n* `ok` - 1\n* `error` - 2\n* `in_progress` - 3"
},
"duration": {
"type": "integer",
"maximum": 2147483647,
"minimum": 0,
"nullable": true,
"description": "Duration of the job run, in milliseconds."
},
"environment": {
"type": "string",
"nullable": true,
"description": "Name of the environment."
}
},
"required": [
"status"
]
}
}
},
"required": true
},
"security": [
{
"auth_token": [
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"groups": {
"type": "array",
"items": {
"type": "string"
}
},
"id": {
"type": "string"
},
"environment": {
"type": "string"
},
"status": {
"type": "string"
},
"duration": {
"type": "integer"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"attachmentId": {
"type": "string"
},
"expectedTime": {
"type": "string",
"format": "date-time"
},
"monitorConfig": {}
},
"required": [
"attachmentId",
"dateCreated",
"duration",
"environment",
"expectedTime",
"id",
"monitorConfig",
"status"
]
}
}
},
"description": ""
},
"201": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"groups": {
"type": "array",
"items": {
"type": "string"
}
},
"id": {
"type": "string"
},
"environment": {
"type": "string"
},
"status": {
"type": "string"
},
"duration": {
"type": "integer"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"attachmentId": {
"type": "string"
},
"expectedTime": {
"type": "string",
"format": "date-time"
},
"monitorConfig": {}
},
"required": [
"attachmentId",
"dateCreated",
"duration",
"environment",
"expectedTime",
"id",
"monitorConfig",
"status"
]
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/organizations/{organization_slug}/monitors/{monitor_slug}/checkins/{checkin_id}/": {
"put": {
"operationId": "Update a Check-In",
"description": "Updates a check-in.\n\nOnce a check-in is finished (indicated via an `ok` or `error` status) it can no longer be changed.\n\nIf you simply wish to update that the task is still running, you can simply send an empty payload.\n\nYou may use `latest` for the `checkin_id` parameter in order to retrieve\nthe most recent (by creation date) check-in which is still mutable (not marked as finished).",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "monitor_slug",
"schema": {
"type": "string"
},
"description": "The slug of the monitor.",
"required": true
},
{
"in": "path",
"name": "checkin_id",
"schema": {
"type": "string",
"format": "uuid"
},
"description": "The ID of the check-in.",
"required": true
}
],
"tags": [
"Crons"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"status": {
"enum": [
"ok",
"error",
"in_progress"
],
"type": "string",
"description": "The status of the job run.\n\n* `ok` - 1\n* `error` - 2\n* `in_progress` - 3"
},
"duration": {
"type": "integer",
"maximum": 2147483647,
"minimum": 0,
"nullable": true,
"description": "Duration of the job run, in milliseconds."
},
"environment": {
"type": "string",
"nullable": true,
"description": "Name of the environment."
}
},
"required": [
"status"
]
}
}
},
"required": true
},
"security": [
{
"auth_token": [
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"groups": {
"type": "array",
"items": {
"type": "string"
}
},
"id": {
"type": "string"
},
"environment": {
"type": "string"
},
"status": {
"type": "string"
},
"duration": {
"type": "integer"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"attachmentId": {
"type": "string"
},
"expectedTime": {
"type": "string",
"format": "date-time"
},
"monitorConfig": {}
},
"required": [
"attachmentId",
"dateCreated",
"duration",
"environment",
"expectedTime",
"id",
"monitorConfig",
"status"
]
}
}
},
"description": ""
},
"208": {
"description": "Already Reported"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/organizations/{organization_slug}/notifications/actions/": {
"get": {
"operationId": "List Spike Protection Notifications",
"description": "Returns all Spike Protection Notification Actions for an organization.\n\nNotification Actions notify a set of members when an action has been triggered through a notification service such as Slack or Sentry.\nFor example, organization owners and managers can receive an email when a spike occurs.\n\nYou can use either the `project` or `projectSlug` query parameter to filter for certain projects. Note that if both are present, `projectSlug` takes priority.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "query",
"name": "project",
"schema": {
"type": "array",
"items": {
"type": "integer"
}
},
"description": "The IDs of projects to filter by. `-1` means all available projects.\nFor example the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=-1`\n"
},
{
"in": "query",
"name": "project_slug",
"schema": {
"type": "array",
"items": {
"type": "string"
}
},
"description": "The project slugs to filter by. Use `$all` to include all available projects. For example the following are valid parameters:\n- `/?projectSlug=$all`\n- `/?projectSlug=android&projectSlug=javascript-react`\n"
},
{
"in": "query",
"name": "triggerType",
"schema": {
"type": "string"
},
"description": "Type of the trigger that causes the notification. The only supported value right now is: `spike-protection`"
}
],
"tags": [
"Alerts"
],
"security": [
{
"auth_token": [
"org:admin",
"org:read",
"org:write"
]
}
],
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"type": "object",
"additionalProperties": {}
},
"examples": {
"CreateANewEmailSpikeProtectionNotificationActionForAProject": {
"value": {
"id": "836501735",
"organizationId": "62848264",
"serviceType": "sentry_notification",
"targetDisplay": "default",
"targetIdentifier": "default",
"targetType": "specific",
"triggerType": "spike-protection",
"projects": [
4505321021243392
]
},
"summary": "Create a new email spike protection notification action for a project"
}
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
},
"403": {
"description": "Forbidden"
}
}
},
"post": {
"operationId": "Create a Spike Protection Notification Action",
"description": "Creates a new Notification Action for Spike Protection.\n\nNotification Actions notify a set of members when an action has been triggered through a notification service such as Slack or Sentry.\nFor example, organization owners and managers can receive an email when a spike occurs.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
}
],
"tags": [
"Alerts"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "Django Rest Framework serializer for incoming NotificationAction API payloads",
"properties": {
"trigger_type": {
"type": "string",
"description": "Type of the trigger that causes the notification. The only supported trigger right now is: `spike-protection`."
},
"service_type": {
"type": "string",
"description": "Service that is used for sending the notification.\n- `email`\n- `slack`\n- `sentry_notification`\n- `pagerduty`\n- `opsgenie`\n"
},
"integration_id": {
"type": "integer",
"description": "ID of the integration used as the notification service. See\n[List Integrations](https://docs.sentry.io/api/integrations/list-an-organizations-available-integrations/)\nto retrieve a full list of integrations.\n\nRequired if **service_type** is `slack`, `pagerduty` or `opsgenie`.\n"
},
"target_identifier": {
"type": "string",
"description": "ID of the notification target, like a Slack channel ID.\n\nRequired if **service_type** is `slack` or `opsgenie`.\n"
},
"target_display": {
"type": "string",
"description": "Name of the notification target, like a Slack channel name.\n\nRequired if **service_type** is `slack` or `opsgenie`.\n"
},
"projects": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of projects slugs that the Notification Action is created for."
}
},
"required": [
"service_type",
"trigger_type"
]
}
}
},
"required": true
},
"security": [
{
"auth_token": [
"org:admin",
"org:read",
"org:write"
]
}
],
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"type": "object",
"additionalProperties": {}
},
"examples": {
"CreateANewEmailSpikeProtectionNotificationActionForAProject": {
"value": {
"id": "836501735",
"organizationId": "62848264",
"serviceType": "sentry_notification",
"targetDisplay": "default",
"targetIdentifier": "default",
"targetType": "specific",
"triggerType": "spike-protection",
"projects": [
4505321021243392
]
},
"summary": "Create a new email spike protection notification action for a project"
}
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
},
"403": {
"description": "Forbidden"
}
}
}
},
"/api/0/organizations/{organization_slug}/notifications/actions/{action_id}/": {
"get": {
"operationId": "Retrieve a Spike Protection Notification Action",
"description": "Returns a serialized Spike Protection Notification Action object.\n\nNotification Actions notify a set of members when an action has been triggered through a notification service such as Slack or Sentry.\nFor example, organization owners and managers can receive an email when a spike occurs.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "action_id",
"schema": {
"type": "integer"
},
"description": "ID of the notification action to retrieve",
"required": true
}
],
"tags": [
"Alerts"
],
"security": [
{
"auth_token": [
"org:admin",
"org:read",
"org:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"additionalProperties": {}
},
"examples": {
"RetrieveASpikeProtectionNotificationActionCreatedForAProject": {
"value": {
"id": "836501735",
"organizationId": "62848264",
"serviceType": "sentry_notification",
"targetDisplay": "default",
"targetIdentifier": "default",
"targetType": "specific",
"triggerType": "spike-protection",
"projects": [
4505321021243392
]
},
"summary": "Retrieve a spike protection notification action created for a project"
}
}
}
},
"description": ""
}
}
},
"put": {
"operationId": "Update a Spike Protection Notification Action",
"description": "Updates a Spike Protection Notification Action.\n\nNotification Actions notify a set of members when an action has been triggered through a notification service such as Slack or Sentry.\nFor example, organization owners and managers can receive an email when a spike occurs.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "action_id",
"schema": {
"type": "integer"
},
"description": "ID of the notification action to retrieve",
"required": true
}
],
"tags": [
"Alerts"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "Django Rest Framework serializer for incoming NotificationAction API payloads",
"properties": {
"trigger_type": {
"type": "string",
"description": "Type of the trigger that causes the notification. The only supported trigger right now is: `spike-protection`."
},
"service_type": {
"type": "string",
"description": "Service that is used for sending the notification.\n- `email`\n- `slack`\n- `sentry_notification`\n- `pagerduty`\n- `opsgenie`\n"
},
"integration_id": {
"type": "integer",
"description": "ID of the integration used as the notification service. See\n[List Integrations](https://docs.sentry.io/api/integrations/list-an-organizations-available-integrations/)\nto retrieve a full list of integrations.\n\nRequired if **service_type** is `slack`, `pagerduty` or `opsgenie`.\n"
},
"target_identifier": {
"type": "string",
"description": "ID of the notification target, like a Slack channel ID.\n\nRequired if **service_type** is `slack` or `opsgenie`.\n"
},
"target_display": {
"type": "string",
"description": "Name of the notification target, like a Slack channel name.\n\nRequired if **service_type** is `slack` or `opsgenie`.\n"
},
"projects": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of projects slugs that the Notification Action is created for."
}
},
"required": [
"service_type",
"trigger_type"
]
}
}
},
"required": true
},
"security": [
{
"auth_token": [
"org:admin",
"org:read",
"org:write"
]
}
],
"responses": {
"202": {
"content": {
"application/json": {
"schema": {
"type": "object",
"additionalProperties": {}
},
"examples": {
"UpdateASpikeProtectionNotificationActionCreatedForAProjectToUseSentryNotificationAsNotificationService.": {
"value": {
"id": "836501735",
"organizationId": "62848264",
"serviceType": "sentry_notification",
"targetDisplay": "default",
"targetIdentifier": "default",
"targetType": "specific",
"triggerType": "spike-protection",
"projects": [
4505321021243392
]
},
"summary": "Update a spike protection notification action created for a project to use sentry_notification as notification service."
}
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
}
}
},
"delete": {
"operationId": "Delete a Spike Protection Notification Action",
"description": "Deletes a Spike Protection Notification Action.\n\nNotification Actions notify a set of members when an action has been triggered through a notification service such as Slack or Sentry.\nFor example, organization owners and managers can receive an email when a spike occurs.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "action_id",
"schema": {
"type": "integer"
},
"description": "ID of the notification action to retrieve",
"required": true
}
],
"tags": [
"Alerts"
],
"security": [
{
"auth_token": [
"org:admin",
"org:read",
"org:write"
]
}
],
"responses": {
"204": {
"description": "No Content"
}
}
}
},
"/api/0/organizations/{organization_slug}/projects/": {
"get": {
"operationId": "List an Organization's Projects",
"description": "Return a list of projects bound to a organization.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "query",
"name": "cursor",
"schema": {
"type": "string",
"minLength": 1
},
"description": "A pointer to the last object fetched and its sort order; used to retrieve the next or previous results."
}
],
"tags": [
"Organizations"
],
"security": [
{
"auth_token": [
"org:admin",
"org:read",
"org:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"latestDeploys": {
"type": "object",
"additionalProperties": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"nullable": true
},
"stats": {},
"transactionStats": {},
"sessionStats": {},
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"platform": {
"type": "string",
"nullable": true
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"isBookmarked": {
"type": "boolean"
},
"isMember": {
"type": "boolean"
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"firstEvent": {
"type": "string",
"format": "date-time",
"nullable": true
},
"firstTransactionEvent": {
"type": "boolean"
},
"access": {
"type": "array",
"items": {
"type": "string"
}
},
"hasAccess": {
"type": "boolean"
},
"hasCustomMetrics": {
"type": "boolean"
},
"hasMinifiedStackTrace": {
"type": "boolean"
},
"hasMonitors": {
"type": "boolean"
},
"hasProfiles": {
"type": "boolean"
},
"hasReplays": {
"type": "boolean"
},
"hasSessions": {
"type": "boolean"
},
"team": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
},
"required": [
"id",
"name",
"slug"
],
"nullable": true
},
"teams": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
},
"required": [
"id",
"name",
"slug"
]
}
},
"eventProcessing": {
"type": "object",
"properties": {
"symbolicationDegraded": {
"type": "boolean"
}
},
"required": [
"symbolicationDegraded"
]
},
"platforms": {
"type": "array",
"items": {
"type": "string"
}
},
"hasUserReports": {
"type": "boolean"
},
"environments": {
"type": "array",
"items": {
"type": "string"
}
},
"latestRelease": {
"type": "object",
"properties": {
"version": {
"type": "string"
}
},
"required": [
"version"
],
"nullable": true
}
},
"required": [
"access",
"dateCreated",
"environments",
"eventProcessing",
"features",
"firstEvent",
"firstTransactionEvent",
"hasAccess",
"hasCustomMetrics",
"hasMinifiedStackTrace",
"hasMonitors",
"hasProfiles",
"hasReplays",
"hasSessions",
"hasUserReports",
"id",
"isBookmarked",
"isMember",
"latestRelease",
"name",
"platform",
"platforms",
"slug",
"team",
"teams"
]
}
},
"examples": {
"ListAnOrganization'sProjects": {
"value": [
{
"slug": "prime-mover",
"name": "Prime Mover",
"dateCreated": "2018-11-06T21:19:58.536Z",
"firstEvent": null,
"access": [],
"hasAccess": true,
"id": "3",
"isBookmarked": false,
"isMember": true,
"platform": "",
"platforms": [],
"team": {
"id": "2",
"name": "Powerful Abolitionist",
"slug": "powerful-abolitionist"
},
"teams": [
{
"id": "2",
"name": "Powerful Abolitionist",
"slug": "powerful-abolitionist"
}
],
"environments": [
"local"
],
"eventProcessing": {
"symbolicationDegraded": false
},
"features": [
"releases"
],
"firstTransactionEvent": true,
"hasSessions": true,
"hasProfiles": true,
"hasReplays": true,
"hasMinifiedStackTrace": false,
"hasMonitors": true,
"hasCustomMetrics": false,
"hasUserReports": false,
"latestRelease": null
}
],
"summary": "List an organization's projects"
}
}
}
},
"description": ""
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/organizations/{organization_slug}/relay_usage/": {
"get": {
"operationId": "List an Organization's trusted Relays",
"description": "Return a list of trusted relays bound to an organization.\n\nIf the organization doesn't have Relay usage enabled it returns a 404.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
}
],
"tags": [
"Organizations"
],
"security": [
{
"auth_token": [
"org:admin",
"org:read",
"org:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"relayId": {
"type": "string"
},
"version": {
"type": "string"
},
"publicKey": {
"type": "string"
},
"firstSeen": {
"type": "string"
},
"lastSeen": {
"type": "string"
}
},
"required": [
"firstSeen",
"lastSeen",
"publicKey",
"relayId",
"version"
]
}
},
"examples": {
"ListAnOrganization'sTrustedRelays": {
"value": [
{
"relayId": "0123abcd-4567-efgh-ij89-012aaa456bbb",
"version": "23.11.2",
"firstSeen": "2023-12-10T00:00:00.000000Z",
"lastSeen": "2023-12-20T22:22:22.222222Z",
"publicKey": "asdfa54g9987ga9dfha0f8adfhkj324-dafd78321-I"
}
],
"summary": "List an organization's trusted relays"
}
}
}
},
"description": ""
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/organizations/{organization_slug}/release-threshold-statuses/": {
"get": {
"operationId": "Retrieve Statuses of Release Thresholds (Alpha)",
"description": "**`[WARNING]`**: This API is an experimental Alpha feature and is subject to change!\n\nList all derived statuses of releases that fall within the provided start/end datetimes.\n\nConstructs a response key'd off \\{`release_version`\\}-\\{`project_slug`\\} that lists thresholds with their status for *specified* projects.\nEach returned enriched threshold will contain the full serialized `release_threshold` instance as well as it's derived health statuses.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "query",
"name": "start",
"schema": {
"type": "string",
"format": "date-time"
},
"description": "The start of the time series range as an explicit datetime, either in UTC ISO8601 or epoch seconds. Use along with `end`.",
"required": true
},
{
"in": "query",
"name": "end",
"schema": {
"type": "string",
"format": "date-time"
},
"description": "The inclusive end of the time series range as an explicit datetime, either in UTC ISO8601 or epoch seconds. Use along with `start`.",
"required": true
},
{
"in": "query",
"name": "environment",
"schema": {
"type": "array",
"items": {
"type": "string"
}
},
"description": "A list of environment names to filter your results by."
},
{
"in": "query",
"name": "projectSlug",
"schema": {
"type": "array",
"items": {
"type": "string"
}
},
"description": "A list of project slugs to filter your results by."
},
{
"in": "query",
"name": "release",
"schema": {
"type": "array",
"items": {
"type": "string"
}
},
"description": "A list of release versions to filter your results by."
}
],
"tags": [
"Releases"
],
"security": [
{
"auth_token": [
"org:ci",
"project:admin",
"project:read",
"project:releases",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"date": {
"type": "string",
"format": "date-time"
},
"environment": {
"type": "object",
"additionalProperties": {},
"nullable": true
},
"project": {
"type": "object",
"additionalProperties": {}
},
"release": {
"type": "string"
},
"threshold_type": {
"type": "integer"
},
"trigger_type": {
"type": "string"
},
"value": {
"type": "integer"
},
"window_in_seconds": {
"type": "integer"
},
"end": {
"type": "string",
"format": "date-time"
},
"is_healthy": {
"type": "boolean"
},
"key": {
"type": "string"
},
"project_slug": {
"type": "string"
},
"project_id": {
"type": "integer"
},
"start": {
"type": "string",
"format": "date-time"
},
"metric_value": {
"anyOf": [
{
"type": "integer"
},
{
"type": "number",
"format": "double"
},
{
"type": "object",
"nullable": true
}
]
}
},
"required": [
"end",
"is_healthy",
"key",
"metric_value",
"project_id",
"project_slug",
"start"
]
}
}
},
"examples": {
"ClientKeyWithRateLimiting": {
"value": {
"the-spoiled-yoghurt-v1.0.0": [
{
"project_id": 0,
"project_slug": "the-spoiled-yoghurt",
"environment": {
"name": "production"
},
"project": {
"id": "4505321021243392",
"slug": "the-spoiled-yoghurt",
"name": "The Spoiled Yoghurt",
"platform": "python",
"dateCreated": "2023-06-08T00:13:06.004534Z",
"isBookmarked": false,
"isMember": true,
"features": [
"alert-filters",
"custom-inbound-filters",
"data-forwarding",
"discard-groups",
"minidump",
"race-free-group-creation",
"rate-limits",
"servicehooks",
"similarity-indexing",
"similarity-indexing-v2",
"similarity-view",
"similarity-view-v2"
],
"firstEvent": null,
"firstTransactionEvent": false,
"access": [
"member:read",
"event:read",
"project:admin",
"team:write",
"project:write",
"team:admin",
"project:read",
"org:integrations",
"org:read",
"project:releases",
"team:read",
"alerts:write",
"event:admin",
"event:write",
"alerts:read"
],
"hasAccess": true,
"hasMinifiedStackTrace": false,
"hasCustomMetrics": false,
"hasMonitors": false,
"hasProfiles": false,
"hasReplays": false,
"hasSessions": false,
"isInternal": false,
"isPublic": false,
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
},
"color": "#3f70bf",
"status": "active"
},
"threshold_type": 0,
"trigger_type": "over",
"value": 100,
"window_in_seconds": 600,
"key": "foobar-v1.0.0",
"release": "the-spoiled-yoghurt-v1.0.0",
"is_healthy": true,
"start": "2022-02-14T19:00:00Z",
"end": "2022-02-28T18:03:00Z",
"metric_value": 0.1
}
]
},
"summary": "Client key with rate limiting"
}
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
}
}
}
},
"/api/0/organizations/{organization_slug}/replay-count/": {
"get": {
"operationId": "Return a Count of Replays",
"description": "Return a count of replays for the given issue or transaction id.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "query",
"name": "end",
"schema": {
"type": "string",
"format": "date-time"
},
"description": "The end of the period of time for the query, expected in ISO-8601 format. For example `2001-12-14T12:34:56.7890`."
},
{
"in": "query",
"name": "environment",
"schema": {
"type": "array",
"items": {
"type": "string"
}
},
"description": "The name of environments to filter by."
},
{
"in": "query",
"name": "start",
"schema": {
"type": "string",
"format": "date-time"
},
"description": "The start of the period of time for the query, expected in ISO-8601 format. For example `2001-12-14T12:34:56.7890`."
},
{
"in": "query",
"name": "statsPeriod",
"schema": {
"type": "string"
},
"description": "The period of time for the query, will override the start & end parameters, a number followed by one of:\n- `d` for days\n- `h` for hours\n- `m` for minutes\n- `s` for seconds\n- `w` for weeks\n\nFor example `24h`, to mean query data starting from 24 hours ago to now."
},
{
"in": "query",
"name": "project",
"schema": {
"type": "array",
"items": {
"type": "integer"
}
},
"description": "The IDs of projects to filter by. `-1` means all available projects.\nFor example the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=-1`\n"
},
{
"in": "query",
"name": "query",
"schema": {
"type": "string"
},
"description": "The search filter for your query, read more about query syntax [here](https://docs.sentry.io/product/sentry-basics/search/).\n\nexample: `query=(transaction:foo AND release:abc) OR (transaction:[bar,baz] AND release:def)`\n"
}
],
"tags": [
"Replays"
],
"security": [
{
"auth_token": [
"org:admin",
"org:read",
"org:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"additionalProperties": {
"type": "integer"
}
},
"examples": {
"QueryReplayCountByIssueOrTransactionId": {
"value": {
"1": 9,
"2": 0,
"5": 0,
"9": 1,
"10": 29
},
"summary": "Query replay count by issue or transaction id"
}
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
},
"403": {
"description": "Forbidden"
}
}
}
},
"/api/0/organizations/{organization_slug}/replay-selectors/": {
"get": {
"operationId": "List an Organization's Selectors",
"description": "Return a list of selectors for a given organization.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "query",
"name": "environment",
"schema": {
"type": "array",
"items": {
"type": "string"
}
},
"description": "The name of environments to filter by."
},
{
"in": "query",
"name": "statsPeriod",
"schema": {
"type": "string",
"minLength": 1
},
"description": "This defines the range of the time series, relative to now. The range is given in a `<number><unit>` format. For example `1d` for a one day range. Possible units are `m` for minutes, `h` for hours, `d` for days and `w` for weeks.You must either provide a `statsPeriod`, or a `start` and `end`."
},
{
"in": "query",
"name": "start",
"schema": {
"type": "string",
"format": "date-time"
},
"description": "This defines the start of the time series range as an explicit datetime, either in UTC ISO8601 or epoch seconds.Use along with `end` instead of `statsPeriod`."
},
{
"in": "query",
"name": "end",
"schema": {
"type": "string",
"format": "date-time"
},
"description": "This defines the inclusive end of the time series range as an explicit datetime, either in UTC ISO8601 or epoch seconds.Use along with `start` instead of `statsPeriod`."
},
{
"in": "query",
"name": "project",
"schema": {
"type": "array",
"items": {}
},
"description": "The ID of the projects to filter by."
},
{
"in": "query",
"name": "sort",
"schema": {
"type": "string",
"minLength": 1
},
"description": "The field to sort the output by."
},
{
"in": "query",
"name": "cursor",
"schema": {
"type": "string",
"minLength": 1
},
"description": "A pointer to the last object fetched and its sort order; used to retrieve the next or previous results."
},
{
"in": "query",
"name": "per_page",
"schema": {
"type": "integer"
},
"description": "Limit the number of rows to return in the result. Default and maximum allowed is 100."
},
{
"in": "query",
"name": "query",
"schema": {
"type": "string"
},
"description": "The search filter for your query, read more about query syntax [here](https://docs.sentry.io/product/sentry-basics/search/).\n\nexample: `query=(transaction:foo AND release:abc) OR (transaction:[bar,baz] AND release:def)`\n"
}
],
"tags": [
"Replays"
],
"security": [
{
"auth_token": [
"org:admin",
"org:read",
"org:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"count_dead_clicks": {
"type": "integer"
},
"count_rage_clicks": {
"type": "integer"
},
"dom_element": {
"type": "string"
},
"element": {
"type": "object",
"properties": {
"alt": {
"type": "string"
},
"aria_label": {
"type": "string"
},
"class": {
"type": "array",
"items": {
"type": "string"
}
},
"id": {
"type": "string"
},
"role": {
"type": "string"
},
"tag": {
"type": "string"
},
"testid": {
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"alt",
"aria_label",
"class",
"id",
"role",
"tag",
"testid",
"title"
]
},
"project_id": {
"type": "string"
}
}
}
}
},
"required": [
"data"
]
},
"examples": {
"RetrieveACollectionOfSelectorsForAnOrganization.": {
"value": {
"data": [
{
"count_dead_clicks": 2,
"count_rage_clicks": 1,
"dom_element": "div#myid.class1.class2",
"element": {
"alt": "",
"aria_label": "",
"class": [
"class1",
"class2"
],
"id": "myid",
"role": "",
"tag": "div",
"testid": "",
"title": ""
},
"project_id": "1"
}
]
},
"summary": "Retrieve a collection of selectors for an organization."
}
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
},
"403": {
"description": "Forbidden"
}
}
}
},
"/api/0/organizations/{organization_slug}/replays/": {
"get": {
"operationId": "List an Organization's Replays",
"description": "Return a list of replays belonging to an organization.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "query",
"name": "statsPeriod",
"schema": {
"type": "string",
"minLength": 1
},
"description": "\nThis defines the range of the time series, relative to now. The range is given in a\n`<number><unit>` format. For example `1d` for a one day range. Possible units are `m` for\nminutes, `h` for hours, `d` for days and `w` for weeks. You must either provide a\n`statsPeriod`, or a `start` and `end`.\n"
},
{
"in": "query",
"name": "start",
"schema": {
"type": "string",
"format": "date-time"
},
"description": "\nThis defines the start of the time series range as an explicit datetime, either in UTC\nISO8601 or epoch seconds. Use along with `end` instead of `statsPeriod`.\n"
},
{
"in": "query",
"name": "end",
"schema": {
"type": "string",
"format": "date-time"
},
"description": "\nThis defines the inclusive end of the time series range as an explicit datetime, either in\nUTC ISO8601 or epoch seconds. Use along with `start` instead of `statsPeriod`.\n"
},
{
"in": "query",
"name": "field",
"schema": {
"type": "array",
"items": {
"enum": [
"activity",
"browser",
"count_dead_clicks",
"count_errors",
"count_rage_clicks",
"count_segments",
"count_urls",
"device",
"dist",
"duration",
"environment",
"error_ids",
"finished_at",
"id",
"is_archived",
"os",
"platform",
"project_id",
"releases",
"sdk",
"started_at",
"tags",
"trace_ids",
"urls",
"user",
"clicks",
"info_ids",
"warning_ids",
"count_warnings",
"count_infos"
],
"type": "string",
"description": "* `activity` - activity\n* `browser` - browser\n* `count_dead_clicks` - count_dead_clicks\n* `count_errors` - count_errors\n* `count_rage_clicks` - count_rage_clicks\n* `count_segments` - count_segments\n* `count_urls` - count_urls\n* `device` - device\n* `dist` - dist\n* `duration` - duration\n* `environment` - environment\n* `error_ids` - error_ids\n* `finished_at` - finished_at\n* `id` - id\n* `is_archived` - is_archived\n* `os` - os\n* `platform` - platform\n* `project_id` - project_id\n* `releases` - releases\n* `sdk` - sdk\n* `started_at` - started_at\n* `tags` - tags\n* `trace_ids` - trace_ids\n* `urls` - urls\n* `user` - user\n* `clicks` - clicks\n* `info_ids` - info_ids\n* `warning_ids` - warning_ids\n* `count_warnings` - count_warnings\n* `count_infos` - count_infos"
}
},
"description": "Specifies a field that should be marshaled in the output. Invalid fields will be rejected."
},
{
"in": "query",
"name": "project",
"schema": {
"type": "array",
"items": {
"type": "integer"
}
},
"description": "The ID of the projects to filter by."
},
{
"in": "query",
"name": "environment",
"schema": {
"type": "string",
"minLength": 1
},
"description": "The environment to filter by."
},
{
"in": "query",
"name": "sort",
"schema": {
"type": "string",
"minLength": 1
},
"description": "The field to sort the output by."
},
{
"in": "query",
"name": "query",
"schema": {
"type": "string",
"minLength": 1
},
"description": "A structured query string to filter the output by."
},
{
"in": "query",
"name": "per_page",
"schema": {
"type": "integer"
},
"description": "Limit the number of rows to return in the result."
},
{
"in": "query",
"name": "cursor",
"schema": {
"type": "string",
"minLength": 1
},
"description": "The cursor parameter is used to paginate results. See [here](https://docs.sentry.io/api/pagination/) for how to use this query parameter"
}
],
"tags": [
"Replays"
],
"security": [
{
"auth_token": [
"org:admin",
"org:read",
"org:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"project_id": {
"type": "string"
},
"trace_ids": {
"type": "array",
"items": {
"type": "string"
}
},
"error_ids": {
"type": "array",
"items": {
"type": "string"
}
},
"environment": {
"type": "string",
"nullable": true
},
"tags": {
"anyOf": [
{
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
},
{
"type": "array",
"items": {}
}
]
},
"user": {
"type": "object",
"properties": {
"id": {
"type": "string",
"nullable": true
},
"username": {
"type": "string",
"nullable": true
},
"email": {
"type": "string",
"nullable": true
},
"ip": {
"type": "string",
"nullable": true
},
"display_name": {
"type": "string",
"nullable": true
}
}
},
"sdk": {
"type": "object",
"properties": {
"name": {
"type": "string",
"nullable": true
},
"version": {
"type": "string",
"nullable": true
}
}
},
"os": {
"type": "object",
"properties": {
"name": {
"type": "string",
"nullable": true
},
"version": {
"type": "string",
"nullable": true
}
}
},
"browser": {
"type": "object",
"properties": {
"name": {
"type": "string",
"nullable": true
},
"version": {
"type": "string",
"nullable": true
}
}
},
"device": {
"type": "object",
"properties": {
"name": {
"type": "string",
"nullable": true
},
"brand": {
"type": "string",
"nullable": true
},
"model": {
"type": "string",
"nullable": true
},
"family": {
"type": "string",
"nullable": true
}
}
},
"is_archived": {
"type": "boolean",
"nullable": true
},
"urls": {
"type": "array",
"items": {
"type": "string"
},
"nullable": true
},
"clicks": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"count_dead_clicks": {
"type": "integer",
"nullable": true
},
"count_rage_clicks": {
"type": "integer",
"nullable": true
},
"count_errors": {
"type": "integer",
"nullable": true
},
"duration": {
"type": "integer",
"nullable": true
},
"finished_at": {
"type": "string",
"nullable": true
},
"started_at": {
"type": "string",
"nullable": true
},
"activity": {
"type": "integer",
"nullable": true
},
"count_urls": {
"type": "integer",
"nullable": true
},
"replay_type": {
"type": "string"
},
"count_segments": {
"type": "integer",
"nullable": true
},
"platform": {
"type": "string",
"nullable": true
},
"releases": {
"type": "array",
"items": {
"type": "string"
}
},
"dist": {
"type": "string",
"nullable": true
},
"count_warnings": {
"type": "integer",
"nullable": true
},
"count_infos": {
"type": "integer",
"nullable": true
}
}
}
},
"examples": {
"GetListOfReplays": {
"value": [
{
"activity": 5,
"browser": {
"name": "Chome",
"version": "103.0.38"
},
"count_dead_clicks": 6,
"count_rage_clicks": 1,
"count_errors": 1,
"count_segments": 0,
"count_urls": 1,
"device": {
"brand": "Apple",
"family": "iPhone",
"model": "11",
"name": "iPhone 11"
},
"dist": null,
"duration": 576,
"environment": "production",
"error_ids": [
"7e07485f-12f9-416b-8b14-26260799b51f"
],
"finished_at": "2022-07-07T14:15:33.201019",
"id": "7e07485f-12f9-416b-8b14-26260799b51f",
"is_archived": null,
"os": {
"name": "iOS",
"version": "16.2"
},
"platform": "Sentry",
"project_id": "639195",
"releases": [
"version@1.4"
],
"sdk": {
"name": "Thundercat",
"version": "27.1"
},
"started_at": "2022-07-07T14:05:57.909921",
"tags": {
"hello": [
"world",
"Lionel Richie"
]
},
"trace_ids": [
"7e07485f-12f9-416b-8b14-26260799b51f"
],
"urls": [
"/organizations/abc123/issues"
],
"user": {
"display_name": "John Doe",
"email": "john.doe@example.com",
"id": "30246326",
"ip": "213.164.1.114",
"username": "John Doe"
}
}
],
"summary": "Get list of replays"
}
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
},
"403": {
"description": "Forbidden"
}
}
}
},
"/api/0/organizations/{organization_slug}/replays/{replay_id}/": {
"get": {
"operationId": "Retrieve a Replay Instance",
"description": "Return details on an individual replay.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "replay_id",
"schema": {
"type": "string",
"format": "uuid"
},
"description": "The ID of the replay you'd like to retrieve.",
"required": true
},
{
"in": "query",
"name": "statsPeriod",
"schema": {
"type": "string",
"minLength": 1
},
"description": "\nThis defines the range of the time series, relative to now. The range is given in a\n`<number><unit>` format. For example `1d` for a one day range. Possible units are `m` for\nminutes, `h` for hours, `d` for days and `w` for weeks. You must either provide a\n`statsPeriod`, or a `start` and `end`.\n"
},
{
"in": "query",
"name": "start",
"schema": {
"type": "string",
"format": "date-time"
},
"description": "\nThis defines the start of the time series range as an explicit datetime, either in UTC\nISO8601 or epoch seconds. Use along with `end` instead of `statsPeriod`.\n"
},
{
"in": "query",
"name": "end",
"schema": {
"type": "string",
"format": "date-time"
},
"description": "\nThis defines the inclusive end of the time series range as an explicit datetime, either in\nUTC ISO8601 or epoch seconds. Use along with `start` instead of `statsPeriod`.\n"
},
{
"in": "query",
"name": "field",
"schema": {
"type": "array",
"items": {
"enum": [
"activity",
"browser",
"count_dead_clicks",
"count_errors",
"count_rage_clicks",
"count_segments",
"count_urls",
"device",
"dist",
"duration",
"environment",
"error_ids",
"finished_at",
"id",
"is_archived",
"os",
"platform",
"project_id",
"releases",
"sdk",
"started_at",
"tags",
"trace_ids",
"urls",
"user",
"clicks",
"info_ids",
"warning_ids",
"count_warnings",
"count_infos"
],
"type": "string",
"description": "* `activity` - activity\n* `browser` - browser\n* `count_dead_clicks` - count_dead_clicks\n* `count_errors` - count_errors\n* `count_rage_clicks` - count_rage_clicks\n* `count_segments` - count_segments\n* `count_urls` - count_urls\n* `device` - device\n* `dist` - dist\n* `duration` - duration\n* `environment` - environment\n* `error_ids` - error_ids\n* `finished_at` - finished_at\n* `id` - id\n* `is_archived` - is_archived\n* `os` - os\n* `platform` - platform\n* `project_id` - project_id\n* `releases` - releases\n* `sdk` - sdk\n* `started_at` - started_at\n* `tags` - tags\n* `trace_ids` - trace_ids\n* `urls` - urls\n* `user` - user\n* `clicks` - clicks\n* `info_ids` - info_ids\n* `warning_ids` - warning_ids\n* `count_warnings` - count_warnings\n* `count_infos` - count_infos"
}
},
"description": "Specifies a field that should be marshaled in the output. Invalid fields will be rejected."
},
{
"in": "query",
"name": "project",
"schema": {
"type": "array",
"items": {
"type": "integer"
}
},
"description": "The ID of the projects to filter by."
},
{
"in": "query",
"name": "environment",
"schema": {
"type": "string",
"minLength": 1
},
"description": "The environment to filter by."
},
{
"in": "query",
"name": "sort",
"schema": {
"type": "string",
"minLength": 1
},
"description": "The field to sort the output by."
},
{
"in": "query",
"name": "query",
"schema": {
"type": "string",
"minLength": 1
},
"description": "A structured query string to filter the output by."
},
{
"in": "query",
"name": "per_page",
"schema": {
"type": "integer"
},
"description": "Limit the number of rows to return in the result."
},
{
"in": "query",
"name": "cursor",
"schema": {
"type": "string",
"minLength": 1
},
"description": "The cursor parameter is used to paginate results. See [here](https://docs.sentry.io/api/pagination/) for how to use this query parameter"
}
],
"tags": [
"Replays"
],
"security": [
{
"auth_token": [
"org:admin",
"org:read",
"org:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"project_id": {
"type": "string"
},
"trace_ids": {
"type": "array",
"items": {
"type": "string"
}
},
"error_ids": {
"type": "array",
"items": {
"type": "string"
}
},
"environment": {
"type": "string",
"nullable": true
},
"tags": {
"anyOf": [
{
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
},
{
"type": "array",
"items": {}
}
]
},
"user": {
"type": "object",
"properties": {
"id": {
"type": "string",
"nullable": true
},
"username": {
"type": "string",
"nullable": true
},
"email": {
"type": "string",
"nullable": true
},
"ip": {
"type": "string",
"nullable": true
},
"display_name": {
"type": "string",
"nullable": true
}
}
},
"sdk": {
"type": "object",
"properties": {
"name": {
"type": "string",
"nullable": true
},
"version": {
"type": "string",
"nullable": true
}
}
},
"os": {
"type": "object",
"properties": {
"name": {
"type": "string",
"nullable": true
},
"version": {
"type": "string",
"nullable": true
}
}
},
"browser": {
"type": "object",
"properties": {
"name": {
"type": "string",
"nullable": true
},
"version": {
"type": "string",
"nullable": true
}
}
},
"device": {
"type": "object",
"properties": {
"name": {
"type": "string",
"nullable": true
},
"brand": {
"type": "string",
"nullable": true
},
"model": {
"type": "string",
"nullable": true
},
"family": {
"type": "string",
"nullable": true
}
}
},
"is_archived": {
"type": "boolean",
"nullable": true
},
"urls": {
"type": "array",
"items": {
"type": "string"
},
"nullable": true
},
"clicks": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"count_dead_clicks": {
"type": "integer",
"nullable": true
},
"count_rage_clicks": {
"type": "integer",
"nullable": true
},
"count_errors": {
"type": "integer",
"nullable": true
},
"duration": {
"type": "integer",
"nullable": true
},
"finished_at": {
"type": "string",
"nullable": true
},
"started_at": {
"type": "string",
"nullable": true
},
"activity": {
"type": "integer",
"nullable": true
},
"count_urls": {
"type": "integer",
"nullable": true
},
"replay_type": {
"type": "string"
},
"count_segments": {
"type": "integer",
"nullable": true
},
"platform": {
"type": "string",
"nullable": true
},
"releases": {
"type": "array",
"items": {
"type": "string"
}
},
"dist": {
"type": "string",
"nullable": true
},
"count_warnings": {
"type": "integer",
"nullable": true
},
"count_infos": {
"type": "integer",
"nullable": true
}
}
},
"examples": {
"GetSingleReplayDetails": {
"value": {
"activity": 5,
"browser": {
"name": "Chome",
"version": "103.0.38"
},
"count_dead_clicks": 6,
"count_rage_clicks": 1,
"count_errors": 1,
"count_segments": 0,
"count_urls": 1,
"device": {
"brand": "Apple",
"family": "iPhone",
"model": "11",
"name": "iPhone 11"
},
"dist": null,
"duration": 576,
"environment": "production",
"error_ids": [
"7e07485f-12f9-416b-8b14-26260799b51f"
],
"finished_at": "2022-07-07T14:15:33.201019",
"id": "7e07485f-12f9-416b-8b14-26260799b51f",
"is_archived": null,
"os": {
"name": "iOS",
"version": "16.2"
},
"platform": "Sentry",
"project_id": "639195",
"releases": [
"version@1.4"
],
"sdk": {
"name": "Thundercat",
"version": "27.1"
},
"started_at": "2022-07-07T14:05:57.909921",
"tags": {
"hello": [
"world",
"Lionel Richie"
]
},
"trace_ids": [
"7e07485f-12f9-416b-8b14-26260799b51f"
],
"urls": [
"/organizations/abc123/issues"
],
"user": {
"display_name": "John Doe",
"email": "john.doe@example.com",
"id": "30246326",
"ip": "213.164.1.114",
"username": "John Doe"
}
},
"summary": "Get single replay details"
}
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/organizations/{organization_slug}/scim/v2/Groups": {
"get": {
"operationId": "List an Organization's Paginated Teams",
"description": "Returns a paginated list of teams bound to a organization with a SCIM Groups GET Request.\n\nNote that the members field will only contain up to 10,000 members.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "query",
"name": "startIndex",
"schema": {
"type": "integer",
"minimum": 1,
"default": 1
},
"description": "SCIM 1-offset based index for pagination."
},
{
"in": "query",
"name": "count",
"schema": {
"type": "integer",
"minimum": 0,
"default": 100
},
"description": "The maximum number of results the query should return, maximum of 100."
},
{
"in": "query",
"name": "filter",
"schema": {
"type": "string",
"minLength": 1
},
"description": "A SCIM filter expression. The only operator currently supported is `eq`."
},
{
"in": "query",
"name": "excludedAttributes",
"schema": {
"type": "array",
"items": {
"type": "string"
},
"default": []
},
"description": "Fields that should be left off of return values. Right now the only supported field for this query is members."
}
],
"tags": [
"SCIM"
],
"security": [
{
"auth_token": [
"team:admin",
"team:read",
"team:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"schemas": {
"type": "array",
"items": {
"type": "string"
}
},
"totalResults": {
"type": "integer"
},
"startIndex": {
"type": "integer"
},
"itemsPerPage": {
"type": "integer"
},
"Resources": {
"type": "array",
"items": {
"type": "object",
"properties": {
"schemas": {
"type": "array",
"items": {
"type": "string"
}
},
"id": {
"type": "string"
},
"displayName": {
"type": "string"
},
"meta": {
"type": "object",
"properties": {
"resourceType": {
"type": "string"
}
},
"required": [
"resourceType"
]
},
"members": {
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string"
},
"display": {
"type": "string"
}
},
"required": [
"display",
"value"
]
}
}
},
"required": [
"displayName",
"id",
"meta",
"schemas"
]
}
}
},
"required": [
"Resources",
"itemsPerPage",
"schemas",
"startIndex",
"totalResults"
]
},
"examples": {
"ListAnOrgs'sPaginatedTeams": {
"value": {
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"totalResults": 1,
"startIndex": 1,
"itemsPerPage": 1,
"Resources": [
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"id": "23232",
"displayName": "test-scimv2",
"members": [],
"meta": {
"resourceType": "Group"
}
}
]
},
"summary": "List an orgs's paginated teams"
}
}
}
},
"description": ""
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"post": {
"operationId": "Provision a New Team",
"description": "Create a new team bound to an organization via a SCIM Groups POST\nRequest. The slug will have a normalization of uppercases/spaces to\nlowercases and dashes.\n\nNote that teams are always created with an empty member set.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
}
],
"tags": [
"SCIM"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"displayName": {
"type": "string",
"description": "The slug of the team that is shown in the UI."
}
},
"required": [
"displayName"
]
}
}
},
"required": true
},
"security": [
{
"auth_token": [
"team:admin",
"team:write"
]
}
],
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"schemas": {
"type": "array",
"items": {
"type": "string"
}
},
"id": {
"type": "string"
},
"displayName": {
"type": "string"
},
"meta": {
"type": "object",
"properties": {
"resourceType": {
"type": "string"
}
},
"required": [
"resourceType"
]
},
"members": {
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string"
},
"display": {
"type": "string"
}
},
"required": [
"display",
"value"
]
}
}
},
"required": [
"displayName",
"id",
"meta",
"schemas"
]
},
"examples": {
"ProvisionTeam": {
"value": {
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"displayName": "Test SCIMv2",
"members": [],
"meta": {
"resourceType": "Group"
},
"id": "123"
},
"summary": "provisionTeam"
}
}
}
},
"description": ""
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/organizations/{organization_slug}/scim/v2/Groups/{team_id}": {
"get": {
"operationId": "Query an Individual Team",
"description": "Query an individual team with a SCIM Group GET Request.\n- Note that the members field will only contain up to 10000 members.",
"parameters": [
{
"in": "path",
"name": "team_id",
"schema": {
"type": "integer"
},
"description": "The ID of the team you'd like to query / update.",
"required": true
},
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
}
],
"tags": [
"SCIM"
],
"security": [
{
"auth_token": [
"team:admin",
"team:read",
"team:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"schemas": {
"type": "array",
"items": {
"type": "string"
}
},
"id": {
"type": "string"
},
"displayName": {
"type": "string"
},
"meta": {
"type": "object",
"properties": {
"resourceType": {
"type": "string"
}
},
"required": [
"resourceType"
]
},
"members": {
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string"
},
"display": {
"type": "string"
}
},
"required": [
"display",
"value"
]
}
}
},
"required": [
"displayName",
"id",
"meta",
"schemas"
]
},
"examples": {
"QueryIndividualTeam": {
"value": {
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"id": "23232",
"displayName": "test-scimv2",
"members": [],
"meta": {
"resourceType": "Group"
}
},
"summary": "Query individual team"
}
}
}
},
"description": ""
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"patch": {
"operationId": "Update a Team's Attributes",
"description": "Update a team's attributes with a SCIM Group PATCH Request.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "team_id",
"schema": {
"type": "integer"
},
"description": "The ID of the team you'd like to query / update.",
"required": true
}
],
"tags": [
"SCIM"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"Operations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"op": {
"type": "string"
},
"value": {
"type": "object",
"additionalProperties": {}
},
"path": {
"type": "string"
}
},
"required": [
"op"
]
},
"description": "The list of operations to perform. Valid operations are:\n* Renaming a team:\n```json\n{\n \"Operations\": [{\n \"op\": \"replace\",\n \"value\": {\n \"id\": 23,\n \"displayName\": \"newName\"\n }\n }]\n}\n```\n* Adding a member to a team:\n```json\n{\n \"Operations\": [{\n \"op\": \"add\",\n \"path\": \"members\",\n \"value\": [\n {\n \"value\": 23,\n \"display\": \"testexample@example.com\"\n }\n ]\n }]\n}\n```\n* Removing a member from a team:\n```json\n{\n \"Operations\": [{\n \"op\": \"remove\",\n \"path\": \"members[value eq \"23\"]\"\n }]\n}\n```\n* Replacing an entire member set of a team:\n```json\n{\n \"Operations\": [{\n \"op\": \"replace\",\n \"path\": \"members\",\n \"value\": [\n {\n \"value\": 23,\n \"display\": \"testexample2@sentry.io\"\n },\n {\n \"value\": 24,\n \"display\": \"testexample3@sentry.io\"\n }\n ]\n }]\n}\n```\n"
}
},
"required": [
"Operations"
]
}
}
},
"required": true
},
"security": [
{
"auth_token": [
"team:admin",
"team:write"
]
}
],
"responses": {
"204": {
"description": "Success"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"delete": {
"operationId": "Delete an Individual Team",
"description": "Delete a team with a SCIM Group DELETE Request.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "team_id",
"schema": {
"type": "integer"
},
"description": "The ID of the team you'd like to query / update.",
"required": true
}
],
"tags": [
"SCIM"
],
"security": [
{
"auth_token": [
"team:admin"
]
}
],
"responses": {
"204": {
"description": "Success"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/organizations/{organization_slug}/scim/v2/Users": {
"get": {
"operationId": "List an Organization's Members",
"description": "Returns a paginated list of members bound to a organization with a SCIM Users GET Request.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "query",
"name": "startIndex",
"schema": {
"type": "integer",
"minimum": 1,
"default": 1
},
"description": "SCIM 1-offset based index for pagination."
},
{
"in": "query",
"name": "count",
"schema": {
"type": "integer",
"minimum": 0,
"default": 100
},
"description": "The maximum number of results the query should return, maximum of 100."
},
{
"in": "query",
"name": "filter",
"schema": {
"type": "string",
"minLength": 1
},
"description": "A SCIM filter expression. The only operator currently supported is `eq`."
},
{
"in": "query",
"name": "excludedAttributes",
"schema": {
"type": "array",
"items": {
"type": "string"
},
"default": []
},
"description": "Fields that should be left off of return values. Right now the only supported field for this query is members."
}
],
"tags": [
"SCIM"
],
"security": [
{
"auth_token": [
"member:admin",
"member:read",
"member:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"schemas": {
"type": "array",
"items": {
"type": "string"
}
},
"totalResults": {
"type": "integer"
},
"startIndex": {
"type": "integer"
},
"itemsPerPage": {
"type": "integer"
},
"Resources": {
"type": "array",
"items": {
"type": "object",
"description": "Conforming to the SCIM RFC, this represents a Sentry Org Member\nas a SCIM user object.",
"properties": {
"active": {
"type": "boolean"
},
"schemas": {
"type": "array",
"items": {
"type": "string"
}
},
"id": {
"type": "string"
},
"userName": {
"type": "string"
},
"name": {
"type": "object",
"properties": {
"givenName": {
"type": "string"
},
"familyName": {
"type": "string"
}
},
"required": [
"familyName",
"givenName"
]
},
"emails": {
"type": "array",
"items": {
"type": "object",
"properties": {
"primary": {
"type": "boolean"
},
"value": {
"type": "string"
},
"type": {
"type": "string"
}
},
"required": [
"primary",
"type",
"value"
]
}
},
"meta": {
"type": "object",
"properties": {
"resourceType": {
"type": "string"
}
},
"required": [
"resourceType"
]
},
"sentryOrgRole": {
"type": "string"
}
},
"required": [
"emails",
"id",
"meta",
"name",
"schemas",
"sentryOrgRole",
"userName"
]
}
}
},
"required": [
"Resources",
"itemsPerPage",
"schemas",
"startIndex",
"totalResults"
]
},
"examples": {
"ListAnOrganization'sMembers": {
"value": {
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"totalResults": 1,
"startIndex": 1,
"itemsPerPage": 1,
"Resources": [
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"id": "102",
"userName": "test.user@okta.local",
"emails": [
{
"primary": true,
"value": "test.user@okta.local",
"type": "work"
}
],
"name": {
"familyName": "N/A",
"givenName": "N/A"
},
"active": true,
"meta": {
"resourceType": "User"
},
"sentryOrgRole": "member"
}
]
},
"summary": "List an Organization's Members"
}
}
}
},
"description": ""
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"post": {
"operationId": "Provision a New Organization Member",
"description": "Create a new Organization Member via a SCIM Users POST Request.\n\nNote that this API does not support setting secondary emails.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
}
],
"tags": [
"SCIM"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"userName": {
"type": "string",
"format": "email",
"description": "The SAML field used for email."
},
"sentryOrgRole": {
"enum": [
"billing",
"member",
"manager"
],
"type": "string",
"description": "The organization role of the member. If unspecified, this will be\n set to the organization's default role. The options are:\n\n* `billing` - Can manage payment and compliance details.\n* `member` - Can view and act on events, as well as view most other data within the organization.\n* `manager` - Has full management access to all teams and projects. Can also manage\n the organization's membership."
}
},
"required": [
"userName"
]
}
}
},
"required": true
},
"security": [
{
"auth_token": [
"member:admin",
"member:write"
]
}
],
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "Conforming to the SCIM RFC, this represents a Sentry Org Member\nas a SCIM user object.",
"properties": {
"active": {
"type": "boolean"
},
"schemas": {
"type": "array",
"items": {
"type": "string"
}
},
"id": {
"type": "string"
},
"userName": {
"type": "string"
},
"name": {
"type": "object",
"properties": {
"givenName": {
"type": "string"
},
"familyName": {
"type": "string"
}
},
"required": [
"familyName",
"givenName"
]
},
"emails": {
"type": "array",
"items": {
"type": "object",
"properties": {
"primary": {
"type": "boolean"
},
"value": {
"type": "string"
},
"type": {
"type": "string"
}
},
"required": [
"primary",
"type",
"value"
]
}
},
"meta": {
"type": "object",
"properties": {
"resourceType": {
"type": "string"
}
},
"required": [
"resourceType"
]
},
"sentryOrgRole": {
"type": "string"
}
},
"required": [
"emails",
"id",
"meta",
"name",
"schemas",
"sentryOrgRole",
"userName"
]
},
"examples": {
"ProvisionNewMember": {
"value": {
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"id": "242",
"userName": "test.user@okta.local",
"emails": [
{
"primary": true,
"value": "test.user@okta.local",
"type": "work"
}
],
"active": true,
"name": {
"familyName": "N/A",
"givenName": "N/A"
},
"meta": {
"resourceType": "User"
},
"sentryOrgRole": "member"
},
"summary": "Provision new member"
}
}
}
},
"description": ""
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/organizations/{organization_slug}/scim/v2/Users/{member_id}": {
"get": {
"operationId": "Query an Individual Organization Member",
"description": "Query an individual organization member with a SCIM User GET Request.\n- The `name` object will contain fields `firstName` and `lastName` with the values of `N/A`.\nSentry's SCIM API does not currently support these fields but returns them for compatibility purposes.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "member_id",
"schema": {
"type": "string"
},
"description": "The ID of the member to query.",
"required": true
}
],
"tags": [
"SCIM"
],
"security": [
{
"auth_token": [
"member:admin",
"member:read",
"member:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "Conforming to the SCIM RFC, this represents a Sentry Org Member\nas a SCIM user object.",
"properties": {
"active": {
"type": "boolean"
},
"schemas": {
"type": "array",
"items": {
"type": "string"
}
},
"id": {
"type": "string"
},
"userName": {
"type": "string"
},
"name": {
"type": "object",
"properties": {
"givenName": {
"type": "string"
},
"familyName": {
"type": "string"
}
},
"required": [
"familyName",
"givenName"
]
},
"emails": {
"type": "array",
"items": {
"type": "object",
"properties": {
"primary": {
"type": "boolean"
},
"value": {
"type": "string"
},
"type": {
"type": "string"
}
},
"required": [
"primary",
"type",
"value"
]
}
},
"meta": {
"type": "object",
"properties": {
"resourceType": {
"type": "string"
}
},
"required": [
"resourceType"
]
},
"sentryOrgRole": {
"type": "string"
}
},
"required": [
"emails",
"id",
"meta",
"name",
"schemas",
"sentryOrgRole",
"userName"
]
},
"examples": {
"QueryOrgMember": {
"value": {
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User"
],
"id": "102",
"userName": "test.user@okta.local",
"emails": [
{
"primary": true,
"value": "test.user@okta.local",
"type": "work"
}
],
"name": {
"familyName": "N/A",
"givenName": "N/A"
},
"active": true,
"meta": {
"resourceType": "User"
},
"sentryOrgRole": "member"
},
"summary": "Query org member"
}
}
}
},
"description": ""
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"patch": {
"operationId": "Update an Organization Member's Attributes",
"description": "Update an organization member's attributes with a SCIM PATCH Request.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "member_id",
"schema": {
"type": "string"
},
"description": "The ID of the member to update.",
"required": true
}
],
"tags": [
"SCIM"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"Operations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"op": {
"type": "string"
},
"value": {},
"path": {
"type": "string"
}
},
"required": [
"op",
"value"
]
},
"description": "A list of operations to perform. Currently, the only valid operation is setting\na member's `active` attribute to false, after which the member will be permanently deleted.\n```json\n{\n \"Operations\": [{\n \"op\": \"replace\",\n \"path\": \"active\",\n \"value\": False\n }]\n}\n```\n",
"maxItems": 100
}
},
"required": [
"Operations"
]
}
}
},
"required": true
},
"security": [
{
"auth_token": [
"member:admin",
"member:write"
]
}
],
"responses": {
"204": {
"description": "Success"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"delete": {
"operationId": "Delete an Organization Member via SCIM",
"description": "Delete an organization member with a SCIM User DELETE Request.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "member_id",
"schema": {
"type": "string"
},
"description": "The ID of the member to delete.",
"required": true
}
],
"tags": [
"SCIM"
],
"security": [
{
"auth_token": [
"member:admin"
]
}
],
"responses": {
"204": {
"description": "Success"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/organizations/{organization_slug}/sessions/": {
"get": {
"operationId": "Retrieve Release Health Session Statistics",
"description": " Returns a time series of release health session statistics for projects bound to an \"\n \"organization.\n\nThe interval and date range are subject to certain restrictions and rounding \"\n \"rules.\n\nThe date range is rounded to align with the interval, and is rounded to at least one \"\n \"hour. The interval can at most be one day and at least one hour currently. It has to cleanly \"\n \"divide one day, for rounding reasons.\n\nBecause of technical limitations, this endpoint returns \"\n \"at most 10000 data points. For example, if you select a 90 day window grouped by releases, \"\n \"you will see at most `floor(10k / (90 + 1)) = 109` releases. To get more results, reduce the \"\n \"`statsPeriod`.\"",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "query",
"name": "field",
"schema": {
"type": "array",
"items": {
"type": "string"
}
},
"description": "The list of fields to query.\n\nThe available fields are\n - `sum(session)`\n - `count_unique(\"\n \"user)`\n - `avg`, `p50`, `p75`, `p90`, `p95`, `p99`, `max` applied to `session.duration`. For \"\n \"example, `p99(session.duration)`. Session duration is [no longer being recorded](\"\n \"https://github.com/getsentry/sentry/discussions/42716) as of on Jan 12, 2023. Returned data may \"\n \"be incomplete.\n - `crash_rate`, `crash_free_rate` applied to `user` or `session`. For example, \"\n \"`crash_free_rate(user)`",
"required": true
},
{
"in": "query",
"name": "start",
"schema": {
"type": "string",
"format": "date-time"
},
"description": "The start of the period of time for the query, expected in ISO-8601 format. For example `2001-12-14T12:34:56.7890`."
},
{
"in": "query",
"name": "end",
"schema": {
"type": "string",
"format": "date-time"
},
"description": "The end of the period of time for the query, expected in ISO-8601 format. For example `2001-12-14T12:34:56.7890`."
},
{
"in": "query",
"name": "environment",
"schema": {
"type": "array",
"items": {
"type": "string"
}
},
"description": "The name of environments to filter by."
},
{
"in": "query",
"name": "statsPeriod",
"schema": {
"type": "string"
},
"description": "The period of time for the query, will override the start & end parameters, a number followed by one of:\n- `d` for days\n- `h` for hours\n- `m` for minutes\n- `s` for seconds\n- `w` for weeks\n\nFor example `24h`, to mean query data starting from 24 hours ago to now."
},
{
"in": "query",
"name": "project",
"schema": {
"type": "array",
"items": {
"type": "integer"
}
},
"description": "The IDs of projects to filter by. `-1` means all available projects.\nFor example the following are valid parameters:\n- `/?project=1234&project=56789`\n- `/?project=-1`\n"
},
{
"in": "query",
"name": "per_page",
"schema": {
"type": "integer"
},
"description": "The number of groups to return per request."
},
{
"in": "query",
"name": "interval",
"schema": {
"type": "string"
},
"description": "Resolution of the time series, given in the same format as `statsPeriod`.\n\nThe default and\n the minimum interval is `1h`."
},
{
"in": "query",
"name": "groupBy",
"schema": {
"type": "string"
},
"description": "The list of properties to group by.\n\nThe available groupBy conditions are `project`,\n `release`, `environment` and `session.status`."
},
{
"in": "query",
"name": "orderBy",
"schema": {
"type": "string"
},
"description": "An optional field to order by, which must be one of the fields provided in `field`. Use `-`\n for descending order, for example `-sum(session)`"
},
{
"in": "query",
"name": "includeTotals",
"schema": {
"type": "integer"
},
"description": "Specify `0` to exclude totals from the response. The default is `1`"
},
{
"in": "query",
"name": "includeSeries",
"schema": {
"type": "integer"
},
"description": "Specify `0` to exclude series from the response. The default is `1`"
},
{
"in": "query",
"name": "query",
"schema": {
"type": "string"
},
"description": "The search filter for your query, read more about query syntax [here](https://docs.sentry.io/product/sentry-basics/search/).\n\nexample: `query=(transaction:foo AND release:abc) OR (transaction:[bar,baz] AND release:def)`\n"
}
],
"tags": [
"Releases"
],
"security": [
{
"auth_token": [
"org:admin",
"org:read",
"org:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"start": {
"type": "string"
},
"end": {
"type": "string"
},
"intervals": {
"type": "array",
"items": {
"type": "string"
}
},
"groups": {
"type": "array",
"items": {
"type": "object",
"properties": {
"by": {
"type": "object",
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
}
},
"series": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "number",
"format": "double",
"nullable": true
}
}
},
"totals": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double",
"nullable": true
}
}
},
"required": [
"by",
"series",
"totals"
]
}
},
"query": {
"type": "string"
}
},
"required": [
"end",
"groups",
"intervals",
"query",
"start"
]
},
"examples": {
"QuerySessions": {
"value": {
"groups": [
{
"by": {
"session.status": "errored"
},
"totals": {
"sum(session)": 1000
},
"series": {
"sum(session)": [
368,
392,
240
]
}
},
{
"by": {
"session.status": "healthy"
},
"totals": {
"sum(session)": 17905998
},
"series": {
"sum(session)": [
6230841,
6923689,
4751465
]
}
}
],
"start": "2024-01-29T07:30:00Z",
"end": "2024-01-29T09:00:00Z",
"intervals": [
"2024-01-29T07:30:00Z",
"2024-01-29T08:00:00Z",
"2024-01-29T08:30:00Z"
],
"query": ""
},
"summary": "Query Sessions"
}
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/api/0/organizations/{organization_slug}/stats-summary/": {
"get": {
"operationId": "Retrieve an Organization's Events Count by Project",
"description": "Query summarized event counts by project for your Organization. Also see https://docs.sentry.io/api/organizations/retrieve-event-counts-for-an-organization-v2/ for reference.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "query",
"name": "field",
"schema": {
"enum": [
"sum(quantity)",
"sum(times_seen)"
],
"type": "string",
"minLength": 1
},
"description": "the `sum(quantity)` field is bytes for attachments, and all others the 'event' count for those types of events.\n\n`sum(times_seen)` sums the number of times an event has been seen. For 'normal' event types, this will be equal to `sum(quantity)` for now. For sessions, quantity will sum the total number of events seen in a session, while `times_seen` will be the unique number of sessions. and for attachments, `times_seen` will be the total number of attachments, while quantity will be the total sum of attachment bytes.\n\n* `sum(quantity)` - sum(quantity)\n* `sum(times_seen)` - sum(times_seen)",
"required": true
},
{
"in": "query",
"name": "statsPeriod",
"schema": {
"type": "string",
"minLength": 1
},
"description": "This defines the range of the time series, relative to now. The range is given in a `<number><unit>` format. For example `1d` for a one day range. Possible units are `m` for minutes, `h` for hours, `d` for days and `w` for weeks.You must either provide a `statsPeriod`, or a `start` and `end`."
},
{
"in": "query",
"name": "interval",
"schema": {
"type": "string",
"minLength": 1
},
"description": "This is the resolution of the time series, given in the same format as `statsPeriod`. The default resolution is `1h` and the minimum resolution is currently restricted to `1h` as well. Intervals larger than `1d` are not supported, and the interval has to cleanly divide one day."
},
{
"in": "query",
"name": "start",
"schema": {
"type": "string",
"format": "date-time"
},
"description": "This defines the start of the time series range as an explicit datetime, either in UTC ISO8601 or epoch seconds.Use along with `end` instead of `statsPeriod`."
},
{
"in": "query",
"name": "end",
"schema": {
"type": "string",
"format": "date-time"
},
"description": "This defines the inclusive end of the time series range as an explicit datetime, either in UTC ISO8601 or epoch seconds.Use along with `start` instead of `statsPeriod`."
},
{
"in": "query",
"name": "project",
"schema": {
"type": "array",
"items": {}
},
"description": "The ID of the projects to filter by."
},
{
"in": "query",
"name": "category",
"schema": {
"enum": [
"error",
"transaction",
"attachment",
"replays",
"profiles"
],
"type": "string",
"minLength": 1
},
"description": "If filtering by attachments, you cannot filter by any other category due to quantity values becoming nonsensical (combining bytes and event counts).\n\nIf filtering by `error`, it will automatically add `default` and `security` as we currently roll those two categories into `error` for displaying.\n\n* `error` - error\n* `transaction` - transaction\n* `attachment` - attachment\n* `replays` - replays\n* `profiles` - profiles"
},
{
"in": "query",
"name": "outcome",
"schema": {
"enum": [
"accepted",
"filtered",
"rate_limited",
"invalid",
"abuse",
"client_discard"
],
"type": "string",
"minLength": 1
},
"description": "See https://docs.sentry.io/product/stats/ for more information on outcome statuses.\n\n* `accepted` - accepted\n* `filtered` - filtered\n* `rate_limited` - rate_limited\n* `invalid` - invalid\n* `abuse` - abuse\n* `client_discard` - client_discard"
},
{
"in": "query",
"name": "reason",
"schema": {
"type": "string",
"minLength": 1
},
"description": "The reason field will contain why an event was filtered/dropped."
},
{
"in": "query",
"name": "download",
"schema": {
"type": "boolean"
},
"description": "Download the API response in as a csv file"
}
],
"tags": [
"Organizations"
],
"security": [
{
"auth_token": [
"org:admin",
"org:read",
"org:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"start": {
"type": "string"
},
"end": {
"type": "string"
},
"projects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"stats": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
}
},
"required": [
"id",
"slug",
"stats"
]
}
}
},
"required": [
"end",
"projects",
"start"
]
},
"examples": {
"GetEventCountsForProjectsInAnOrganization": {
"value": {
"start": "2023-09-19T13:00:00Z",
"end": "2023-09-19T12:28:00Z",
"projects": [
{
"id": "1",
"slug": "android-project",
"stats": [
{
"category": "error",
"outcomes": {
"accepted": 1930571,
"filtered": 1934881,
"rate_limited": 2506132,
"invalid": 0,
"abuse": 1938113,
"client_discard": 1942414
},
"totals": {
"dropped": 2506132,
"sum(quantity)": 10252111
}
},
{
"category": "transaction",
"outcomes": {
"accepted": 1909849,
"filtered": 1947142,
"rate_limited": 2458946,
"invalid": 0,
"abuse": 1927179,
"client_discard": 1931595
},
"totals": {
"dropped": 2458946,
"sum(quantity)": 10174711
}
}
]
}
]
},
"summary": "Get event counts for projects in an organization"
}
}
}
},
"description": ""
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/organizations/{organization_slug}/stats_v2/": {
"get": {
"operationId": "Retrieve Event Counts for an Organization (v2)",
"description": "Query event counts for your Organization.\nSelect a field, define a date range, and group or filter by columns.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "query",
"name": "groupBy",
"schema": {
"type": "array",
"items": {
"enum": [
"outcome",
"category",
"reason",
"project"
],
"type": "string",
"description": "* `outcome` - outcome\n* `category` - category\n* `reason` - reason\n* `project` - project"
}
},
"description": "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.",
"required": true
},
{
"in": "query",
"name": "field",
"schema": {
"enum": [
"sum(quantity)",
"sum(times_seen)"
],
"type": "string",
"minLength": 1
},
"description": "the `sum(quantity)` field is bytes for attachments, and all others the 'event' count for those types of events.\n\n`sum(times_seen)` sums the number of times an event has been seen. For 'normal' event types, this will be equal to `sum(quantity)` for now. For sessions, quantity will sum the total number of events seen in a session, while `times_seen` will be the unique number of sessions. and for attachments, `times_seen` will be the total number of attachments, while quantity will be the total sum of attachment bytes.\n\n* `sum(quantity)` - sum(quantity)\n* `sum(times_seen)` - sum(times_seen)",
"required": true
},
{
"in": "query",
"name": "statsPeriod",
"schema": {
"type": "string",
"minLength": 1
},
"description": "This defines the range of the time series, relative to now. The range is given in a `<number><unit>` format. For example `1d` for a one day range. Possible units are `m` for minutes, `h` for hours, `d` for days and `w` for weeks.You must either provide a `statsPeriod`, or a `start` and `end`."
},
{
"in": "query",
"name": "interval",
"schema": {
"type": "string",
"minLength": 1
},
"description": "This is the resolution of the time series, given in the same format as `statsPeriod`. The default resolution is `1h` and the minimum resolution is currently restricted to `1h` as well. Intervals larger than `1d` are not supported, and the interval has to cleanly divide one day."
},
{
"in": "query",
"name": "start",
"schema": {
"type": "string",
"format": "date-time"
},
"description": "This defines the start of the time series range as an explicit datetime, either in UTC ISO8601 or epoch seconds.Use along with `end` instead of `statsPeriod`."
},
{
"in": "query",
"name": "end",
"schema": {
"type": "string",
"format": "date-time"
},
"description": "This defines the inclusive end of the time series range as an explicit datetime, either in UTC ISO8601 or epoch seconds.Use along with `start` instead of `statsPeriod`."
},
{
"in": "query",
"name": "project",
"schema": {
"type": "array",
"items": {}
},
"description": "The ID of the projects to filter by.\n\nUse `-1` to include all accessible projects."
},
{
"in": "query",
"name": "category",
"schema": {
"enum": [
"error",
"transaction",
"attachment",
"replay",
"profile",
"monitor"
],
"type": "string",
"minLength": 1
},
"description": "If filtering by attachments, you cannot filter by any other category due to quantity values becoming nonsensical (combining bytes and event counts).\n\nIf filtering by `error`, it will automatically add `default` and `security` as we currently roll those two categories into `error` for displaying.\n\n* `error` - error\n* `transaction` - transaction\n* `attachment` - attachment\n* `replay` - replay\n* `profile` - profile\n* `monitor` - monitor"
},
{
"in": "query",
"name": "outcome",
"schema": {
"enum": [
"accepted",
"filtered",
"rate_limited",
"invalid",
"abuse",
"client_discard"
],
"type": "string",
"minLength": 1
},
"description": "See https://docs.sentry.io/product/stats/ for more information on outcome statuses.\n\n* `accepted` - accepted\n* `filtered` - filtered\n* `rate_limited` - rate_limited\n* `invalid` - invalid\n* `abuse` - abuse\n* `client_discard` - client_discard"
},
{
"in": "query",
"name": "reason",
"schema": {
"type": "string",
"minLength": 1
},
"description": "The reason field will contain why an event was filtered/dropped."
}
],
"tags": [
"Organizations"
],
"security": [
{
"auth_token": [
"org:admin",
"org:read",
"org:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"start": {
"type": "string"
},
"end": {
"type": "string"
},
"intervals": {
"type": "array",
"items": {
"type": "string"
}
},
"groups": {
"type": "array",
"items": {
"type": "object",
"properties": {
"by": {
"type": "object",
"additionalProperties": {}
},
"totals": {
"type": "object",
"additionalProperties": {}
},
"series": {
"type": "object",
"additionalProperties": {}
}
},
"required": [
"by",
"series",
"totals"
]
}
}
},
"required": [
"end",
"groups",
"intervals",
"start"
]
},
"examples": {
"RetrieveEventCountsV2": {
"value": {
"start": "2022-02-14T19:00:00Z",
"end": "2022-02-28T18:03:00Z",
"intervals": [
"2022-02-28T00:00:00Z"
],
"groups": [
{
"by": {
"outcome": "invalid"
},
"totals": {
"sum(quantity)": 165665
},
"series": {
"sum(quantity)": [
165665
]
}
}
]
},
"summary": "Retrieve event counts v2"
}
}
}
},
"description": ""
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/organizations/{organization_slug}/teams/": {
"get": {
"operationId": "List an Organization's Teams",
"description": "Returns a list of teams bound to a organization.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "query",
"name": "detailed",
"schema": {
"type": "string"
},
"description": "\nSpecify `\"0\"` to return team details that do not include projects.\n"
},
{
"in": "query",
"name": "cursor",
"schema": {
"type": "string",
"minLength": 1
},
"description": "A pointer to the last object fetched and its sort order; used to retrieve the next or previous results."
}
],
"tags": [
"Teams"
],
"security": [
{
"auth_token": [
"org:admin",
"org:read",
"org:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"isMember": {
"type": "boolean"
},
"teamRole": {
"type": "string",
"nullable": true
},
"flags": {
"type": "object",
"additionalProperties": {}
},
"access": {
"type": "array",
"items": {
"type": "string"
}
},
"hasAccess": {
"type": "boolean"
},
"isPending": {
"type": "boolean"
},
"memberCount": {
"type": "integer"
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
},
"avatarUrl": {
"type": "string",
"nullable": true
}
}
},
"externalTeams": {
"type": "array",
"items": {
"type": "object",
"properties": {
"externalId": {
"type": "string"
},
"userId": {
"type": "string"
},
"teamId": {
"type": "string"
},
"id": {
"type": "string"
},
"provider": {
"type": "string"
},
"externalName": {
"type": "string"
},
"integrationId": {
"type": "string"
}
},
"required": [
"externalName",
"id",
"integrationId",
"provider"
]
}
},
"organization": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"status": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
]
},
"name": {
"type": "string"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"isEarlyAdopter": {
"type": "boolean"
},
"require2FA": {
"type": "boolean"
},
"requireEmailVerification": {
"type": "boolean"
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
},
"avatarUrl": {
"type": "string",
"nullable": true
}
}
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"links": {
"type": "object",
"properties": {
"organizationUrl": {
"type": "string"
},
"regionUrl": {
"type": "string"
}
},
"required": [
"organizationUrl",
"regionUrl"
]
},
"hasAuthProvider": {
"type": "boolean"
}
},
"required": [
"avatar",
"dateCreated",
"features",
"hasAuthProvider",
"id",
"isEarlyAdopter",
"links",
"name",
"require2FA",
"requireEmailVerification",
"slug",
"status"
]
},
"projects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"stats": {},
"transactionStats": {},
"sessionStats": {},
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"platform": {
"type": "string",
"nullable": true
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"isBookmarked": {
"type": "boolean"
},
"isMember": {
"type": "boolean"
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"firstEvent": {
"type": "string",
"format": "date-time",
"nullable": true
},
"firstTransactionEvent": {
"type": "boolean"
},
"access": {
"type": "array",
"items": {
"type": "string"
}
},
"hasAccess": {
"type": "boolean"
},
"hasCustomMetrics": {
"type": "boolean"
},
"hasMinifiedStackTrace": {
"type": "boolean"
},
"hasMonitors": {
"type": "boolean"
},
"hasProfiles": {
"type": "boolean"
},
"hasReplays": {
"type": "boolean"
},
"hasSessions": {
"type": "boolean"
},
"isInternal": {
"type": "boolean"
},
"isPublic": {
"type": "boolean"
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
},
"avatarUrl": {
"type": "string",
"nullable": true
}
}
},
"color": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"access",
"avatar",
"color",
"dateCreated",
"features",
"firstEvent",
"firstTransactionEvent",
"hasAccess",
"hasCustomMetrics",
"hasMinifiedStackTrace",
"hasMonitors",
"hasProfiles",
"hasReplays",
"hasSessions",
"id",
"isBookmarked",
"isInternal",
"isMember",
"isPublic",
"name",
"platform",
"slug",
"status"
]
}
}
},
"required": [
"access",
"avatar",
"dateCreated",
"flags",
"hasAccess",
"id",
"isMember",
"isPending",
"memberCount",
"name",
"slug",
"teamRole"
]
}
},
"examples": {
"GetListOfOrganization'sTeams": {
"value": [
{
"id": "48531",
"slug": "ancient-gabelers",
"name": "Ancient Gabelers",
"dateCreated": "2018-11-06T21:20:08.115Z",
"isMember": false,
"teamRole": null,
"flags": {
"idp:provisioned": false
},
"access": [
"member:read",
"alerts:read",
"org:read",
"event:read",
"project:read",
"project:releases",
"event:write",
"team:read"
],
"hasAccess": true,
"isPending": false,
"memberCount": 2,
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
}
},
{
"id": "100253",
"slug": "powerful-abolitionist",
"name": "Powerful Abolitionist",
"dateCreated": "2018-10-03T17:47:50.745447Z",
"isMember": false,
"teamRole": null,
"flags": {
"idp:provisioned": false
},
"access": [
"member:read",
"alerts:read",
"org:read",
"event:read",
"project:read",
"project:releases",
"event:write",
"team:read"
],
"hasAccess": true,
"isPending": false,
"memberCount": 5,
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
},
"projects": [
{
"id": "6403534",
"slug": "prime-mover",
"name": "Prime Mover",
"platform": null,
"dateCreated": "2019-04-06T00:02:40.468175Z",
"isBookmarked": false,
"isMember": false,
"features": [
"alert-filters",
"custom-inbound-filters",
"data-forwarding",
"discard-groups",
"minidump",
"race-free-group-creation",
"rate-limits",
"servicehooks",
"similarity-indexing",
"similarity-indexing-v2",
"similarity-view",
"similarity-view-v2",
"releases"
],
"firstEvent": "2019-04-06T02:00:21Z",
"firstTransactionEvent": true,
"access": [
"alerts:read",
"event:write",
"org:read",
"project:read",
"member:read",
"team:read",
"event:read",
"project:releases"
],
"hasAccess": true,
"hasMinifiedStackTrace": false,
"hasCustomMetrics": false,
"hasMonitors": true,
"hasProfiles": false,
"hasReplays": false,
"hasSessions": true,
"isInternal": false,
"isPublic": false,
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
},
"color": "#6d3fbf",
"status": "active"
},
{
"id": "6403599",
"slug": "the-spoiled-yoghurt",
"name": "The Spoiled Yoghurt",
"platform": "",
"dateCreated": "2022-06-24T17:55:27.304367Z",
"isBookmarked": false,
"isMember": false,
"features": [
"alert-filters",
"custom-inbound-filters",
"data-forwarding",
"discard-groups",
"minidump",
"race-free-group-creation",
"rate-limits",
"servicehooks",
"similarity-indexing",
"similarity-indexing-v2",
"similarity-view",
"similarity-view-v2"
],
"firstEvent": "2022-07-13T18:17:56.197351Z",
"firstTransactionEvent": false,
"access": [
"alerts:read",
"event:write",
"org:read",
"project:read",
"member:read",
"team:read",
"event:read",
"project:releases"
],
"hasAccess": true,
"hasMinifiedStackTrace": false,
"hasCustomMetrics": false,
"hasMonitors": true,
"hasProfiles": false,
"hasReplays": false,
"hasSessions": false,
"isInternal": false,
"isPublic": false,
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
},
"color": "#6e3fbf",
"status": "active"
}
]
}
],
"summary": "Get list of organization's teams"
}
}
}
},
"description": ""
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"post": {
"operationId": "Create a New Team",
"description": "Create a new team bound to an organization. Requires at least one of the `name`\nor `slug` body params to be set.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
}
],
"tags": [
"Teams"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"slug": {
"type": "string",
"nullable": true,
"description": "Uniquely identifies a team and is used for the interface. If not\n provided, it is automatically generated from the name.",
"maxLength": 50,
"pattern": "^(?![0-9]+$)[a-z0-9_\\-]+$"
},
"name": {
"type": "string",
"nullable": true,
"description": "**`[DEPRECATED]`** The name for the team. If not provided, it is\n automatically generated from the slug",
"maxLength": 64,
"deprecated": true
}
}
}
}
}
},
"security": [
{
"auth_token": [
"org:admin",
"org:write",
"team:write"
]
}
],
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"isMember": {
"type": "boolean"
},
"teamRole": {
"type": "string",
"nullable": true
},
"flags": {
"type": "object",
"additionalProperties": {}
},
"access": {
"type": "array",
"items": {
"type": "string"
}
},
"hasAccess": {
"type": "boolean"
},
"isPending": {
"type": "boolean"
},
"memberCount": {
"type": "integer"
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
},
"avatarUrl": {
"type": "string",
"nullable": true
}
}
},
"externalTeams": {
"type": "array",
"items": {
"type": "object",
"properties": {
"externalId": {
"type": "string"
},
"userId": {
"type": "string"
},
"teamId": {
"type": "string"
},
"id": {
"type": "string"
},
"provider": {
"type": "string"
},
"externalName": {
"type": "string"
},
"integrationId": {
"type": "string"
}
},
"required": [
"externalName",
"id",
"integrationId",
"provider"
]
}
},
"organization": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"status": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
]
},
"name": {
"type": "string"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"isEarlyAdopter": {
"type": "boolean"
},
"require2FA": {
"type": "boolean"
},
"requireEmailVerification": {
"type": "boolean"
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
},
"avatarUrl": {
"type": "string",
"nullable": true
}
}
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"links": {
"type": "object",
"properties": {
"organizationUrl": {
"type": "string"
},
"regionUrl": {
"type": "string"
}
},
"required": [
"organizationUrl",
"regionUrl"
]
},
"hasAuthProvider": {
"type": "boolean"
}
},
"required": [
"avatar",
"dateCreated",
"features",
"hasAuthProvider",
"id",
"isEarlyAdopter",
"links",
"name",
"require2FA",
"requireEmailVerification",
"slug",
"status"
]
},
"projects": {
"type": "array",
"items": {
"type": "object",
"properties": {
"stats": {},
"transactionStats": {},
"sessionStats": {},
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"platform": {
"type": "string",
"nullable": true
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"isBookmarked": {
"type": "boolean"
},
"isMember": {
"type": "boolean"
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"firstEvent": {
"type": "string",
"format": "date-time",
"nullable": true
},
"firstTransactionEvent": {
"type": "boolean"
},
"access": {
"type": "array",
"items": {
"type": "string"
}
},
"hasAccess": {
"type": "boolean"
},
"hasCustomMetrics": {
"type": "boolean"
},
"hasMinifiedStackTrace": {
"type": "boolean"
},
"hasMonitors": {
"type": "boolean"
},
"hasProfiles": {
"type": "boolean"
},
"hasReplays": {
"type": "boolean"
},
"hasSessions": {
"type": "boolean"
},
"isInternal": {
"type": "boolean"
},
"isPublic": {
"type": "boolean"
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
},
"avatarUrl": {
"type": "string",
"nullable": true
}
}
},
"color": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"access",
"avatar",
"color",
"dateCreated",
"features",
"firstEvent",
"firstTransactionEvent",
"hasAccess",
"hasCustomMetrics",
"hasMinifiedStackTrace",
"hasMonitors",
"hasProfiles",
"hasReplays",
"hasSessions",
"id",
"isBookmarked",
"isInternal",
"isMember",
"isPublic",
"name",
"platform",
"slug",
"status"
]
}
}
},
"required": [
"access",
"avatar",
"dateCreated",
"flags",
"hasAccess",
"id",
"isMember",
"isPending",
"memberCount",
"name",
"slug",
"teamRole"
]
},
"examples": {
"CreateANewTeam": {
"value": {
"id": "5151492858",
"slug": "ancient-gabelers",
"name": "Ancient Gabelers",
"dateCreated": "2021-06-12T23:38:54.168307Z",
"isMember": true,
"teamRole": "admin",
"flags": {
"idp:provisioned": false
},
"access": [
"project:write",
"member:read",
"event:write",
"team:admin",
"alerts:read",
"project:releases",
"alerts:write",
"org:read",
"team:read",
"project:admin",
"project:read",
"org:integrations",
"event:read",
"event:admin",
"team:write"
],
"hasAccess": true,
"isPending": false,
"memberCount": 1,
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
}
},
"summary": "Create a new team"
}
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "A team with this slug already exists."
}
}
}
},
"/api/0/projects/{organization_slug}/{project_slug}/": {
"get": {
"operationId": "Retrieve a Project",
"description": "Return details on an individual project.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
}
],
"tags": [
"Projects"
],
"security": [
{
"auth_token": [
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"stats": {},
"transactionStats": {},
"sessionStats": {},
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"platform": {
"type": "string",
"nullable": true
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"isBookmarked": {
"type": "boolean"
},
"isMember": {
"type": "boolean"
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"firstEvent": {
"type": "string",
"format": "date-time",
"nullable": true
},
"firstTransactionEvent": {
"type": "boolean"
},
"access": {
"type": "array",
"items": {
"type": "string"
}
},
"hasAccess": {
"type": "boolean"
},
"hasCustomMetrics": {
"type": "boolean"
},
"hasMinifiedStackTrace": {
"type": "boolean"
},
"hasMonitors": {
"type": "boolean"
},
"hasProfiles": {
"type": "boolean"
},
"hasReplays": {
"type": "boolean"
},
"hasSessions": {
"type": "boolean"
},
"isInternal": {
"type": "boolean"
},
"isPublic": {
"type": "boolean"
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
},
"avatarUrl": {
"type": "string",
"nullable": true
}
}
},
"color": {
"type": "string"
},
"status": {
"type": "string"
},
"team": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
},
"required": [
"id",
"name",
"slug"
]
},
"teams": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
},
"required": [
"id",
"name",
"slug"
]
}
},
"latestRelease": {
"type": "object",
"properties": {
"version": {
"type": "string"
}
},
"required": [
"version"
],
"nullable": true
},
"options": {
"type": "object",
"additionalProperties": {}
},
"digestsMinDelay": {
"type": "integer"
},
"digestsMaxDelay": {
"type": "integer"
},
"subjectPrefix": {
"type": "string"
},
"allowedDomains": {
"type": "array",
"items": {
"type": "string"
}
},
"resolveAge": {
"type": "integer"
},
"dataScrubber": {
"type": "boolean"
},
"dataScrubberDefaults": {
"type": "boolean"
},
"safeFields": {
"type": "array",
"items": {
"type": "string"
}
},
"storeCrashReports": {
"type": "integer",
"nullable": true
},
"sensitiveFields": {
"type": "array",
"items": {
"type": "string"
}
},
"subjectTemplate": {
"type": "string"
},
"securityToken": {
"type": "string"
},
"securityTokenHeader": {
"type": "string",
"nullable": true
},
"verifySSL": {
"type": "boolean"
},
"scrubIPAddresses": {
"type": "boolean"
},
"scrapeJavaScript": {
"type": "boolean"
},
"groupingConfig": {
"type": "string"
},
"groupingEnhancements": {
"type": "string"
},
"groupingEnhancementsBase": {
"type": "string",
"nullable": true
},
"secondaryGroupingExpiry": {
"type": "integer"
},
"secondaryGroupingConfig": {
"type": "string",
"nullable": true
},
"groupingAutoUpdate": {
"type": "boolean"
},
"fingerprintingRules": {
"type": "string"
},
"organization": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"status": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
]
},
"name": {
"type": "string"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"isEarlyAdopter": {
"type": "boolean"
},
"require2FA": {
"type": "boolean"
},
"requireEmailVerification": {
"type": "boolean"
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
},
"avatarUrl": {
"type": "string",
"nullable": true
}
}
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"links": {
"type": "object",
"properties": {
"organizationUrl": {
"type": "string"
},
"regionUrl": {
"type": "string"
}
},
"required": [
"organizationUrl",
"regionUrl"
]
},
"hasAuthProvider": {
"type": "boolean"
}
},
"required": [
"avatar",
"dateCreated",
"features",
"hasAuthProvider",
"id",
"isEarlyAdopter",
"links",
"name",
"require2FA",
"requireEmailVerification",
"slug",
"status"
]
},
"plugins": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"shortName": {
"type": "string"
},
"type": {
"type": "string"
},
"canDisable": {
"type": "boolean"
},
"isTestable": {
"type": "boolean"
},
"hasConfiguration": {
"type": "boolean"
},
"metadata": {
"type": "object",
"additionalProperties": {}
},
"contexts": {
"type": "array",
"items": {
"type": "string"
}
},
"status": {
"type": "string"
},
"assets": {
"type": "array",
"items": {}
},
"doc": {
"type": "string"
},
"firstPartyAlternative": {},
"deprecationDate": {},
"altIsSentryApp": {},
"enabled": {
"type": "boolean"
},
"version": {
"type": "string"
},
"author": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"isDeprecated": {
"type": "boolean"
},
"isHidden": {
"type": "boolean"
},
"description": {
"type": "string"
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"featureDescriptions": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"resourceLinks": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
},
"required": [
"altIsSentryApp",
"assets",
"author",
"canDisable",
"contexts",
"deprecationDate",
"description",
"doc",
"enabled",
"featureDescriptions",
"features",
"firstPartyAlternative",
"hasConfiguration",
"id",
"isDeprecated",
"isHidden",
"isTestable",
"metadata",
"name",
"resourceLinks",
"shortName",
"slug",
"status",
"type",
"version"
]
}
},
"platforms": {
"type": "array",
"items": {
"type": "string"
}
},
"processingIssues": {
"type": "integer"
},
"defaultEnvironment": {
"type": "string",
"nullable": true
},
"relayPiiConfig": {
"type": "string",
"nullable": true
},
"builtinSymbolSources": {
"type": "array",
"items": {
"type": "string"
}
},
"dynamicSamplingBiases": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "boolean"
}
]
}
}
},
"eventProcessing": {
"type": "object",
"additionalProperties": {
"type": "boolean"
}
},
"symbolSources": {
"type": "string"
}
},
"required": [
"access",
"allowedDomains",
"avatar",
"builtinSymbolSources",
"color",
"dataScrubber",
"dataScrubberDefaults",
"dateCreated",
"defaultEnvironment",
"digestsMaxDelay",
"digestsMinDelay",
"dynamicSamplingBiases",
"eventProcessing",
"features",
"fingerprintingRules",
"firstEvent",
"firstTransactionEvent",
"groupingAutoUpdate",
"groupingConfig",
"groupingEnhancements",
"groupingEnhancementsBase",
"hasAccess",
"hasCustomMetrics",
"hasMinifiedStackTrace",
"hasMonitors",
"hasProfiles",
"hasReplays",
"hasSessions",
"id",
"isBookmarked",
"isInternal",
"isMember",
"isPublic",
"latestRelease",
"name",
"options",
"organization",
"platform",
"platforms",
"plugins",
"processingIssues",
"relayPiiConfig",
"resolveAge",
"safeFields",
"scrapeJavaScript",
"scrubIPAddresses",
"secondaryGroupingConfig",
"secondaryGroupingExpiry",
"securityToken",
"securityTokenHeader",
"sensitiveFields",
"slug",
"status",
"storeCrashReports",
"subjectPrefix",
"subjectTemplate",
"symbolSources",
"team",
"teams",
"verifySSL"
]
},
"examples": {
"GetDetailedViewAboutAProject": {
"value": {
"id": "4505278496",
"slug": "pump-station",
"name": "Pump Station",
"platform": "python",
"dateCreated": "2021-01-14T22:08:52.711809Z",
"isBookmarked": false,
"isMember": true,
"features": [
"alert-filters",
"custom-inbound-filters",
"data-forwarding",
"discard-groups",
"minidump",
"race-free-group-creation",
"rate-limits",
"servicehooks",
"similarity-indexing",
"similarity-indexing-v2",
"similarity-view",
"similarity-view-v2"
],
"firstEvent": "2021-01-14T22:08:52.711809Z",
"firstTransactionEvent": true,
"access": [
"member:read",
"event:read",
"project:admin",
"team:write",
"project:write",
"team:admin",
"project:read",
"org:integrations",
"org:read",
"project:releases",
"team:read",
"alerts:write",
"event:admin",
"event:write",
"alerts:read"
],
"hasAccess": true,
"hasMinifiedStackTrace": false,
"hasCustomMetrics": false,
"hasMonitors": false,
"hasProfiles": false,
"hasReplays": false,
"hasSessions": false,
"isInternal": false,
"isPublic": false,
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
},
"color": "#3f70bf",
"status": "active",
"team": {
"id": "2",
"name": "Powerful Abolitionist",
"slug": "powerful-abolitionist"
},
"teams": [
{
"id": "2",
"name": "Powerful Abolitionist",
"slug": "powerful-abolitionist"
}
],
"latestRelease": {
"version": "backend@3e90a5d9e767ebcfa70e921d7a7ff6c037461168"
},
"options": {
"sentry:grouping_auto_update": false,
"sentry:span_description_cluster_rules": [],
"sentry:transaction_name_cluster_rules": [],
"digests:mail:maximum_delay": 600,
"sentry:scrub_defaults": false,
"sentry:scrape_javascript": true,
"mail:subject_prefix": "",
"sentry:relay_pii_config": null,
"sentry:scrub_data": false,
"sentry:token": "e84c8c0fb1c121e988558785885f9cde",
"sentry:resolve_age": 168,
"sentry:grouping_config": "newstyle:2023-01-11",
"quotas:spike-protection-disabled": false,
"sentry:store_crash_reports": 5,
"digests:mail:minimum_delay": 180,
"sentry:secondary_grouping_config": "newstyle:2019-10-29",
"sentry:secondary_grouping_expiry": 147555024,
"sentry:builtin_symbol_sources": [
"ios",
"android",
"chromium"
],
"sentry:origins": [
"getsentry.com",
"app.getsentry.com",
"www.getsentry.com",
"sentry.io"
],
"sentry:sensitive_fields": [
"sudo"
],
"sentry:scrub_ip_address": false,
"sentry:default_environment": "prod",
"sentry:verify_ssl": true,
"sentry:csp_ignored_sources_defaults": true,
"sentry:csp_ignored_sources": "",
"sentry:reprocessing_active": false,
"filters:blacklisted_ips": "",
"filters:react-hydration-errors": true,
"filters:chunk-load-error": true,
"filters:releases": "",
"filters:error_messages": "",
"feedback:branding": true
},
"digestsMinDelay": 180,
"digestsMaxDelay": 600,
"subjectPrefix": "",
"allowedDomains": [
"getsentry.com",
"app.getsentry.com",
"www.getsentry.com",
"sentry.io"
],
"resolveAge": 168,
"dataScrubber": false,
"dataScrubberDefaults": false,
"safeFields": [],
"storeCrashReports": 5,
"sensitiveFields": [
"sudo"
],
"subjectTemplate": "$shortID - $title",
"securityToken": "e84c8c0fb1c121e988558785885f9cde",
"securityTokenHeader": null,
"verifySSL": true,
"scrubIPAddresses": false,
"scrapeJavaScript": true,
"groupingConfig": "newstyle:2023-01-11",
"groupingEnhancements": "",
"groupingEnhancementsBase": null,
"secondaryGroupingExpiry": 1687010243,
"secondaryGroupingConfig": "newstyle:2019-10-29",
"groupingAutoUpdate": false,
"fingerprintingRules": "",
"organization": {
"id": "1",
"slug": "sentry",
"status": {
"id": "active",
"name": "active"
},
"name": "Sentry",
"dateCreated": "2014-12-15T04:06:24.263571Z",
"isEarlyAdopter": true,
"require2FA": false,
"requireEmailVerification": false,
"avatar": {
"avatarType": "upload",
"avatarUuid": "24f6f762f7a7473888b259c566da5adb"
},
"features": [
"performance-uncompressed-assets-ingest",
"dashboards-rh-widget",
"org-subdomains",
"performance-db-main-thread-visible",
"transaction-name-mark-scrubbed-as-sanitized",
"sentry-pride-logo-footer",
"issue-list-prefetch-issue-on-hover",
"mep-rollout-flag",
"performance-issues-m-n-plus-one-db-detector",
"session-replay-ui",
"release-health-drop-sessions",
"alert-crash-free-metrics",
"performance-n-plus-one-db-queries-visible",
"session-replay-recording-scrubbing",
"profile-file-io-main-thread-visible",
"performance-consecutive-http-detector",
"profiling",
"symbol-sources",
"advanced-search",
"performance-n-plus-one-db-queries-post-process-group",
"minute-resolution-sessions",
"performance-transaction-name-only-search-indexed",
"performance-large-http-payload-detector",
"performance-consecutive-db-queries-ingest",
"business-to-team-promotion",
"shared-issues",
"performance-large-http-payload-post-process-group",
"promotion-be-adoption-enabled",
"monitors",
"am2-billing",
"project-stats",
"profiling-ga",
"performance-new-trends",
"performance-n-plus-one-api-calls-post-process-group",
"performance-db-main-thread-post-process-group",
"performance-metrics-backed-transaction-summary",
"performance-db-main-thread-detector",
"issue-platform",
"performance-consecutive-db-issue",
"performance-consecutive-http-post-process-group",
"performance-n-plus-one-api-calls-detector",
"performance-render-blocking-asset-span-post-process-group",
"performance-uncompressed-assets-post-process-group",
"performance-issues-search",
"performance-slow-db-issue",
"performance-db-main-thread-ingest",
"session-replay",
"sql-format",
"performance-consecutive-db-queries-visible",
"slack-overage-notifications",
"performance-m-n-plus-one-db-queries-post-process-group",
"transaction-metrics-extraction",
"performance-consecutive-db-queries-post-process-group",
"performance-slow-db-query-post-process-group",
"session-replay-sdk-errors-only",
"performance-n-plus-one-db-queries-ingest",
"profile-image-decode-main-thread-visible",
"performance-issues-render-blocking-assets-detector",
"performance-m-n-plus-one-db-queries-ingest",
"anr-rate",
"auto-enable-codecov",
"ondemand-budgets",
"profile-file-io-main-thread-post-process-group",
"performance-render-blocking-asset-span-ingest",
"profile-json-decode-main-thread-post-process-group",
"onboarding-project-deletion-on-back-click",
"invite-members-rate-limits",
"transaction-name-normalize",
"performance-file-io-main-thread-visible",
"onboarding-sdk-selection",
"performance-span-histogram-view",
"performance-file-io-main-thread-ingest",
"metrics-extraction",
"profile-json-decode-main-thread-ingest",
"onboarding",
"promotion-mobperf-gift50kerr",
"device-classification",
"transaction-name-normalize-legacy",
"performance-slow-db-query-ingest",
"bundle-plan-checkout",
"metric-alert-chartcuterie",
"performance-issues-all-events-tab",
"discover-events-rate-limit",
"india-promotion",
"track-button-click-events",
"performance-issues-compressed-assets-detector",
"device-class-synthesis",
"profiling-billing",
"performance-file-io-main-thread-detector",
"integrations-deployment",
"performance-m-n-plus-one-db-queries-visible",
"mobile-cpu-memory-in-transactions",
"derive-code-mappings",
"performance-onboarding-checklist",
"performance-consecutive-http-visible",
"performance-n-plus-one-api-calls-ingest",
"performance-landing-page-stats-period",
"dynamic-sampling",
"performance-slow-db-query-visible",
"performance-n-plus-one-api-calls-visible",
"profile-image-decode-main-thread-ingest",
"set-grouping-config",
"event-attachments",
"open-membership",
"new-spike-protection",
"source-maps-debug-ids",
"paid-to-free-promotion",
"performance-large-http-payload-ingest",
"crons-issue-platform",
"profile-file-io-main-thread-ingest",
"customer-domains",
"performance-file-io-main-thread-post-process-group",
"performance-render-blocking-asset-span-visible",
"ds-sliding-window-org",
"performance-consecutive-http-ingest",
"profile-image-decode-main-thread-post-process-group",
"performance-mep-bannerless-ui",
"performance-uncompressed-assets-visible",
"performance-large-http-payload-visible",
"performance-view",
"promotion-mobperf-discount20",
"performance-new-widget-designs",
"profile-json-decode-main-thread-visible"
],
"links": {
"organizationUrl": "https://sentry.sentry.io",
"regionUrl": "https://us.sentry.io"
},
"hasAuthProvider": true
},
"plugins": [
{
"id": "asana",
"name": "Asana",
"slug": "asana",
"shortName": "Asana",
"type": "issue-tracking",
"canDisable": true,
"isTestable": false,
"hasConfiguration": true,
"metadata": {},
"contexts": [],
"status": "unknown",
"assets": [],
"doc": "",
"firstPartyAlternative": null,
"deprecationDate": null,
"altIsSentryApp": null,
"enabled": true,
"version": "23.7.0.dev0",
"author": {
"name": "Sentry Team",
"url": "https://github.com/getsentry/sentry"
},
"isDeprecated": false,
"isHidden": false,
"description": "\nImprove your productivity by creating tasks in Asana directly\nfrom Sentry issues. This integration also allows you to link Sentry\nissues to existing tasks in Asana.\n",
"features": [
"issue-basic"
],
"featureDescriptions": [
{
"description": "Create and link Sentry issue groups directly to an Asana ticket in any of your\n projects, providing a quick way to jump from a Sentry bug to tracked ticket!",
"featureGate": "issue-basic"
},
{
"description": "Link Sentry issues to existing Asana tickets.",
"featureGate": "issue-basic"
}
],
"resourceLinks": [
{
"title": "Report Issue",
"url": "https://github.com/getsentry/sentry/issues"
},
{
"title": "View Source",
"url": "https://github.com/getsentry/sentry/tree/master/src/sentry_plugins"
}
]
}
],
"platforms": [
"native",
"other",
"python"
],
"processingIssues": 0,
"defaultEnvironment": "prod",
"relayPiiConfig": null,
"builtinSymbolSources": [
"ios",
"android",
"chromium"
],
"dynamicSamplingBiases": [
{
"id": "boostEnvironments",
"active": true
},
{
"id": "boostLatestRelease",
"active": true
},
{
"id": "ignoreHealthChecks",
"active": true
},
{
"id": "boostKeyTransactions",
"active": true
},
{
"id": "boostLowVolumeTransactions",
"active": true
},
{
"id": "boostReplayId",
"active": true
},
{
"id": "recalibrationRule",
"active": true
}
],
"eventProcessing": {
"symbolicationDegraded": false
},
"symbolSources": "[]"
},
"summary": "Get detailed view about a Project"
}
}
}
},
"description": ""
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"put": {
"operationId": "Update a Project",
"description": "Update various attributes and configurable settings for the given project.\n\nNote that solely having the **`project:read`** scope restricts updatable settings to\n`isBookmarked`.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
}
],
"tags": [
"Projects"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"isBookmarked": {
"type": "boolean",
"description": "Enables starring the project within the projects tab. Can be updated with **`project:read`** permission."
},
"name": {
"type": "string",
"description": "The name for the project",
"maxLength": 200
},
"slug": {
"type": "string",
"description": "Uniquely identifies a project and is used for the interface.",
"maxLength": 50,
"pattern": "^(?![0-9]+$)[a-z0-9_\\-]+$"
},
"platform": {
"type": "string",
"nullable": true,
"description": "The platform for the project"
},
"subjectPrefix": {
"type": "string",
"description": "Custom prefix for emails from this project.",
"maxLength": 200
},
"subjectTemplate": {
"type": "string",
"description": "The email subject to use (excluding the prefix) for individual alerts. Here are the list of variables you can use:\n- `$title`\n- `$shortID`\n- `$projectID`\n- `$orgID`\n- `${tag:key}` - such as `${tag:environment}` or `${tag:release}`.",
"maxLength": 200
},
"resolveAge": {
"type": "integer",
"nullable": true,
"description": "Automatically resolve an issue if it hasn't been seen for this many hours. Set to `0` to disable auto-resolve."
}
}
}
}
}
},
"security": [
{
"auth_token": [
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"stats": {},
"transactionStats": {},
"sessionStats": {},
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"platform": {
"type": "string",
"nullable": true
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"isBookmarked": {
"type": "boolean"
},
"isMember": {
"type": "boolean"
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"firstEvent": {
"type": "string",
"format": "date-time",
"nullable": true
},
"firstTransactionEvent": {
"type": "boolean"
},
"access": {
"type": "array",
"items": {
"type": "string"
}
},
"hasAccess": {
"type": "boolean"
},
"hasCustomMetrics": {
"type": "boolean"
},
"hasMinifiedStackTrace": {
"type": "boolean"
},
"hasMonitors": {
"type": "boolean"
},
"hasProfiles": {
"type": "boolean"
},
"hasReplays": {
"type": "boolean"
},
"hasSessions": {
"type": "boolean"
},
"isInternal": {
"type": "boolean"
},
"isPublic": {
"type": "boolean"
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
},
"avatarUrl": {
"type": "string",
"nullable": true
}
}
},
"color": {
"type": "string"
},
"status": {
"type": "string"
},
"team": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
},
"required": [
"id",
"name",
"slug"
]
},
"teams": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
},
"required": [
"id",
"name",
"slug"
]
}
},
"latestRelease": {
"type": "object",
"properties": {
"version": {
"type": "string"
}
},
"required": [
"version"
],
"nullable": true
},
"options": {
"type": "object",
"additionalProperties": {}
},
"digestsMinDelay": {
"type": "integer"
},
"digestsMaxDelay": {
"type": "integer"
},
"subjectPrefix": {
"type": "string"
},
"allowedDomains": {
"type": "array",
"items": {
"type": "string"
}
},
"resolveAge": {
"type": "integer"
},
"dataScrubber": {
"type": "boolean"
},
"dataScrubberDefaults": {
"type": "boolean"
},
"safeFields": {
"type": "array",
"items": {
"type": "string"
}
},
"storeCrashReports": {
"type": "integer",
"nullable": true
},
"sensitiveFields": {
"type": "array",
"items": {
"type": "string"
}
},
"subjectTemplate": {
"type": "string"
},
"securityToken": {
"type": "string"
},
"securityTokenHeader": {
"type": "string",
"nullable": true
},
"verifySSL": {
"type": "boolean"
},
"scrubIPAddresses": {
"type": "boolean"
},
"scrapeJavaScript": {
"type": "boolean"
},
"groupingConfig": {
"type": "string"
},
"groupingEnhancements": {
"type": "string"
},
"groupingEnhancementsBase": {
"type": "string",
"nullable": true
},
"secondaryGroupingExpiry": {
"type": "integer"
},
"secondaryGroupingConfig": {
"type": "string",
"nullable": true
},
"groupingAutoUpdate": {
"type": "boolean"
},
"fingerprintingRules": {
"type": "string"
},
"organization": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"status": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
]
},
"name": {
"type": "string"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"isEarlyAdopter": {
"type": "boolean"
},
"require2FA": {
"type": "boolean"
},
"requireEmailVerification": {
"type": "boolean"
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
},
"avatarUrl": {
"type": "string",
"nullable": true
}
}
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"links": {
"type": "object",
"properties": {
"organizationUrl": {
"type": "string"
},
"regionUrl": {
"type": "string"
}
},
"required": [
"organizationUrl",
"regionUrl"
]
},
"hasAuthProvider": {
"type": "boolean"
}
},
"required": [
"avatar",
"dateCreated",
"features",
"hasAuthProvider",
"id",
"isEarlyAdopter",
"links",
"name",
"require2FA",
"requireEmailVerification",
"slug",
"status"
]
},
"plugins": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"shortName": {
"type": "string"
},
"type": {
"type": "string"
},
"canDisable": {
"type": "boolean"
},
"isTestable": {
"type": "boolean"
},
"hasConfiguration": {
"type": "boolean"
},
"metadata": {
"type": "object",
"additionalProperties": {}
},
"contexts": {
"type": "array",
"items": {
"type": "string"
}
},
"status": {
"type": "string"
},
"assets": {
"type": "array",
"items": {}
},
"doc": {
"type": "string"
},
"firstPartyAlternative": {},
"deprecationDate": {},
"altIsSentryApp": {},
"enabled": {
"type": "boolean"
},
"version": {
"type": "string"
},
"author": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"isDeprecated": {
"type": "boolean"
},
"isHidden": {
"type": "boolean"
},
"description": {
"type": "string"
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"featureDescriptions": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"resourceLinks": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
},
"required": [
"altIsSentryApp",
"assets",
"author",
"canDisable",
"contexts",
"deprecationDate",
"description",
"doc",
"enabled",
"featureDescriptions",
"features",
"firstPartyAlternative",
"hasConfiguration",
"id",
"isDeprecated",
"isHidden",
"isTestable",
"metadata",
"name",
"resourceLinks",
"shortName",
"slug",
"status",
"type",
"version"
]
}
},
"platforms": {
"type": "array",
"items": {
"type": "string"
}
},
"processingIssues": {
"type": "integer"
},
"defaultEnvironment": {
"type": "string",
"nullable": true
},
"relayPiiConfig": {
"type": "string",
"nullable": true
},
"builtinSymbolSources": {
"type": "array",
"items": {
"type": "string"
}
},
"dynamicSamplingBiases": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {
"anyOf": [
{
"type": "string"
},
{
"type": "boolean"
}
]
}
}
},
"eventProcessing": {
"type": "object",
"additionalProperties": {
"type": "boolean"
}
},
"symbolSources": {
"type": "string"
}
},
"required": [
"access",
"allowedDomains",
"avatar",
"builtinSymbolSources",
"color",
"dataScrubber",
"dataScrubberDefaults",
"dateCreated",
"defaultEnvironment",
"digestsMaxDelay",
"digestsMinDelay",
"dynamicSamplingBiases",
"eventProcessing",
"features",
"fingerprintingRules",
"firstEvent",
"firstTransactionEvent",
"groupingAutoUpdate",
"groupingConfig",
"groupingEnhancements",
"groupingEnhancementsBase",
"hasAccess",
"hasCustomMetrics",
"hasMinifiedStackTrace",
"hasMonitors",
"hasProfiles",
"hasReplays",
"hasSessions",
"id",
"isBookmarked",
"isInternal",
"isMember",
"isPublic",
"latestRelease",
"name",
"options",
"organization",
"platform",
"platforms",
"plugins",
"processingIssues",
"relayPiiConfig",
"resolveAge",
"safeFields",
"scrapeJavaScript",
"scrubIPAddresses",
"secondaryGroupingConfig",
"secondaryGroupingExpiry",
"securityToken",
"securityTokenHeader",
"sensitiveFields",
"slug",
"status",
"storeCrashReports",
"subjectPrefix",
"subjectTemplate",
"symbolSources",
"team",
"teams",
"verifySSL"
]
},
"examples": {
"GetDetailedViewAboutAProject": {
"value": {
"id": "4505278496",
"slug": "pump-station",
"name": "Pump Station",
"platform": "python",
"dateCreated": "2021-01-14T22:08:52.711809Z",
"isBookmarked": false,
"isMember": true,
"features": [
"alert-filters",
"custom-inbound-filters",
"data-forwarding",
"discard-groups",
"minidump",
"race-free-group-creation",
"rate-limits",
"servicehooks",
"similarity-indexing",
"similarity-indexing-v2",
"similarity-view",
"similarity-view-v2"
],
"firstEvent": "2021-01-14T22:08:52.711809Z",
"firstTransactionEvent": true,
"access": [
"member:read",
"event:read",
"project:admin",
"team:write",
"project:write",
"team:admin",
"project:read",
"org:integrations",
"org:read",
"project:releases",
"team:read",
"alerts:write",
"event:admin",
"event:write",
"alerts:read"
],
"hasAccess": true,
"hasMinifiedStackTrace": false,
"hasCustomMetrics": false,
"hasMonitors": false,
"hasProfiles": false,
"hasReplays": false,
"hasSessions": false,
"isInternal": false,
"isPublic": false,
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
},
"color": "#3f70bf",
"status": "active",
"team": {
"id": "2",
"name": "Powerful Abolitionist",
"slug": "powerful-abolitionist"
},
"teams": [
{
"id": "2",
"name": "Powerful Abolitionist",
"slug": "powerful-abolitionist"
}
],
"latestRelease": {
"version": "backend@3e90a5d9e767ebcfa70e921d7a7ff6c037461168"
},
"options": {
"sentry:grouping_auto_update": false,
"sentry:span_description_cluster_rules": [],
"sentry:transaction_name_cluster_rules": [],
"digests:mail:maximum_delay": 600,
"sentry:scrub_defaults": false,
"sentry:scrape_javascript": true,
"mail:subject_prefix": "",
"sentry:relay_pii_config": null,
"sentry:scrub_data": false,
"sentry:token": "e84c8c0fb1c121e988558785885f9cde",
"sentry:resolve_age": 168,
"sentry:grouping_config": "newstyle:2023-01-11",
"quotas:spike-protection-disabled": false,
"sentry:store_crash_reports": 5,
"digests:mail:minimum_delay": 180,
"sentry:secondary_grouping_config": "newstyle:2019-10-29",
"sentry:secondary_grouping_expiry": 147555024,
"sentry:builtin_symbol_sources": [
"ios",
"android",
"chromium"
],
"sentry:origins": [
"getsentry.com",
"app.getsentry.com",
"www.getsentry.com",
"sentry.io"
],
"sentry:sensitive_fields": [
"sudo"
],
"sentry:scrub_ip_address": false,
"sentry:default_environment": "prod",
"sentry:verify_ssl": true,
"sentry:csp_ignored_sources_defaults": true,
"sentry:csp_ignored_sources": "",
"sentry:reprocessing_active": false,
"filters:blacklisted_ips": "",
"filters:react-hydration-errors": true,
"filters:chunk-load-error": true,
"filters:releases": "",
"filters:error_messages": "",
"feedback:branding": true
},
"digestsMinDelay": 180,
"digestsMaxDelay": 600,
"subjectPrefix": "",
"allowedDomains": [
"getsentry.com",
"app.getsentry.com",
"www.getsentry.com",
"sentry.io"
],
"resolveAge": 168,
"dataScrubber": false,
"dataScrubberDefaults": false,
"safeFields": [],
"storeCrashReports": 5,
"sensitiveFields": [
"sudo"
],
"subjectTemplate": "$shortID - $title",
"securityToken": "e84c8c0fb1c121e988558785885f9cde",
"securityTokenHeader": null,
"verifySSL": true,
"scrubIPAddresses": false,
"scrapeJavaScript": true,
"groupingConfig": "newstyle:2023-01-11",
"groupingEnhancements": "",
"groupingEnhancementsBase": null,
"secondaryGroupingExpiry": 1687010243,
"secondaryGroupingConfig": "newstyle:2019-10-29",
"groupingAutoUpdate": false,
"fingerprintingRules": "",
"organization": {
"id": "1",
"slug": "sentry",
"status": {
"id": "active",
"name": "active"
},
"name": "Sentry",
"dateCreated": "2014-12-15T04:06:24.263571Z",
"isEarlyAdopter": true,
"require2FA": false,
"requireEmailVerification": false,
"avatar": {
"avatarType": "upload",
"avatarUuid": "24f6f762f7a7473888b259c566da5adb"
},
"features": [
"performance-uncompressed-assets-ingest",
"dashboards-rh-widget",
"org-subdomains",
"performance-db-main-thread-visible",
"transaction-name-mark-scrubbed-as-sanitized",
"sentry-pride-logo-footer",
"issue-list-prefetch-issue-on-hover",
"mep-rollout-flag",
"performance-issues-m-n-plus-one-db-detector",
"session-replay-ui",
"release-health-drop-sessions",
"alert-crash-free-metrics",
"performance-n-plus-one-db-queries-visible",
"session-replay-recording-scrubbing",
"profile-file-io-main-thread-visible",
"performance-consecutive-http-detector",
"profiling",
"symbol-sources",
"advanced-search",
"performance-n-plus-one-db-queries-post-process-group",
"minute-resolution-sessions",
"performance-transaction-name-only-search-indexed",
"performance-large-http-payload-detector",
"performance-consecutive-db-queries-ingest",
"business-to-team-promotion",
"shared-issues",
"performance-large-http-payload-post-process-group",
"promotion-be-adoption-enabled",
"monitors",
"am2-billing",
"project-stats",
"profiling-ga",
"performance-new-trends",
"performance-n-plus-one-api-calls-post-process-group",
"performance-db-main-thread-post-process-group",
"performance-metrics-backed-transaction-summary",
"performance-db-main-thread-detector",
"issue-platform",
"performance-consecutive-db-issue",
"performance-consecutive-http-post-process-group",
"performance-n-plus-one-api-calls-detector",
"performance-render-blocking-asset-span-post-process-group",
"performance-uncompressed-assets-post-process-group",
"performance-issues-search",
"performance-slow-db-issue",
"performance-db-main-thread-ingest",
"session-replay",
"sql-format",
"performance-consecutive-db-queries-visible",
"slack-overage-notifications",
"performance-m-n-plus-one-db-queries-post-process-group",
"transaction-metrics-extraction",
"performance-consecutive-db-queries-post-process-group",
"performance-slow-db-query-post-process-group",
"session-replay-sdk-errors-only",
"performance-n-plus-one-db-queries-ingest",
"profile-image-decode-main-thread-visible",
"performance-issues-render-blocking-assets-detector",
"performance-m-n-plus-one-db-queries-ingest",
"anr-rate",
"auto-enable-codecov",
"ondemand-budgets",
"profile-file-io-main-thread-post-process-group",
"performance-render-blocking-asset-span-ingest",
"profile-json-decode-main-thread-post-process-group",
"onboarding-project-deletion-on-back-click",
"invite-members-rate-limits",
"transaction-name-normalize",
"performance-file-io-main-thread-visible",
"onboarding-sdk-selection",
"performance-span-histogram-view",
"performance-file-io-main-thread-ingest",
"metrics-extraction",
"profile-json-decode-main-thread-ingest",
"onboarding",
"promotion-mobperf-gift50kerr",
"device-classification",
"transaction-name-normalize-legacy",
"performance-slow-db-query-ingest",
"bundle-plan-checkout",
"metric-alert-chartcuterie",
"performance-issues-all-events-tab",
"discover-events-rate-limit",
"india-promotion",
"track-button-click-events",
"performance-issues-compressed-assets-detector",
"device-class-synthesis",
"profiling-billing",
"performance-file-io-main-thread-detector",
"integrations-deployment",
"performance-m-n-plus-one-db-queries-visible",
"mobile-cpu-memory-in-transactions",
"derive-code-mappings",
"performance-onboarding-checklist",
"performance-consecutive-http-visible",
"performance-n-plus-one-api-calls-ingest",
"performance-landing-page-stats-period",
"dynamic-sampling",
"performance-slow-db-query-visible",
"performance-n-plus-one-api-calls-visible",
"profile-image-decode-main-thread-ingest",
"set-grouping-config",
"event-attachments",
"open-membership",
"new-spike-protection",
"source-maps-debug-ids",
"paid-to-free-promotion",
"performance-large-http-payload-ingest",
"crons-issue-platform",
"profile-file-io-main-thread-ingest",
"customer-domains",
"performance-file-io-main-thread-post-process-group",
"performance-render-blocking-asset-span-visible",
"ds-sliding-window-org",
"performance-consecutive-http-ingest",
"profile-image-decode-main-thread-post-process-group",
"performance-mep-bannerless-ui",
"performance-uncompressed-assets-visible",
"performance-large-http-payload-visible",
"performance-view",
"promotion-mobperf-discount20",
"performance-new-widget-designs",
"profile-json-decode-main-thread-visible"
],
"links": {
"organizationUrl": "https://sentry.sentry.io",
"regionUrl": "https://us.sentry.io"
},
"hasAuthProvider": true
},
"plugins": [
{
"id": "asana",
"name": "Asana",
"slug": "asana",
"shortName": "Asana",
"type": "issue-tracking",
"canDisable": true,
"isTestable": false,
"hasConfiguration": true,
"metadata": {},
"contexts": [],
"status": "unknown",
"assets": [],
"doc": "",
"firstPartyAlternative": null,
"deprecationDate": null,
"altIsSentryApp": null,
"enabled": true,
"version": "23.7.0.dev0",
"author": {
"name": "Sentry Team",
"url": "https://github.com/getsentry/sentry"
},
"isDeprecated": false,
"isHidden": false,
"description": "\nImprove your productivity by creating tasks in Asana directly\nfrom Sentry issues. This integration also allows you to link Sentry\nissues to existing tasks in Asana.\n",
"features": [
"issue-basic"
],
"featureDescriptions": [
{
"description": "Create and link Sentry issue groups directly to an Asana ticket in any of your\n projects, providing a quick way to jump from a Sentry bug to tracked ticket!",
"featureGate": "issue-basic"
},
{
"description": "Link Sentry issues to existing Asana tickets.",
"featureGate": "issue-basic"
}
],
"resourceLinks": [
{
"title": "Report Issue",
"url": "https://github.com/getsentry/sentry/issues"
},
{
"title": "View Source",
"url": "https://github.com/getsentry/sentry/tree/master/src/sentry_plugins"
}
]
}
],
"platforms": [
"native",
"other",
"python"
],
"processingIssues": 0,
"defaultEnvironment": "prod",
"relayPiiConfig": null,
"builtinSymbolSources": [
"ios",
"android",
"chromium"
],
"dynamicSamplingBiases": [
{
"id": "boostEnvironments",
"active": true
},
{
"id": "boostLatestRelease",
"active": true
},
{
"id": "ignoreHealthChecks",
"active": true
},
{
"id": "boostKeyTransactions",
"active": true
},
{
"id": "boostLowVolumeTransactions",
"active": true
},
{
"id": "boostReplayId",
"active": true
},
{
"id": "recalibrationRule",
"active": true
}
],
"eventProcessing": {
"symbolicationDegraded": false
},
"symbolSources": "[]"
},
"summary": "Get detailed view about a Project"
}
}
}
},
"description": ""
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"delete": {
"operationId": "Delete a Project",
"description": "Schedules a project for deletion.\n\nDeletion happens asynchronously and therefore is not immediate. However once deletion has\nbegun the state of a project changes and will be hidden from most public views.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
}
],
"tags": [
"Projects"
],
"security": [
{
"auth_token": [
"project:admin"
]
}
],
"responses": {
"204": {
"description": "No Content"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/projects/{organization_slug}/{project_slug}/events/{event_id}/source-map-debug/": {
"get": {
"operationId": "Debug Issues Related to Source Maps for a Given Event",
"description": "Return a list of source map errors for a given event.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "event_id",
"schema": {
"type": "string",
"format": "uuid"
},
"description": "The ID of the event.",
"required": true
},
{
"in": "query",
"name": "frame_idx",
"schema": {
"type": "integer"
},
"description": "Index of the frame that should be used for source map resolution.",
"required": true
},
{
"in": "query",
"name": "exception_idx",
"schema": {
"type": "integer"
},
"description": "Index of the exception that should be used for source map resolution.",
"required": true
}
],
"tags": [
"Events"
],
"security": [
{
"auth_token": [
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"errors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"message": {
"type": "string"
},
"data": {
"type": "object",
"additionalProperties": {},
"nullable": true
}
},
"required": [
"data",
"message",
"type"
]
}
}
},
"required": [
"errors"
]
}
}
},
"description": ""
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/projects/{organization_slug}/{project_slug}/filters/{filter_id}/": {
"put": {
"operationId": "Update an Inbound Data Filter",
"description": "Update various inbound data filters for a project.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "filter_id",
"schema": {
"type": "string"
},
"description": "The type of filter toggle to update. The options are:\n- `browser-extensions` - Filter out errors known to be caused by browser extensions.\n- `localhost` - Filter out events coming from localhost. This applies to both IPv4 (``127.0.0.1``)\nand IPv6 (``::1``) addresses.\n- `filtered-transaction` - Filter out transactions for healthcheck and ping endpoints.\n- `web-crawlers` - Filter out known web crawlers. Some crawlers may execute pages in incompatible\nways which cause errors that are unlikely to be seen by a normal user.\n- `legacy-browser` - Filter out known errors from legacy browsers. Older browsers often give less\naccurate information, and while they may report valid issues, the context to understand them is\nincorrect or missing.\n",
"required": true
}
],
"tags": [
"Projects"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"active": {
"type": "boolean",
"description": "Toggle the browser-extensions, localhost, filtered-transaction, or web-crawlers filter on or off."
},
"subfilters": {
"type": "array",
"items": {
"enum": [
"ie",
"edge",
"safari",
"firefox",
"chrome",
"opera",
"android",
"opera_mini",
"ie_pre_9",
"ie9",
"ie10",
"ie11",
"opera_pre_15",
"android_pre_4",
"safari_pre_6",
"opera_mini_pre_8",
"edge_pre_79"
],
"type": "string",
"description": "* `ie` - ie\n* `edge` - edge\n* `safari` - safari\n* `firefox` - firefox\n* `chrome` - chrome\n* `opera` - opera\n* `android` - android\n* `opera_mini` - opera_mini\n* `ie_pre_9` - ie_pre_9\n* `ie9` - ie9\n* `ie10` - ie10\n* `ie11` - ie11\n* `opera_pre_15` - opera_pre_15\n* `android_pre_4` - android_pre_4\n* `safari_pre_6` - safari_pre_6\n* `opera_mini_pre_8` - opera_mini_pre_8\n* `edge_pre_79` - edge_pre_79"
},
"description": "\nSpecifies which legacy browser filters should be active. Anything excluded from the list will be\ndisabled. The options are:\n- `ie` - Internet Explorer Version 11 and lower\n- `edge` - Edge Version 18 and lower\n- `safari` - Safari Version 11 and lower\n- `firefox` - Firefox Version 66 and lower\n- `chrome` - Chrome Version 62 and lower\n- `opera` - Opera Version 50 and lower\n- `android` - Android Version 3 and lower\n- `opera_mini` - Opera Mini Version 34 and lower\n\nDeprecated options:\n- `ie_pre_9` - Internet Explorer Version 8 and lower\n- `ie9` - Internet Explorer Version 9\n- `ie10` - Internet Explorer Version 10\n- `ie11` - Internet Explorer Version 11\n- `safari_pre_6` - Safari Version 5 and lower\n- `opera_pre_15` - Opera Version 14 and lower\n- `opera_mini_pre_8` - Opera Mini Version 8 and lower\n- `android_pre_4` - Android Version 3 and lower\n- `edge_pre_79` - Edge Version 18 and lower (non Chromium based)\n"
}
}
}
}
}
},
"security": [
{
"auth_token": [
"project:admin",
"project:write"
]
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/projects/{organization_slug}/{project_slug}/keys/": {
"get": {
"operationId": "List a Project's Client Keys",
"description": "Return a list of client keys bound to a project.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
},
{
"in": "query",
"name": "cursor",
"schema": {
"type": "string",
"minLength": 1
},
"description": "A pointer to the last object fetched and its sort order; used to retrieve the next or previous results."
},
{
"in": "query",
"name": "status",
"schema": {
"type": "string"
},
"description": "\nFilter client keys by `active` or `inactive`. Defaults to returning all\nkeys if not specified.\n"
}
],
"tags": [
"Projects"
],
"security": [
{
"auth_token": [
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"description": "This represents a Sentry Project Client Key.",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"label": {
"type": "string"
},
"public": {
"type": "string",
"nullable": true
},
"secret": {
"type": "string",
"nullable": true
},
"projectId": {
"type": "integer"
},
"isActive": {
"type": "boolean"
},
"rateLimit": {
"type": "object",
"properties": {
"window": {
"type": "integer"
},
"count": {
"type": "integer"
}
},
"required": [
"count",
"window"
],
"nullable": true
},
"dsn": {
"type": "object",
"properties": {
"secret": {
"type": "string"
},
"public": {
"type": "string"
},
"csp": {
"type": "string"
},
"security": {
"type": "string"
},
"minidump": {
"type": "string"
},
"nel": {
"type": "string"
},
"unreal": {
"type": "string"
},
"cdn": {
"type": "string"
}
},
"required": [
"cdn",
"csp",
"minidump",
"nel",
"public",
"secret",
"security",
"unreal"
]
},
"browserSdkVersion": {
"type": "string"
},
"browserSdk": {
"type": "object",
"properties": {
"choices": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"required": [
"choices"
]
},
"dateCreated": {
"type": "string",
"format": "date-time",
"nullable": true
},
"dynamicSdkLoaderOptions": {
"type": "object",
"properties": {
"hasReplay": {
"type": "boolean"
},
"hasPerformance": {
"type": "boolean"
},
"hasDebug": {
"type": "boolean"
}
},
"required": [
"hasDebug",
"hasPerformance",
"hasReplay"
]
},
"useCase": {
"type": "string"
}
},
"required": [
"browserSdk",
"browserSdkVersion",
"dateCreated",
"dsn",
"dynamicSdkLoaderOptions",
"id",
"isActive",
"label",
"name",
"projectId",
"public",
"rateLimit",
"secret"
]
}
},
"examples": {
"ListClientKeysForAProject": {
"value": [
{
"id": "60120449b6b1d5e45f75561e6dabd80b",
"name": "Liked Pegasus",
"label": "Liked Pegasus",
"public": "60120449b6b1d5e45f75561e6dabd80b",
"secret": "189485c3b8ccf582bf5e12c530ef8858",
"projectId": 4505281256090153,
"isActive": true,
"rateLimit": {
"window": 7200,
"count": 1000
},
"dsn": {
"secret": "https://a785682ddda742d7a8a4088810e67701:bcd99b3790b3441c85ce4b1eaa854f66@o4504765715316736.ingest.sentry.io/4505281256090153",
"public": "https://a785682ddda742d7a8a4088810e67791@o4504765715316736.ingest.sentry.io/4505281256090153",
"csp": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/csp-report/?sentry_key=a785682ddda719b7a8a4011110d75598",
"security": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/security/?sentry_key=a785682ddda719b7a8a4011110d75598",
"minidump": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/minidump/?sentry_key=a785682ddda719b7a8a4011110d75598",
"nel": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/nel/?sentry_key=a785682ddda719b7a8a4011110d75598",
"unreal": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/unreal/a785682ddda719b7a8a4011110d75598/",
"cdn": "https://js.sentry-cdn.com/a785682ddda719b7a8a4011110d75598.min.js"
},
"browserSdkVersion": "7.x",
"browserSdk": {
"choices": [
[
"latest",
"latest"
],
[
"7.x",
"7.x"
]
]
},
"dateCreated": "2023-06-21T19:50:26.036254Z",
"dynamicSdkLoaderOptions": {
"hasReplay": true,
"hasPerformance": true,
"hasDebug": true
}
},
{
"id": "da8d69cb17e80677b76e08fde4656b93",
"name": "Bold Oarfish",
"label": "Bold Oarfish",
"public": "da8d69cb17e80677b76e08fde4656b93",
"secret": "5c241ebc42ccfbec281cbefbedc7ab96",
"projectId": 4505281256090153,
"isActive": true,
"rateLimit": null,
"dsn": {
"secret": "https://a785682ddda742d7a8a4088810e67701:bcd99b3790b3441c85ce4b1eaa854f66@o4504765715316736.ingest.sentry.io/4505281256090153",
"public": "https://a785682ddda742d7a8a4088810e67791@o4504765715316736.ingest.sentry.io/4505281256090153",
"csp": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/csp-report/?sentry_key=a785682ddda719b7a8a4011110d75598",
"security": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/security/?sentry_key=a785682ddda719b7a8a4011110d75598",
"minidump": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/minidump/?sentry_key=a785682ddda719b7a8a4011110d75598",
"nel": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/nel/?sentry_key=a785682ddda719b7a8a4011110d75598",
"unreal": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/unreal/a785682ddda719b7a8a4011110d75598/",
"cdn": "https://js.sentry-cdn.com/a785682ddda719b7a8a4011110d75598.min.js"
},
"browserSdkVersion": "7.x",
"browserSdk": {
"choices": [
[
"latest",
"latest"
],
[
"7.x",
"7.x"
]
]
},
"dateCreated": "2023-06-21T19:50:26.036254Z",
"dynamicSdkLoaderOptions": {
"hasReplay": true,
"hasPerformance": true,
"hasDebug": true
}
}
],
"summary": "List Client Keys for a Project"
}
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
},
"403": {
"description": "Forbidden"
}
}
},
"post": {
"operationId": "Create a New Client Key",
"description": "Create a new client key bound to a project. The key's secret and public key\nare generated by the server.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
}
],
"tags": [
"Projects"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"nullable": true,
"description": "The optional name of the key. If not provided it will be automatically generated.",
"maxLength": 64
},
"rateLimit": {
"type": "object",
"description": "Applies a rate limit to cap the number of errors accepted during a given time window. To\ndisable entirely set `rateLimit` to null.\n```json\n{\n \"rateLimit\": {\n \"window\": 7200, // time in seconds\n \"count\": 1000 // error cap\n }\n}\n```",
"properties": {
"count": {
"type": "integer",
"minimum": 0,
"nullable": true
},
"window": {
"type": "integer",
"maximum": 86400,
"minimum": 0,
"nullable": true
}
}
}
}
}
}
}
},
"security": [
{
"auth_token": [
"project:admin",
"project:write"
]
}
],
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "This represents a Sentry Project Client Key.",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"label": {
"type": "string"
},
"public": {
"type": "string",
"nullable": true
},
"secret": {
"type": "string",
"nullable": true
},
"projectId": {
"type": "integer"
},
"isActive": {
"type": "boolean"
},
"rateLimit": {
"type": "object",
"properties": {
"window": {
"type": "integer"
},
"count": {
"type": "integer"
}
},
"required": [
"count",
"window"
],
"nullable": true
},
"dsn": {
"type": "object",
"properties": {
"secret": {
"type": "string"
},
"public": {
"type": "string"
},
"csp": {
"type": "string"
},
"security": {
"type": "string"
},
"minidump": {
"type": "string"
},
"nel": {
"type": "string"
},
"unreal": {
"type": "string"
},
"cdn": {
"type": "string"
}
},
"required": [
"cdn",
"csp",
"minidump",
"nel",
"public",
"secret",
"security",
"unreal"
]
},
"browserSdkVersion": {
"type": "string"
},
"browserSdk": {
"type": "object",
"properties": {
"choices": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"required": [
"choices"
]
},
"dateCreated": {
"type": "string",
"format": "date-time",
"nullable": true
},
"dynamicSdkLoaderOptions": {
"type": "object",
"properties": {
"hasReplay": {
"type": "boolean"
},
"hasPerformance": {
"type": "boolean"
},
"hasDebug": {
"type": "boolean"
}
},
"required": [
"hasDebug",
"hasPerformance",
"hasReplay"
]
},
"useCase": {
"type": "string"
}
},
"required": [
"browserSdk",
"browserSdkVersion",
"dateCreated",
"dsn",
"dynamicSdkLoaderOptions",
"id",
"isActive",
"label",
"name",
"projectId",
"public",
"rateLimit",
"secret"
]
},
"examples": {
"ClientKeyWithRateLimiting": {
"value": {
"id": "60120449b6b1d5e45f75561e6dabd80b",
"name": "Liked Pegasus",
"label": "Liked Pegasus",
"public": "60120449b6b1d5e45f75561e6dabd80b",
"secret": "189485c3b8ccf582bf5e12c530ef8858",
"projectId": 4505281256090153,
"isActive": true,
"rateLimit": {
"window": 7200,
"count": 1000
},
"dsn": {
"secret": "https://a785682ddda742d7a8a4088810e67701:bcd99b3790b3441c85ce4b1eaa854f66@o4504765715316736.ingest.sentry.io/4505281256090153",
"public": "https://a785682ddda742d7a8a4088810e67791@o4504765715316736.ingest.sentry.io/4505281256090153",
"csp": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/csp-report/?sentry_key=a785682ddda719b7a8a4011110d75598",
"security": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/security/?sentry_key=a785682ddda719b7a8a4011110d75598",
"minidump": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/minidump/?sentry_key=a785682ddda719b7a8a4011110d75598",
"nel": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/nel/?sentry_key=a785682ddda719b7a8a4011110d75598",
"unreal": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/unreal/a785682ddda719b7a8a4011110d75598/",
"cdn": "https://js.sentry-cdn.com/a785682ddda719b7a8a4011110d75598.min.js"
},
"browserSdkVersion": "7.x",
"browserSdk": {
"choices": [
[
"latest",
"latest"
],
[
"7.x",
"7.x"
]
]
},
"dateCreated": "2023-06-21T19:50:26.036254Z",
"dynamicSdkLoaderOptions": {
"hasReplay": true,
"hasPerformance": true,
"hasDebug": true
}
},
"summary": "Client key with rate limiting"
}
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
},
"403": {
"description": "Forbidden"
}
}
}
},
"/api/0/projects/{organization_slug}/{project_slug}/keys/{key_id}/": {
"get": {
"operationId": "Retrieve a Client Key",
"description": "Return a client key bound to a project.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "key_id",
"schema": {
"type": "string"
},
"description": "The ID of the client key",
"required": true
}
],
"tags": [
"Projects"
],
"security": [
{
"auth_token": [
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "This represents a Sentry Project Client Key.",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"label": {
"type": "string"
},
"public": {
"type": "string",
"nullable": true
},
"secret": {
"type": "string",
"nullable": true
},
"projectId": {
"type": "integer"
},
"isActive": {
"type": "boolean"
},
"rateLimit": {
"type": "object",
"properties": {
"window": {
"type": "integer"
},
"count": {
"type": "integer"
}
},
"required": [
"count",
"window"
],
"nullable": true
},
"dsn": {
"type": "object",
"properties": {
"secret": {
"type": "string"
},
"public": {
"type": "string"
},
"csp": {
"type": "string"
},
"security": {
"type": "string"
},
"minidump": {
"type": "string"
},
"nel": {
"type": "string"
},
"unreal": {
"type": "string"
},
"cdn": {
"type": "string"
}
},
"required": [
"cdn",
"csp",
"minidump",
"nel",
"public",
"secret",
"security",
"unreal"
]
},
"browserSdkVersion": {
"type": "string"
},
"browserSdk": {
"type": "object",
"properties": {
"choices": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"required": [
"choices"
]
},
"dateCreated": {
"type": "string",
"format": "date-time",
"nullable": true
},
"dynamicSdkLoaderOptions": {
"type": "object",
"properties": {
"hasReplay": {
"type": "boolean"
},
"hasPerformance": {
"type": "boolean"
},
"hasDebug": {
"type": "boolean"
}
},
"required": [
"hasDebug",
"hasPerformance",
"hasReplay"
]
},
"useCase": {
"type": "string"
}
},
"required": [
"browserSdk",
"browserSdkVersion",
"dateCreated",
"dsn",
"dynamicSdkLoaderOptions",
"id",
"isActive",
"label",
"name",
"projectId",
"public",
"rateLimit",
"secret"
]
},
"examples": {
"ClientKeyWithRateLimiting": {
"value": {
"id": "60120449b6b1d5e45f75561e6dabd80b",
"name": "Liked Pegasus",
"label": "Liked Pegasus",
"public": "60120449b6b1d5e45f75561e6dabd80b",
"secret": "189485c3b8ccf582bf5e12c530ef8858",
"projectId": 4505281256090153,
"isActive": true,
"rateLimit": {
"window": 7200,
"count": 1000
},
"dsn": {
"secret": "https://a785682ddda742d7a8a4088810e67701:bcd99b3790b3441c85ce4b1eaa854f66@o4504765715316736.ingest.sentry.io/4505281256090153",
"public": "https://a785682ddda742d7a8a4088810e67791@o4504765715316736.ingest.sentry.io/4505281256090153",
"csp": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/csp-report/?sentry_key=a785682ddda719b7a8a4011110d75598",
"security": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/security/?sentry_key=a785682ddda719b7a8a4011110d75598",
"minidump": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/minidump/?sentry_key=a785682ddda719b7a8a4011110d75598",
"nel": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/nel/?sentry_key=a785682ddda719b7a8a4011110d75598",
"unreal": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/unreal/a785682ddda719b7a8a4011110d75598/",
"cdn": "https://js.sentry-cdn.com/a785682ddda719b7a8a4011110d75598.min.js"
},
"browserSdkVersion": "7.x",
"browserSdk": {
"choices": [
[
"latest",
"latest"
],
[
"7.x",
"7.x"
]
]
},
"dateCreated": "2023-06-21T19:50:26.036254Z",
"dynamicSdkLoaderOptions": {
"hasReplay": true,
"hasPerformance": true,
"hasDebug": true
}
},
"summary": "Client key with rate limiting"
}
}
}
},
"description": ""
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"put": {
"operationId": "Update a Client Key",
"description": "Update various settings for a client key.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "key_id",
"schema": {
"type": "string"
},
"description": "The ID of the key to update.",
"required": true
}
],
"tags": [
"Projects"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name for the client key"
},
"isActive": {
"type": "boolean",
"description": "Activate or deactivate the client key."
},
"rateLimit": {
"type": "object",
"description": "Applies a rate limit to cap the number of errors accepted during a given time window. To\ndisable entirely set `rateLimit` to null.\n```json\n{\n \"rateLimit\": {\n \"window\": 7200, // time in seconds\n \"count\": 1000 // error cap\n }\n}\n```",
"properties": {
"count": {
"type": "integer",
"minimum": 0,
"nullable": true
},
"window": {
"type": "integer",
"maximum": 86400,
"minimum": 0,
"nullable": true
}
}
},
"browserSdkVersion": {
"enum": [
"latest",
"7.x"
],
"type": "string",
"description": "The Sentry Javascript SDK version to use. The currently supported options are:\n\n* `latest` - Most recent version\n* `7.x` - Version 7 releases"
},
"dynamicSdkLoaderOptions": {
"type": "object",
"description": "Configures multiple options for the Javascript Loader Script.\n- `Performance Monitoring`\n- `Debug Bundles & Logging`\n- `Session Replay` - Note that the loader will load the ES6 bundle instead of the ES5 bundle.\n```json\n{\n \"dynamicSdkLoaderOptions\": {\n \"hasReplay\": true,\n \"hasPerformance\": true,\n \"hasDebug\": true\n }\n}\n```",
"properties": {
"hasReplay": {
"type": "boolean"
},
"hasPerformance": {
"type": "boolean"
},
"hasDebug": {
"type": "boolean"
}
}
}
}
}
}
}
},
"security": [
{
"auth_token": [
"project:admin",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "This represents a Sentry Project Client Key.",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"label": {
"type": "string"
},
"public": {
"type": "string",
"nullable": true
},
"secret": {
"type": "string",
"nullable": true
},
"projectId": {
"type": "integer"
},
"isActive": {
"type": "boolean"
},
"rateLimit": {
"type": "object",
"properties": {
"window": {
"type": "integer"
},
"count": {
"type": "integer"
}
},
"required": [
"count",
"window"
],
"nullable": true
},
"dsn": {
"type": "object",
"properties": {
"secret": {
"type": "string"
},
"public": {
"type": "string"
},
"csp": {
"type": "string"
},
"security": {
"type": "string"
},
"minidump": {
"type": "string"
},
"nel": {
"type": "string"
},
"unreal": {
"type": "string"
},
"cdn": {
"type": "string"
}
},
"required": [
"cdn",
"csp",
"minidump",
"nel",
"public",
"secret",
"security",
"unreal"
]
},
"browserSdkVersion": {
"type": "string"
},
"browserSdk": {
"type": "object",
"properties": {
"choices": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"required": [
"choices"
]
},
"dateCreated": {
"type": "string",
"format": "date-time",
"nullable": true
},
"dynamicSdkLoaderOptions": {
"type": "object",
"properties": {
"hasReplay": {
"type": "boolean"
},
"hasPerformance": {
"type": "boolean"
},
"hasDebug": {
"type": "boolean"
}
},
"required": [
"hasDebug",
"hasPerformance",
"hasReplay"
]
},
"useCase": {
"type": "string"
}
},
"required": [
"browserSdk",
"browserSdkVersion",
"dateCreated",
"dsn",
"dynamicSdkLoaderOptions",
"id",
"isActive",
"label",
"name",
"projectId",
"public",
"rateLimit",
"secret"
]
},
"examples": {
"ClientKeyWithRateLimiting": {
"value": {
"id": "60120449b6b1d5e45f75561e6dabd80b",
"name": "Liked Pegasus",
"label": "Liked Pegasus",
"public": "60120449b6b1d5e45f75561e6dabd80b",
"secret": "189485c3b8ccf582bf5e12c530ef8858",
"projectId": 4505281256090153,
"isActive": true,
"rateLimit": {
"window": 7200,
"count": 1000
},
"dsn": {
"secret": "https://a785682ddda742d7a8a4088810e67701:bcd99b3790b3441c85ce4b1eaa854f66@o4504765715316736.ingest.sentry.io/4505281256090153",
"public": "https://a785682ddda742d7a8a4088810e67791@o4504765715316736.ingest.sentry.io/4505281256090153",
"csp": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/csp-report/?sentry_key=a785682ddda719b7a8a4011110d75598",
"security": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/security/?sentry_key=a785682ddda719b7a8a4011110d75598",
"minidump": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/minidump/?sentry_key=a785682ddda719b7a8a4011110d75598",
"nel": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/nel/?sentry_key=a785682ddda719b7a8a4011110d75598",
"unreal": "https://o4504765715316736.ingest.sentry.io/api/4505281256090153/unreal/a785682ddda719b7a8a4011110d75598/",
"cdn": "https://js.sentry-cdn.com/a785682ddda719b7a8a4011110d75598.min.js"
},
"browserSdkVersion": "7.x",
"browserSdk": {
"choices": [
[
"latest",
"latest"
],
[
"7.x",
"7.x"
]
]
},
"dateCreated": "2023-06-21T19:50:26.036254Z",
"dynamicSdkLoaderOptions": {
"hasReplay": true,
"hasPerformance": true,
"hasDebug": true
}
},
"summary": "Client key with rate limiting"
}
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"delete": {
"operationId": "Delete a Client Key",
"description": "Delete a client key for a given project.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "key_id",
"schema": {
"type": "string"
},
"description": "The ID of the key to delete.",
"required": true
}
],
"tags": [
"Projects"
],
"security": [
{
"auth_token": [
"project:admin"
]
}
],
"responses": {
"204": {
"description": "No Content"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/projects/{organization_slug}/{project_slug}/monitors/{monitor_slug}/": {
"get": {
"operationId": "Retrieve a Monitor for a Project",
"description": "Retrieves details for a monitor.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "monitor_slug",
"schema": {
"type": "string"
},
"description": "The slug of the monitor.",
"required": true
}
],
"tags": [
"Crons"
],
"security": [
{
"auth_token": [
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"alertRule": {
"type": "object",
"properties": {
"targets": {
"type": "array",
"items": {
"type": "object",
"properties": {
"targetIdentifier": {
"type": "integer"
},
"targetType": {
"type": "string"
}
},
"required": [
"targetIdentifier",
"targetType"
]
}
},
"environment": {
"type": "string"
}
},
"required": [
"environment",
"targets"
]
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"status": {
"type": "string"
},
"isMuted": {
"type": "boolean"
},
"type": {
"enum": [
"cron_job",
"unknown"
],
"type": "string"
},
"config": {
"type": "object",
"properties": {
"schedule_type": {
"enum": [
"crontab",
"interval"
],
"type": "string"
},
"schedule": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "integer"
},
"minLength": 2,
"maxLength": 2
}
]
},
"checkin_margin": {
"type": "integer",
"nullable": true
},
"max_runtime": {
"type": "integer",
"nullable": true
},
"timezone": {
"type": "string",
"nullable": true
},
"failure_issue_threshold": {
"type": "integer",
"nullable": true
},
"recovery_threshold": {
"type": "integer",
"nullable": true
},
"alert_rule_id": {
"type": "integer",
"nullable": true
}
},
"required": [
"alert_rule_id",
"checkin_margin",
"failure_issue_threshold",
"max_runtime",
"recovery_threshold",
"schedule",
"schedule_type",
"timezone"
]
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"project": {
"type": "object",
"properties": {
"stats": {},
"transactionStats": {},
"sessionStats": {},
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"platform": {
"type": "string",
"nullable": true
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"isBookmarked": {
"type": "boolean"
},
"isMember": {
"type": "boolean"
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"firstEvent": {
"type": "string",
"format": "date-time",
"nullable": true
},
"firstTransactionEvent": {
"type": "boolean"
},
"access": {
"type": "array",
"items": {
"type": "string"
}
},
"hasAccess": {
"type": "boolean"
},
"hasCustomMetrics": {
"type": "boolean"
},
"hasMinifiedStackTrace": {
"type": "boolean"
},
"hasMonitors": {
"type": "boolean"
},
"hasProfiles": {
"type": "boolean"
},
"hasReplays": {
"type": "boolean"
},
"hasSessions": {
"type": "boolean"
},
"isInternal": {
"type": "boolean"
},
"isPublic": {
"type": "boolean"
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
},
"avatarUrl": {
"type": "string",
"nullable": true
}
}
},
"color": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"access",
"avatar",
"color",
"dateCreated",
"features",
"firstEvent",
"firstTransactionEvent",
"hasAccess",
"hasCustomMetrics",
"hasMinifiedStackTrace",
"hasMonitors",
"hasProfiles",
"hasReplays",
"hasSessions",
"id",
"isBookmarked",
"isInternal",
"isMember",
"isPublic",
"name",
"platform",
"slug",
"status"
]
},
"environments": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"status": {
"type": "string"
},
"isMuted": {
"type": "boolean"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"lastCheckIn": {
"type": "string",
"format": "date-time"
},
"nextCheckIn": {
"type": "string",
"format": "date-time"
},
"nextCheckInLatest": {
"type": "string",
"format": "date-time"
}
},
"required": [
"dateCreated",
"isMuted",
"lastCheckIn",
"name",
"nextCheckIn",
"nextCheckInLatest",
"status"
]
}
},
"required": [
"config",
"dateCreated",
"environments",
"id",
"isMuted",
"name",
"project",
"slug",
"status",
"type"
]
}
}
},
"description": ""
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"put": {
"operationId": "Update a Monitor for a Project",
"description": "Update a monitor.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "monitor_slug",
"schema": {
"type": "string"
},
"description": "The slug of the monitor.",
"required": true
}
],
"tags": [
"Crons"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "Allows parameters to be defined in snake case, but passed as camel case.\n\nErrors are output in camel case.",
"properties": {
"name": {
"type": "string",
"description": "Name of the monitor. Used for notifications.",
"maxLength": 128
},
"type": {
"enum": [
"cron_job"
],
"type": "string",
"description": "* `cron_job` - cron_job"
},
"slug": {
"type": "string",
"description": "Uniquely identifies your monitor within your organization. Changing this slug will require updates to any instrumented check-in calls.",
"maxLength": 50,
"pattern": "^(?![0-9]+$)[a-z0-9_\\-]+$"
},
"status": {
"enum": [
"active",
"disabled"
],
"type": "string",
"default": "active",
"description": "Status of the monitor. Disabled monitors will not accept events and will not count towards the monitor quota.\n\n* `active` - active\n* `disabled` - disabled"
},
"is_muted": {
"type": "boolean",
"description": "Disable creation of monitor incidents"
}
},
"required": [
"name",
"type"
]
}
}
},
"required": true
},
"security": [
{
"auth_token": [
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"alertRule": {
"type": "object",
"properties": {
"targets": {
"type": "array",
"items": {
"type": "object",
"properties": {
"targetIdentifier": {
"type": "integer"
},
"targetType": {
"type": "string"
}
},
"required": [
"targetIdentifier",
"targetType"
]
}
},
"environment": {
"type": "string"
}
},
"required": [
"environment",
"targets"
]
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"status": {
"type": "string"
},
"isMuted": {
"type": "boolean"
},
"type": {
"enum": [
"cron_job",
"unknown"
],
"type": "string"
},
"config": {
"type": "object",
"properties": {
"schedule_type": {
"enum": [
"crontab",
"interval"
],
"type": "string"
},
"schedule": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "integer"
},
"minLength": 2,
"maxLength": 2
}
]
},
"checkin_margin": {
"type": "integer",
"nullable": true
},
"max_runtime": {
"type": "integer",
"nullable": true
},
"timezone": {
"type": "string",
"nullable": true
},
"failure_issue_threshold": {
"type": "integer",
"nullable": true
},
"recovery_threshold": {
"type": "integer",
"nullable": true
},
"alert_rule_id": {
"type": "integer",
"nullable": true
}
},
"required": [
"alert_rule_id",
"checkin_margin",
"failure_issue_threshold",
"max_runtime",
"recovery_threshold",
"schedule",
"schedule_type",
"timezone"
]
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"project": {
"type": "object",
"properties": {
"stats": {},
"transactionStats": {},
"sessionStats": {},
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"platform": {
"type": "string",
"nullable": true
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"isBookmarked": {
"type": "boolean"
},
"isMember": {
"type": "boolean"
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"firstEvent": {
"type": "string",
"format": "date-time",
"nullable": true
},
"firstTransactionEvent": {
"type": "boolean"
},
"access": {
"type": "array",
"items": {
"type": "string"
}
},
"hasAccess": {
"type": "boolean"
},
"hasCustomMetrics": {
"type": "boolean"
},
"hasMinifiedStackTrace": {
"type": "boolean"
},
"hasMonitors": {
"type": "boolean"
},
"hasProfiles": {
"type": "boolean"
},
"hasReplays": {
"type": "boolean"
},
"hasSessions": {
"type": "boolean"
},
"isInternal": {
"type": "boolean"
},
"isPublic": {
"type": "boolean"
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
},
"avatarUrl": {
"type": "string",
"nullable": true
}
}
},
"color": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"access",
"avatar",
"color",
"dateCreated",
"features",
"firstEvent",
"firstTransactionEvent",
"hasAccess",
"hasCustomMetrics",
"hasMinifiedStackTrace",
"hasMonitors",
"hasProfiles",
"hasReplays",
"hasSessions",
"id",
"isBookmarked",
"isInternal",
"isMember",
"isPublic",
"name",
"platform",
"slug",
"status"
]
},
"environments": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"status": {
"type": "string"
},
"isMuted": {
"type": "boolean"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"lastCheckIn": {
"type": "string",
"format": "date-time"
},
"nextCheckIn": {
"type": "string",
"format": "date-time"
},
"nextCheckInLatest": {
"type": "string",
"format": "date-time"
}
},
"required": [
"dateCreated",
"isMuted",
"lastCheckIn",
"name",
"nextCheckIn",
"nextCheckInLatest",
"status"
]
}
},
"required": [
"config",
"dateCreated",
"environments",
"id",
"isMuted",
"name",
"project",
"slug",
"status",
"type"
]
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"delete": {
"operationId": "Delete a Monitor or Monitor Environments for a Project",
"description": "Delete a monitor or monitor environments.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "monitor_slug",
"schema": {
"type": "string"
},
"description": "The slug of the monitor.",
"required": true
},
{
"in": "query",
"name": "environment",
"schema": {
"type": "array",
"items": {
"type": "string"
}
},
"description": "The name of environments to filter by."
}
],
"tags": [
"Crons"
],
"security": [
{
"auth_token": [
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"202": {
"description": "Accepted"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/projects/{organization_slug}/{project_slug}/monitors/{monitor_slug}/checkins/": {
"get": {
"operationId": "Retrieve Check-Ins for a Monitor by Project",
"description": "Retrieve a list of check-ins for a monitor",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "monitor_slug",
"schema": {
"type": "string"
},
"description": "The slug of the monitor.",
"required": true
}
],
"tags": [
"Crons"
],
"security": [
{
"auth_token": [
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"groups": {
"type": "array",
"items": {
"type": "string"
}
},
"id": {
"type": "string"
},
"environment": {
"type": "string"
},
"status": {
"type": "string"
},
"duration": {
"type": "integer"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"attachmentId": {
"type": "string"
},
"expectedTime": {
"type": "string",
"format": "date-time"
},
"monitorConfig": {}
},
"required": [
"attachmentId",
"dateCreated",
"duration",
"environment",
"expectedTime",
"id",
"monitorConfig",
"status"
]
}
}
}
},
"description": ""
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/projects/{organization_slug}/{project_slug}/ownership/": {
"get": {
"operationId": "Retrieve Ownership Configuration for a Project",
"description": "Returns details on a project's ownership configuration.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
}
],
"tags": [
"Projects"
],
"security": [
{
"auth_token": [
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"schema": {
"type": "object",
"additionalProperties": {}
},
"raw": {
"type": "string"
},
"fallthrough": {
"type": "boolean"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"lastUpdated": {
"type": "string",
"format": "date-time"
},
"isActive": {
"type": "boolean"
},
"autoAssignment": {
"type": "string"
},
"codeownersAutoSync": {
"type": "boolean"
}
},
"required": [
"autoAssignment",
"codeownersAutoSync",
"dateCreated",
"fallthrough",
"isActive",
"lastUpdated",
"raw"
]
},
"examples": {
"GetOwnershipConfigurationForAProject": {
"value": {
"raw": "path:src/views/checkout jane.smith@org.com \nurl:https://example.com/checkout jane.smith@org.com\ntags.transaction:/checkout/:page jane.smith@org.com",
"fallthrough": true,
"dateCreated": "2023-10-03T20:25:18.539823Z",
"lastUpdated": "2023-10-03T22:49:12.294741Z",
"isActive": true,
"autoAssignment": "Auto Assign to Issue Owner",
"codeownersAutoSync": true,
"schema": {
"$version": 1,
"rules": [
{
"matcher": {
"type": "path",
"pattern": "src/views/checkout"
},
"owners": [
{
"type": "user",
"id": 2621754,
"name": "jane.smith@org.com"
}
]
},
{
"matcher": {
"type": "url",
"pattern": "https://example.com/checkout"
},
"owners": [
{
"type": "user",
"id": 2621754,
"name": "jane.smith@org.com"
}
]
},
{
"matcher": {
"type": "tags.transaction",
"pattern": "/checkout/:page"
},
"owners": [
{
"type": "user",
"id": 2621754,
"name": "jane.smith@org.com"
}
]
}
]
}
},
"summary": "Get ownership configuration for a project"
}
}
}
},
"description": ""
}
}
},
"put": {
"operationId": "Update Ownership Configuration for a Project",
"description": "Updates ownership configurations for a project. Note that only the\nattributes submitted are modified.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
}
],
"tags": [
"Projects"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"raw": {
"type": "string",
"description": "Raw input for ownership configuration. See the [Ownership Rules Documentation](/product/issues/ownership-rules/) to learn more."
},
"fallthrough": {
"type": "boolean",
"description": "A boolean determining who to assign ownership to when an ownership rule has no match. If set to `True`, all project members are made owners. Otherwise, no owners are set."
},
"autoAssignment": {
"type": "string",
"description": "Auto-assignment settings. The available options are:\n- Auto Assign to Issue Owner\n- Auto Assign to Suspect Commits\n- Turn off Auto-Assignment"
},
"codeownersAutoSync": {
"type": "boolean",
"default": true,
"description": "Set to `True` to sync issue owners with CODEOWNERS updates in a release."
}
}
}
}
}
},
"security": [
{
"auth_token": [
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"202": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"schema": {
"type": "object",
"additionalProperties": {}
},
"raw": {
"type": "string"
},
"fallthrough": {
"type": "boolean"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"lastUpdated": {
"type": "string",
"format": "date-time"
},
"isActive": {
"type": "boolean"
},
"autoAssignment": {
"type": "string"
},
"codeownersAutoSync": {
"type": "boolean"
}
},
"required": [
"autoAssignment",
"codeownersAutoSync",
"dateCreated",
"fallthrough",
"isActive",
"lastUpdated",
"raw"
]
},
"examples": {
"UpdateOwnershipConfigurationForAProject": {
"value": {
"raw": "path:src/views/checkout jane.smith@org.com \nurl:https://example.com/checkout jane.smith@org.com\ntags.transaction:/checkout/:page jane.smith@org.com",
"fallthrough": true,
"dateCreated": "2023-10-03T20:25:18.539823Z",
"lastUpdated": "2023-10-03T22:49:12.294741Z",
"isActive": true,
"autoAssignment": "Auto Assign to Issue Owner",
"codeownersAutoSync": true,
"schema": {
"$version": 1,
"rules": [
{
"matcher": {
"type": "path",
"pattern": "src/views/checkout"
},
"owners": [
{
"type": "user",
"id": 2621754,
"name": "jane.smith@org.com"
}
]
},
{
"matcher": {
"type": "url",
"pattern": "https://example.com/checkout"
},
"owners": [
{
"type": "user",
"id": 2621754,
"name": "jane.smith@org.com"
}
]
},
{
"matcher": {
"type": "tags.transaction",
"pattern": "/checkout/:page"
},
"owners": [
{
"type": "user",
"id": 2621754,
"name": "jane.smith@org.com"
}
]
}
]
}
},
"summary": "Update ownership configuration for a project"
}
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
}
}
}
},
"/api/0/projects/{organization_slug}/{project_slug}/replays/{replay_id}/": {
"delete": {
"operationId": "Delete a Replay Instance",
"description": "Delete a replay",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "replay_id",
"schema": {
"type": "string",
"format": "uuid"
},
"description": "The ID of the replay you'd like to retrieve.",
"required": true
}
],
"tags": [
"Replays"
],
"security": [
{
"auth_token": [
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"204": {
"description": "No Content"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/projects/{organization_slug}/{project_slug}/replays/{replay_id}/clicks/": {
"get": {
"operationId": "List Clicked Nodes",
"description": "Retrieve a collection of RRWeb DOM node-ids and the timestamp they were clicked.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "replay_id",
"schema": {
"type": "string",
"format": "uuid"
},
"description": "The ID of the replay you'd like to retrieve.",
"required": true
},
{
"in": "query",
"name": "cursor",
"schema": {
"type": "string",
"minLength": 1
},
"description": "A pointer to the last object fetched and its sort order; used to retrieve the next or previous results."
},
{
"in": "query",
"name": "environment",
"schema": {
"type": "array",
"items": {
"type": "string"
}
},
"description": "The name of environments to filter by."
},
{
"in": "query",
"name": "per_page",
"schema": {
"type": "integer"
},
"description": "Limit the number of rows to return in the result. Default and maximum allowed is 100."
},
{
"in": "query",
"name": "query",
"schema": {
"type": "string"
},
"description": "The search filter for your query, read more about query syntax [here](https://docs.sentry.io/product/sentry-basics/search/).\n\nexample: `query=(transaction:foo AND release:abc) OR (transaction:[bar,baz] AND release:def)`\n"
}
],
"tags": [
"Replays"
],
"security": [
{
"auth_token": [
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"node_id": {
"type": "integer"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
},
"required": [
"node_id",
"timestamp"
]
}
}
},
"required": [
"data"
]
},
"examples": {
"RetrieveACollectionOfRRWebDOMNode-idsAndTheTimestampTheyWereClicked.": {
"value": {
"data": [
{
"node_id": 1,
"timestamp": "2024-02-08T15:52:25+00:00"
}
]
},
"summary": "Retrieve a collection of RRWeb DOM node-ids and the timestamp they were clicked."
}
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/projects/{organization_slug}/{project_slug}/replays/{replay_id}/recording-segments/": {
"get": {
"operationId": "List Recording Segments",
"description": "Return a collection of replay recording segments.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "replay_id",
"schema": {
"type": "string",
"format": "uuid"
},
"description": "The ID of the replay you'd like to retrieve.",
"required": true
},
{
"in": "query",
"name": "cursor",
"schema": {
"type": "string",
"minLength": 1
},
"description": "A pointer to the last object fetched and its sort order; used to retrieve the next or previous results."
},
{
"in": "query",
"name": "per_page",
"schema": {
"type": "integer"
},
"description": "Limit the number of rows to return in the result. Default and maximum allowed is 100."
}
],
"tags": [
"Replays"
],
"security": [
{
"auth_token": [
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
}
},
"examples": {
"RetrieveACollectionOfReplaySegments": {
"value": [
[
{
"type": 5,
"timestamp": 1658770772.902,
"data": {
"tag": "performanceSpan",
"payload": {
"op": "memory",
"description": "",
"startTimestamp": 1658770772.902,
"endTimestamp": 1658770772.902,
"data": {
"memory": {
"jsHeapSizeLimit": 4294705152,
"totalJSHeapSize": 10204109,
"usedJSHeapSize": 9131621
}
}
}
}
}
],
[
{
"type": 5,
"timestamp": 1665063926.125,
"data": {
"tag": "performanceSpan",
"payload": {
"op": "navigation.navigate",
"description": "https://sentry.io",
"startTimestamp": 1665063926.125,
"endTimestamp": 1665063926.833,
"data": {
"size": 9538,
"duration": 710
}
}
}
}
]
],
"summary": "Retrieve a collection of replay segments"
}
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/projects/{organization_slug}/{project_slug}/replays/{replay_id}/recording-segments/{segment_id}/": {
"get": {
"operationId": "Fetch Recording Segment",
"description": "Return a replay recording segment.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "replay_id",
"schema": {
"type": "string",
"format": "uuid"
},
"description": "The ID of the replay you'd like to retrieve.",
"required": true
},
{
"in": "path",
"name": "segment_id",
"schema": {
"type": "integer"
},
"description": "The ID of the segment you'd like to retrieve.",
"required": true
}
],
"tags": [
"Replays"
],
"security": [
{
"auth_token": [
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"examples": {
"RetrieveAReplaySegment": {
"value": [
{
"type": 5,
"timestamp": 1658770772.902,
"data": {
"tag": "performanceSpan",
"payload": {
"op": "memory",
"description": "",
"startTimestamp": 1658770772.902,
"endTimestamp": 1658770772.902,
"data": {
"memory": {
"jsHeapSizeLimit": 4294705152,
"totalJSHeapSize": 10204109,
"usedJSHeapSize": 9131621
}
}
}
}
}
],
"summary": "Retrieve a replay segment"
}
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/projects/{organization_slug}/{project_slug}/rules/": {
"get": {
"operationId": "List a Project's Issue Alert Rules",
"description": "Return a list of active issue alert rules bound to a project.\n\nAn issue alert rule triggers whenever a new event is received for any issue in a project that matches the specified alert conditions. These conditions can include a resolved issue re-appearing or an issue affecting many users. Alert conditions have three parts:\n- Triggers: specify what type of activity you'd like monitored or when an alert should be triggered.\n- Filters: help control noise by triggering an alert only if the issue matches the specified criteria.\n- Actions: specify what should happen when the trigger conditions are met and the filters match.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
}
],
"tags": [
"Alerts"
],
"security": [
{
"auth_token": [
"alerts:read",
"alerts:write",
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"description": "This represents a Sentry Rule.",
"properties": {
"owner": {
"type": "string",
"nullable": true
},
"createdBy": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
}
},
"required": [
"email",
"id",
"name"
],
"nullable": true
},
"environment": {
"type": "string",
"nullable": true
},
"lastTriggered": {
"type": "string",
"nullable": true
},
"snoozeCreatedBy": {
"type": "string",
"nullable": true
},
"snoozeForEveryone": {
"type": "boolean",
"nullable": true
},
"id": {
"type": "string"
},
"conditions": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"filters": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"actions": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"actionMatch": {
"type": "string"
},
"filterMatch": {
"type": "string"
},
"frequency": {
"type": "integer"
},
"name": {
"type": "string"
},
"dateCreated": {
"type": "string"
},
"projects": {
"type": "array",
"items": {
"type": "string"
}
},
"status": {
"type": "string"
},
"snooze": {
"type": "boolean"
}
},
"required": [
"actionMatch",
"actions",
"conditions",
"dateCreated",
"filterMatch",
"filters",
"frequency",
"id",
"name",
"projects",
"snooze",
"status"
]
}
},
"examples": {
"ListIssueAlertRulesForAProject": {
"value": [
{
"id": "3",
"conditions": [
{
"interval": "1h",
"id": "sentry.rules.conditions.event_frequency.EventFrequencyCondition",
"value": 1000
}
],
"filters": [
{
"value": "1",
"id": "sentry.rules.filters.issue_category.IssueCategoryFilter"
},
{
"value": "2",
"id": "sentry.rules.filters.issue_category.IssueCategoryFilter"
}
],
"actions": [
{
"targetType": "Team",
"fallthroughType": "ActiveMembers",
"id": "sentry.mail.actions.NotifyEmailAction",
"targetIdentifier": 4367234414355
}
],
"actionMatch": "any",
"filterMatch": "any",
"frequency": 60,
"name": "High Number of Issues with Production",
"dateCreated": "2023-01-15T06:45:34.353346Z",
"owner": "team:63562",
"createdBy": {
"id": 2435786,
"name": "John Doe",
"email": "john.doe@example.com"
},
"environment": "prod",
"projects": [
"melody"
],
"status": "active",
"lastTriggered": "2023-07-15T00:00:00.351236Z",
"snooze": false
}
],
"summary": "List issue alert rules for a project"
}
}
}
},
"description": ""
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"post": {
"operationId": "Create an Issue Alert Rule for a Project",
"description": "Create a new issue alert rule for the given project.\n\nAn issue alert rule triggers whenever a new event is received for any issue in a project that matches the specified alert conditions. These conditions can include a resolved issue re-appearing or an issue affecting many users. Alert conditions have three parts:\n- Triggers: specify what type of activity you'd like monitored or when an alert should be triggered.\n- Filters: help control noise by triggering an alert only if the issue matches the specified criteria.\n- Actions: specify what should happen when the trigger conditions are met and the filters match.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
}
],
"tags": [
"Alerts"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name for the rule.",
"maxLength": 256
},
"actionMatch": {
"enum": [
"all",
"any",
"none"
],
"type": "string",
"description": "A string determining which of the conditions need to be true before any filters are evaluated.\n\n* `all` - All conditions must evaluate to true.\n* `any` - At least one of the conditions must evaluate to true.\n* `none` - All conditions must evaluate to false."
},
"conditions": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
},
"description": "\nA list of triggers that determine when the rule fires. See below for a list of possible conditions.\n\n**A new issue is created**\n```json\n{\n \"id\": \"sentry.rules.conditions.first_seen_event.FirstSeenEventCondition\"\n}\n```\n\n**The issue changes state from resolved to unresolved**\n```json\n{\n \"id\": \"sentry.rules.conditions.regression_event.RegressionEventCondition\"\n}\n```\n\n**The issue is seen more than `value` times in `interval`**\n- `value` - An integer\n- `interval` - Valid values are `1m`, `5m`, `15m`, `1h`, `1d`, `1w` and `30d` (`m` for minutes, `h` for hours, `d` for days, and `w` for weeks).\n```json\n{\n \"id\": \"sentry.rules.conditions.event_frequency.EventFrequencyCondition\",\n \"value\": 500,\n \"interval\": \"1h\"\n}\n```\n\n**The issue is seen by more than `value` users in `interval`**\n- `value` - An integer\n- `interval` - Valid values are `1m`, `5m`, `15m`, `1h`, `1d`, `1w` and `30d` (`m` for minutes, `h` for hours, `d` for days, and `w` for weeks).\n```json\n{\n \"id\": \"sentry.rules.conditions.event_frequency.EventUniqueUserFrequencyCondition\",\n \"value\": 1000,\n \"interval\": \"15m\"\n}\n```\n\n**The issue affects more than `value` percent of sessions in `interval`**\n- `value` - An integer from 0 to 100\n- `interval` - Valid values are `5m`, `10m`, `30m`, and `1h` (`m` for minutes, `h` for hours).\n```json\n{\n \"id\": \"sentry.rules.conditions.event_frequency.EventFrequencyPercentCondition\",\n \"value\": 50,\n \"interval\": \"10m\"\n}\n```\n"
},
"actions": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
},
"description": "\nA list of actions that take place when all required conditions and filters for the rule are met. See below for a list of possible actions.\n\n**Send a notification to Suggested Assignees**\n- `fallthroughType` - Who the notification should be sent to if there are no suggested assignees. Valid values are `ActiveMembers`, `AllMembers`, and `NoOne`.\n```json\n{\n \"id\" - \"sentry.mail.actions.NotifyEmailAction\",\n \"targetType\" - \"IssueOwners\",\n \"fallthroughType\" - \"ActiveMembers\"\n}\n```\n\n**Send a notification to a Member or a Team**\n- `targetType` - One of `Member` or `Team`.\n- `fallthroughType` - Who the notification should be sent to if it cannot be sent to the original target. Valid values are `ActiveMembers`, `AllMembers`, and `NoOne`.\n- `targetIdentifier` - The ID of the Member or Team the notification should be sent to.\n```json\n{\n \"id\": \"sentry.mail.actions.NotifyEmailAction\",\n \"targetType\": \"Team\"\n \"fallthroughType\": \"AllMembers\"\n \"targetIdentifier\": 4524986223\n}\n```\n\n**Send a Slack notification**\n- `workspace` - The integration ID associated with the Slack workspace.\n- `channel` - The name of the channel to send the notification to (e.g., #critical, Jane Schmidt).\n- `channel_id` (optional) - The ID of the channel to send the notification to.\n- `tags` - A string of tags to show in the notification, separated by commas (e.g., \"environment, user, my_tag\").\n```json\n{\n \"id\": \"sentry.integrations.slack.notify_action.SlackNotifyServiceAction\",\n \"workspace\": 293854098,\n \"channel\": \"#warning\",\n \"tags\": \"environment,level\"\n}\n```\n\n**Send a Microsoft Teams notification**\n- `team` - The integration ID associated with the Microsoft Teams team.\n- `channel` - The name of the channel to send the notification to.\n```json\n{\n \"id\": \"sentry.integrations.msteams.notify_action.MsTeamsNotifyServiceAction\",\n \"team\": 23465424,\n \"channel\": \"General\"\n}\n```\n\n**Send a Discord notification**\n- `server` - The integration ID associated with the Discord server.\n- `channel_id` - The ID of the channel to send the notification to.\n- `tags` - A string of tags to show in the notification, separated by commas (e.g., \"environment, user, my_tag\").\n```json\n{\n \"id\": \"sentry.integrations.discord.notify_action.DiscordNotifyServiceAction\",\n \"server\": 63408298,\n \"channel_id\": 94732897,\n \"tags\": \"browser,user\"\n}\n```\n\n**Create a Jira Ticket**\n- `integration` - The integration ID associated with Jira.\n- `project` - The ID of the Jira project.\n- `issuetype` - The ID of the type of issue that the ticket should be created as.\n- `dynamic_form_fields` (optional) - A list of any custom fields you want to include in the ticket as objects.\n```json\n{\n \"id\": \"sentry.integrations.jira.notify_action.JiraCreateTicketAction\",\n \"integration\": 321424,\n \"project\": \"349719\"\n \"issueType\": \"1\"\n}\n```\n\n**Create a Jira Server Ticket**\n- `integration` - The integration ID associated with Jira Server.\n- `project` - The ID of the Jira Server project.\n- `issuetype` - The ID of the type of issue that the ticket should be created as.\n- `dynamic_form_fields` (optional) - A list of any custom fields you want to include in the ticket as objects.\n```json\n{\n \"id\": \"sentry.integrations.jira_server.notify_action.JiraServerCreateTicketAction\",\n \"integration\": 321424,\n \"project\": \"349719\"\n \"issueType\": \"1\"\n}\n```\n\n**Create a GitHub Issue**\n- `integration` - The integration ID associated with GitHub.\n- `repo` - The name of the repository to create the issue in.\n- `title` - The title of the issue.\n- `body` (optional) - The contents of the issue.\n- `assignee` (optional) - The GitHub user to assign the issue to.\n- `labels` (optional) - A list of labels to assign to the issue.\n```json\n{\n \"id\": \"sentry.integrations.github.notify_action.GitHubCreateTicketAction\",\n \"integration\": 93749,\n \"repo\": default,\n \"title\": \"My Test Issue\",\n \"assignee\": \"Baxter the Hacker\",\n \"labels\": [\"bug\", \"p1\"]\n \"\"\n}\n```\n\n**Create an Azure DevOps work item**\n- `integration` - The integration ID.\n- `project` - The ID of the Azure DevOps project.\n- `work_item_type` - The type of work item to create.\n- `dynamic_form_fields` (optional) - A list of any custom fields you want to include in the work item as objects.\n```json\n{\n \"id\": \"sentry.integrations.vsts.notify_action.AzureDevopsCreateTicketAction\",\n \"integration\": 294838,\n \"project\": \"0389485\",\n \"work_item_type\": \"Microsoft.VSTS.WorkItemTypes.Task\",\n}\n```\n\n**Send a PagerDuty notification**\n- `account` - The integration ID associated with the PagerDuty account.\n- `service` - The ID of the service to send the notification to.\n```json\n{\n \"id\": \"sentry.integrations.pagerduty.notify_action.PagerDutyNotifyServiceAction\",\n \"account\": 92385907,\n \"service\": 9823924\n}\n```\n\n**Send an Opsgenie notification**\n- `account` - The integration ID associated with the Opsgenie account.\n- `team` - The ID of the Opsgenie team to send the notification to.\n```json\n{\n \"id\": \"sentry.integrations.opsgenie.notify_action.OpsgenieNotifyTeamAction\",\n \"account\": 8723897589,\n \"team\": \"9438930258-fairy\"\n}\n```\n\n**Send a notification to a service**\n- `service` - The plugin slug.\n```json\n{\n \"id\": \"sentry.rules.actions.notify_event_service.NotifyEventServiceAction\",\n \"service\": \"mail\"\n}\n```\n\n**Send a notification to a Sentry app with a custom webhook payload**\n- `settings` - A list of objects denoting the settings each action will be created with. All required fields must be included.\n- `sentryAppInstallationUuid` - The ID for the Sentry app\n```json\n{\n \"id\": \"sentry.rules.actions.notify_event_sentry_app.NotifyEventSentryAppAction\",\n \"settings\": [\n {\"name\": \"title\", \"value\": \"Team Rocket\"},\n {\"name\": \"summary\", \"value\": \"We're blasting off again.\"},\n ],\n \"sentryAppInstallationUuid\": 643522\n \"hasSchemaFormConfig\": true\n}\n```\n\n**Send a notification (for all legacy integrations)**\n```json\n{\n \"id\": \"sentry.rules.actions.notify_event.NotifyEventAction\"\n}\n```\n"
},
"frequency": {
"type": "integer",
"maximum": 43200,
"minimum": 5,
"description": "How often to perform the actions once for an issue, in minutes. The valid range is `5` to `43200`."
},
"environment": {
"type": "string",
"nullable": true,
"description": "The name of the environment to filter by."
},
"filterMatch": {
"enum": [
"all",
"any",
"none"
],
"type": "string",
"description": "A string determining which filters need to be true before any actions take place. Required when a value is provided for `filters`.\n\n* `all` - All filters must evaluate to true.\n* `any` - At least one of the filters must evaluate to true.\n* `none` - All filters must evaluate to false."
},
"filters": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
},
"description": "\nA list of filters that determine if a rule fires after the necessary conditions have been met. See below for a list of possible filters.\n\n**The issue is `comparison_type` than `value` `time`**\n- `comparison_type` - One of `older` or `newer`\n- `value` - An integer\n- `time` - The unit of time. Valid values are `minute`, `hour`, `day`, and `week`.\n```json\n{\n \"id\": \"sentry.rules.filters.age_comparison.AgeComparisonFilter\",\n \"comparison_type\": \"older\",\n \"value\": 3,\n \"time\": \"week\"\n}\n```\n\n**The issue has happened at least `value` times**\n- `value` - An integer\n```json\n{\n \"id\": \"sentry.rules.filters.issue_occurrences.IssueOccurrencesFilter\",\n \"value\": 120\n}\n```\n\n**The issue is assigned to No One**\n```json\n{\n \"id\": \"sentry.rules.filters.assigned_to.AssignedToFilter\",\n \"targetType\": \"Unassigned\"\n}\n```\n\n**The issue is assigned to `targetType`**\n- `targetType` - One of `Team` or `Member`\n- `targetIdentifier` - The target's ID\n```json\n{\n \"id\": \"sentry.rules.filters.assigned_to.AssignedToFilter\",\n \"targetType\": \"Member\",\n \"targetIdentifier\": 895329789\n}\n```\n\n**The event is from the latest release**\n```json\n{\n \"id\": \"sentry.rules.filters.latest_release.LatestReleaseFilter\"\n}\n```\n\n**The issue's category is equal to `value`**\n- `value` - An integer correlated with a category. Valid values are `1` (Error), `2` (Performance), `3` (Profile), `4` (Cron), and `5` (Replay).\n```json\n{\n \"id\": \"sentry.rules.filters.issue_category.IssueCategoryFilter\",\n \"value\": 2\n}\n```\n\n**The event's `attribute` value `match` `value`**\n- `attribute` - 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.crashtype`, and `app.in_foreground`.\n- `match` - The comparison operator. Valid values are `eq` (equals), `ne` (does not equal), `sw` (starts with), `ew` (ends with), `co` (contains), `nc` (does not contain), `is` (is set), and `ns` (is not set).\n- `value` - A string. Not required when `match` is `is` or `ns`.\n```json\n{\n \"id\": \"sentry.rules.conditions.event_attribute.EventAttributeCondition\",\n \"attribute\": \"http.url\",\n \"match\": \"nc\",\n \"value\": \"localhost\"\n}\n```\n\n**The event's tags match `key` `match` `value`**\n- `key` - The tag\n- `match` - The comparison operator. Valid values are `eq` (equals), `ne` (does not equal), `sw` (starts with), `ew` (ends with), `co` (contains), `nc` (does not contain), `is` (is set), and `ns` (is not set).\n- `value` - A string. Not required when `match` is `is` or `ns`.\n```json\n{\n \"id\": \"sentry.rules.filters.tagged_event.TaggedEventFilter\",\n \"key\": \"level\",\n \"match\": \"eq\"\n \"value\": \"error\"\n}\n```\n\n**The event's level is `match` `level`**\n- `match` - Valid values are `eq`, `gte`, and `lte`.\n- `level` - Valid values are `50` (fatal), `40` (error), `30` (warning), `20` (info), `10` (debug), `0` (sample).\n```json\n{\n \"id\": \"sentry.rules.filters.level.LevelFilter\",\n \"match\": \"gte\"\n \"level\": \"50\"\n}\n```\n"
},
"owner": {
"type": "string",
"nullable": true,
"description": "The ID of the team or user that owns the rule."
}
},
"required": [
"actionMatch",
"actions",
"conditions",
"frequency",
"name"
]
}
}
},
"required": true
},
"security": [
{
"auth_token": [
"alerts:write",
"project:admin",
"project:write"
]
}
],
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "This represents a Sentry Rule.",
"properties": {
"owner": {
"type": "string",
"nullable": true
},
"createdBy": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
}
},
"required": [
"email",
"id",
"name"
],
"nullable": true
},
"environment": {
"type": "string",
"nullable": true
},
"lastTriggered": {
"type": "string",
"nullable": true
},
"snoozeCreatedBy": {
"type": "string",
"nullable": true
},
"snoozeForEveryone": {
"type": "boolean",
"nullable": true
},
"id": {
"type": "string"
},
"conditions": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"filters": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"actions": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"actionMatch": {
"type": "string"
},
"filterMatch": {
"type": "string"
},
"frequency": {
"type": "integer"
},
"name": {
"type": "string"
},
"dateCreated": {
"type": "string"
},
"projects": {
"type": "array",
"items": {
"type": "string"
}
},
"status": {
"type": "string"
},
"snooze": {
"type": "boolean"
}
},
"required": [
"actionMatch",
"actions",
"conditions",
"dateCreated",
"filterMatch",
"filters",
"frequency",
"id",
"name",
"projects",
"snooze",
"status"
]
},
"examples": {
"IssueAlertSuccessfullyCreated": {
"value": {
"id": "1",
"conditions": [
{
"id": "sentry.rules.conditions.first_seen_event.FirstSeenEventCondition"
}
],
"filters": [
{
"targetType": "Unassigned",
"id": "sentry.rules.filters.assigned_to.AssignedToFilter",
"targetIdentifier": ""
}
],
"actions": [
{
"targetType": "Member",
"fallthroughType": "ActiveMembers",
"id": "sentry.mail.actions.NotifyEmailAction",
"targetIdentifier": 1523125
}
],
"actionMatch": "any",
"filterMatch": "all",
"frequency": 1440,
"name": "Owner Alert",
"dateCreated": "2023-09-08T20:00:07.244602Z",
"owner": "team:74234",
"createdBy": {
"id": 24601,
"name": "Jean Valjean",
"email": "jean@example.com"
},
"environment": null,
"projects": [
"python"
],
"status": "active",
"snooze": false
},
"summary": "Issue alert successfully created"
}
}
}
},
"description": ""
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/projects/{organization_slug}/{project_slug}/rules/{rule_id}/": {
"get": {
"operationId": "Retrieve an Issue Alert Rule for a Project",
"description": "Return details on an individual issue alert rule.\n\nAn issue alert rule triggers whenever a new event is received for any issue in a project that matches the specified alert conditions. These conditions can include a resolved issue re-appearing or an issue affecting many users. Alert conditions have three parts:\n- Triggers - specify what type of activity you'd like monitored or when an alert should be triggered.\n- Filters - help control noise by triggering an alert only if the issue matches the specified criteria.\n- Actions - specify what should happen when the trigger conditions are met and the filters match.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "rule_id",
"schema": {
"type": "integer"
},
"description": "The ID of the rule you'd like to query.",
"required": true
}
],
"tags": [
"Alerts"
],
"security": [
{
"auth_token": [
"alerts:read",
"alerts:write",
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "This represents a Sentry Rule.",
"properties": {
"owner": {
"type": "string",
"nullable": true
},
"createdBy": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
}
},
"required": [
"email",
"id",
"name"
],
"nullable": true
},
"environment": {
"type": "string",
"nullable": true
},
"lastTriggered": {
"type": "string",
"nullable": true
},
"snoozeCreatedBy": {
"type": "string",
"nullable": true
},
"snoozeForEveryone": {
"type": "boolean",
"nullable": true
},
"id": {
"type": "string"
},
"conditions": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"filters": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"actions": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"actionMatch": {
"type": "string"
},
"filterMatch": {
"type": "string"
},
"frequency": {
"type": "integer"
},
"name": {
"type": "string"
},
"dateCreated": {
"type": "string"
},
"projects": {
"type": "array",
"items": {
"type": "string"
}
},
"status": {
"type": "string"
},
"snooze": {
"type": "boolean"
}
},
"required": [
"actionMatch",
"actions",
"conditions",
"dateCreated",
"filterMatch",
"filters",
"frequency",
"id",
"name",
"projects",
"snooze",
"status"
]
},
"examples": {
"GetDetailedViewAboutAnIssueAlertRule": {
"value": {
"id": "7",
"conditions": [
{
"id": "sentry.rules.conditions.regression_event.RegressionEventCondition"
}
],
"filters": [
{
"id": "sentry.rules.filters.age_comparison.AgeComparisonFilter",
"comparison_type": "older",
"value": 4,
"time": "week"
},
{
"id": "sentry.rules.filters.issue_occurrences.IssueOccurrencesFilter",
"value": 1000
}
],
"actions": [
{
"id": "sentry.integrations.slack.notify_action.SlackNotifyServiceAction",
"workspace": 976462356,
"channel": "#fatal",
"tags": "browser,release"
}
],
"actionMatch": "all",
"filterMatch": "all",
"frequency": 60,
"name": "Many Old Regressions!",
"dateCreated": "2023-02-17T18:31:14.246012Z",
"owner": "user:635623",
"createdBy": {
"id": 635623,
"name": "John Doe",
"email": "john.doe@email.com"
},
"environment": null,
"projects": [
"javascript"
],
"status": "active",
"snooze": false
},
"summary": "Get detailed view about an issue alert rule"
}
}
}
},
"description": ""
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"put": {
"operationId": "Update an Issue Alert Rule",
"description": "Updates an issue alert rule.\n> Warning: Calling this endpoint fully overwrites the specified issue alert.\n\nAn issue alert rule triggers whenever a new event is received for any issue in a project that matches the specified alert conditions. These conditions can include a resolved issue re-appearing or an issue affecting many users. Alert conditions have three parts:\n- Triggers - specify what type of activity you'd like monitored or when an alert should be triggered.\n- Filters - help control noise by triggering an alert only if the issue matches the specified criteria.\n- Actions - specify what should happen when the trigger conditions are met and the filters match.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "rule_id",
"schema": {
"type": "integer"
},
"description": "The ID of the rule you'd like to query.",
"required": true
}
],
"tags": [
"Alerts"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name for the rule.",
"maxLength": 256
},
"actionMatch": {
"enum": [
"all",
"any",
"none"
],
"type": "string",
"description": "A string determining which of the conditions need to be true before any filters are evaluated.\n\n* `all` - All conditions must evaluate to true.\n* `any` - At least one of the conditions must evaluate to true.\n* `none` - All conditions must evaluate to false."
},
"conditions": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
},
"description": "A list of triggers that determine when the rule fires. See [Create an Issue Alert Rule](/api/alerts/create-an-issue-alert-rule-for-a-project) for valid conditions."
},
"actions": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
},
"description": "A list of actions that take place when all required conditions and filters for the rule are met. See [Create an Issue Alert Rule](/api/alerts/create-an-issue-alert-rule-for-a-project) for valid actions."
},
"frequency": {
"type": "integer",
"maximum": 43200,
"minimum": 5,
"description": "How often to perform the actions once for an issue, in minutes. The valid range is `5` to `43200`."
},
"environment": {
"type": "string",
"nullable": true,
"description": "The name of the environment to filter by."
},
"filterMatch": {
"enum": [
"all",
"any",
"none"
],
"type": "string",
"description": "A string determining which filters need to be true before any actions take place.\n\n* `all` - All filters must evaluate to true.\n* `any` - At least one of the filters must evaluate to true.\n* `none` - All filters must evaluate to false."
},
"filters": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
},
"description": "A list of filters that determine if a rule fires after the necessary conditions have been met. See [Create an Issue Alert Rule](/api/alerts/create-an-issue-alert-rule-for-a-project) for valid filters."
},
"owner": {
"type": "string",
"nullable": true,
"description": "The ID of the team or user that owns the rule."
}
},
"required": [
"actionMatch",
"actions",
"conditions",
"frequency",
"name"
]
}
}
},
"required": true
},
"security": [
{
"auth_token": [
"alerts:write",
"project:admin",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "This represents a Sentry Rule.",
"properties": {
"owner": {
"type": "string",
"nullable": true
},
"createdBy": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
}
},
"required": [
"email",
"id",
"name"
],
"nullable": true
},
"environment": {
"type": "string",
"nullable": true
},
"lastTriggered": {
"type": "string",
"nullable": true
},
"snoozeCreatedBy": {
"type": "string",
"nullable": true
},
"snoozeForEveryone": {
"type": "boolean",
"nullable": true
},
"id": {
"type": "string"
},
"conditions": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"filters": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"actions": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
}
},
"actionMatch": {
"type": "string"
},
"filterMatch": {
"type": "string"
},
"frequency": {
"type": "integer"
},
"name": {
"type": "string"
},
"dateCreated": {
"type": "string"
},
"projects": {
"type": "array",
"items": {
"type": "string"
}
},
"status": {
"type": "string"
},
"snooze": {
"type": "boolean"
}
},
"required": [
"actionMatch",
"actions",
"conditions",
"dateCreated",
"filterMatch",
"filters",
"frequency",
"id",
"name",
"projects",
"snooze",
"status"
]
},
"examples": {
"GetDetailedViewAboutAnIssueAlertRule": {
"value": {
"id": "7",
"conditions": [
{
"id": "sentry.rules.conditions.regression_event.RegressionEventCondition"
}
],
"filters": [
{
"id": "sentry.rules.filters.age_comparison.AgeComparisonFilter",
"comparison_type": "older",
"value": 4,
"time": "week"
},
{
"id": "sentry.rules.filters.issue_occurrences.IssueOccurrencesFilter",
"value": 1000
},
{
"id": "sentry.rules.filters.level.LevelFilter",
"match": "gte",
"level": "40"
}
],
"actions": [
{
"id": "sentry.integrations.slack.notify_action.SlackNotifyServiceAction",
"workspace": 976462356,
"channel": "#fatal",
"tags": "browser,release"
}
],
"actionMatch": "all",
"filterMatch": "all",
"frequency": 60,
"name": "Many Old Regressions!",
"dateCreated": "2023-02-17T18:31:14.246012Z",
"owner": "user:635623",
"createdBy": {
"id": 635623,
"name": "John Doe",
"email": "john.doe@email.com"
},
"environment": null,
"projects": [
"javascript"
],
"status": "active",
"snooze": false
},
"summary": "Get detailed view about an issue alert rule"
}
}
}
},
"description": ""
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"delete": {
"operationId": "Delete an Issue Alert Rule",
"description": "Delete a specific issue alert rule.\n\nAn issue alert rule triggers whenever a new event is received for any issue in a project that matches the specified alert conditions. These conditions can include a resolved issue re-appearing or an issue affecting many users. Alert conditions have three parts:\n- Triggers: specify what type of activity you'd like monitored or when an alert should be triggered.\n- Filters: help control noise by triggering an alert only if the issue matches the specified criteria.\n- Actions: specify what should happen when the trigger conditions are met and the filters match.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "rule_id",
"schema": {
"type": "integer"
},
"description": "The ID of the rule you'd like to query.",
"required": true
}
],
"tags": [
"Alerts"
],
"security": [
{
"auth_token": [
"alerts:write",
"project:admin",
"project:write"
]
}
],
"responses": {
"202": {
"description": "Accepted"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/projects/{organization_slug}/{project_slug}/symbol-sources/": {
"get": {
"operationId": "Retrieve a Project's Symbol Sources",
"description": "List custom symbol sources configured for a project.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
},
{
"in": "query",
"name": "id",
"schema": {
"type": "string"
},
"description": "The ID of the source to look up. If this is not provided, all sources are returned."
}
],
"tags": [
"Projects"
],
"security": [
{
"auth_token": [
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"http"
]
},
"url": {
"type": "string"
},
"username": {
"type": "string"
},
"password": {
"type": "object",
"properties": {
"hidden-secret": {
"type": "boolean",
"enum": [
true
]
}
}
},
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string"
},
"layout": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"native",
"symstore",
"symstore_index2",
"ssqp",
"unified",
"debuginfod"
]
},
"casing": {
"type": "string",
"enum": [
"lowercase",
"uppercase",
"default"
]
}
},
"required": [
"type"
],
"additionalProperties": false
},
"filetypes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"pe",
"pdb",
"mach_debug",
"mach_code",
"elf_debug",
"elf_code",
"breakpad"
]
}
}
},
"required": [
"type",
"id",
"url",
"layout"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"s3"
]
},
"bucket": {
"type": "string"
},
"region": {
"type": "string"
},
"access_key": {
"type": "string"
},
"secret_key": {
"type": "object",
"properties": {
"hidden-secret": {
"type": "boolean",
"enum": [
true
]
}
}
},
"prefix": {
"type": "string"
},
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string"
},
"layout": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"native",
"symstore",
"symstore_index2",
"ssqp",
"unified",
"debuginfod"
]
},
"casing": {
"type": "string",
"enum": [
"lowercase",
"uppercase",
"default"
]
}
},
"required": [
"type"
],
"additionalProperties": false
},
"filetypes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"pe",
"pdb",
"mach_debug",
"mach_code",
"elf_debug",
"elf_code",
"breakpad"
]
}
}
},
"required": [
"type",
"id",
"bucket",
"region",
"access_key",
"secret_key",
"layout"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"gcs"
]
},
"bucket": {
"type": "string"
},
"client_email": {
"type": "string"
},
"private_key": {
"type": "object",
"properties": {
"hidden-secret": {
"type": "boolean",
"enum": [
true
]
}
}
},
"prefix": {
"type": "string"
},
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string"
},
"layout": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"native",
"symstore",
"symstore_index2",
"ssqp",
"unified",
"debuginfod"
]
},
"casing": {
"type": "string",
"enum": [
"lowercase",
"uppercase",
"default"
]
}
},
"required": [
"type"
],
"additionalProperties": false
},
"filetypes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"pe",
"pdb",
"mach_debug",
"mach_code",
"elf_debug",
"elf_code",
"breakpad"
]
}
}
},
"required": [
"type",
"id",
"bucket",
"client_email",
"private_key",
"layout"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"appStoreConnect"
]
},
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string"
},
"appconnectIssuer": {
"type": "string",
"minLength": 36,
"maxLength": 36
},
"appconnectKey": {
"type": "string",
"minLength": 2,
"maxLength": 20
},
"appconnectPrivateKey": {
"type": "string"
},
"appName": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"appId": {
"type": "string",
"minLength": 1
},
"bundleId": {
"type": "string",
"minLength": 1
}
},
"required": [
"type",
"id",
"name",
"appconnectIssuer",
"appconnectKey",
"appconnectPrivateKey",
"appName",
"appId",
"bundleId"
],
"additionalProperties": false
}
]
}
},
"examples": {
"ListCustomSymbolSourcesConfiguredForAProject.": {
"value": [
{
"id": "honk",
"name": "honk source",
"layout": {
"type": "native"
},
"type": "http",
"url": "http://honk.beep",
"username": "honkhonk",
"password": {
"hidden-secret": true
}
},
{
"id": "beep",
"name": "beep source",
"layout": {
"type": "native"
},
"type": "gcs",
"bucket": "mybucket",
"client_email": "honk@beep.com",
"private_key": {
"hidden-secret": true
}
}
],
"summary": "List custom symbol sources configured for a project."
}
}
}
},
"description": ""
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"post": {
"operationId": "Add a Symbol Source to a Project",
"description": "Add a custom symbol source to a project.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
}
],
"tags": [
"Projects"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"type": {
"enum": [
"appStoreConnect",
"http",
"gcs",
"s3"
],
"type": "string",
"description": "The type of the source.\n\n* `appStoreConnect` - App Store Connect\n* `http` - SymbolServer (HTTP)\n* `gcs` - Google Cloud Storage\n* `s3` - Amazon S3"
},
"name": {
"type": "string",
"description": "The human-readable name of the source."
},
"id": {
"type": "string",
"description": "The internal ID of the source. Must be distinct from all other source IDs and cannot start with '`sentry:`'. If this is not provided, a new UUID will be generated."
},
"layout": {
"type": "object",
"description": "Layout settings for the source. This is required for HTTP, GCS, and S3 sources and invalid for AppStoreConnect sources.\n\n**`type`** ***(string)*** - The layout of the folder structure. The options are:\n- `native` - Platform-Specific (SymStore / GDB / LLVM)\n- `symstore` - Microsoft SymStore\n- `symstore_index2` - Microsoft SymStore (with index2.txt)\n- `ssqp` - Microsoft SSQP\n- `unified` - Unified Symbol Server Layout\n- `debuginfod` - debuginfod\n\n**`casing`** ***(string)*** - The layout of the folder structure. The options are:\n- `default` - Default (mixed case)\n- `uppercase` - Uppercase\n- `lowercase` - Lowercase\n\n```json\n{\n \"layout\": {\n \"type\": \"native\"\n \"casing\": \"default\"\n }\n}\n```",
"properties": {
"type": {
"enum": [
"native",
"symstore",
"symstore_index2",
"ssqp",
"unified",
"debuginfod"
],
"type": "string",
"description": "The source's layout type.\n\n* `native` - native\n* `symstore` - symstore\n* `symstore_index2` - symstore_index2\n* `ssqp` - ssqp\n* `unified` - unified\n* `debuginfod` - debuginfod"
},
"casing": {
"enum": [
"lowercase",
"uppercase",
"default"
],
"type": "string",
"description": "The source's casing rules.\n\n* `lowercase` - lowercase\n* `uppercase` - uppercase\n* `default` - default"
}
},
"required": [
"casing",
"type"
]
},
"appconnectIssuer": {
"type": "string",
"description": "The [App Store Connect Issuer ID](https://developer.apple.com/documentation/appstoreserverapi/generating_tokens_for_api_requests). Required for AppStoreConnect sources, invalid for all others.",
"maxLength": 36,
"minLength": 36
},
"appconnectPrivateKey": {
"type": "string",
"description": "The [App Store Connect API Private Key](https://developer.apple.com/documentation/appstoreconnectapi/creating_api_keys_for_app_store_connect_api). Required for AppStoreConnect sources, invalid for all others."
},
"appId": {
"type": "string",
"description": "The App Store Connect App ID. Required for AppStoreConnect sources, invalid for all others.",
"minLength": 1
},
"url": {
"type": "string",
"description": "The source's URL. Optional for HTTP sources, invalid for all others."
},
"username": {
"type": "string",
"description": "The user name for accessing the source. Optional for HTTP sources, invalid for all others."
},
"password": {
"type": "string",
"description": "The password for accessing the source. Optional for HTTP sources, invalid for all others."
},
"bucket": {
"type": "string",
"description": "The GCS or S3 bucket where the source resides. Required for GCS and S3 sourcse, invalid for HTTP and AppStoreConnect sources."
},
"region": {
"enum": [
"us-east-2",
"us-east-1",
"us-west-1",
"us-west-2",
"ap-east-1",
"ap-south-1",
"ap-northeast-2",
"ap-southeast-1",
"ap-southeast-2",
"ap-northeast-1",
"ca-central-1",
"cn-north-1",
"cn-northwest-1",
"eu-central-1",
"eu-west-1",
"eu-west-2",
"eu-west-3",
"eu-north-1",
"sa-east-1",
"us-gov-east-1",
"us-gov-west-1"
],
"type": "string",
"description": "The source's [S3 region](https://docs.aws.amazon.com/general/latest/gr/s3.html). Required for S3 sources, invalid for all others.\n\n* `us-east-2` - US East (Ohio)\n* `us-east-1` - US East (N. Virginia)\n* `us-west-1` - US West (N. California)\n* `us-west-2` - US West (Oregon)\n* `ap-east-1` - Asia Pacific (Hong Kong)\n* `ap-south-1` - Asia Pacific (Mumbai)\n* `ap-northeast-2` - Asia Pacific (Seoul)\n* `ap-southeast-1` - Asia Pacific (Singapore)\n* `ap-southeast-2` - Asia Pacific (Sydney)\n* `ap-northeast-1` - Asia Pacific (Tokyo)\n* `ca-central-1` - Canada (Central)\n* `cn-north-1` - China (Beijing)\n* `cn-northwest-1` - China (Ningxia)\n* `eu-central-1` - EU (Frankfurt)\n* `eu-west-1` - EU (Ireland)\n* `eu-west-2` - EU (London)\n* `eu-west-3` - EU (Paris)\n* `eu-north-1` - EU (Stockholm)\n* `sa-east-1` - South America (São Paulo)\n* `us-gov-east-1` - AWS GovCloud (US-East)\n* `us-gov-west-1` - AWS GovCloud (US)"
},
"access_key": {
"type": "string",
"description": "The [AWS Access Key](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html#access-keys-and-secret-access-keys).Required for S3 sources, invalid for all others."
},
"secret_key": {
"type": "string",
"description": "The [AWS Secret Access Key](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html#access-keys-and-secret-access-keys).Required for S3 sources, invalid for all others."
},
"prefix": {
"type": "string",
"description": "The GCS or [S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html) prefix. Optional for GCS and S3 sourcse, invalid for HTTP and AppStoreConnect sources."
},
"client_email": {
"type": "string",
"description": "The GCS email address for authentication. Required for GCS sources, invalid for all others."
},
"private_key": {
"type": "string",
"description": "The GCS private key. Required for GCS sources, invalid for all others."
}
},
"required": [
"name",
"type"
]
}
}
},
"required": true
},
"security": [
{
"auth_token": [
"project:admin",
"project:write"
]
}
],
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"http"
]
},
"url": {
"type": "string"
},
"username": {
"type": "string"
},
"password": {
"type": "object",
"properties": {
"hidden-secret": {
"type": "boolean",
"enum": [
true
]
}
}
},
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string"
},
"layout": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"native",
"symstore",
"symstore_index2",
"ssqp",
"unified",
"debuginfod"
]
},
"casing": {
"type": "string",
"enum": [
"lowercase",
"uppercase",
"default"
]
}
},
"required": [
"type"
],
"additionalProperties": false
},
"filetypes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"pe",
"pdb",
"mach_debug",
"mach_code",
"elf_debug",
"elf_code",
"breakpad"
]
}
}
},
"required": [
"type",
"id",
"url",
"layout"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"s3"
]
},
"bucket": {
"type": "string"
},
"region": {
"type": "string"
},
"access_key": {
"type": "string"
},
"secret_key": {
"type": "object",
"properties": {
"hidden-secret": {
"type": "boolean",
"enum": [
true
]
}
}
},
"prefix": {
"type": "string"
},
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string"
},
"layout": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"native",
"symstore",
"symstore_index2",
"ssqp",
"unified",
"debuginfod"
]
},
"casing": {
"type": "string",
"enum": [
"lowercase",
"uppercase",
"default"
]
}
},
"required": [
"type"
],
"additionalProperties": false
},
"filetypes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"pe",
"pdb",
"mach_debug",
"mach_code",
"elf_debug",
"elf_code",
"breakpad"
]
}
}
},
"required": [
"type",
"id",
"bucket",
"region",
"access_key",
"secret_key",
"layout"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"gcs"
]
},
"bucket": {
"type": "string"
},
"client_email": {
"type": "string"
},
"private_key": {
"type": "object",
"properties": {
"hidden-secret": {
"type": "boolean",
"enum": [
true
]
}
}
},
"prefix": {
"type": "string"
},
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string"
},
"layout": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"native",
"symstore",
"symstore_index2",
"ssqp",
"unified",
"debuginfod"
]
},
"casing": {
"type": "string",
"enum": [
"lowercase",
"uppercase",
"default"
]
}
},
"required": [
"type"
],
"additionalProperties": false
},
"filetypes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"pe",
"pdb",
"mach_debug",
"mach_code",
"elf_debug",
"elf_code",
"breakpad"
]
}
}
},
"required": [
"type",
"id",
"bucket",
"client_email",
"private_key",
"layout"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"appStoreConnect"
]
},
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string"
},
"appconnectIssuer": {
"type": "string",
"minLength": 36,
"maxLength": 36
},
"appconnectKey": {
"type": "string",
"minLength": 2,
"maxLength": 20
},
"appconnectPrivateKey": {
"type": "string"
},
"appName": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"appId": {
"type": "string",
"minLength": 1
},
"bundleId": {
"type": "string",
"minLength": 1
}
},
"required": [
"type",
"id",
"name",
"appconnectIssuer",
"appconnectKey",
"appconnectPrivateKey",
"appName",
"appId",
"bundleId"
],
"additionalProperties": false
}
]
},
"examples": {
"AddACustomSymbolSourceToAProject.": {
"value": {
"id": "honk",
"name": "honk source",
"layout": {
"type": "native"
},
"type": "http",
"url": "http://honk.beep",
"username": "honkhonk",
"password": {
"hidden-secret": true
}
},
"summary": "Add a custom symbol source to a project."
}
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
},
"403": {
"description": "Forbidden"
}
}
},
"put": {
"operationId": "Update a Project's Symbol Source",
"description": "Update a custom symbol source in a project.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
},
{
"in": "query",
"name": "id",
"schema": {
"type": "string"
},
"description": "The ID of the source to update.",
"required": true
}
],
"tags": [
"Projects"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"type": {
"enum": [
"appStoreConnect",
"http",
"gcs",
"s3"
],
"type": "string",
"description": "The type of the source.\n\n* `appStoreConnect` - App Store Connect\n* `http` - SymbolServer (HTTP)\n* `gcs` - Google Cloud Storage\n* `s3` - Amazon S3"
},
"name": {
"type": "string",
"description": "The human-readable name of the source."
},
"id": {
"type": "string",
"description": "The internal ID of the source. Must be distinct from all other source IDs and cannot start with '`sentry:`'. If this is not provided, a new UUID will be generated."
},
"layout": {
"type": "object",
"description": "Layout settings for the source. This is required for HTTP, GCS, and S3 sources and invalid for AppStoreConnect sources.\n\n**`type`** ***(string)*** - The layout of the folder structure. The options are:\n- `native` - Platform-Specific (SymStore / GDB / LLVM)\n- `symstore` - Microsoft SymStore\n- `symstore_index2` - Microsoft SymStore (with index2.txt)\n- `ssqp` - Microsoft SSQP\n- `unified` - Unified Symbol Server Layout\n- `debuginfod` - debuginfod\n\n**`casing`** ***(string)*** - The layout of the folder structure. The options are:\n- `default` - Default (mixed case)\n- `uppercase` - Uppercase\n- `lowercase` - Lowercase\n\n```json\n{\n \"layout\": {\n \"type\": \"native\"\n \"casing\": \"default\"\n }\n}\n```",
"properties": {
"type": {
"enum": [
"native",
"symstore",
"symstore_index2",
"ssqp",
"unified",
"debuginfod"
],
"type": "string",
"description": "The source's layout type.\n\n* `native` - native\n* `symstore` - symstore\n* `symstore_index2` - symstore_index2\n* `ssqp` - ssqp\n* `unified` - unified\n* `debuginfod` - debuginfod"
},
"casing": {
"enum": [
"lowercase",
"uppercase",
"default"
],
"type": "string",
"description": "The source's casing rules.\n\n* `lowercase` - lowercase\n* `uppercase` - uppercase\n* `default` - default"
}
},
"required": [
"casing",
"type"
]
},
"appconnectIssuer": {
"type": "string",
"description": "The [App Store Connect Issuer ID](https://developer.apple.com/documentation/appstoreserverapi/generating_tokens_for_api_requests). Required for AppStoreConnect sources, invalid for all others.",
"maxLength": 36,
"minLength": 36
},
"appconnectPrivateKey": {
"type": "string",
"description": "The [App Store Connect API Private Key](https://developer.apple.com/documentation/appstoreconnectapi/creating_api_keys_for_app_store_connect_api). Required for AppStoreConnect sources, invalid for all others."
},
"appId": {
"type": "string",
"description": "The App Store Connect App ID. Required for AppStoreConnect sources, invalid for all others.",
"minLength": 1
},
"url": {
"type": "string",
"description": "The source's URL. Optional for HTTP sources, invalid for all others."
},
"username": {
"type": "string",
"description": "The user name for accessing the source. Optional for HTTP sources, invalid for all others."
},
"password": {
"type": "string",
"description": "The password for accessing the source. Optional for HTTP sources, invalid for all others."
},
"bucket": {
"type": "string",
"description": "The GCS or S3 bucket where the source resides. Required for GCS and S3 sourcse, invalid for HTTP and AppStoreConnect sources."
},
"region": {
"enum": [
"us-east-2",
"us-east-1",
"us-west-1",
"us-west-2",
"ap-east-1",
"ap-south-1",
"ap-northeast-2",
"ap-southeast-1",
"ap-southeast-2",
"ap-northeast-1",
"ca-central-1",
"cn-north-1",
"cn-northwest-1",
"eu-central-1",
"eu-west-1",
"eu-west-2",
"eu-west-3",
"eu-north-1",
"sa-east-1",
"us-gov-east-1",
"us-gov-west-1"
],
"type": "string",
"description": "The source's [S3 region](https://docs.aws.amazon.com/general/latest/gr/s3.html). Required for S3 sources, invalid for all others.\n\n* `us-east-2` - US East (Ohio)\n* `us-east-1` - US East (N. Virginia)\n* `us-west-1` - US West (N. California)\n* `us-west-2` - US West (Oregon)\n* `ap-east-1` - Asia Pacific (Hong Kong)\n* `ap-south-1` - Asia Pacific (Mumbai)\n* `ap-northeast-2` - Asia Pacific (Seoul)\n* `ap-southeast-1` - Asia Pacific (Singapore)\n* `ap-southeast-2` - Asia Pacific (Sydney)\n* `ap-northeast-1` - Asia Pacific (Tokyo)\n* `ca-central-1` - Canada (Central)\n* `cn-north-1` - China (Beijing)\n* `cn-northwest-1` - China (Ningxia)\n* `eu-central-1` - EU (Frankfurt)\n* `eu-west-1` - EU (Ireland)\n* `eu-west-2` - EU (London)\n* `eu-west-3` - EU (Paris)\n* `eu-north-1` - EU (Stockholm)\n* `sa-east-1` - South America (São Paulo)\n* `us-gov-east-1` - AWS GovCloud (US-East)\n* `us-gov-west-1` - AWS GovCloud (US)"
},
"access_key": {
"type": "string",
"description": "The [AWS Access Key](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html#access-keys-and-secret-access-keys).Required for S3 sources, invalid for all others."
},
"secret_key": {
"type": "string",
"description": "The [AWS Secret Access Key](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html#access-keys-and-secret-access-keys).Required for S3 sources, invalid for all others."
},
"prefix": {
"type": "string",
"description": "The GCS or [S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html) prefix. Optional for GCS and S3 sourcse, invalid for HTTP and AppStoreConnect sources."
},
"client_email": {
"type": "string",
"description": "The GCS email address for authentication. Required for GCS sources, invalid for all others."
},
"private_key": {
"type": "string",
"description": "The GCS private key. Required for GCS sources, invalid for all others."
}
},
"required": [
"name",
"type"
]
}
}
},
"required": true
},
"security": [
{
"auth_token": [
"project:admin",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"http"
]
},
"url": {
"type": "string"
},
"username": {
"type": "string"
},
"password": {
"type": "object",
"properties": {
"hidden-secret": {
"type": "boolean",
"enum": [
true
]
}
}
},
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string"
},
"layout": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"native",
"symstore",
"symstore_index2",
"ssqp",
"unified",
"debuginfod"
]
},
"casing": {
"type": "string",
"enum": [
"lowercase",
"uppercase",
"default"
]
}
},
"required": [
"type"
],
"additionalProperties": false
},
"filetypes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"pe",
"pdb",
"mach_debug",
"mach_code",
"elf_debug",
"elf_code",
"breakpad"
]
}
}
},
"required": [
"type",
"id",
"url",
"layout"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"s3"
]
},
"bucket": {
"type": "string"
},
"region": {
"type": "string"
},
"access_key": {
"type": "string"
},
"secret_key": {
"type": "object",
"properties": {
"hidden-secret": {
"type": "boolean",
"enum": [
true
]
}
}
},
"prefix": {
"type": "string"
},
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string"
},
"layout": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"native",
"symstore",
"symstore_index2",
"ssqp",
"unified",
"debuginfod"
]
},
"casing": {
"type": "string",
"enum": [
"lowercase",
"uppercase",
"default"
]
}
},
"required": [
"type"
],
"additionalProperties": false
},
"filetypes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"pe",
"pdb",
"mach_debug",
"mach_code",
"elf_debug",
"elf_code",
"breakpad"
]
}
}
},
"required": [
"type",
"id",
"bucket",
"region",
"access_key",
"secret_key",
"layout"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"gcs"
]
},
"bucket": {
"type": "string"
},
"client_email": {
"type": "string"
},
"private_key": {
"type": "object",
"properties": {
"hidden-secret": {
"type": "boolean",
"enum": [
true
]
}
}
},
"prefix": {
"type": "string"
},
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string"
},
"layout": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"native",
"symstore",
"symstore_index2",
"ssqp",
"unified",
"debuginfod"
]
},
"casing": {
"type": "string",
"enum": [
"lowercase",
"uppercase",
"default"
]
}
},
"required": [
"type"
],
"additionalProperties": false
},
"filetypes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"pe",
"pdb",
"mach_debug",
"mach_code",
"elf_debug",
"elf_code",
"breakpad"
]
}
}
},
"required": [
"type",
"id",
"bucket",
"client_email",
"private_key",
"layout"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"appStoreConnect"
]
},
"id": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string"
},
"appconnectIssuer": {
"type": "string",
"minLength": 36,
"maxLength": 36
},
"appconnectKey": {
"type": "string",
"minLength": 2,
"maxLength": 20
},
"appconnectPrivateKey": {
"type": "string"
},
"appName": {
"type": "string",
"minLength": 1,
"maxLength": 512
},
"appId": {
"type": "string",
"minLength": 1
},
"bundleId": {
"type": "string",
"minLength": 1
}
},
"required": [
"type",
"id",
"name",
"appconnectIssuer",
"appconnectKey",
"appconnectPrivateKey",
"appName",
"appId",
"bundleId"
],
"additionalProperties": false
}
]
},
"examples": {
"UpdateACustomSymbolSourceInAProject.": {
"value": {
"id": "honk",
"name": "honk source",
"layout": {
"type": "native"
},
"type": "http",
"url": "http://honk.beep",
"username": "honkhonk",
"password": {
"hidden-secret": true
}
},
"summary": "Update a custom symbol source in a project."
}
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"delete": {
"operationId": "Delete a Symbol Source from a Project",
"description": "Delete a custom symbol source from a project.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
},
{
"in": "query",
"name": "id",
"schema": {
"type": "string"
},
"description": "The ID of the source to delete.",
"required": true
}
],
"tags": [
"Projects"
],
"security": [
{
"auth_token": [
"project:admin"
]
}
],
"responses": {
"204": {
"description": "No Content"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/projects/{organization_slug}/{project_slug}/teams/{team_slug}/": {
"post": {
"operationId": "Add a Team to a Project",
"description": "Give a team access to a project.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "team_slug",
"schema": {
"type": "string"
},
"description": "The slug of the team the resource belongs to.",
"required": true
}
],
"tags": [
"Projects"
],
"security": [
{
"auth_token": [
"project:admin",
"project:write"
]
}
],
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"stats": {},
"transactionStats": {},
"sessionStats": {},
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"platform": {
"type": "string",
"nullable": true
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"isBookmarked": {
"type": "boolean"
},
"isMember": {
"type": "boolean"
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"firstEvent": {
"type": "string",
"format": "date-time",
"nullable": true
},
"firstTransactionEvent": {
"type": "boolean"
},
"access": {
"type": "array",
"items": {
"type": "string"
}
},
"hasAccess": {
"type": "boolean"
},
"hasCustomMetrics": {
"type": "boolean"
},
"hasMinifiedStackTrace": {
"type": "boolean"
},
"hasMonitors": {
"type": "boolean"
},
"hasProfiles": {
"type": "boolean"
},
"hasReplays": {
"type": "boolean"
},
"hasSessions": {
"type": "boolean"
},
"isInternal": {
"type": "boolean"
},
"isPublic": {
"type": "boolean"
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
},
"avatarUrl": {
"type": "string",
"nullable": true
}
}
},
"color": {
"type": "string"
},
"status": {
"type": "string"
},
"team": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
},
"required": [
"id",
"name",
"slug"
]
},
"teams": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
},
"required": [
"id",
"name",
"slug"
]
}
}
},
"required": [
"access",
"avatar",
"color",
"dateCreated",
"features",
"firstEvent",
"firstTransactionEvent",
"hasAccess",
"hasCustomMetrics",
"hasMinifiedStackTrace",
"hasMonitors",
"hasProfiles",
"hasReplays",
"hasSessions",
"id",
"isBookmarked",
"isInternal",
"isMember",
"isPublic",
"name",
"platform",
"slug",
"status",
"team",
"teams"
]
},
"examples": {
"GiveATeamAccessToAProject": {
"value": {
"id": "6758470122493650",
"slug": "The Spoiled Yoghurt",
"name": "the-spoiled-yoghurt",
"platform": "javascript",
"dateCreated": "2023-03-29T15:25:21.344565Z",
"isBookmarked": false,
"isMember": true,
"features": [
"alert-filters",
"custom-inbound-filters",
"data-forwarding",
"discard-groups",
"minidump",
"race-free-group-creation",
"rate-limits",
"servicehooks",
"similarity-indexing",
"similarity-indexing-v2",
"similarity-view",
"similarity-view-v2"
],
"firstEvent": null,
"firstTransactionEvent": false,
"access": [
"member:read",
"event:read",
"project:admin",
"team:write",
"project:write",
"team:admin",
"project:read",
"org:integrations",
"org:read",
"project:releases",
"team:read",
"alerts:write",
"event:admin",
"event:write",
"alerts:read"
],
"hasAccess": true,
"hasMinifiedStackTrace": false,
"hasCustomMetrics": false,
"hasMonitors": false,
"hasProfiles": false,
"hasReplays": false,
"hasSessions": false,
"isInternal": false,
"isPublic": false,
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
},
"color": "#5cbf3f",
"status": "active",
"team": {
"id": "2349234102",
"name": "Prime Mover",
"slug": "prime-mover"
},
"teams": [
{
"id": "2349234102",
"name": "Prime Mover",
"slug": "prime-mover"
},
{
"id": "47584447",
"name": "Powerful Abolitionist",
"slug": "powerful-abolitionist"
}
]
},
"summary": "Give a Team Access to a Project"
}
}
}
},
"description": ""
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"delete": {
"operationId": "Delete a Team from a Project",
"description": "Revoke a team's access to a project.\n\nNote that Team Admins can only revoke access to teams they are admins of.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "project_slug",
"schema": {
"type": "string"
},
"description": "The slug of the project the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "team_slug",
"schema": {
"type": "string"
},
"description": "The slug of the team the resource belongs to.",
"required": true
}
],
"tags": [
"Projects"
],
"security": [
{
"auth_token": [
"project:admin",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"stats": {},
"transactionStats": {},
"sessionStats": {},
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"platform": {
"type": "string",
"nullable": true
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"isBookmarked": {
"type": "boolean"
},
"isMember": {
"type": "boolean"
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"firstEvent": {
"type": "string",
"format": "date-time",
"nullable": true
},
"firstTransactionEvent": {
"type": "boolean"
},
"access": {
"type": "array",
"items": {
"type": "string"
}
},
"hasAccess": {
"type": "boolean"
},
"hasCustomMetrics": {
"type": "boolean"
},
"hasMinifiedStackTrace": {
"type": "boolean"
},
"hasMonitors": {
"type": "boolean"
},
"hasProfiles": {
"type": "boolean"
},
"hasReplays": {
"type": "boolean"
},
"hasSessions": {
"type": "boolean"
},
"isInternal": {
"type": "boolean"
},
"isPublic": {
"type": "boolean"
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
},
"avatarUrl": {
"type": "string",
"nullable": true
}
}
},
"color": {
"type": "string"
},
"status": {
"type": "string"
},
"team": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
},
"required": [
"id",
"name",
"slug"
]
},
"teams": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
},
"required": [
"id",
"name",
"slug"
]
}
}
},
"required": [
"access",
"avatar",
"color",
"dateCreated",
"features",
"firstEvent",
"firstTransactionEvent",
"hasAccess",
"hasCustomMetrics",
"hasMinifiedStackTrace",
"hasMonitors",
"hasProfiles",
"hasReplays",
"hasSessions",
"id",
"isBookmarked",
"isInternal",
"isMember",
"isPublic",
"name",
"platform",
"slug",
"status",
"team",
"teams"
]
},
"examples": {
"RevokeATeam'sAccessToAProject": {
"value": {
"id": "6758470122493650",
"slug": "The Spoiled Yoghurt",
"name": "the-spoiled-yoghurt",
"platform": "javascript",
"dateCreated": "2023-03-29T15:25:21.344565Z",
"isBookmarked": false,
"isMember": true,
"features": [
"alert-filters",
"custom-inbound-filters",
"data-forwarding",
"discard-groups",
"minidump",
"race-free-group-creation",
"rate-limits",
"servicehooks",
"similarity-indexing",
"similarity-indexing-v2",
"similarity-view",
"similarity-view-v2"
],
"firstEvent": null,
"firstTransactionEvent": false,
"access": [
"member:read",
"event:read",
"project:admin",
"team:write",
"project:write",
"team:admin",
"project:read",
"org:integrations",
"org:read",
"project:releases",
"team:read",
"alerts:write",
"event:admin",
"event:write",
"alerts:read"
],
"hasAccess": true,
"hasMinifiedStackTrace": false,
"hasCustomMetrics": false,
"hasMonitors": false,
"hasProfiles": false,
"hasReplays": false,
"hasSessions": false,
"isInternal": false,
"isPublic": false,
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
},
"color": "#5cbf3f",
"status": "active",
"team": {
"id": "2349234102",
"name": "Prime Mover",
"slug": "prime-mover"
},
"teams": [
{
"id": "2349234102",
"name": "Prime Mover",
"slug": "prime-mover"
}
]
},
"summary": "Revoke a Team's Access to a Project"
}
}
}
},
"description": ""
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/0/teams/{organization_slug}/{team_slug}/projects/": {
"get": {
"operationId": "List a Team's Projects",
"description": "Return a list of projects bound to a team.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "team_slug",
"schema": {
"type": "string"
},
"description": "The slug of the team the resource belongs to.",
"required": true
},
{
"in": "query",
"name": "cursor",
"schema": {
"type": "string",
"minLength": 1
},
"description": "A pointer to the last object fetched and its sort order; used to retrieve the next or previous results."
}
],
"tags": [
"Teams"
],
"security": [
{
"auth_token": [
"project:admin",
"project:read",
"project:write"
]
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"latestDeploys": {
"type": "object",
"additionalProperties": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"nullable": true
},
"stats": {},
"transactionStats": {},
"sessionStats": {},
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"platform": {
"type": "string",
"nullable": true
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"isBookmarked": {
"type": "boolean"
},
"isMember": {
"type": "boolean"
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"firstEvent": {
"type": "string",
"format": "date-time",
"nullable": true
},
"firstTransactionEvent": {
"type": "boolean"
},
"access": {
"type": "array",
"items": {
"type": "string"
}
},
"hasAccess": {
"type": "boolean"
},
"hasCustomMetrics": {
"type": "boolean"
},
"hasMinifiedStackTrace": {
"type": "boolean"
},
"hasMonitors": {
"type": "boolean"
},
"hasProfiles": {
"type": "boolean"
},
"hasReplays": {
"type": "boolean"
},
"hasSessions": {
"type": "boolean"
},
"team": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
},
"required": [
"id",
"name",
"slug"
],
"nullable": true
},
"teams": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
},
"required": [
"id",
"name",
"slug"
]
}
},
"eventProcessing": {
"type": "object",
"properties": {
"symbolicationDegraded": {
"type": "boolean"
}
},
"required": [
"symbolicationDegraded"
]
},
"platforms": {
"type": "array",
"items": {
"type": "string"
}
},
"hasUserReports": {
"type": "boolean"
},
"environments": {
"type": "array",
"items": {
"type": "string"
}
},
"latestRelease": {
"type": "object",
"properties": {
"version": {
"type": "string"
}
},
"required": [
"version"
],
"nullable": true
}
},
"required": [
"access",
"dateCreated",
"environments",
"eventProcessing",
"features",
"firstEvent",
"firstTransactionEvent",
"hasAccess",
"hasCustomMetrics",
"hasMinifiedStackTrace",
"hasMonitors",
"hasProfiles",
"hasReplays",
"hasSessions",
"hasUserReports",
"id",
"isBookmarked",
"isMember",
"latestRelease",
"name",
"platform",
"platforms",
"slug",
"team",
"teams"
]
}
},
"examples": {
"GetListOfTeam'sProjects": {
"value": [
{
"team": {
"id": "2349234102",
"name": "Prime Mover",
"slug": "prime-mover"
},
"teams": [
{
"id": "2349234102",
"name": "Prime Mover",
"slug": "prime-mover"
},
{
"id": "47584447",
"name": "Powerful Abolitionist",
"slug": "powerful-abolitionist"
}
],
"id": "6758470122493650",
"name": "the-spoiled-yoghurt",
"slug": "The Spoiled Yoghurt",
"isBookmarked": false,
"isMember": true,
"access": [
"project:read",
"event:read",
"team:read",
"alerts:read",
"org:read",
"event:write",
"project:releases",
"member:read"
],
"hasAccess": true,
"dateCreated": "2023-03-29T15:25:21.344565Z",
"environments": [
"production"
],
"eventProcessing": {
"symbolicationDegraded": false
},
"features": [
"alert-filters",
"custom-inbound-filters",
"data-forwarding",
"discard-groups",
"minidump",
"race-free-group-creation",
"rate-limits",
"servicehooks",
"similarity-indexing",
"similarity-indexing-v2",
"similarity-view",
"similarity-view-v2"
],
"firstEvent": null,
"firstTransactionEvent": true,
"hasSessions": false,
"hasProfiles": false,
"hasReplays": false,
"hasMonitors": false,
"hasMinifiedStackTrace": false,
"hasCustomMetrics": false,
"platform": "node-express",
"platforms": [],
"latestRelease": null,
"hasUserReports": false,
"latestDeploys": null
},
{
"team": {
"id": "2349234102",
"name": "Prime Mover",
"slug": "prime-mover"
},
"teams": [
{
"id": "2349234102",
"name": "Prime Mover",
"slug": "prime-mover"
}
],
"id": "1829334501859481",
"name": "Pump Station",
"slug": "pump-station",
"isBookmarked": false,
"isMember": true,
"access": [
"project:read",
"event:read",
"team:read",
"alerts:read",
"org:read",
"event:write",
"project:releases",
"member:read"
],
"hasAccess": true,
"dateCreated": "2023-03-29T15:21:49.943746Z",
"environments": [
"production"
],
"eventProcessing": {
"symbolicationDegraded": false
},
"features": [
"alert-filters",
"custom-inbound-filters",
"data-forwarding",
"discard-groups",
"minidump",
"race-free-group-creation",
"rate-limits",
"servicehooks",
"similarity-indexing",
"similarity-indexing-v2",
"similarity-view",
"similarity-view-v2"
],
"firstEvent": "2023-04-05T21:02:08.054000Z",
"firstTransactionEvent": false,
"hasSessions": false,
"hasProfiles": false,
"hasReplays": false,
"hasMonitors": false,
"hasMinifiedStackTrace": true,
"hasCustomMetrics": false,
"platform": "javascript",
"platforms": [
"javascript"
],
"latestRelease": null,
"hasUserReports": false,
"latestDeploys": null
}
],
"summary": "Get list of team's projects"
}
}
}
},
"description": ""
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Team not found."
}
}
},
"post": {
"operationId": "Create a New Project",
"description": "Create a new project bound to a team.",
"parameters": [
{
"in": "path",
"name": "organization_slug",
"schema": {
"type": "string"
},
"description": "The slug of the organization the resource belongs to.",
"required": true
},
{
"in": "path",
"name": "team_slug",
"schema": {
"type": "string"
},
"description": "The slug of the team the resource belongs to.",
"required": true
}
],
"tags": [
"Projects"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name for the project.",
"maxLength": 50
},
"slug": {
"type": "string",
"nullable": true,
"description": "Uniquely identifies a project and is used for the interface.\n If not provided, it is automatically generated from the name.",
"maxLength": 50,
"pattern": "^(?![0-9]+$)[a-z0-9_\\-]+$"
},
"platform": {
"type": "string",
"nullable": true,
"description": "The platform for the project."
},
"default_rules": {
"type": "boolean",
"description": "\nDefaults to true where the behavior is to alert the user on every new\nissue. Setting this to false will turn this off and the user must create\ntheir own alerts to be notified of new issues.\n "
}
},
"required": [
"name"
]
}
}
},
"required": true
},
"security": [
{
"auth_token": [
"project:admin",
"project:write"
]
}
],
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"stats": {},
"transactionStats": {},
"sessionStats": {},
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"platform": {
"type": "string",
"nullable": true
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"isBookmarked": {
"type": "boolean"
},
"isMember": {
"type": "boolean"
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"firstEvent": {
"type": "string",
"format": "date-time",
"nullable": true
},
"firstTransactionEvent": {
"type": "boolean"
},
"access": {
"type": "array",
"items": {
"type": "string"
}
},
"hasAccess": {
"type": "boolean"
},
"hasCustomMetrics": {
"type": "boolean"
},
"hasMinifiedStackTrace": {
"type": "boolean"
},
"hasMonitors": {
"type": "boolean"
},
"hasProfiles": {
"type": "boolean"
},
"hasReplays": {
"type": "boolean"
},
"hasSessions": {
"type": "boolean"
},
"isInternal": {
"type": "boolean"
},
"isPublic": {
"type": "boolean"
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
},
"avatarUrl": {
"type": "string",
"nullable": true
}
}
},
"color": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"access",
"avatar",
"color",
"dateCreated",
"features",
"firstEvent",
"firstTransactionEvent",
"hasAccess",
"hasCustomMetrics",
"hasMinifiedStackTrace",
"hasMonitors",
"hasProfiles",
"hasReplays",
"hasSessions",
"id",
"isBookmarked",
"isInternal",
"isMember",
"isPublic",
"name",
"platform",
"slug",
"status"
]
},
"examples": {
"ProjectSuccessfullyCreated": {
"value": {
"id": "4505321021243392",
"slug": "the-spoiled-yoghurt",
"name": "The Spoiled Yoghurt",
"platform": "python",
"dateCreated": "2023-06-08T00:13:06.004534Z",
"isBookmarked": false,
"isMember": true,
"features": [
"alert-filters",
"custom-inbound-filters",
"data-forwarding",
"discard-groups",
"minidump",
"race-free-group-creation",
"rate-limits",
"servicehooks",
"similarity-indexing",
"similarity-indexing-v2",
"similarity-view",
"similarity-view-v2"
],
"firstEvent": null,
"firstTransactionEvent": false,
"access": [
"member:read",
"event:read",
"project:admin",
"team:write",
"project:write",
"team:admin",
"project:read",
"org:integrations",
"org:read",
"project:releases",
"team:read",
"alerts:write",
"event:admin",
"event:write",
"alerts:read"
],
"hasAccess": true,
"hasMinifiedStackTrace": false,
"hasCustomMetrics": false,
"hasMonitors": false,
"hasProfiles": false,
"hasReplays": false,
"hasSessions": false,
"isInternal": false,
"isPublic": false,
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
},
"color": "#3f70bf",
"status": "active"
},
"summary": "Project successfully created"
}
}
}
},
"description": ""
},
"400": {
"description": "Bad Request"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Team not found."
},
"409": {
"description": "A project with this slug already exists."
}
}
}
},
"/api/0/teams/{organization_slug}/{team_slug}/": {
"get": {
"tags": [
"Teams"
],
"description": "Return details on an individual team.",
"operationId": "Retrieve a Team",
"parameters": [
{
"name": "organization_slug",
"in": "path",
"description": "The slug of the organization the team belongs to.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "team_slug",
"in": "path",
"description": "The slug of the team to get.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"avatar",
"dateCreated",
"hasAccess",
"id",
"isMember",
"isPending",
"memberCount",
"name",
"slug",
"organization"
],
"properties": {
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
}
}
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"hasAccess": {
"type": "boolean"
},
"id": {
"type": "string"
},
"isMember": {
"type": "boolean"
},
"isPending": {
"type": "boolean"
},
"memberCount": {
"type": "integer",
"format": "int64"
},
"organization": {
"type": "object",
"required": [
"avatar",
"dateCreated",
"id",
"isEarlyAdopter",
"name",
"require2FA",
"slug",
"status"
],
"properties": {
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
}
}
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"id": {
"type": "string"
},
"isEarlyAdopter": {
"type": "boolean"
},
"name": {
"type": "string"
},
"require2FA": {
"type": "boolean"
},
"slug": {
"type": "string"
},
"status": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
}
}
}
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
}
},
"example": {
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
},
"dateCreated": "2018-11-06T21:19:55.114Z",
"hasAccess": true,
"id": "2",
"isMember": true,
"isPending": false,
"memberCount": 1,
"name": "Powerful Abolitionist",
"organization": {
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
},
"dateCreated": "2018-11-06T21:19:55.101Z",
"id": "2",
"isEarlyAdopter": false,
"name": "The Interstellar Jurisdiction",
"require2FA": false,
"slug": "the-interstellar-jurisdiction",
"status": {
"id": "active",
"name": "active"
}
},
"slug": "powerful-abolitionist"
}
}
}
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Team not found"
}
},
"security": [
{
"auth_token": [
"team:read"
]
}
]
},
"put": {
"tags": [
"Teams"
],
"description": "Update various attributes settings for the given team.",
"operationId": "Update a Team",
"parameters": [
{
"name": "organization_slug",
"in": "path",
"description": "The slug of the organization the team belongs to.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "team_slug",
"in": "path",
"description": "The slug of the team to get.",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Uniquely identifies a team and is used for the interface. Must be available."
},
"name": {
"type": "string",
"description": "**`[DEPRECATED]`** The name for the team.",
"deprecated": true
}
}
},
"example": {
"name": "The Inflated Philosophers",
"slug": "the-inflated-philosophers"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"avatar",
"dateCreated",
"hasAccess",
"id",
"isMember",
"isPending",
"memberCount",
"name",
"slug"
],
"properties": {
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
}
}
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"hasAccess": {
"type": "boolean"
},
"id": {
"type": "string"
},
"isMember": {
"type": "boolean"
},
"isPending": {
"type": "boolean"
},
"memberCount": {
"type": "integer",
"format": "int64"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
}
},
"example": {
"avatar": {
"avatarType": "letter_avatar"
},
"dateCreated": "2018-11-06T21:20:08.115Z",
"hasAccess": true,
"id": "3",
"isMember": false,
"isPending": false,
"memberCount": 1,
"name": "The Inflated Philosophers",
"slug": "the-inflated-philosophers"
}
}
}
},
"400": {
"description": "Bad Input"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Team not found"
}
},
"security": [
{
"auth_token": [
"team:write"
]
}
]
},
"delete": {
"tags": [
"Teams"
],
"description": "Schedules a team for deletion.\n\nNote: Deletion happens asynchronously and therefore is not immediate. However once deletion has begun the state of a project changes and will be hidden from most public views.",
"operationId": "Delete a Team",
"parameters": [
{
"name": "organization_slug",
"in": "path",
"description": "The slug of the organization the team belongs to.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "team_slug",
"in": "path",
"description": "The slug of the team to get.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"204": {
"description": "Success"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Team not found"
}
},
"security": [
{
"auth_token": [
"team:admin"
]
}
]
}
},
"/api/0/teams/{organization_slug}/{team_slug}/stats/": {
"get": {
"tags": [
"Teams"
],
"summary": "Caution: this endpoint may change in the future without notice.",
"description": "Return a set of points representing a normalized timestamp and the number of events seen in the period.\n\nQuery ranges are limited to Sentry’s configured time-series resolutions.",
"operationId": "Retrieve Event Counts for a Team",
"parameters": [
{
"name": "organization_slug",
"in": "path",
"description": "The slug of the organization the team belongs to.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "team_slug",
"in": "path",
"description": "The slug of the team to get.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "stat",
"in": "query",
"description": "The name of the stat to query `(\"received\", \"rejected\")`.",
"schema": {
"type": "string",
"enum": [
"received",
"rejected"
]
}
},
{
"name": "since",
"in": "query",
"description": "A timestamp to set the start of the query in seconds since UNIX epoch.",
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "until",
"in": "query",
"description": "A timestamp to set the end of the query in seconds since UNIX epoch.",
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "resolution",
"in": "query",
"description": "An explicit resolution to search for (one of `10s`, `1h`, and `1d`).",
"schema": {
"type": "string",
"enum": [
"10s",
"1h",
"1d"
]
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "integer"
}
}
},
"example": [
[
1541455200,
3302
],
[
1541458800,
3832
],
[
1541462400,
3669
],
[
1541466000,
3533
],
[
1541469600,
3499
],
[
1541473200,
3201
],
[
1541476800,
3769
],
[
1541480400,
2706
],
[
1541484000,
2698
],
[
1541487600,
3747
],
[
1541491200,
3261
],
[
1541494800,
2860
],
[
1541498400,
4350
],
[
1541502000,
2924
],
[
1541505600,
3389
],
[
1541509200,
2931
],
[
1541512800,
3132
],
[
1541516400,
3213
],
[
1541520000,
3650
],
[
1541523600,
3096
],
[
1541527200,
3845
],
[
1541530800,
3545
],
[
1541534400,
2880
],
[
1541538000,
4057
]
]
}
}
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Team not found"
}
},
"security": [
{
"auth_token": [
"team:read"
]
}
]
}
},
"/api/0/organizations/": {
"get": {
"tags": [
"Organizations"
],
"description": "Return a list of organizations available to the authenticated session. This is particularly useful for requests with an user bound context. For API key based requests this will only return the organization that belongs to the key.",
"operationId": "List Your Organizations",
"parameters": [
{
"name": "owner",
"in": "query",
"description": "Restrict results to organizations in which you are an organization owner.",
"schema": {
"type": "boolean"
}
},
{
"name": "cursor",
"in": "query",
"required": false,
"description": "A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.",
"x-learn-more": "https://docs.sentry.io/api/pagination/",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"avatar",
"dateCreated",
"id",
"isEarlyAdopter",
"name",
"require2FA",
"slug",
"status"
],
"properties": {
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
}
}
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"id": {
"type": "string"
},
"isEarlyAdopter": {
"type": "boolean"
},
"name": {
"type": "string"
},
"require2FA": {
"type": "boolean"
},
"slug": {
"type": "string"
},
"status": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
}
}
}
}
},
"example": [
{
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
},
"dateCreated": "2018-11-06T21:19:55.101Z",
"id": "2",
"isEarlyAdopter": false,
"name": "The Interstellar Jurisdiction",
"require2FA": false,
"slug": "the-interstellar-jurisdiction",
"status": {
"id": "active",
"name": "active"
}
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"auth_token": [
"org: read"
]
}
]
}
},
"/api/0/organizations/{organization_slug}/eventids/{event_id}/": {
"get": {
"tags": [
"Organizations"
],
"description": "This resolves an event ID to the project slug and internal issue ID and internal event ID.",
"operationId": "Resolve an Event ID",
"parameters": [
{
"name": "organization_slug",
"in": "path",
"description": "The slug of the organization the event ID should be looked up in.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "event_id",
"in": "path",
"description": "The event ID to look up.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"event",
"eventId",
"groupId",
"organizationSlug",
"projectSlug"
],
"properties": {
"event": {
"type": "object",
"required": [
"_meta",
"context",
"contexts",
"dateCreated",
"dateReceived",
"dist",
"entries",
"errors",
"eventID",
"fingerprints",
"groupID",
"id",
"message",
"metadata",
"packages",
"platform",
"sdk",
"size",
"tags",
"type",
"user",
"title"
],
"properties": {
"_meta": {
"type": "object",
"properties": {
"context": {
"type": "string",
"nullable": true
},
"contexts": {
"type": "object",
"nullable": true
},
"entries": {
"type": "object"
},
"message": {
"type": "string",
"nullable": true
},
"packages": {
"type": "string",
"nullable": true
},
"sdk": {
"type": "string",
"nullable": true
},
"tags": {
"type": "object"
},
"user": {
"type": "string",
"nullable": true
}
}
},
"context": {
"type": "object",
"properties": {
"length": {
"type": "integer"
},
"results": {
"type": "array",
"items": {
"type": "integer"
}
},
"session": {
"type": "object",
"properties": {
"foo": {
"type": "string"
}
}
},
"unauthorized": {
"type": "boolean"
},
"url": {
"type": "string"
}
}
},
"contexts": {
"type": "object",
"properties": {
"ForbiddenError": {
"type": "object",
"properties": {
"status": {
"type": "integer"
},
"statusText": {
"type": "string"
},
"responseJSON": {
"type": "object",
"properties": {
"detail": {
"type": "string"
}
}
},
"type": {
"type": "string"
}
}
},
"browser": {
"type": "object",
"properties": {
"version": {
"type": "string"
},
"type": {
"type": "string"
},
"name": {
"type": "string"
}
}
},
"os": {
"type": "object",
"properties": {
"version": {
"type": "string"
},
"type": {
"type": "string"
},
"name": {
"type": "string"
}
}
},
"trace": {
"type": "object",
"properties": {
"span_id": {
"type": "string"
},
"type": {
"type": "string"
},
"trace_id": {
"type": "string"
},
"op": {
"type": "string"
}
}
},
"organization": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"id": {
"type": "string"
},
"slug": {
"type": "string"
}
}
}
}
},
"dateCreated": {
"type": "string"
},
"dateReceived": {
"type": "string"
},
"dist": {
"type": "string",
"nullable": true
},
"entries": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"required": [
"type",
"data"
],
"properties": {
"type": {
"type": "string"
},
"data": {
"type": "object",
"required": [
"values"
],
"properties": {
"values": {
"type": "array",
"items": {
"type": "object",
"required": [
"category",
"level",
"event_id",
"timestamp",
"data",
"message",
"type"
],
"properties": {
"category": {
"type": "string"
},
"level": {
"type": "string"
},
"event_id": {
"type": "string",
"nullable": true
},
"timestamp": {
"type": "string",
"format": "date-time"
},
"data": {
"type": "object",
"nullable": true
},
"message": {
"type": "string",
"nullable": true
},
"type": {
"type": "string"
}
}
}
}
}
}
}
},
{
"type": "object",
"required": [
"type",
"data"
],
"properties": {
"type": {
"type": "string"
},
"data": {
"type": "object",
"required": [
"fragment",
"cookies",
"inferredContentType",
"env",
"headers",
"url",
"query",
"data",
"method"
],
"properties": {
"fragment": {
"type": "string",
"nullable": true
},
"cookies": {
"type": "array",
"nullable": true,
"items": {
"type": "array",
"items": {
"type": "string"
}
}
},
"inferredContentType": {
"type": "string",
"nullable": true
},
"env": {
"type": "object",
"nullable": true,
"properties": {
"ENV": {
"type": "string"
}
}
},
"headers": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string"
}
}
},
"url": {
"type": "string"
},
"query": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string"
}
}
},
"data": {
"type": "object",
"nullable": true
},
"method": {
"type": "string",
"nullable": true
}
}
}
}
},
{
"type": "object",
"required": [
"type",
"data"
],
"properties": {
"type": {
"type": "string"
},
"data": {
"type": "object",
"required": [
"formatted"
],
"properties": {
"formatted": {
"type": "string"
}
}
}
}
},
{
"type": "object",
"required": [
"type",
"data"
],
"properties": {
"type": {
"type": "string"
},
"data": {
"type": "object",
"required": [
"excOmitted",
"hasSystemFrames",
"values"
],
"properties": {
"excOmitted": {
"type": "array",
"nullable": true,
"items": {
"type": "integer"
}
},
"hasSystemFrames": {
"type": "boolean"
},
"values": {
"type": "array",
"items": {
"type": "object",
"required": [
"stacktrace",
"module",
"rawStacktrace",
"mechanism",
"threadId",
"value",
"type"
],
"properties": {
"stacktrace": {
"type": "object",
"nullable": true,
"required": [
"frames",
"framesOmitted",
"registers",
"hasSystemFrames"
],
"properties": {
"frames": {
"type": "array",
"items": {
"type": "object",
"required": [
"function",
"errors",
"colNo",
"vars",
"package",
"absPath",
"inApp",
"lineNo",
"module",
"filename",
"platform",
"instructionAddr",
"context",
"symbolAddr",
"trust",
"symbol"
],
"properties": {
"function": {
"type": "string"
},
"errors": {
"type": "string",
"nullable": true
},
"colNo": {
"type": "integer",
"nullable": true
},
"vars": {
"type": "object",
"nullable": true
},
"package": {
"type": "string",
"nullable": true
},
"absPath": {
"type": "string",
"nullable": true
},
"inApp": {
"type": "boolean"
},
"lineNo": {
"type": "integer"
},
"module": {
"type": "string"
},
"filename": {
"type": "string"
},
"platform": {
"type": "string",
"nullable": true
},
"instructionAddr": {
"type": "string",
"nullable": true
},
"context": {
"type": "array",
"items": {
"type": "array",
"items": {
"oneOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
}
}
},
"symbolAddr": {
"type": "string",
"nullable": true
},
"trust": {
"type": "string",
"nullable": true
},
"symbol": {
"type": "string",
"nullable": true
}
}
}
},
"framesOmitted": {
"type": "string",
"nullable": true
},
"registers": {
"type": "string",
"nullable": true
},
"hasSystemFrames": {
"type": "boolean"
}
}
},
"module": {
"type": "string",
"nullable": true
},
"rawStacktrace": {
"type": "object",
"nullable": true
},
"mechanism": {
"type": "object",
"nullable": true,
"properties": {
"type": {
"type": "string"
},
"handled": {
"type": "boolean"
}
}
},
"threadId": {
"type": "string",
"nullable": true
},
"value": {
"type": "string"
},
"type": {
"type": "string"
}
}
}
}
}
}
}
}
]
}
},
"errors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"message": {
"type": "string"
},
"type": {
"type": "string"
},
"data": {
"type": "object"
}
}
}
},
"eventID": {
"type": "string"
},
"fingerprints": {
"type": "array",
"items": {
"type": "string"
}
},
"groupID": {
"type": "string"
},
"id": {
"type": "string"
},
"message": {
"type": "string"
},
"metadata": {
"type": "object",
"properties": {
"title": {
"type": "string"
}
}
},
"packages": {
"type": "object",
"properties": {
"my.package": {
"type": "string"
}
}
},
"platform": {
"type": "string"
},
"sdk": {
"type": "object",
"nullable": true
},
"size": {
"type": "integer"
},
"tags": {
"type": "array",
"items": {
"type": "object",
"properties": {
"_meta": {
"type": "string",
"nullable": true
},
"key": {
"type": "string"
},
"value": {
"type": "string"
}
}
}
},
"type": {
"type": "string"
},
"user": {
"type": "object",
"nullable": true,
"required": [
"username",
"name",
"ip_address",
"email",
"data",
"id"
],
"properties": {
"username": {
"type": "string",
"nullable": true
},
"name": {
"type": "string",
"nullable": true
},
"ip_address": {
"type": "string",
"nullable": true
},
"email": {
"type": "string",
"nullable": true
},
"data": {
"type": "object",
"nullable": true,
"properties": {
"isStaff": {
"type": "boolean"
}
}
},
"id": {
"type": "string"
}
}
},
"title": {
"type": "string"
}
}
},
"eventId": {
"type": "string"
},
"groupId": {
"type": "string"
},
"organizationSlug": {
"type": "string"
},
"projectSlug": {
"type": "string"
}
}
},
"example": {
"event": {
"_meta": {
"context": null,
"contexts": null,
"entries": {},
"message": null,
"packages": null,
"sdk": null,
"tags": {},
"user": null
},
"context": {
"length": 10837790,
"results": [
1,
2,
3,
4,
5
],
"session": {
"foo": "bar"
},
"unauthorized": false,
"url": "http://example.org/foo/bar/"
},
"contexts": {},
"dateCreated": "2018-11-06T21:19:55Z",
"dateReceived": "2018-11-06T21:19:55Z",
"dist": null,
"entries": [
{
"type": "request",
"data": {
"fragment": null,
"cookies": [],
"inferredContentType": null,
"env": null,
"headers": [
[
"User-Agent",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"
]
],
"url": "http://example.com/foo",
"query": [],
"data": null,
"method": null
}
}
],
"errors": [],
"eventID": "9fac2ceed9344f2bbfdd1fdacb0ed9b1",
"fingerprints": [
"c4a4d06bc314205bb3b6bdb612dde7f1"
],
"groupID": "1",
"id": "1",
"message": "",
"title": "This is an example Python exception",
"metadata": {
"title": "This is an example Python exception"
},
"packages": {
"my.package": "1.0.0"
},
"platform": "python",
"sdk": null,
"size": 7055,
"tags": [
{
"_meta": null,
"key": "browser",
"value": "Chrome 28.0"
},
{
"_meta": null,
"key": "device",
"value": "Other"
},
{
"_meta": null,
"key": "level",
"value": "error"
},
{
"_meta": null,
"key": "os",
"value": "Windows 8"
},
{
"_meta": null,
"key": "release",
"value": "17642328ead24b51867165985996d04b29310337"
},
{
"_meta": null,
"key": "url",
"value": "http://example.com/foo"
},
{
"_meta": null,
"key": "user",
"value": "id:1"
}
],
"type": "default",
"user": {
"data": {},
"email": "sentry@example.com",
"id": "1",
"ip_address": "127.0.0.1",
"name": "Sentry",
"username": "sentry"
}
},
"eventId": "1",
"groupId": "1",
"organizationSlug": "the-interstellar-jurisdiction",
"projectSlug": "pump-station"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"auth_token": [
"org: read"
]
}
]
}
},
"/api/0/organizations/{organization_slug}/": {
"get": {
"tags": [
"Organizations"
],
"description": "Return details on an individual organization including various details such as membership access, features, and teams.",
"operationId": "Retrieve an Organization",
"parameters": [
{
"name": "organization_slug",
"in": "path",
"description": "The slug of the organization to look up.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"access",
"allowSharedIssues",
"availableRoles",
"avatar",
"dataScrubber",
"dataScrubberDefaults",
"dateCreated",
"defaultRole",
"enhancedPrivacy",
"experiments",
"features",
"id",
"isDefault",
"isEarlyAdopter",
"name",
"onboardingTasks",
"openMembership",
"pendingAccessRequests",
"projects",
"quota",
"require2FA",
"safeFields",
"scrapeJavaScript",
"scrubIPAddresses",
"sensitiveFields",
"slug",
"status",
"storeCrashReports",
"teams",
"trustedRelays"
],
"properties": {
"access": {
"type": "array",
"items": {
"type": "string"
}
},
"allowSharedIssues": {
"type": "boolean"
},
"availableRoles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
}
}
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
}
}
},
"dataScrubber": {
"type": "boolean"
},
"dataScrubberDefaults": {
"type": "boolean"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"defaultRole": {
"type": "string"
},
"enhancedPrivacy": {
"type": "boolean"
},
"experiments": {
"type": "object"
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"id": {
"type": "string"
},
"isDefault": {
"type": "boolean"
},
"isEarlyAdopter": {
"type": "boolean"
},
"name": {
"type": "string"
},
"onboardingTasks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"data": {
"type": "object",
"nullable": true
},
"dateCompleted": {
"type": "string",
"format": "date-time"
},
"status": {
"type": "string"
},
"task": {
"type": "integer"
},
"user": {
"type": "string",
"nullable": true
}
}
}
},
"openMembership": {
"type": "boolean"
},
"pendingAccessRequests": {
"type": "integer",
"format": "int64"
},
"projects": {
"type": "array",
"items": {
"type": "object",
"required": [
"dateCreated",
"firstEvent",
"hasAccess",
"id",
"isBookmarked",
"isMember",
"latestDeploys",
"name",
"platform",
"platforms",
"slug",
"team",
"teams"
],
"properties": {
"dateCreated": {
"type": "string"
},
"firstEvent": {
"type": "string",
"nullable": true
},
"hasAccess": {
"type": "boolean"
},
"id": {
"type": "string"
},
"isBookmarked": {
"type": "boolean"
},
"isMember": {
"type": "boolean"
},
"latestDeploys": {
"type": "string",
"nullable": true
},
"name": {
"type": "string"
},
"platform": {
"type": "string",
"nullable": true
},
"platforms": {
"type": "array",
"items": {
"type": "string"
}
},
"slug": {
"type": "string"
},
"team": {
"type": "object",
"nullable": true,
"allOf": [
{
"type": "object",
"required": [
"id",
"name",
"slug"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
}
}
]
},
"teams": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"slug"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
}
}
}
}
}
},
"quota": {
"type": "object",
"properties": {
"accountLimit": {
"type": "integer",
"format": "int64"
},
"maxRate": {
"type": "integer",
"format": "int64",
"nullable": true
},
"maxRateInterval": {
"type": "integer",
"format": "int64"
},
"projectLimit": {
"type": "integer",
"format": "int64"
}
}
},
"require2FA": {
"type": "boolean"
},
"safeFields": {
"type": "array",
"items": {
"type": "string"
}
},
"scrapeJavaScript": {
"type": "boolean"
},
"scrubIPAddresses": {
"type": "boolean"
},
"sensitiveFields": {
"type": "array",
"items": {
"type": "string"
}
},
"slug": {
"type": "string"
},
"status": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
}
},
"storeCrashReports": {
"type": "integer",
"format": "int64"
},
"teams": {
"type": "array",
"items": {
"type": "object",
"required": [
"avatar",
"dateCreated",
"hasAccess",
"id",
"isMember",
"isPending",
"memberCount",
"name",
"slug"
],
"properties": {
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
}
}
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"hasAccess": {
"type": "boolean"
},
"id": {
"type": "string"
},
"isMember": {
"type": "boolean"
},
"isPending": {
"type": "boolean"
},
"memberCount": {
"type": "integer",
"format": "int64"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
}
}
},
"trustedRelays": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"example": {
"access": [],
"allowSharedIssues": true,
"availableRoles": [
{
"id": "member",
"name": "Member"
},
{
"id": "admin",
"name": "Admin"
},
{
"id": "manager",
"name": "Manager"
},
{
"id": "owner",
"name": "Owner"
}
],
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
},
"dataScrubber": false,
"dataScrubberDefaults": false,
"dateCreated": "2018-11-06T21:19:55.101Z",
"defaultRole": "member",
"enhancedPrivacy": false,
"experiments": {},
"features": [
"new-teams",
"shared-issues",
"new-issue-ui",
"repos",
"open-membership",
"invite-members",
"sso-saml2",
"sso-basic",
"suggested-commits"
],
"id": "2",
"isDefault": false,
"isEarlyAdopter": false,
"name": "The Interstellar Jurisdiction",
"onboardingTasks": [
{
"data": {},
"dateCompleted": "2018-11-06T21:20:08.089Z",
"status": "complete",
"task": 1,
"user": ""
}
],
"openMembership": true,
"pendingAccessRequests": 0,
"projects": [
{
"dateCreated": "2018-11-06T21:19:58.536Z",
"firstEvent": null,
"hasAccess": true,
"id": "3",
"isBookmarked": false,
"isMember": true,
"latestDeploys": null,
"name": "Prime Mover",
"platform": null,
"platforms": [],
"slug": "prime-mover",
"team": {
"id": "2",
"name": "Powerful Abolitionist",
"slug": "powerful-abolitionist"
},
"teams": [
{
"id": "2",
"name": "Powerful Abolitionist",
"slug": "powerful-abolitionist"
}
]
},
{
"dateCreated": "2018-11-06T21:19:55.121Z",
"firstEvent": null,
"hasAccess": true,
"id": "2",
"isBookmarked": false,
"isMember": true,
"latestDeploys": null,
"name": "Pump Station",
"platform": null,
"platforms": [],
"slug": "pump-station",
"team": {
"id": "2",
"name": "Powerful Abolitionist",
"slug": "powerful-abolitionist"
},
"teams": [
{
"id": "2",
"name": "Powerful Abolitionist",
"slug": "powerful-abolitionist"
}
]
},
{
"dateCreated": "2018-11-06T21:20:08.064Z",
"firstEvent": null,
"hasAccess": true,
"id": "4",
"isBookmarked": false,
"isMember": true,
"latestDeploys": null,
"name": "The Spoiled Yoghurt",
"platform": null,
"platforms": [],
"slug": "the-spoiled-yoghurt",
"team": {
"id": "2",
"name": "Powerful Abolitionist",
"slug": "powerful-abolitionist"
},
"teams": [
{
"id": "2",
"name": "Powerful Abolitionist",
"slug": "powerful-abolitionist"
}
]
}
],
"quota": {
"accountLimit": 0,
"maxRate": 0,
"maxRateInterval": 60,
"projectLimit": 100
},
"require2FA": false,
"safeFields": [],
"scrapeJavaScript": true,
"scrubIPAddresses": false,
"sensitiveFields": [],
"slug": "the-interstellar-jurisdiction",
"status": {
"id": "active",
"name": "active"
},
"storeCrashReports": 0,
"teams": [
{
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
},
"dateCreated": "2018-11-06T21:20:08.115Z",
"hasAccess": true,
"id": "3",
"isMember": true,
"isPending": false,
"memberCount": 1,
"name": "Ancient Gabelers",
"slug": "ancient-gabelers"
},
{
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
},
"dateCreated": "2018-11-06T21:19:55.114Z",
"hasAccess": true,
"id": "2",
"isMember": true,
"isPending": false,
"memberCount": 1,
"name": "Powerful Abolitionist",
"slug": "powerful-abolitionist"
}
],
"trustedRelays": []
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "The requested resource does not exist"
}
},
"security": [
{
"auth_token": [
"org: read"
]
}
]
},
"put": {
"tags": [
"Organizations"
],
"description": "Update various attributes and configurable settings for the given organization.",
"operationId": "Update an Organization",
"parameters": [
{
"name": "organization_slug",
"in": "path",
"description": "The slug of the organization to update.",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"required": [
"name"
],
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "An optional new name for the organization."
},
"slug": {
"type": "string",
"description": "An optional new slug for the organization. Needs to be available and unique."
}
}
},
"example": {
"name": "Impeccably Designated",
"slug": "impeccably-designated"
}
}
},
"required": false
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"access",
"allowSharedIssues",
"availableRoles",
"avatar",
"dataScrubber",
"dataScrubberDefaults",
"dateCreated",
"defaultRole",
"enhancedPrivacy",
"experiments",
"features",
"id",
"isDefault",
"isEarlyAdopter",
"name",
"onboardingTasks",
"openMembership",
"pendingAccessRequests",
"projects",
"quota",
"require2FA",
"safeFields",
"scrapeJavaScript",
"scrubIPAddresses",
"sensitiveFields",
"slug",
"status",
"storeCrashReports",
"teams",
"trustedRelays"
],
"properties": {
"access": {
"type": "array",
"items": {
"type": "string"
}
},
"allowSharedIssues": {
"type": "boolean"
},
"availableRoles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
}
}
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
}
}
},
"dataScrubber": {
"type": "boolean"
},
"dataScrubberDefaults": {
"type": "boolean"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"defaultRole": {
"type": "string"
},
"enhancedPrivacy": {
"type": "boolean"
},
"experiments": {
"type": "object"
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"id": {
"type": "string"
},
"isDefault": {
"type": "boolean"
},
"isEarlyAdopter": {
"type": "boolean"
},
"name": {
"type": "string"
},
"onboardingTasks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"data": {
"type": "object",
"nullable": true
},
"dateCompleted": {
"type": "string",
"format": "date-time"
},
"status": {
"type": "string"
},
"task": {
"type": "integer"
},
"user": {
"type": "string",
"nullable": true
}
}
}
},
"openMembership": {
"type": "boolean"
},
"pendingAccessRequests": {
"type": "integer",
"format": "int64"
},
"projects": {
"type": "array",
"items": {
"type": "object",
"required": [
"dateCreated",
"firstEvent",
"hasAccess",
"id",
"isBookmarked",
"isMember",
"latestDeploys",
"name",
"platform",
"platforms",
"slug",
"team",
"teams"
],
"properties": {
"dateCreated": {
"type": "string"
},
"firstEvent": {
"type": "string",
"nullable": true
},
"hasAccess": {
"type": "boolean"
},
"id": {
"type": "string"
},
"isBookmarked": {
"type": "boolean"
},
"isMember": {
"type": "boolean"
},
"latestDeploys": {
"type": "string",
"nullable": true
},
"name": {
"type": "string"
},
"platform": {
"type": "string",
"nullable": true
},
"platforms": {
"type": "array",
"items": {
"type": "string"
}
},
"slug": {
"type": "string"
},
"team": {
"type": "object",
"nullable": true,
"allOf": [
{
"type": "object",
"required": [
"id",
"name",
"slug"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
}
}
]
},
"teams": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"slug"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
}
}
}
}
}
},
"quota": {
"type": "object",
"properties": {
"accountLimit": {
"type": "integer",
"format": "int64"
},
"maxRate": {
"type": "integer",
"format": "int64",
"nullable": true
},
"maxRateInterval": {
"type": "integer",
"format": "int64"
},
"projectLimit": {
"type": "integer",
"format": "int64"
}
}
},
"require2FA": {
"type": "boolean"
},
"safeFields": {
"type": "array",
"items": {
"type": "string"
}
},
"scrapeJavaScript": {
"type": "boolean"
},
"scrubIPAddresses": {
"type": "boolean"
},
"sensitiveFields": {
"type": "array",
"items": {
"type": "string"
}
},
"slug": {
"type": "string"
},
"status": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
}
},
"storeCrashReports": {
"type": "integer",
"format": "int64"
},
"teams": {
"type": "array",
"items": {
"type": "object",
"required": [
"avatar",
"dateCreated",
"hasAccess",
"id",
"isMember",
"isPending",
"memberCount",
"name",
"slug"
],
"properties": {
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
}
}
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"hasAccess": {
"type": "boolean"
},
"id": {
"type": "string"
},
"isMember": {
"type": "boolean"
},
"isPending": {
"type": "boolean"
},
"memberCount": {
"type": "integer",
"format": "int64"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
}
}
},
"trustedRelays": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"example": {
"access": [],
"allowSharedIssues": true,
"availableRoles": [
{
"id": "member",
"name": "Member"
},
{
"id": "admin",
"name": "Admin"
},
{
"id": "manager",
"name": "Manager"
},
{
"id": "owner",
"name": "Owner"
}
],
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
},
"dataScrubber": false,
"dataScrubberDefaults": false,
"dateCreated": "2018-11-06T21:20:19.548Z",
"defaultRole": "member",
"enhancedPrivacy": false,
"experiments": {},
"features": [
"new-teams",
"shared-issues",
"new-issue-ui",
"repos",
"open-membership",
"invite-members",
"sso-saml2",
"sso-basic",
"suggested-commits"
],
"id": "3",
"isDefault": false,
"isEarlyAdopter": false,
"name": "Impeccably Designated",
"onboardingTasks": [],
"openMembership": true,
"pendingAccessRequests": 0,
"projects": [],
"quota": {
"accountLimit": 0,
"maxRate": 0,
"maxRateInterval": 60,
"projectLimit": 100
},
"require2FA": false,
"safeFields": [],
"scrapeJavaScript": true,
"scrubIPAddresses": false,
"sensitiveFields": [],
"slug": "impeccably-designated",
"status": {
"id": "active",
"name": "active"
},
"storeCrashReports": 0,
"teams": [],
"trustedRelays": []
}
}
}
},
"400": {
"description": "Bad Input"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"auth_token": [
"org:write"
]
}
]
}
},
"/api/0/organizations/{organization_slug}/repos/": {
"get": {
"tags": [
"Organizations"
],
"description": "Return a list of version control repositories for a given organization.",
"operationId": "List an Organization's Repositories",
"parameters": [
{
"name": "organization_slug",
"in": "path",
"description": "The organization short name.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"dateCreated",
"id",
"name"
],
"properties": {
"dateCreated": {
"type": "string"
},
"id": {
"type": "string"
},
"name": {
"type": "string"
}
}
}
},
"example": [
{
"dateCreated": "2018-11-06T21:19:58.536Z",
"id": "3",
"name": "sentry/sentry"
}
]
}
}
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"auth_token": [
"org: read"
]
}
]
}
},
"/api/0/organizations/{organization_slug}/repos/{repo_id}/commits/": {
"get": {
"tags": [
"Organizations"
],
"description": "Return a list of commits for a given repository.",
"operationId": "List a Repository's Commits",
"parameters": [
{
"name": "organization_slug",
"in": "path",
"description": "The organization short name.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "repo_id",
"in": "path",
"description": "The repository ID.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"dateCreated",
"id",
"message"
],
"properties": {
"dateCreated": {
"type": "string",
"format": "date-time"
},
"id": {
"type": "string"
},
"message": {
"type": "string",
"nullable": true
}
}
}
},
"example": [
{
"dateCreated": "2018-11-06T21:19:58.536Z",
"id": "acbafc639127fd89d10f474520104517ff1d709e",
"message": "Initial commit from Create Next App"
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"auth_token": [
"org: read"
]
}
]
}
},
"/api/0/organizations/{organization_slug}/users/": {
"get": {
"tags": [
"Organizations"
],
"description": "Return a list of users that belong to a given organization.",
"operationId": "List an Organization's Users",
"parameters": [
{
"name": "organization_slug",
"in": "path",
"description": "The slug of the organization the event ID should be looked up in.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project",
"in": "query",
"description": "Restrict results to users who have access to a given project ID",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"dateCreated",
"user",
"roleName",
"expired",
"id",
"projects",
"name",
"role",
"flags",
"email",
"pending"
],
"properties": {
"dateCreated": {
"type": "string"
},
"user": {
"type": "object",
"required": [
"username",
"lastLogin",
"isSuperuser",
"isManaged",
"lastActive",
"isStaff",
"id",
"isActive",
"has2fa",
"name",
"avatarUrl",
"dateJoined",
"emails",
"avatar",
"hasPasswordAuth",
"email"
],
"properties": {
"username": {
"type": "string"
},
"lastLogin": {
"type": "string",
"nullable": true
},
"isSuperuser": {
"type": "boolean"
},
"isManaged": {
"type": "boolean"
},
"lastActive": {
"type": "string"
},
"isStaff": {
"type": "boolean"
},
"id": {
"type": "string"
},
"isActive": {
"type": "boolean"
},
"has2fa": {
"type": "boolean"
},
"name": {
"type": "string"
},
"avatarUrl": {
"type": "string"
},
"dateJoined": {
"type": "string"
},
"emails": {
"type": "array",
"items": {
"type": "object",
"properties": {
"is_verified": {
"type": "boolean"
},
"id": {
"type": "string"
},
"email": {
"type": "string"
}
}
}
},
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
}
}
},
"hasPasswordAuth": {
"type": "boolean"
},
"email": {
"type": "string"
}
}
},
"roleName": {
"type": "string"
},
"expired": {
"type": "boolean"
},
"id": {
"type": "string"
},
"projects": {
"type": "array",
"items": {
"type": "string"
}
},
"name": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"owner",
"manager",
"admin",
"member",
"billing"
]
},
"flags": {
"type": "object",
"properties": {
"sso: linked": {
"type": "boolean"
},
"sso: invalid": {
"type": "boolean"
}
}
},
"email": {
"type": "string"
},
"pending": {
"type": "boolean"
}
}
}
},
"example": [
{
"dateCreated": "2019-05-09T18:06:01.728Z",
"user": {
"username": "testEmail@test.com",
"lastLogin": "2019-09-16T02:56:06.806Z",
"isSuperuser": false,
"isManaged": false,
"lastActive": "2019-10-08T15:05:38.715Z",
"isStaff": false,
"id": "433307",
"isActive": true,
"has2fa": false,
"name": "OtherTest McTestuser",
"avatarUrl": "https://secure.gravatar.com/avatar/1eb103c0e899f372a85eb0a44f0a0f42?s=32&d=mm",
"dateJoined": "2019-05-09T18:06:01.443Z",
"emails": [
{
"is_verified": true,
"id": "468229",
"email": "testEmail@test.com"
}
],
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
},
"hasPasswordAuth": false,
"email": "testEmail@test.com"
},
"roleName": "Organization Owner",
"expired": false,
"id": "9376061",
"projects": [
"buggy-sentry-project"
],
"name": "OtherTest McTestuser",
"role": "owner",
"flags": {
"sso: linked": false,
"sso: invalid": false
},
"email": "testEmail@test.com",
"pending": false
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"auth_token": [
"org: read"
]
}
]
}
},
"/api/0/organizations/{organization_slug}/shortids/{short_id}/": {
"get": {
"tags": [
"Organizations"
],
"description": "This resolves a short ID to the project slug and internal issue ID.",
"operationId": "Resolve a Short ID",
"parameters": [
{
"name": "organization_slug",
"in": "path",
"description": "The slug of the organization the short ID should be looked up in.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "short_id",
"in": "path",
"description": "The short ID to look up.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"organizationSlug",
"projectSlug",
"shortId",
"group",
"groupId"
],
"properties": {
"organizationSlug": {
"type": "string"
},
"projectSlug": {
"type": "string"
},
"shortId": {
"type": "string"
},
"group": {
"type": "object",
"required": [
"lastSeen",
"numComments",
"userCount",
"culprit",
"title",
"id",
"assignedTo",
"logger",
"type",
"annotations",
"metadata",
"status",
"subscriptionDetails",
"isPublic",
"hasSeen",
"shortId",
"shareId",
"firstSeen",
"count",
"permalink",
"level",
"isSubscribed",
"isBookmarked",
"project",
"statusDetails"
],
"properties": {
"lastSeen": {
"type": "string"
},
"numComments": {
"type": "integer"
},
"userCount": {
"type": "integer"
},
"culprit": {
"type": "string",
"nullable": true
},
"title": {
"type": "string"
},
"id": {
"type": "string"
},
"assignedTo": {
"type": "object",
"nullable": true,
"properties": {
"type": {
"type": "string"
},
"id": {
"type": "string"
},
"name": {
"type": "string"
}
}
},
"logger": {
"type": "string",
"nullable": true
},
"type": {
"type": "string"
},
"annotations": {
"type": "array",
"items": {
"type": "string"
}
},
"metadata": {
"type": "object",
"properties": {
"function": {
"type": "string"
},
"title": {
"type": "string"
},
"type": {
"type": "string"
},
"value": {
"type": "string"
},
"filename": {
"type": "string"
}
}
},
"status": {
"type": "string",
"enum": [
"resolved",
"unresolved",
"ignored"
]
},
"subscriptionDetails": {
"type": "object",
"nullable": true,
"properties": {
"reason": {
"type": "string"
}
}
},
"isPublic": {
"type": "boolean"
},
"hasSeen": {
"type": "boolean"
},
"shortId": {
"type": "string"
},
"shareId": {
"type": "string",
"nullable": true
},
"firstSeen": {
"type": "string"
},
"count": {
"type": "string"
},
"permalink": {
"type": "string"
},
"level": {
"type": "string"
},
"isSubscribed": {
"type": "boolean"
},
"isBookmarked": {
"type": "boolean"
},
"project": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"id": {
"type": "string"
},
"name": {
"type": "string"
}
}
},
"statusDetails": {
"type": "object"
}
}
},
"groupId": {
"type": "string"
}
}
},
"example": {
"group": {
"annotations": [],
"assignedTo": null,
"count": "1",
"culprit": "raven.scripts.runner in main",
"firstSeen": "2018-11-06T21:19:55Z",
"hasSeen": false,
"id": "1",
"isBookmarked": false,
"isPublic": false,
"isSubscribed": true,
"lastSeen": "2018-11-06T21:19:55Z",
"level": "error",
"logger": null,
"metadata": {
"title": "This is an example Python exception"
},
"numComments": 0,
"permalink": "https://sentry.io/the-interstellar-jurisdiction/pump-station/issues/1/",
"project": {
"id": "2",
"name": "Pump Station",
"slug": "pump-station"
},
"shareId": null,
"shortId": "PUMP-STATION-1",
"status": "unresolved",
"statusDetails": {},
"subscriptionDetails": null,
"title": "This is an example Python exception",
"type": "default",
"userCount": 0
},
"groupId": "1",
"organizationSlug": "the-interstellar-jurisdiction",
"projectSlug": "pump-station",
"shortId": "PUMP-STATION-1"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"auth_token": [
"org: read"
]
}
]
}
},
"/api/0/projects/": {
"get": {
"tags": [
"Projects"
],
"description": "Return a list of projects available to the authenticated session.",
"operationId": "List Your Projects",
"parameters": [
{
"name": "cursor",
"in": "query",
"required": false,
"description": "A pointer to the last object fetched and its sort order; used to retrieve the next or previous results.",
"x-learn-more": "https://docs.sentry.io/api/pagination/",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"required": [
"avatar",
"color",
"dateCreated",
"features",
"firstEvent",
"hasAccess",
"id",
"isBookmarked",
"isInternal",
"isMember",
"isPublic",
"name",
"organization",
"platform",
"slug",
"status"
],
"properties": {
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
}
}
},
"color": {
"type": "string"
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"firstEvent": {
"type": "string",
"nullable": true
},
"hasAccess": {
"type": "boolean"
},
"id": {
"type": "string"
},
"isBookmarked": {
"type": "boolean"
},
"isInternal": {
"type": "boolean"
},
"isMember": {
"type": "boolean"
},
"isPublic": {
"type": "boolean"
},
"name": {
"type": "string"
},
"organization": {
"type": "object",
"required": [
"avatar",
"dateCreated",
"id",
"isEarlyAdopter",
"name",
"require2FA",
"slug",
"status"
],
"properties": {
"avatar": {
"type": "object",
"properties": {
"avatarType": {
"type": "string"
},
"avatarUuid": {
"type": "string",
"nullable": true
}
}
},
"dateCreated": {
"type": "string",
"format": "date-time"
},
"id": {
"type": "string"
},
"isEarlyAdopter": {
"type": "boolean"
},
"name": {
"type": "string"
},
"require2FA": {
"type": "boolean"
},
"slug": {
"type": "string"
},
"status": {
"type": "object",
"required": [
"id",
"name"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
}
}
}
},
"platform": {
"type": "string",
"nullable": true
},
"slug": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"active",
"disabled",
"pending_deletion",
"deletion_in_progress"
]
}
}
}
},
"example": [
{
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
},
"color": "#bf6e3f",
"dateCreated": "2018-11-06T21:20:08.064Z",
"features": [
"servicehooks",
"sample-events",
"data-forwarding",
"rate-limits",
"minidump"
],
"firstEvent": null,
"hasAccess": true,
"id": "4",
"isBookmarked": false,
"isInternal": false,
"isMember": true,
"isPublic": false,
"name": "The Spoiled Yoghurt",
"organization": {
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
},
"dateCreated": "2018-11-06T21:19:55.101Z",
"id": "2",
"isEarlyAdopter": false,
"name": "The Interstellar Jurisdiction",
"require2FA": false,
"slug": "the-interstellar-jurisdiction",
"status": {
"id": "active",
"name": "active"
}
},
"platform": null,
"slug": "the-spoiled-yoghurt",
"status": "active"
},
{
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
},
"color": "#bf5b3f",
"dateCreated": "2018-11-06T21:19:58.536Z",
"features": [
"releases",
"sample-events",
"minidump",
"servicehooks",
"rate-limits",
"data-forwarding"
],
"firstEvent": null,
"hasAccess": true,
"id": "3",
"isBookmarked": false,
"isInternal": false,
"isMember": true,
"isPublic": false,
"name": "Prime Mover",
"organization": {
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
},
"dateCreated": "2018-11-06T21:19:55.101Z",
"id": "2",
"isEarlyAdopter": false,
"name": "The Interstellar Jurisdiction",
"require2FA": false,
"slug": "the-interstellar-jurisdiction",
"status": {
"id": "active",
"name": "active"
}
},
"platform": null,
"slug": "prime-mover",
"status": "active"
},
{
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
},
"color": "#3fbf7f",
"dateCreated": "2018-11-06T21:19:55.121Z",
"features": [
"releases",
"sample-events",
"minidump",
"servicehooks",
"rate-limits",
"data-forwarding"
],
"firstEvent": null,
"hasAccess": true,
"id": "2",
"isBookmarked": false,
"isInternal": false,
"isMember": true,
"isPublic": false,
"name": "Pump Station",
"organization": {
"avatar": {
"avatarType": "letter_avatar",
"avatarUuid": null
},
"dateCreated": "2018-11-06T21:19:55.101Z",
"id": "2",
"isEarlyAdopter": false,
"name": "The Interstellar Jurisdiction",
"require2FA": false,
"slug": "the-interstellar-jurisdiction",
"status": {
"id": "active",
"name": "active"
}
},
"platform": null,
"slug": "pump-station",
"status": "active"
}
]
}
}
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"auth_token": [
"project:read"
]
}
]
}
},
"/api/0/projects/{organization_slug}/{project_slug}/files/dsyms/": {
"get": {
"tags": [
"Projects"
],
"description": "Retrieve a list of debug information files for a given project.",
"operationId": "List a Project's Debug Information Files",
"parameters": [
{
"name": "organization_slug",
"in": "path",
"description": "The slug of the organization the file belongs to.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project_slug",
"in": "path",
"description": "The slug of the project to list the DIFs of.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {}
}
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "The requested resource does not exist"
}
},
"security": [
{
"auth_token": [
"project:read"
]
}
]
},
"post": {
"tags": [
"Projects"
],
"description": "Upload a new debug information file for the given release.\n\nUnlike other API requests, files must be uploaded using the\ntraditional multipart/form-data content-type.\n\nThe file uploaded is a zip archive of an Apple .dSYM folder which\ncontains the individual debug images. Uploading through this endpoint\nwill create different files for the contained images.",
"operationId": "Upload a New File",
"parameters": [
{
"name": "organization_slug",
"in": "path",
"description": "The slug of the organization the project belongs to.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project_slug",
"in": "path",
"description": "The slug of the project to upload a file to.",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"required": [
"file"
],
"type": "object",
"properties": {
"file": {
"type": "string",
"format": "binary",
"description": "The multipart encoded file."
}
}
},
"example": {
"file": "debug.zip"
}
}
},
"required": true
},
"responses": {
"201": {
"description": "Success",
"content": {
"application/json": {}
}
},
"400": {
"description": "Bad Input"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "The requested resource does not exist"
}
},
"security": [
{
"auth_token": [
"project:write"
]
}
]
},
"delete": {
"tags": [
"Projects"
],
"description": "Delete a debug information file for a given project.",
"operationId": "Delete a Specific Project's Debug Information File",
"parameters": [
{
"name": "organization_slug",
"in": "path",
"description": "The slug of the organization the file belongs to.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project_slug",
"in": "path",
"description": "The slug of the project to delete the DIF.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "id",
"in": "query",
"description": "The ID of the DIF to delete.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"204": {
"description": "Success"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "The requested resource does not exist"
}
},
"security": [
{
"auth_token": [
"project:write"
]
}
]
}
},
"/api/0/projects/{organization_slug}/{project_slug}/users/": {
"get": {
"tags": [
"Projects"
],
"description": "Return a list of users seen within this project.",
"operationId": "List a Project's Users",
"parameters": [
{
"name": "organization_slug",
"in": "path",
"description": "The slug of the organization.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project_slug",
"in": "path",
"description": "The slug of the project.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "query",
"in": "query",
"description": "Limit results to users matching the given query. Prefixes should be used to suggest the field to match on: `id`, `email`, `username`, `ip`. For example, `query=email:foo@example.com`",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"username",
"email"
],
"properties": {
"username": {
"type": "string",
"nullable": true
},
"email": {
"type": "string",
"nullable": true
}
}
}
},
"example": [
{
"username": "sentry",
"email": "sentry@example.com"
}
]
}
}
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"auth_token": [
"project:read"
]
}
]
}
},
"/api/0/projects/{organization_slug}/{project_slug}/tags/{key}/values/": {
"get": {
"tags": [
"Projects"
],
"description": "Return a list of values associated with this key. The `query`\nparameter can be used to to perform a \"contains\" match on\nvalues. \n\nWhen [paginated](/api/pagination) can return at most 1000 values.",
"operationId": "List a Tag's Values",
"parameters": [
{
"name": "organization_slug",
"in": "path",
"description": "The slug of the organization.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project_slug",
"in": "path",
"description": "The slug of the project.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "key",
"in": "path",
"description": "The tag key to look up.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
}
}
}
},
"example": [
{
"name": "mint_choco"
}
]
}
}
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"auth_token": [
"project:read"
]
}
]
}
},
"/api/0/projects/{organization_slug}/{project_slug}/stats/": {
"get": {
"tags": [
"Projects"
],
"summary": "Caution\nThis endpoint may change in the future without notice.",
"description": "Return a set of points representing a normalized timestamp and the\nnumber of events seen in the period.\n\nQuery ranges are limited to Sentry's configured time-series resolutions.",
"operationId": "Retrieve Event Counts for a Project",
"parameters": [
{
"name": "organization_slug",
"in": "path",
"description": "The slug of the organization.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project_slug",
"in": "path",
"description": "The slug of the project.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "stat",
"in": "query",
"description": "The name of the stat to query `(\"received\", \"rejected\", \"blacklisted\", \"generated\")`.",
"schema": {
"type": "string",
"enum": [
"received",
"rejected",
"blacklisted",
"generated"
]
}
},
{
"name": "since",
"in": "query",
"description": "A timestamp to set the start of the query in seconds since UNIX epoch.",
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "until",
"in": "query",
"description": "A timestamp to set the end of the query in seconds since UNIX epoch.",
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "resolution",
"in": "query",
"description": "An explicit resolution to search for (one of `10s`, `1h`, and `1d`).",
"schema": {
"type": "string",
"enum": [
"10s",
"1h",
"1d"
]
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "integer"
}
}
},
"example": [
[
1541455200,
1184
],
[
1541458800,
1410
],
[
1541462400,
1440
],
[
1541466000,
1682
],
[
1541469600,
1203
],
[
1541473200,
497
],
[
1541476800,
661
],
[
1541480400,
1481
],
[
1541484000,
678
],
[
1541487600,
1857
],
[
1541491200,
819
],
[
1541494800,
1013
],
[
1541498400,
1883
],
[
1541502000,
1450
],
[
1541505600,
1102
],
[
1541509200,
1317
],
[
1541512800,
1017
],
[
1541516400,
813
],
[
1541520000,
1189
],
[
1541523600,
496
],
[
1541527200,
1936
],
[
1541530800,
1405
],
[
1541534400,
617
],
[
1541538000,
1533
]
]
}
}
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"auth_token": [
"project:read"
]
}
]
}
},
"/api/0/projects/{organization_slug}/{project_slug}/user-feedback/": {
"get": {
"tags": [
"Projects"
],
"description": "Return a list of user feedback items within this project.",
"operationId": "List a Project's User Feedback",
"parameters": [
{
"name": "organization_slug",
"in": "path",
"description": "The slug of the organization.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "project_slug",
"in": "path",
"description": "The slug of the project.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"comments",
"dateCreated",
"email",
"event",
"eventID",
"id",
"issue",
"name",
"user"
],
"properties": {
"comments": {
"type": "string"
},
"dateCreated": {
"type": "string"
},
"email": {
"type": "string"
},
"event": {
"type": "object",
"properties": {
"eventID": {
"type": "string"
},
"id": {
"type": "string",
"nullable": true
}
}
},
"eventID": {
"type": "string"
},
"id": {
"type": "string"
},
"issue": {
"type": "object",
"nullable": true
},
"name": {
"type": "string"
},
"user": {
"type": "object",
"nullable": true
}
}
}
},
"example": [
{
"comments": "It broke!",
"dateCreated": "2018-11-06T21:20:11.468Z",
"email": "jane@example.com",
"event": {
"eventID": "14bad9a2e3774046977a21440ddb39b2",
"id": null
},
"eventID": "14bad9a2e3774046977a21440ddb39b2",
"id": "1",
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment