{
  "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": "AdpuwOVZtGFb1AC0f"
  },
  "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.",
            "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 key 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 key is deleted during a later run that also uses an automatic key, once no run has used it for 180 days; keys you set yourself are never deleted.",
            "default": false
          },
          "stateKey": {
            "title": "State key (optional)",
            "pattern": "^$|^[A-Za-z0-9][A-Za-z0-9._-]{0,62}$",
            "type": "string",
            "description": "Name for the memory of a watch list, if you want to choose it (for example `my-dependencies`); use a different key for each watch list. Setting a key also turns on \"Only report versions that are new\", as in earlier versions of this Actor. Leave empty for the automatic key. Letters, digits, dots, hyphens and underscores."
          },
          "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 key 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}