Product access
How Gigadrive decides whether an organization can use a product, and how to check the answer from the API.
Product access is the runtime answer to "can this organization use this product right now". Read it when an API call comes back denied and you need to know whether the cause is the organization, the plan, or the person.
| Product slug | Product | Access |
|---|---|---|
network | Gigadrive Network | Granted to every organization by default |
office | Gigadrive Office | Requires an explicit entitlement |
The catalogue is fixed by the platform rather than something an organization adds to, so the preceding table is the whole list and it changes only with a release.
How access resolves
- Read the product definition, which gives the access mode and the baseline policy.
- If an explicit entitlement exists for the organization, its status decides:
ACTIVEgrants access,SUSPENDEDandREVOKEDdeny it. It wins over the baseline in both directions. - With no explicit entitlement, fall back to the product's default policy.
- For an organization-scoped product, the user must also be a member of the organization.
- On a seat-licensed plan, the user must also hold an assigned seat.
Clearing an entitlement override restores the default policy rather than leaving the organization in limbo. That is why a granted-by-default product like Gigadrive Network needs no explicit entitlement at all for the common case.
The console, the API, and a running deployment all resolve the same answer, so a change to an organization's access applies everywhere at once.
Checking access
import { GigadriveClient } from '@gigadrive/sdk';
const client = new GigadriveClient({ bearerToken: process.env.GIGADRIVE_ACCESS_TOKEN });
const organizationId = '0197b2f0-8b6d-7c2a-9f4e-111111111111';
const { hasAccess } = await client.organizations.products.checkEntitlement(organizationId, 'network');
if (!hasAccess) {
const access = await client.organizations.products.get(organizationId, 'network');
console.log(access.resolutionSource, access.explicitEntitlement?.status, access.subscription?.plan);
}All three reads take the platform:organizations:read scope, and they follow the same actor rule as the rest of organization administration: a member's user token or the organization's own token, never an application, deployment, or function token.
What the summary contains
| Field | Notes |
|---|---|
product | Slug, display name, access mode, default policy, and the plans available |
hasAccess | The resolved answer for the organization |
resolutionSource | explicit when an override decided it, default otherwise |
explicitEntitlement | The override, with status ACTIVE, SUSPENDED, or REVOKED |
subscription | The selected plan and its status, ACTIVE or CANCELED |
Reading only
The public API never changes product access. Plans are activated and changed in Gigadrive surfaces, which then feed the entitlement state this endpoint reports.
Seats
Pro and Enterprise are licensed per seat. The subscription records how many seats were purchased, and each one is handed to a member. Assignments can never exceed the purchased count, even when two admins assign the last seat at the same moment.
Four rules govern assignment, and each has a message you will see if you break it:
- A plan without seat licensing has nothing to assign.
- A seat can only go to an organization member.
- Assigning past the purchased count requires buying more seats or unassigning someone.
- Reducing the seat count below the number currently assigned requires unassigning first.
Unassigning a seat removes that person's access to the product immediately. Their membership and their role are untouched, so they keep the organization administration surfaces described in Roles and permissions and lose the product itself.
You buy between 1 and 1000 seats when you choose the plan, and you hand them out in the Gigadrive organization administration app.
