Skip to main content

Token Scopes

Access tokens in ChainIT APIs are scope-based — every token is limited to exactly the resources and operations you declare. This enforces the principle of least privilege: your application can only touch what it needs.

When requesting an access token, pass the precise scopes required. Tokens are issued only with the permissions allowed by those declared scopes.

Least Privilege Principle

Always request the minimum set of scopes your integration needs. Over-permissioned tokens increase your attack surface and may require additional consent steps.


Scope format

Every M2M scope follows a consistent three-part dot-notation:

Anatomy of a scope

product.feature.action

e.g. kyb.invite.read reads business invites · kyb.invite.write creates and manages them

product

The service area — e.g. kyb, kyc, file.

feature

The resource within that product — e.g. invite, report.

action

read to query · write to create, update & delete.


Available M2M scopes

Scopes are grouped by product, then by feature. Each feature lists the actions it exposes — read for querying and write for creating, updating, or deleting.

read query & retrieve only

write create, update & delete

KYB — Know Your Business

🏢

KYB

Business onboarding, verification, and compliance

7 scopes

The KYB (Know Your Business) scope grants access to business onboarding and verification — verification workflows, organization compliance data, verification status retrieval, and the full onboarding lifecycle. Required for platforms onboarding and managing business entities.

Invite
read
kyb.invite.read

List and retrieve pending and completed business invitations.

write
kyb.invite.write

Create, update, resend, and delete KYB business invites.

Onboarding
write
kyb.onboarding.write

Onboard new businesses through the KYB workflow.

Organization
read
kyb.organization.read

Read organization details, associated users, and business groups.

Verification
read
kyb.verification.read

Read business verification status and UBO task progress.

write
kyb.verification.write

Edit verification data and trigger reverification.

Report
read
kyb.report.read

Generate and read KYB compliance reports.

KYC — Know Your Customer

👤

KYC

Individual identity verification, invites, and reverification

7 scopes

The KYC (Know Your Customer) scope lets applications manage individual identity verification — sending verification requests, retrieving results, managing the verification lifecycle, and generating reports. Required for customer onboarding and compliance validation.

Invite
read
kyc.invite.read

Read KYC invites and associated invite documents.

write
kyc.invite.write

Create, resend, and delete KYC verification invites.

Customer
read
kyc.customer.read

Read customers and their verified identity information.

Configuration
read
kyc.configuration.read

Read KYC configuration settings for your organization.

Report
read
kyc.report.read

Read KYC verification reports.

Reverification
read
kyc.reverification.read

Read reverification types and active reverification requests.

write
kyc.reverification.write

Send and cancel KYC reverification requests.

Employee

👥

Employee

Employee records, invites, groups, and reverification

7 scopes

The Employee scope covers workforce identity management — reading employee records, sending and managing invites, viewing employee groups, generating verification reports, and handling reverification requests.

Record
read
employee.record.read

Search, list, and read employee records.

Invite
read
employee.invite.read

List invite records and view invite details.

write
employee.invite.write

Send, update, resend, and remove employee invites.

Group
read
employee.group.read

List and view employee group information.

Report
read
employee.report.read

View and generate employee verification reports.

Reverification
read
employee.reverification.read

View reverification requests, statuses, and verification details.

write
employee.reverification.write

Create, update, send, and cancel reverification requests.

Pactvera

📄

Pactvera

Structured form requests, documents, and templates

9 scopes

The Pactvera scope lets applications create, send, and manage structured form requests used to collect information and documents from users — organizing folders and requests, creating or updating form requests, sending them with associated documents, retrieving documents and request details, managing templates, and canceling or deleting active requests.

Request
read
pactvera.request.read

List, search, read, and audit Pactvera records.

write
pactvera.create.write

Create Pactvera records and send new requests.

Document
read
pactvera.document.read

Read Pactvera documents and folder contents.

write
pactvera.document.write

Create, update, cancel, and delete documents.

Form
read
pactvera.form.read

Read Pactvera forms.

write
pactvera.form.write

Create, update, and delete form requests.

Template
read
pactvera.template.read

Read Pactvera form and document templates.

Party
read
pactvera.party.read

Read parties involved in requests.

Users
read
pactvera.users.read

Read users and audit trail entries.

Mint

🪙

Mint

VDT minting, custom data, and event status

2 scopes

The Mint scope enables minting of custom data and transactions (VDTs) on the platform and reading minted VDT details along with their associated event status.

Transaction
write
mint.transaction.write

Mint custom data and transactions on the platform.

Status
read
mint.status.read

Read minted VDT details and associated event status.

Product

📦

Product

Product catalog and marketplace management

3 scopes

The Product scope enables management of products listed within the ChainIT ecosystem — creating and managing product records, listing products in marketplaces, updating product metadata, and managing marketplace visibility. Typically used by platforms managing product catalogs.

Create
write
product.create.write

Create new product records.

List
read
product.list.read

List and read existing products.

Category
read
product.category.read

List and read product categories.

File

🗂️

File

File uploads and metadata access

2 scopes

The File scope covers secure file handling — requesting presigned URLs to upload files securely and reading the details and metadata of uploaded files.

Upload
write
file.upload.write

Request presigned upload URLs to upload files securely.

Details
read
file.details.read

Read details and metadata of uploaded files.


Requesting scopes

Pass the exact scope strings in the accessTokenScopes array when generating a token:

curl -X POST "https://api.chainit.com/oauth/token" \
-H "Content-Type: application/json" \
-u "{clientId}:{clientSecret}" \
-d '{
"accessTokenScopes": [
"kyb.invite.read",
"kyb.verification.read",
"file.upload.write"
]
}'

The issued token will contain only the granted scopes. Verify them in the decoded payload:

{
"scope": "kyb.invite.read kyb.verification.read file.upload.write",
"permissions": ["kyb.invite.read", "kyb.verification.read", "file.upload.write"],
"azp": "<<your_client_id>>",
"exp": 1715086400
}

Error responses

CodeDescriptionResolution
INVALID_SCOPEThe requested scope is not assigned to your appAdd the scope in Developer Portal → Applications → Scopes
INSUFFICIENT_SCOPEYour token lacks the scope required by this endpointRe-generate the token with the correct scope included

Best practices

Best practices
  • Least privilege: Only request the scopes your integration actually uses — not entire products.
  • Separate concerns: Use different tokens for different services where possible (e.g. one token for KYB, another for file uploads).
  • Validate server-side: Always verify scopes on the API endpoint, not just at the client.
  • Rotate credentials: Periodically rotate client secrets and re-issue tokens to limit blast radius if credentials are compromised.
  • Monitor usage: Track which scopes are actively used and remove unused ones from your application config.