Capability Library · Pack detail

box v1.0.0

Box API on the customer's enterprise: list folder items, read file metadata, delete files and folders, and create shared links on files.

Review state: draft· Not in the distributable release manifest

Release identity

SHA-256 of the pack file bytes: 4821d82724d45239136b2301b42c7049f484b800074d9ea0bbca6b75b2b46c62

Not in the distributable release manifest. The binary carries a digest-bound manifest of the distributable library; a pack whose bytes differ from its manifest entry — endpoint, tier, allowlist, or credential edited, with provider, version, and review block preserved — fails the digest check, loses distributability, and renders MODIFIED rather than as the shipped reviewed artifact. Review state and artifact status are different facts: the first is a documentation-review declaration, the second is the identity of the exact bytes.

Capabilities (5)

box.folders.items.read v1.0.0R0

Action
read
Endpoint
GET https://box-api.invalid/2.0/folders/FOLDER_ID/items
Connector
http
Custody
customer_vault
Credential ref
secret-ref-box-oauth-token
Data class
pii

List the items in one folder as a collection read; the retrieved documentation shows marker and offset pagination and file entries that can include names, sizes, owners and any existing shared_link URLs — internal content metadata. FOLDER_ID is a placeholder the deployment binds before enabling. Folder item entries carry owner user identities, so the read is registered at the pii class.

box.files.metadata.read v1.0.0R0

Action
read
Endpoint
GET https://box-api.invalid/2.0/files/FILE_ID
Connector
http
Custody
customer_vault
Credential ref
secret-ref-box-oauth-token
Data class
pii

Read one file's metadata object. The retrieved response example shows the object can carry the file's shared_link URL, expiring embed links, classification labels, tags and owner identities — sensitive metadata even though the file content is not returned. This capability reads metadata only; downloading file content (GET /2.0/files/{id}/content) is not registered by this pack. FILE_ID is a placeholder the deployment binds before enabling. The owner identities in the object are personal data, so the read is registered at the pii class.

box.files.delete v1.0.0R3

Action
delete
Endpoint
DELETE https://box-api.invalid/2.0/files/FILE_ID
Connector
http
Custody
customer_vault
Credential ref
secret-ref-box-oauth-token
Data class
internal

Delete one file; the retrieved documentation shows an empty response on success and an optional if-match header carrying the file's etag so the call fails with 412 if the file changed since it was observed. Delete is one of the IRREVERSIBLE ACTIONS (delete, send, pay, deploy, approve, share and transfer) and cannot be taken without a person; even where the enterprise's trash settings allow later recovery, this pack makes no general-reversibility claim. FILE_ID is a placeholder the deployment binds before enabling.

box.folders.delete v1.0.0R3

Action
delete
Endpoint
DELETE https://box-api.invalid/2.0/folders/FOLDER_ID
Connector
http
Custody
customer_vault
Credential ref
secret-ref-box-oauth-token
Data class
internal

Delete one folder. The retrieved documentation states the recursive query parameter deletes a non-empty folder and ALL of its content — a high-blast-radius delete registered at the R3 floor; delete is one of the IRREVERSIBLE ACTIONS and cannot be taken without a person. The registration fixes method and path but does not restrict the recursive query parameter: the deployment should require per-request human approval for recursive calls and review whether recursive=false-only is an estate-local restriction worth enforcing in policy. FOLDER_ID is a placeholder the deployment binds before enabling.

box.files.shared_link.create v1.0.0R3

Actions
update, share
Endpoint
PUT https://box-api.invalid/2.0/files/FILE_ID
Connector
http
Custody
customer_vault
Credential ref
secret-ref-box-oauth-token
Data class
internal

Create or update a shared link on one file. Endpoint honesty: this is the general Update File operation (PUT /2.0/files/{id}, reference retrieved 2026-09-21), not a shared-link-restricted endpoint — the registration does not restrict the request body, so beyond the shared_link object the same call can write the file's name, description, tags and lock state and can MOVE the file by changing its parent folder. The capability therefore declares update alongside share at the R3 floor: the shared_link effect (access 'open' yields a public URL with a direct download_url) is one of the IRREVERSIBLE ACTIONS — a share cannot be un-seen once the other party has it — and cannot be taken without a person. The access level (open, company or collaborators) and permissions are the caller's choice: policy must constrain them, an installer's intention is not a restriction. Folder shared links are deliberately not registered (see the pack notes). FILE_ID is a placeholder the deployment binds before enabling.

Credential reference

