| Identity | What it represents | Important limits |
|---|---|---|
| Human customer account | A teacher, co-teacher, billing person or ordinary class member | API key/OAuth scopes and current class role both apply. OAuth additionally needs effective third-party-app policy. |
| School student app session | A school-managed student in the separate student pool | Used by the Classroom app's opted-in session routes. It cannot manage developer keys, OAuth consent, billing or the school roster. |
| Managed member token | A fine-grained key owned by one student, issued by the class | Acts as that student, not the teacher or class. The public issue schema rejects orgs:manage; 1–30 day expiry; only the organisation manages it. |
| Organisation user token | The class:<orgId> principal at user level | Student-tier standing for organisation administration; document/permission scopes and at most orgs:read. This does not cap its own class-document access at viewer. No speech or live-room identity. |
| Organisation admin token | The same class principal at admin level | May carry orgs:manage and teacher-tier standing. It does not inherit a human owner's identity; organisation-owner checks still compare the actual owner field. |
| Isolated app test token | An operator-created app: test principal | Can only verify /me and list /voices; it cannot access any classroom. |
/api/v1 wrapper accepts configured customer-pool session JWTs, API keys and Handwrite OAuth access tokens. It does not configure the student-pool JWT verifier. Do not copy a Classroom browser token into a public API request and expect it to authenticate. An authorised managed student key is a separate public-API credential; the student app uses session-aware routes.developerAccess policy and the creator's current standing. Class students never gain the Developer tab, even under everyone; billing does not gain it either. A teacher can create admin-level tokens. Co-teachers can create user-level tokens only when the policy permits managers. The current code caps token authority after role changes and refuses tokens whose creator loses access. These developer controls are source-verified; release/deployment is not established here.class: principal. Even a user-level org token can therefore create, edit, share or delete class-owned documents when its scopes, selected-document restrictions and effective policy permit; selected-document tokens cannot create new documents. The organisation listing calculates its access label from the token's role, so that label can differ from the individual-document ownership result. Do not apply the human student row below to an organisation service token.developerAccess: off when a complete stop is needed.| Action | Teacher | Co-teacher | Billing | Student |
|---|---|---|---|---|
| Read class | Yes | Yes | Yes | Yes |
| Rename class | Yes | No | No | No |
| Delete ordinary class | Owning teacher only | No | No | No |
| Read visible memberships | Full roster | Full roster | Full roster | Teachers, co-teachers and self |
| Read membership emails when stored | Yes | Yes | Yes | No |
| Manage memberships | Valid non-owner targets/roles | Student tier only | No | Self-leave only if allowed and credential has scope |
| Create class-owned documents | Yes | Yes | No | No |
| Baseline class-document access | Owner | Owner | Viewer | Viewer |
| Read class policies | Yes | Yes | Yes | Own effective policy only |
| Change class-wide policies | Yes | No | No | No |
| Change member overrides | Yes | Student targets only | No | No |
| Issue/revoke managed student tokens | Yes | No | Yes | No |
| List managed-token administration | Yes | Yes | Yes | No |
| Read billing | Yes | No | Yes | No |
| Read member usage | Yes | Yes | Yes | Own view |
| Read collaboration insights | Full | Full | No | Own share |
| Erase school student through Students | Yes | No | No | No |
developer role, although a school plan can include a developer feature. The class has one owner field; other teachers are admin tier but do not become the owner. The shared owner role value is a team ownership-transfer mechanism, not a class role.http.ts, console.ts, portal.ts, org-roles.ts, org-permissions.ts, managed-tokens.ts, policy-schemas.ts and developer.ts.