{
  "openapi": "3.0.1",
  "info": {
    "title": "Public Feature Board and Roadmap Monitor",
    "description": "Find a company's public feature board (Canny, Featurebase, Frill, UserVoice, or a Productboard portal) from its domain and get its top requests with votes, status, and comments, plus the integrations customers ask for. Watch for new and changed requests on a schedule. Clay ready.",
    "version": "0.1",
    "x-build-id": "Jhm7wRBVJ3AY14xsG"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/mambalabs~public-feature-board-roadmap-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-mambalabs-public-feature-board-roadmap-monitor",
        "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/mambalabs~public-feature-board-roadmap-monitor/runs": {
      "post": {
        "operationId": "runs-sync-mambalabs-public-feature-board-roadmap-monitor",
        "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/mambalabs~public-feature-board-roadmap-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-mambalabs-public-feature-board-roadmap-monitor",
        "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": {
          "company_domain": {
            "title": "Company domain",
            "type": "string",
            "description": "The company website domain, for example clickup.com. The actor reads the homepage for a link to a feedback board or public roadmap, then checks the common board addresses."
          },
          "domains": {
            "title": "Company domains (batch)",
            "type": "array",
            "description": "Several company domains, one per line. Each gets its own board row. Up to 200 per run.",
            "items": {
              "type": "string"
            }
          },
          "board_urls": {
            "title": "Board URLs (optional)",
            "type": "array",
            "description": "Board addresses you already know, for example https://feedback.canny.io. With one domain and one board URL, the board is read as that company's board. A board URL on its own is read as a company of its own.",
            "items": {
              "type": "string"
            }
          },
          "company_name": {
            "title": "Company name (optional)",
            "type": "string",
            "description": "With one domain only: the company name as its board shows it. Used to confirm a board found by name."
          },
          "max_requests": {
            "title": "Max requests per company",
            "type": "string",
            "description": "Request rows returned per company, most votes first, up to 100. 0 returns only the board row.",
            "default": "20"
          },
          "max_boards": {
            "title": "Max boards read per company",
            "type": "string",
            "description": "Boards or forums read per company, largest first, up to 5. Canny shows its top 10 and newest 10 requests on each board page.",
            "default": "2"
          },
          "integration_requests_only": {
            "title": "Integration requests only",
            "type": "string",
            "description": "true to return only requests that ask for an integration. The board row still counts every request read.",
            "default": "false"
          },
          "probe_platform_slugs": {
            "title": "Check board platforms by name",
            "type": "string",
            "description": "true (default) checks <name>.canny.io, <name>.featurebase.app, <name>.frill.co, and <name>.uservoice.com when the site links no board. A board found this way is used only when it links back to the company domain.",
            "default": "true"
          },
          "only_new": {
            "title": "Only new or changed requests",
            "type": "string",
            "description": "true to return only requests that are new, changed status, or gained at least Min vote increase votes since the last run with the same state key. The board row is returned on every run.",
            "default": "false"
          },
          "min_vote_increase": {
            "title": "Min vote increase",
            "type": "string",
            "description": "With only new on: the vote gain that makes a request count as changed.",
            "default": "5"
          },
          "state_key": {
            "title": "State key",
            "type": "string",
            "description": "Names the saved request list, so separate schedules compare separately."
          },
          "max_charge_usd": {
            "title": "Maximum charge (USD)",
            "type": "string",
            "description": "Optional. The run stops before it would charge more than this."
          },
          "proxy_mode": {
            "title": "Proxy mode",
            "enum": [
              "auto",
              "direct",
              "residential"
            ],
            "type": "string",
            "description": "auto (default) sends requests directly and moves a host to the Apify proxy default pool only when that host refuses. A reliability setting: proxy use adds nothing to your price.",
            "default": "auto"
          },
          "source_tag": {
            "title": "Source tag",
            "type": "string",
            "description": "Internal attribution tag. Leave empty."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}