{
  "openapi": "3.0.1",
  "info": {
    "title": "Cloud Outage Feed: AWS, Azure, GCP, M365 & Cloudflare Alerts",
    "description": "One feed of live incidents from AWS, Azure, Google Cloud, Cloudflare and your Microsoft 365 tenant, filtered to your regions and services, with Slack and Teams alerts when something changes.",
    "version": "0.1",
    "x-build-id": "28aGZ2bruBOndu8la"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/cobalt_relay~cloud-outage-feed/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-cobalt_relay-cloud-outage-feed",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/cobalt_relay~cloud-outage-feed/runs": {
      "post": {
        "operationId": "runs-sync-cobalt_relay-cloud-outage-feed",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/cobalt_relay~cloud-outage-feed/run-sync": {
      "post": {
        "operationId": "run-sync-cobalt_relay-cloud-outage-feed",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "providers": {
            "title": "Public status sources",
            "type": "array",
            "description": "Which public status feeds to check.",
            "items": {
              "type": "string",
              "enum": [
                "aws",
                "azure",
                "gcp",
                "cloudflare"
              ],
              "enumTitles": [
                "AWS Health Dashboard",
                "Azure status (broad incidents only)",
                "Google Cloud Service Health",
                "Cloudflare status"
              ]
            },
            "default": [
              "aws",
              "azure",
              "gcp",
              "cloudflare"
            ]
          },
          "regions": {
            "title": "Regions / locations to watch",
            "type": "array",
            "description": "Optional. Region codes or place names, matched loosely, e.g. ca-central-1, canadacentral, northamerica-northeast, Toronto, us-east. Leave empty to watch everywhere.",
            "items": {
              "type": "string"
            }
          },
          "includeGlobal": {
            "title": "Include global incidents",
            "type": "boolean",
            "description": "Keep incidents that affect all regions (or don't name one) even when a region filter is set.",
            "default": true
          },
          "services": {
            "title": "Services to watch",
            "type": "array",
            "description": "Optional. Service name keywords, e.g. EC2, S3, Compute Engine, Exchange Online, Teams. Leave empty for all services.",
            "items": {
              "type": "string"
            }
          },
          "minSeverity": {
            "title": "Minimum severity",
            "enum": [
              "info",
              "degraded",
              "outage"
            ],
            "type": "string",
            "description": "Skip anything below this level.",
            "default": "info"
          },
          "lookbackHours": {
            "title": "Look back (hours)",
            "minimum": 1,
            "maximum": 720,
            "type": "integer",
            "description": "Include incidents updated or resolved within this many hours. Ongoing incidents are always included.",
            "default": 24
          },
          "includeResolved": {
            "title": "Include resolved incidents",
            "type": "boolean",
            "description": "Report incidents resolved within the look-back window (useful for 'all clear' alerts).",
            "default": true
          },
          "onlyChanges": {
            "title": "Only report changes",
            "type": "boolean",
            "description": "For scheduled runs: output only incidents that are new, updated or resolved since the previous run of this task. Turn off to get the full current list every time.",
            "default": true
          },
          "slackWebhookUrl": {
            "title": "Slack incoming webhook URL",
            "type": "string",
            "description": "Optional. Posts changed incidents to a Slack channel."
          },
          "teamsWebhookUrl": {
            "title": "Microsoft Teams workflow webhook URL",
            "type": "string",
            "description": "Optional. URL from a Teams 'Post to a channel when a webhook request is received' workflow."
          },
          "webhookUrl": {
            "title": "Generic webhook URL",
            "type": "string",
            "description": "Optional. Receives a JSON POST {\"incidents\": [...]} with the changed incidents."
          },
          "alertOnFirstRun": {
            "title": "Alert on first run",
            "type": "boolean",
            "description": "By default the first run of a new schedule only records what's already ongoing, so your channel isn't flooded. Turn on to alert on everything immediately.",
            "default": false
          },
          "m365TenantId": {
            "title": "Microsoft 365 tenant ID",
            "type": "string",
            "description": "Optional. Adds your own tenant's Microsoft 365 incidents and advisories (from Microsoft Graph). Needs an Entra ID app with the ServiceHealth.Read.All application permission."
          },
          "m365ClientId": {
            "title": "App (client) ID",
            "type": "string",
            "description": "Application (client) ID of the Entra ID app registration."
          },
          "m365ClientSecret": {
            "title": "Client secret",
            "type": "string",
            "description": "Client secret value of the app registration. Stored encrypted."
          },
          "statuspageUrls": {
            "title": "Other Statuspage-based status pages",
            "type": "array",
            "description": "Optional. Add any status page built on Atlassian Statuspage, e.g. https://www.githubstatus.com, https://status.atlassian.com.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}