Skip to content
GigadriveDocs

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 slugProductAccess
networkGigadrive NetworkGranted to every organization by default
officeGigadrive OfficeRequires 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

  1. Read the product definition, which gives the access mode and the baseline policy.
  2. If an explicit entitlement exists for the organization, its status decides: ACTIVE grants access, SUSPENDED and REVOKED deny it. It wins over the baseline in both directions.
  3. With no explicit entitlement, fall back to the product's default policy.
  4. For an organization-scoped product, the user must also be a member of the organization.
  5. 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

FieldNotes
productSlug, display name, access mode, default policy, and the plans available
hasAccessThe resolved answer for the organization
resolutionSourceexplicit when an override decided it, default otherwise
explicitEntitlementThe override, with status ACTIVE, SUSPENDED, or REVOKED
subscriptionThe selected plan and its status, ACTIVE or CANCELED

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.