Organizations
An organization lets a team own applications together, like a company on Twitch's developer console. Every member manages the same applications in the Console, each within their role. Nobody has to share a password or pass secrets around in chat.
An application belongs either to one person (a personal app, which is how every app starts) or to an organization. Once an app is in an organization, access comes only from membership. Whoever created it has no special access if they leave.
Roles
| What | Owner | Admin | Developer |
|---|---|---|---|
| See the organization's applications, edit their details and icon, change Public | Yes | Yes | Yes |
| Send test events, see usage | Yes | Yes | Yes |
| See, create and revoke secrets | Yes | Yes | No |
| Delete applications, ask Xive to review one | Yes | Yes | No |
| Create applications in the organization, or move a personal app into it | Yes | Yes | No |
| Move an application out to a member | Yes | No | No |
| Add and remove members, change their roles | Yes | Admins and developers only | No |
| Add, demote or remove owners | Yes | No | No |
| Rename or delete the organization | Yes | No | No |
A developer never sees a secret, not even its prefix. Give the developer role to people who work on your app's code but shouldn't hold its credentials.
Members
- Create an organization from the Console. You become its first owner.
- Owners and admins add members by their Xive username. They're added straight away; there's no invitation to accept.
- Anyone can leave an organization from its page. Leaving removes your access to its applications at once.
- An organization always has at least one owner. The last owner can't leave or be demoted. To hand an organization over, make someone else an owner first, then leave.
- An organization can have up to 50 members, and you can belong to up to 20 organizations.
- An organization can only be deleted once it has no applications. Move them out or delete them first.
Moving applications
Moving an application doesn't change its client ID, its secrets, or the channels it's on. Your bot keeps running.
- Into an organization. On the app's page, use Move to organization. You must own the app personally and be an owner or admin of the organization. Its owners and admins can then see its secrets.
- Out of an organization. An organization owner can make the app one member's personal application, their own or another member's. Everyone else loses access.
- To move an app from one organization to another, move it out to a member first, then into the other organization.
- The 25-application limit counts where the app lands: 25 personal apps per person, and 25 apps per organization.
Developer terms
Each member agrees to the Xive Developer Agreement and Developer Policy for themselves. Joining an organization doesn't agree for you, and the owner's agreement doesn't cover anyone else. You're asked to agree the first time you create an application or a secret, whatever organization it's for. When an application moves out of an organization, the member who receives it must have agreed to the current terms.
Console API
The Console uses these routes with your Xive sign-in, not an application secret. A route for an organization you don't belong to answers 404. When your role can't do something it answers 403 with "code": "role_forbidden".
| Route | What it does |
|---|---|
GET /api/developer/orgs | Your organizations, with your role in each. |
POST /api/developer/orgs | {"name"} (2 to 60 characters). Creates one with you as its owner. |
GET /api/developer/orgs/{id} | The organization, its members and its applications. |
PATCH /api/developer/orgs/{id} | {"name"}. Owners only. |
DELETE /api/developer/orgs/{id} | Owners only, once it has no applications. |
GET /api/developer/orgs/{id}/members | Every member and their role. |
POST /api/developer/orgs/{id}/members | {"username", "role"}, where role is owner, admin or developer (the default). |
PATCH /api/developer/orgs/{id}/members/{profileId} | {"role"}. |
DELETE /api/developer/orgs/{id}/members/{profileId} | Removes a member. With your own id, it means you leave. |
POST /api/developer/apps/{id}/transfer | {"org_id": "…"} moves a personal app in. {"org_id": null, "owner_id": "…"} moves an org app out to a member (you, if owner_id is left out). |
In GET /api/developer/apps, each application carries the organization it belongs to, your role, and what that role lets you do:
{
"id": "11111111-2222-4333-8444-555555555555",
"name": "HypeBot",
"org": { "id": "22222222-3333-4444-8555-666666666666", "name": "Night Owl Studios" },
"role": "developer",
"permissions": ["app.view", "app.edit", "app.test_events", "app.usage"],
"secrets": []
}
A personal app has "org": null and "role": "owner".