{
  "openapi": "3.0.1",
  "info": {
    "title": "Status Page Monitor - StatusLedger",
    "description": "Status page monitor for vendor pages built on Statuspage, Instatus and status.io (not every vendor page): every incident with all its updates in a ledger that survives between runs, plus an optional monthly uptime and SLA-credit estimate. Plain HTTP, robots.txt respected.",
    "version": "1.0",
    "x-build-id": "teHKBSCQeVxpy9Hvw"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/leons0016~status-page-monitor-ledger/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-leons0016-status-page-monitor-ledger",
        "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/leons0016~status-page-monitor-ledger/runs": {
      "post": {
        "operationId": "runs-sync-leons0016-status-page-monitor-ledger",
        "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/leons0016~status-page-monitor-ledger/run-sync": {
      "post": {
        "operationId": "run-sync-leons0016-status-page-monitor-ledger",
        "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",
        "required": [
          "statusPages"
        ],
        "properties": {
          "statusPages": {
            "title": "Status pages",
            "type": "array",
            "description": "One address per line: the status page host (status.example.com), a full link, or statusio:<24-character page id> for a status.io page. Atlassian Statuspage, Instatus and status.io are supported. Example: www.githubstatus.com",
            "default": [
              "www.githubstatus.com",
              "www.cloudflarestatus.com",
              "discordstatus.com",
              "status.atlassian.com",
              "instat.us",
              "statusio:55957a99e800baa4470002da"
            ],
            "items": {
              "type": "string"
            }
          },
          "lookbackDays": {
            "title": "Look-back for new incidents (days)",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Incidents that started or changed within this many days are recorded; older ones are ignored unless already in the ledger. Raise it once for a first run that should back-fill a month (each new incident is a billed event). Example: 35",
            "default": 7
          },
          "includeComponentRows": {
            "title": "Rows for components that are not operational",
            "type": "boolean",
            "description": "Adds an uncharged row per component that is not operational or changed status since the last run. Components are kept apart from incidents.",
            "default": true
          },
          "slaReport": {
            "title": "Monthly SLA report",
            "enum": [
              "off",
              "auto",
              "previous-month",
              "month-to-date"
            ],
            "type": "string",
            "description": "Off builds no report. Previous month and Automatic deliver the last full calendar month once (a second run with the same status pages is not charged again). Month to date is billed on every run that uses it.",
            "default": "off"
          },
          "slaBasis": {
            "title": "What counts as downtime",
            "enum": [
              "major-outage",
              "partial-outage",
              "any-impact"
            ],
            "type": "string",
            "description": "Severity the vendor reported for an incident. Maintenance is never counted. Incidents without a severity are listed separately.",
            "default": "partial-outage"
          },
          "creditTiers": {
            "title": "SLA credit tiers",
            "type": "array",
            "description": "When uptime is below belowPercent the vendor owes creditPercent of the monthly fee (the deepest breached tier applies). Example: [{\"belowPercent\": 99.9, \"creditPercent\": 10}]",
            "default": [
              {
                "belowPercent": 99.9,
                "creditPercent": 10
              },
              {
                "belowPercent": 99,
                "creditPercent": 25
              },
              {
                "belowPercent": 95,
                "creditPercent": 50
              }
            ]
          },
          "vendorSettings": {
            "title": "Per vendor settings",
            "type": "object",
            "description": "Optional, keyed by status page host: name, monthlyFeeUsd (to estimate the credit in dollars) and creditTiers for that vendor. Example: {\"www.githubstatus.com\": {\"name\": \"GitHub\", \"monthlyFeeUsd\": 400}}",
            "default": {}
          },
          "ledgerName": {
            "title": "Ledger name",
            "maxLength": 32,
            "type": "string",
            "description": "Name of the ledger (a key-value store in your account that keeps the history between runs). Use a different name to keep a separate ledger, for example per client. Letters, digits and hyphens.",
            "default": "default"
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Optional https address that receives the run summary and the incidents of the run."
          },
          "slackWebhookUrl": {
            "title": "Slack incoming webhook",
            "type": "string",
            "description": "Optional. Slack gets up to 10 incident lines and a link to the run."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}