Developer access and publishing¶
Request developer access¶
Open Developer area, explain the purpose, data access and hosting of your plugin, then submit your application. Pending applications show your proposal and review status. Developer approval does not automatically publish any plugin.
Submit a plugin URL¶
After developer approval and feature release, choose Submit plugin for review. The submission page is separate from your submissions list.
- Host the plugin on public HTTPS. The manifest endpoint must not require authentication.
- Serve
GET /manifest.jsonunder the plugin base URL.https://plugins.example.com/notesresolves tohttps://plugins.example.com/notes/manifest.json; use the origin alone for a root deployment. - Enter the base URL without credentials, query parameters, fragments or a custom port.
- Select Validate manifest. Elo fetches it server-side, validates the manifest schema, and previews name, version, description and permissions. This does not create a submission.
- Choose Private for your own account or a team you own/administer; choose Public for eligible platform users. Private plugins also require review.
- Submit. Elo fetches and validates again; if the manifest changed, review a fresh preview before retrying. A validated snapshot, source URL and SHA-256 digest are stored for the reviewer. The backoffice does not execute the iframe during review.
- Follow
pending,approved,rejectedandsuspendedstates in your submissions.
Manifest endpoint contract¶
Return HTTP 200, Content-Type: application/json and valid UTF-8 JSON, with at most 32 KiB decoded response bytes. The 8-second timeout covers fetch and body reading. Redirects are rejected; provide the final base URL. The UI, configuration, tabs and actions must share the manifest's public HTTPS origin, separate from the Elo dashboard. Elo forwards no user cookies or OAuth/session credentials when fetching it. Changing the form URL invalidates its preview.
Dashboard requests and responses¶
These publication endpoints require an authenticated Elo session, approved developer and enabled feature. They do not accept an iframe SDK capability as a publication credential.
POST /api/developer/plugins/validate:
{ "pluginUrl": "https://plugins.example.com/notes" }
Response 200 includes pluginUrl, manifestUrl, manifest, and the actual 43-character base64url SHA-256 manifestHash computed by Elo.
POST /api/developer/plugins:
{
"pluginUrl": "https://plugins.example.com/notes",
"manifestHash": "ACTUAL_HASH_RETURNED_BY_VALIDATION",
"visibility": "internal"
}
visibility is internal or public. Optional teamId is allowed only for internal and requires team owner/admin access. Response 201:
{ "id": "SUBMISSION_UUID", "status": "pending", "message": "Plugin enviado para análise. A publicação depende de aprovação no backoffice." }
Errors: 400 invalid URL/JSON/schema/audience; 403 ineligible developer or team; 409 duplicate version or manifest_changed; 502 unreachable host; 504 timeout. Invalid submissions are not persisted. The legacy direct-manifest endpoint remains backward compatible; the dashboard exclusively uses URL fetch and revalidation.
Installation and updates¶
Users install an approved publication from My plugins → Marketplace, confirming permissions in a modal. Configuration opens in the plugin's own modal; meeting tabs/actions appear in meetings. Removal requires confirmation and revokes future operations.
Each version requires a separate review. Do not silently broaden permissions; suspension of the developer or publication can immediately disable access. Test pagination, expired grants, missing scopes, meeting changes, cancellation, network errors, keyboard navigation, languages and 390px screens. Never log sensitive meeting content or credentials.