Plugin manifest¶
Installation and review validate this contract. Download the full example and try the playground validator.
{
"key": "com.example.minutes",
"name": "Meeting minutes",
"version": "1.0.0",
"description": "Review decisions and action items.",
"uiUrl": "https://plugins.example.com/minutes",
"configurationUrl": "https://plugins.example.com/settings",
"meetingTabs": [
{
"id": "minutes",
"title": "Meeting minutes",
"url": "https://plugins.example.com/minutes"
}
],
"sidebarActions": [
{
"id": "prepare",
"title": "Prepare minutes",
"url": "https://plugins.example.com/prepare"
}
],
"permissions": [
"meeting:read",
"transcript:read",
"notes:write",
"tags:read",
"identity:read",
"settings:read",
"settings:write"
]
}
| Field | Rule |
|---|---|
key |
3–80 characters; starts with a lowercase letter; lowercase letters, digits, dots and hyphens |
name |
1–80 characters |
version |
Three numeric groups, e.g. 1.0.0 |
description |
Up to 1000 characters |
uiUrl |
Public HTTPS, no credentials or custom port |
configurationUrl |
Optional; same origin as uiUrl |
meetingTabs |
Up to 3 tabs with id, title, url |
sidebarActions |
Up to 3 actions with id, title, url |
permissions |
1–7 permissions |
Surface IDs are unique across tabs and actions, at most 40 characters, matching [a-z][a-z0-9-]*. Titles have 1–40 characters. Every URL is at most 2048 characters and shares the plugin's public origin. Unknown fields are rejected.
Available permissions¶
meeting:read, transcript:read, tags:read, notes:write, identity:read, settings:read, settings:write.
Request only what you need. session renews an SDK grant; it is not a manifest permission. The server rechecks authorization on every call. See the operation contracts.
Hosting the manifest¶
Serve GET /manifest.json under the base URL submitted in the dashboard. See the URL submission and endpoint contract for limits, revalidation and private/public audiences.