{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "WebhookLimits",
"description": "What this plan allows and what is in use, in one call. Every number is read from the same place the caps are enforced from, so a refusal and this report cannot disagree.",
"type": "object",
"required": [
"deliveries_per_day",
"endpoints",
"included",
"paused_subscriptions",
"plan",
"preview_included",
"subscriptions",
"watched_addresses"
],
"properties": {
"deliveries_per_day": {
"description": "Today's delivery budget. The budget resets on its own; a paused rule does not.",
"type": "object",
"required": [
"limit",
"remaining",
"resets_at",
"unlimited",
"used"
],
"properties": {
"limit": {
"description": "Deliveries a day the plan allows. Null when the plan has no ceiling.",
"type": "integer",
"format": "int64",
"nullable": true,
"example": 50000
},
"remaining": {
"description": "Deliveries left today, never below zero. Null when the plan has no ceiling.",
"type": "integer",
"format": "int64",
"nullable": true,
"example": 49588
},
"resets_at": {
"description": "When the budget resets.",
"type": "string",
"format": "date-time"
},
"resets_at_note": {
"description": "Present only while something is paused, to say that the reset time is the budget's and not the pause's.",
"type": "string"
},
"unlimited": {
"description": "True when the plan has no daily ceiling.",
"type": "boolean",
"example": false
},
"used": {
"description": "Deliveries today.",
"type": "integer",
"format": "int64",
"example": 412
}
}
},
"endpoints": {
"description": "One cap: what the plan allows, what is in use, and what is left.",
"type": "object",
"required": [
"limit",
"remaining",
"used"
],
"properties": {
"limit": {
"description": "What the plan allows. Zero on a plan without webhook delivery.",
"type": "integer",
"format": "int64",
"example": 4
},
"remaining": {
"description": "What is left, never below zero. A plan change can leave an account legitimately over a cap.",
"type": "integer",
"format": "int64",
"example": 3
},
"used": {
"description": "In use now.",
"type": "integer",
"format": "int64",
"example": 1
}
}
},
"included": {
"description": "Whether the plan has webhook delivery at all. False on Free, where every cap is zero.",
"type": "boolean",
"example": true
},
"notice": {
"description": "Why the caps are zero, and what to do about it. Present only on a plan without webhook delivery.",
"type": "string"
},
"paused_subscriptions": {
"description": "Paused rules on the account. Always present, so zero paused needs no special case.",
"type": "object",
"required": [
"count",
"reasons"
],
"properties": {
"count": {
"description": "How many rules are paused and delivering nothing.",
"type": "integer",
"format": "int64",
"example": 0
},
"earliest_paused_at": {
"description": "Start of the oldest pause still in force.",
"type": "string",
"format": "date-time",
"nullable": true
},
"message": {
"description": "What is paused and what clears it, in plain words. Present only when something is paused.",
"type": "string"
},
"reasons": {
"description": "Distinct causes across the paused rules: the account reached its daily delivery limit, or the plan does not include webhook delivery.",
"type": "array",
"items": {
"type": "string"
},
"example": []
}
}
},
"plan": {
"description": "The plan webhook decisions are priced at.",
"type": "string",
"example": "pro"
},
"plan_label": {
"description": "The plan's display name, or null for a plan this build cannot name.",
"type": "string",
"nullable": true,
"example": "Pro"
},
"preview_included": {
"description": "Whether the estimate and the dry-run are available. True on every plan, including Free.",
"type": "boolean",
"example": true
},
"subscriptions": {
"description": "One cap: what the plan allows, what is in use, and what is left.",
"type": "object",
"required": [
"limit",
"remaining",
"used"
],
"properties": {
"limit": {
"description": "What the plan allows. Zero on a plan without webhook delivery.",
"type": "integer",
"format": "int64",
"example": 4
},
"remaining": {
"description": "What is left, never below zero. A plan change can leave an account legitimately over a cap.",
"type": "integer",
"format": "int64",
"example": 3
},
"used": {
"description": "In use now.",
"type": "integer",
"format": "int64",
"example": 1
}
}
},
"watched_addresses": {
"description": "One cap: what the plan allows, what is in use, and what is left.",
"type": "object",
"required": [
"limit",
"remaining",
"used"
],
"properties": {
"limit": {
"description": "What the plan allows. Zero on a plan without webhook delivery.",
"type": "integer",
"format": "int64",
"example": 4
},
"remaining": {
"description": "What is left, never below zero. A plan change can leave an account legitimately over a cap.",
"type": "integer",
"format": "int64",
"example": 3
},
"used": {
"description": "In use now.",
"type": "integer",
"format": "int64",
"example": 1
}
}
}
}
}