{
  "openapi": "3.0.1",
  "info": {
    "title": "Changelog & Release Notes Monitor: GitHub, CHANGELOG.md, RSS",
    "description": "Monitor and track new versions from GitHub Releases, CHANGELOG.md files, RSS/Atom feeds and release-notes pages. One item per version: semver, date, Markdown notes, URL, breaking-change and security flags, CVE ids. Tick one box and scheduled runs report only what is new. Pay per source. MCP-ready.",
    "version": "0.1",
    "x-build-id": "EajPsnGndeuFtDmXB"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lathesmith~changelog-release-notes-watcher/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lathesmith-changelog-release-notes-watcher",
        "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/lathesmith~changelog-release-notes-watcher/runs": {
      "post": {
        "operationId": "runs-sync-lathesmith-changelog-release-notes-watcher",
        "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/lathesmith~changelog-release-notes-watcher/run-sync": {
      "post": {
        "operationId": "run-sync-lathesmith-changelog-release-notes-watcher",
        "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": [
          "sources"
        ],
        "properties": {
          "sources": {
            "title": "Sources",
            "minItems": 1,
            "maxItems": 200,
            "type": "array",
            "description": "One per line, up to 200. Accepted: a GitHub repository as `owner/repo` or its URL (read through the GitHub API; releases, or tags when a project has no releases); a changelog file URL such as `https://github.com/owner/repo/blob/main/CHANGELOG.md` or a raw URL (only that file is downloaded; with a GitHub token it is read through the GitHub API); an RSS or Atom feed URL; an HTML release-notes page URL. Each source that is checked successfully is billed once per run (see the Pricing tab); sources that fail are not.",
            "items": {
              "type": "string"
            }
          },
          "onlyNewVersions": {
            "title": "Only report versions that are new since the last run (for scheduled runs)",
            "type": "boolean",
            "description": "Off (the default): every run reports the latest versions of each source. On: the Actor remembers which versions it has reported, in a key-value store named `lathesmith-changelog-watcher-state` in your own Apify account, and later runs report only versions that are new since then (the first run reports the latest versions as a starting point). Without a state name below, one is chosen automatically: one per saved task, or, for runs without a task, one per list of sources (editing the list then starts over). Memory under an automatic name is deleted during a later run that also uses an automatic name, once no run has used it for 180 days; names you set yourself are never deleted.",
            "default": false
          },
          "stateName": {
            "title": "State name (optional)",
            "pattern": "^$|^[A-Za-z0-9][A-Za-z0-9._-]{0,62}$",
            "type": "string",
            "description": "The name the Actor saves its memory of already-reported versions under, so that the next run with the same name reports only new versions (for example `my-dependencies`). It is a label, not a password. Use a different name for each watch list. Setting a name also turns on \"Only report versions that are new\", as in earlier versions of this Actor. Leave empty for an automatic name. 1 to 63 letters, digits, dots, hyphens and underscores, starting with a letter or digit. Formerly called `stateKey`, which is still accepted."
          },
          "firstRunItems": {
            "title": "Versions per source on a first look",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many of the latest versions to report for a source seen for the first time. While memory between runs is off (the box above unticked and no state name set), every run is a first time, so this many are reported on every run.",
            "default": 3
          },
          "maxNewItemsPerSource": {
            "title": "Max new versions per source",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Upper limit on new versions reported for one source in one run (the newest are kept). The OUTPUT summary says when more were found.",
            "default": 20
          },
          "resetState": {
            "title": "Start over",
            "type": "boolean",
            "description": "With \"Only report versions that are new\" on: forget what was remembered for these sources, and report their latest versions again as on a first run. Switch it off again afterwards: while it is on, every run starts over.",
            "default": false
          },
          "includePrereleases": {
            "title": "Include pre-releases",
            "type": "boolean",
            "description": "Report alpha, beta, release-candidate and other pre-release versions (each item has a `prerelease` flag either way). Turn off to report final releases only.",
            "default": true
          },
          "maxNotesChars": {
            "title": "Max characters of notes per version",
            "minimum": 0,
            "maximum": 500000,
            "type": "integer",
            "description": "Release notes longer than this are cut at a line boundary (the item says so in `notesTruncated`). The default fits any GitHub release (GitHub's own limit is 125,000 characters). 0 leaves the notes out.",
            "default": 125000
          },
          "githubToken": {
            "title": "GitHub token (optional)",
            "type": "string",
            "description": "What it gives: higher GitHub API limits. Without a token, GitHub allows 60 API requests per hour per IP address, shared with everyone else on that address, and GitHub repositories beyond the limit are skipped (not charged); with one, 5,000 per hour for you. With a token, changelog files hosted on GitHub are also read through the API (and downloaded directly when the API cannot give one, for example if the token is rejected). How to create one (free, about 2 minutes): on GitHub, open Settings → Developer settings → Personal access tokens → Fine-grained tokens → Generate new token (or go to github.com/settings/personal-access-tokens/new); enter a name and an expiry date; under Repository access choose \"Public repositories\" (read-only); add no permissions; click Generate token, copy it and paste it here. Stored encrypted; sent only to api.github.com, in the Authorization header."
          },
          "githubTagsFallback": {
            "title": "Use tags when a repository has no releases",
            "type": "boolean",
            "description": "Many projects publish git tags but no GitHub releases. When a repository has no releases, report its tags instead (one more API request; tags carry no notes or dates).",
            "default": true
          },
          "requestsPerMinutePerHost": {
            "title": "Requests per minute per host",
            "minimum": 6,
            "maximum": 120,
            "type": "integer",
            "description": "Rate limit for any one website (default 60, one request per second). A robots.txt Crawl-delay or a server's Retry-After slows it further. It cannot be raised above 120.",
            "default": 60
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}