{
  "openapi": "3.0.1",
  "info": {
    "title": "Plugin & Extension Marketplace Radar",
    "description": "Track WordPress.org plugins, VS Code extensions, and Atlassian Marketplace apps. Each run snapshots public listings, diffs the last good snapshot, and emits rank, rating, review, install, staleness, and version signals. Unofficial.",
    "version": "0.1",
    "x-build-id": "R99J66l0l8f2MK2Gj"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/plusonets~plugin-marketplace-radar/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-plusonets-plugin-marketplace-radar",
        "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/plusonets~plugin-marketplace-radar/runs": {
      "post": {
        "operationId": "runs-sync-plusonets-plugin-marketplace-radar",
        "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/plusonets~plugin-marketplace-radar/run-sync": {
      "post": {
        "operationId": "run-sync-plusonets-plugin-marketplace-radar",
        "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": {
          "marketplaces": {
            "title": "Marketplaces",
            "type": "array",
            "description": "Official marketplace APIs to query. wordpress is the WordPress.org plugin directory, vscode is the Visual Studio Code Marketplace, and atlassian is the Atlassian Marketplace REST API.",
            "items": {
              "type": "string",
              "enum": [
                "wordpress",
                "vscode",
                "atlassian"
              ],
              "enumTitles": [
                "WordPress.org plugins",
                "VS Code Marketplace",
                "Atlassian Marketplace"
              ]
            },
            "default": [
              "wordpress",
              "vscode"
            ]
          },
          "wordpressCategory": {
            "title": "WordPress.org category",
            "type": "string",
            "description": "A browse preset (popular, new, updated, top-rated, featured) or a plugin tag such as seo. Prefix with search: to force a keyword search, for example search:backup.",
            "default": "seo"
          },
          "vscodeSearch": {
            "title": "VS Code Marketplace search",
            "type": "string",
            "description": "Search text sent to the public VS Code Marketplace extension query API. Results are ordered by install count.",
            "default": "markdown"
          },
          "atlassianQuery": {
            "title": "Atlassian Marketplace search",
            "type": "string",
            "description": "Text query for the Atlassian Marketplace REST API, for example time tracking. Prefix with category: to filter by a category name.",
            "default": "time tracking"
          },
          "watchlist": {
            "title": "Watchlist",
            "type": "array",
            "description": "Listing slugs or IDs that are always fetched, even if they fall outside the search page. Use a marketplace prefix when more than one marketplace is selected: wordpress:akismet, vscode:yzhang.markdown-all-in-one, atlassian:is.origo.jira.tempo-plugin.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "signalFilter": {
            "title": "Signal filter",
            "enum": [
              "all",
              "rank-risers",
              "rating-decliners",
              "review-velocity",
              "install-velocity",
              "stale-updates",
              "new-entrants",
              "changelog-diffs"
            ],
            "type": "string",
            "description": "Which change signals to emit and bill. all keeps every signal type. Other values keep the matching type only. Metrics are still stored either way.",
            "default": "all"
          },
          "windowDays": {
            "title": "Comparison window (days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Rank, rating, review, and install deltas are measured against the oldest successful snapshot still inside this window. New-entrant detection on a first run uses the publish date against this same window.",
            "default": 7
          },
          "staleMonths": {
            "title": "Stale after (months)",
            "minimum": 1,
            "maximum": 120,
            "type": "integer",
            "description": "A listing whose latest public release is older than this many months is marked stale. About 30.44 days are counted per month.",
            "default": 12
          },
          "maxItemsPerMarketplace": {
            "title": "Max listings per marketplace",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Maximum listings fetched from each marketplace search this run, not counting the watchlist. The default stays small so a scheduled run finishes quickly.",
            "default": 15
          },
          "alertOnlyOnChange": {
            "title": "Alert only on change",
            "type": "boolean",
            "description": "When true, listing rows are written only when a new signal is detected. The digest row is always written. The first run for a marketplace is a baseline and still returns current-state rows.",
            "default": false
          },
          "emitWeeklyDigest": {
            "title": "Charge the weekly digest",
            "type": "boolean",
            "description": "When true, the run charges one weekly-digest event for the summary row. Leave false for cheap scheduled checks. The summary row is written either way and is not charged unless this is true.",
            "default": false
          },
          "snapshotName": {
            "title": "Snapshot store name",
            "type": "string",
            "description": "Named key-value store that keeps successful snapshots and signal fingerprints. Use separate names for separate watches. A failed or blocked run does not replace the last good snapshot.",
            "default": "plugin-marketplace-radar"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}