rumoro-dev · Schema

Alert

SocialListeningAIAPIMonitoringAnalytics

Properties

Name Type Description
id string The alert's id (feed_...).
name string
enabled boolean
mode string instant sends each matching mention as it arrives. hourly sends a digest of the previous full UTC hour at five past the hour, so the hour's last mentions are scored. It skips hours with no mention at
filter object
schedule objectnull Null for instant and hourly alerts, which have no schedule.
event string The event name sent in webhook payloads. Unless you set one, it is the default for the mode.
channels array The channels the alert sends to.
stats object Counted from this workspace's deliveries.
createdAt string UTC time in ISO 8601.
View JSON Schema on GitHub

JSON Schema

rumoro-dev-alert-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/rumoro-dev/json-schema/rumoro-dev-alert-schema.json",
  "title": "Alert",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/rumoro-dev-openapi.json#/components/schemas/Alert",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The alert's id (feed_...)."
    },
    "name": {
      "type": "string"
    },
    "enabled": {
      "type": "boolean"
    },
    "mode": {
      "type": "string",
      "enum": [
        "instant",
        "hourly",
        "daily",
        "weekly"
      ],
      "description": "instant sends each matching mention as it arrives. hourly sends a digest of the previous full UTC hour at five past the hour, so the hour's last mentions are scored. It skips hours with no mention at or above the rule's relevance minimum, and works with Slack, Telegram and webhook channels only. daily sends one digest at the scheduled local time. weekly sends one digest a week on schedule.weekday."
    },
    "filter": {
      "type": "object",
      "properties": {
        "keywordIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Limits the rule to these keywords."
        },
        "groupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Limits the rule to keywords in these groups (grp_...), for example one rule for each client."
        },
        "platforms": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "bluesky",
              "hackernews",
              "github",
              "stackoverflow",
              "devto",
              "reddit",
              "x",
              "youtube",
              "news",
              "linkedin",
              "tiktok",
              "instagram",
              "appstore",
              "googleplay",
              "trustpilot",
              "googlemaps",
              "rss"
            ],
            "description": "The platform. Review platforms are appstore, googleplay, trustpilot and googlemaps (a place's Google reviews)."
          },
          "description": "Limits the rule to posts from these platforms."
        },
        "minRelevance": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "The lowest relevance score the rule sends. Without it, only relevant mentions are sent, meaning a score of 40 or more. A lower value, down to 0, also sends matches the classifier rated as noise. A higher value sends fewer. Email channels always use 40, whatever the rule says. Mentions without a score are never sent."
        },
        "minConfidence": {
          "type": "number",
          "minimum": 0,
          "maximum": 1,
          "description": "Sends only mentions whose classifier confidence is this value or higher, from 0 to 1. Mentions without a confidence are left out."
        },
        "sentiments": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "positive",
              "neutral",
              "negative"
            ],
            "description": "The sentiment the classifier assigned."
          },
          "description": "Keeps mentions with these sentiments only."
        },
        "intents": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Sends only mentions with one or more of these intent or topic tags."
        },
        "excludeAuthors": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "maxItems": 200,
          "description": "Leaves out these authors, given as display names, handles or profile links."
        },
        "minFollowers": {
          "type": "integer",
          "minimum": 0,
          "description": "Sends only posts by authors with this many followers or more. Unknown counts are left out."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40
          },
          "maxItems": 20,
          "description": "Keeps authors your workspace gave one of these tags."
        },
        "linkHosts": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "maxItems": 20,
          "description": "Sends only posts that link to one of these hosts or its subdomains, so slack.com also matches api.slack.com. Posts without links are left out."
        },
        "languages": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^[a-z]{2}$"
          },
          "maxItems": 20,
          "description": "Sends only posts in these languages, as ISO 639-1 codes such as en, es or de. Posts with an unknown language are left out."
        },
        "automated": {
          "type": "boolean",
          "description": "true sends only posts that look machine-made, such as bot or template posts. false sends only the others. Leave it out to send both."
        },
        "ratings": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5
          },
          "maxItems": 5,
          "description": "Sends only reviews with one of these star ratings, from 1 to 5. Use [1, 2] for the unhappy ones. Posts that are not reviews are left out."
        },
        "notRatings": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5
          },
          "maxItems": 5,
          "description": "Star ratings (1 to 5) to skip, such as [5]. Other posts still go out."
        },
        "minLikes": {
          "type": "integer",
          "minimum": 0,
          "description": "Keeps posts with this many likes (upvotes, reactions) or more, counted when the post was collected. Posts without a like count are left out."
        },
        "minReposts": {
          "type": "integer",
          "minimum": 0,
          "description": "Keeps posts with this many reposts (shares, retweets) or more, counted when the post was collected. Posts without a repost count are left out."
        },
        "minReplies": {
          "type": "integer",
          "minimum": 0,
          "description": "Keeps posts with this many replies (comments) or more, counted when the post was collected. Posts without a reply count are left out."
        },
        "minQuotes": {
          "type": "integer",
          "minimum": 0,
          "description": "Keeps posts with this many quotes or more, counted when the post was collected. Posts without a quote count are left out."
        },
        "minViews": {
          "type": "integer",
          "minimum": 0,
          "description": "Keeps posts with this many views (plays) or more, counted when the post was collected. Posts without a view count are left out."
        },
        "minBookmarks": {
          "type": "integer",
          "minimum": 0,
          "description": "Keeps posts with this many bookmarks (saves) or more, counted when the post was collected. Posts without a bookmark count are left out."
        },
        "anyOf": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/FilterGroup"
          },
          "minItems": 1,
          "maxItems": 10,
          "description": "Up to 10 OR'd groups (at least 1). A mention must meet every condition of some group, plus all other conditions, so the filter reads (other conditions) AND (group 1 OR group 2 ...). Groups take view filter fields (platforms, sentiments, intents, keywordKinds, the not lists and so on) but no nested anyOf."
        }
      }
    },
    "schedule": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "hour": {
          "type": "integer",
          "minimum": 0,
          "maximum": 23
        },
        "minute": {
          "type": "integer",
          "minimum": 0,
          "maximum": 59,
          "default": 0
        },
        "timezone": {
          "type": "string",
          "minLength": 1,
          "maxLength": 64
        },
        "skipEmpty": {
          "type": "boolean",
          "default": true
        },
        "weekday": {
          "type": "integer",
          "minimum": 0,
          "maximum": 6,
          "description": "The day a weekly rule sends, from 0 for Sunday to 6 for Saturday. Required when mode is weekly and ignored for daily rules."
        }
      },
      "required": [
        "hour",
        "timezone"
      ],
      "description": "Null for instant and hourly alerts, which have no schedule."
    },
    "event": {
      "type": "string",
      "description": "The event name sent in webhook payloads. Unless you set one, it is the default for the mode."
    },
    "channels": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "enum": [
              "slack",
              "email",
              "webhook",
              "telegram"
            ]
          },
          "label": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "kind",
          "label"
        ]
      },
      "description": "The channels the alert sends to."
    },
    "stats": {
      "type": "object",
      "properties": {
        "sentLast7d": {
          "type": "integer",
          "minimum": 0,
          "description": "Deliveries over the past 7 days, all channels together."
        },
        "lastSentAt": {
          "type": [
            "string",
            "null"
          ],
          "description": "UTC time in ISO 8601."
        },
        "nextRunAt": {
          "type": [
            "string",
            "null"
          ],
          "description": "When the next digest is due, for hourly, daily and weekly alerts. Null when the alert is disabled or instant."
        }
      },
      "required": [
        "sentLast7d",
        "lastSentAt",
        "nextRunAt"
      ],
      "description": "Counted from this workspace's deliveries."
    },
    "createdAt": {
      "type": "string",
      "description": "UTC time in ISO 8601."
    }
  },
  "required": [
    "id",
    "name",
    "enabled",
    "mode",
    "filter",
    "schedule",
    "event",
    "channels",
    "stats",
    "createdAt"
  ],
  "$defs": {
    "FilterGroup": {
      "type": "object",
      "properties": {
        "q": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200,
          "description": "Searches post text and author names."
        },
        "keywordIds": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1
          },
          "maxItems": 50,
          "description": "Keeps matches of these keywords only."
        },
        "notKeywordIds": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1
          },
          "maxItems": 50,
          "description": "Keyword ids to exclude."
        },
        "keywordKinds": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "brand",
              "competitor",
              "topic"
            ]
          },
          "maxItems": 3,
          "description": "Keyword kinds to keep, out of brand, competitor and topic."
        },
        "groupIds": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1
          },
          "maxItems": 50,
          "description": "Limits to keywords from these groups (grp_...)."
        },
        "notGroupIds": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1
          },
          "maxItems": 50,
          "description": "Hides matches from keywords that belong to these groups."
        },
        "platforms": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "bluesky",
              "hackernews",
              "github",
              "stackoverflow",
              "devto",
              "reddit",
              "x",
              "youtube",
              "news",
              "linkedin",
              "tiktok",
              "instagram",
              "appstore",
              "googleplay",
              "trustpilot",
              "googlemaps",
              "rss"
            ],
            "description": "The platform. Review platforms are appstore, googleplay, trustpilot and googlemaps (a place's Google reviews)."
          },
          "maxItems": 20,
          "description": "Keeps posts from these platforms only."
        },
        "notPlatforms": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "bluesky",
              "hackernews",
              "github",
              "stackoverflow",
              "devto",
              "reddit",
              "x",
              "youtube",
              "news",
              "linkedin",
              "tiktok",
              "instagram",
              "appstore",
              "googleplay",
              "trustpilot",
              "googlemaps",
              "rss"
            ],
            "description": "The platform. Review platforms are appstore, googleplay, trustpilot and googlemaps (a place's Google reviews)."
          },
          "maxItems": 20,
          "description": "Platforms to exclude."
        },
        "status": {
          "type": "string",
          "enum": [
            "open",
            "ignored",
            "done"
          ],
          "description": "Keeps mentions with this status only (open, ignored or done)."
        },
        "relevant": {
          "type": "boolean",
          "description": "Filter on the classifier's verdict. true keeps relevant mentions, false the rest."
        },
        "minRelevance": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "Minimum relevance score a mention needs."
        },
        "minConfidence": {
          "type": "number",
          "minimum": 0,
          "maximum": 1,
          "description": "Keeps mentions whose classifier confidence is this value or higher."
        },
        "sentiments": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "positive",
              "neutral",
              "negative"
            ],
            "description": "The sentiment the classifier assigned."
          },
          "maxItems": 3,
          "description": "Keeps mentions with these sentiments only."
        },
        "notSentiments": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "positive",
              "neutral",
              "negative"
            ],
            "description": "The sentiment the classifier assigned."
          },
          "maxItems": 3,
          "description": "Hides these sentiments. Unscored mentions stay."
        },
        "intents": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40
          },
          "maxItems": 20,
          "description": "Keeps mentions tagged with one of these intents or topics."
        },
        "notIntents": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40
          },
          "maxItems": 20,
          "description": "Hides mentions with these tags."
        },
        "automated": {
          "type": "boolean",
          "description": "true keeps posts that look machine-made. false keeps the others."
        },
        "languages": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^[a-z]{2}$"
          },
          "maxItems": 20,
          "description": "Keeps posts in these languages only, as ISO 639-1 codes."
        },
        "notLanguages": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^[a-z]{2}$"
          },
          "maxItems": 20,
          "description": "Leaves out posts in these languages. Posts with an unknown language are kept."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40
          },
          "maxItems": 20,
          "description": "Keeps authors your workspace gave one of these tags."
        },
        "notTags": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40
          },
          "maxItems": 20,
          "description": "Leaves out authors with one of these tags."
        },
        "linkHosts": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "maxItems": 20,
          "description": "Keeps posts that link to one of these hosts or its subdomains."
        },
        "notLinkHosts": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "maxItems": 20,
          "description": "Leaves out posts that link to these hosts."
        },
        "minFollowers": {
          "type": "integer",
          "minimum": 0,
          "description": "Keeps authors with this many followers or more. Unknown counts are left out."
        },
        "maxFollowers": {
          "type": "integer",
          "minimum": 0,
          "description": "Keeps authors with this many followers or fewer. Unknown counts are left out."
        },
        "isReply": {
          "type": "boolean",
          "description": "true keeps replies and comments. false keeps posts that are not replies."
        },
        "kind": {
          "type": "string",
          "enum": [
            "post",
            "comment",
            "repository"
          ],
          "description": "Only posts (post) or only comments (comment: replies, comments and answers). repository (GitHub repository events) is accepted and matches nothing, since Rumoro does not collect them. Omitted: all."
        },
        "excludeAuthors": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "maxItems": 200,
          "description": "Leaves out these authors, given as display names, handles or profile links."
        },
        "ratings": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5
          },
          "maxItems": 5,
          "description": "Keeps reviews with one of these star ratings. Posts that are not reviews are left out."
        },
        "notRatings": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5
          },
          "maxItems": 5,
          "description": "Hides reviews with these star ratings. Other posts are not affected."
        },
        "minLikes": {
          "type": "integer",
          "minimum": 0,
          "description": "Keeps posts with this many likes (upvotes, reactions) or more, counted when the post was collected. Posts without a like count are left out."
        },
        "minReposts": {
          "type": "integer",
          "minimum": 0,
          "description": "Keeps posts with this many reposts (shares, retweets) or more, counted when the post was collected. Posts without a repost count are left out."
        },
        "minReplies": {
          "type": "integer",
          "minimum": 0,
          "description": "Keeps posts with this many replies (comments) or more, counted when the post was collected. Posts without a reply count are left out."
        },
        "minQuotes": {
          "type": "integer",
          "minimum": 0,
          "description": "Keeps posts with this many quotes or more, counted when the post was collected. Posts without a quote count are left out."
        },
        "minViews": {
          "type": "integer",
          "minimum": 0,
          "description": "Keeps posts with this many views (plays) or more, counted when the post was collected. Posts without a view count are left out."
        },
        "minBookmarks": {
          "type": "integer",
          "minimum": 0,
          "description": "Keeps posts with this many bookmarks (saves) or more, counted when the post was collected. Posts without a bookmark count are left out."
        }
      },
      "additionalProperties": false,
      "description": "A set of conditions that must all be true. It uses the same fields as a view filter, except anyOf."
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/rumoro-dev-alert"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.