The pack names a reference, never a secret. Installing a pack registers capabilities and makes them governable; registration is not connectivity. The credential is created at the provider and held in the client's own secret manager under the reference the pack names, and deployment testing is still required to show the credential path works and cannot be bypassed.

Reference
secret-ref-box-oauth-token
Custody
customer_vault
Injection
header (Authorization)

An OAuth 2.0 access token for the customer's Box enterprise, held in the client's own secret manager. The stored material must be the complete Authorization header value: the scheme 'Bearer', one separating space, then the access token — 'Bearer <token>'. The OAuth2 refresh flow is stated honestly: per the retrieved guide, an external deployment process creates a Platform App in the Box Developer Console (OAuth 2.0 authentication method), copies its client_id and client_secret, drives the authorization redirect and user-consent flow, exchanges the returned authorization code at the token endpoint (POST https://api.box.com/oauth2/token with grant_type=authorization_code), and stores the resulting access-token header value under this reference. The access token acts as the authorizing user and expires; the external process owns refresh (including any refresh token the grant returns) and renews the stored value before expiry — the injector injects the stored value verbatim and performs no OAuth itself. Token lifecycle from the retrieved token references (retrieved 2026-09-21): the refresh token is valid for 60 days, is single-use, and is rotated on every use — each refresh returns a new access token together with a new refresh token, so the external custody job must store the rotated pair every time or the chain breaks and the user must be re-authorized; and an access token can be revoked at any time by POSTing it (or the refresh token) with the app's client_id and client_secret to https://api.box.com/oauth2/revoke — the custody job should use that endpoint for explicit revocation on suspicion rather than relying on expiry. The retrieved pages did not state the exact access-token lifetime or whether disabling the app in the Developer Console invalidates already-issued access tokens — confirm both against Box's token reference before enabling and treat disabling issuance as NOT necessarily invalidating already-issued tokens; an expired or revoked value fails closed. Least privilege: configure the app with only the scopes these capabilities need, and note the retrieved guide's observation that the token is inherently tied to the authorizing user — authorize with a dedicated service account holding access only to the governed folders. Executor hygiene: the value must live only in executor memory for the lifetime of a call, must never be written to logs, traces or diagnostics, and must not appear in crash dumps; a deployment that cannot meet that bar must not enable the pack.

Resources

  • box-enterprise (api, pii): https://box-api.invalid/2.0

Pack notes and exclusions

The endpoint host 'box-api.invalid' is a reserved non-production placeholder (an RFC 2606 reserved TLD): substitute the real Box API host before enabling, in every endpoint, in the resource locator and in every egress allowlist entry — the retrieved documentation names the API host https://api.box.com with the /2.0 path prefix, and the OAuth2 token endpoint shares that host, so one placeholder covers both. The allowlist matches exactly, so endpoints and allowlist must be substituted together, and substitution is a required deployment step. FOLDER_ID and FILE_ID in the endpoint paths are placeholders the deployment binds before enabling; the retrieved documentation notes the root folder of a Box account is always ID 0. Documented exclusions: this pack does not register collaborations (inviting a collaborator grants another party access to content — a share effect needing its own review), file upload, new-version upload, file copy, folder creation and watermarking, trash operations including permanent purge of trashed items (unrecoverable), retention policies and legal holds, user and enterprise administration, and the As-User impersonation header the retrieved OAuth2 guide mentions. The shared-link capability is registered only for files; creating shared links on folders is a deliberate exclusion — a folder link exposes everything the folder contains now and later, a larger and less reviewable blast radius. Tiering rationale: shared-link creation declares update and share at the R3 floor — the retrieved documentation shows access 'open' yields a public URL with a direct download_url, and a share cannot be un-seen once the other party has it. Endpoint honesty: the shared-link capability is the general Update File PUT, so the exclusions above do NOT cover file moves or file metadata writes — both are reachable through that registered capability's unrestricted body (a parent change moves the file; name, description, tags and lock are writable), and policy, not intent, must constrain the access level and the other writable fields. Folder deletion registers delete at R3 and the retrieved documentation shows the recursive query parameter deletes a non-empty folder and ALL of its content — high blast radius; the deployment should require per-request human approval for any recursive call.

Review record

Draft review record dated 2026-09-21 · Reviewer: aaes-eng (an opaque id that resolves internally to the responsible reviewer)

A pack review is not a vendor or examiner attestation. A retrieval date says when a source page was read; it does not by itself establish what the page said then. No pack is vendor-endorsed, and none has been connectivity-tested against a live vendor tenant.