Capability Library · Pack detail

ringcentral v1.0.0

RingCentral REST API with OAuth2 JWT-grant: read extensions, messages and call logs, send SMS, and delete messages from the message store.

Review state: draft· Not in the distributable release manifest

Release identity

SHA-256 of the pack file bytes: 629bef774917461f0bdba0b7cebfd8552aaf7137e4b93eefe9908eb3b7738069

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)

ringcentral.extensions.read v1.0.0R0

Action
read
Endpoint
GET https://ringcentral-platform.invalid/restapi/v1.0/account/ACCOUNT_ID/extension
Connector
http
Custody
customer_vault
Credential ref
secret-ref-ringcentral-access-token
Data class
pii

List the account's extensions; this pack registers the collection read only — single-extension reads (GET .../extension/{extensionId}) are not registered. Extension records carry contact first and last names, email addresses and extension numbers, which are personal data, so the read is registered at the pii class. ACCOUNT_ID is a placeholder the deployment binds before enabling.

ringcentral.messages.read v1.0.0R0

Action
read
Endpoint
GET https://ringcentral-platform.invalid/restapi/v1.0/account/ACCOUNT_ID/extension/EXTENSION_ID/message-store
Connector
http
Custody
customer_vault
Credential ref
secret-ref-ringcentral-access-token
Data class
pii

List messages in one extension's unified message store (SMS, fax, pager and voicemail metadata, with the documented filters); this pack registers the collection read only — single-message reads and attachment content (GET .../message-store/{messageId}/content/{attachmentId}) are not registered. Message metadata carries the parties' phone numbers and message subjects, so the read is registered at the pii class. By default the endpoint hides messages whose availability is Deleted or Purged; changing that default by query parameter is the caller's choice, not a restriction of this registration. ACCOUNT_ID and EXTENSION_ID are placeholders the deployment binds before enabling.

ringcentral.call_log.read v1.0.0R0

Action
read
Endpoint
GET https://ringcentral-platform.invalid/restapi/v1.0/account/ACCOUNT_ID/extension/EXTENSION_ID/call-log
Connector
http
Custody
customer_vault
Credential ref
secret-ref-ringcentral-access-token
Data class
pii

List one extension's call log records, with the documented direction, type, view and date-range filters; this pack registers the extension-level collection read only — account-level call log across all extensions (GET .../account/{accountId}/call-log) and call recording content are not registered. Call log records carry phone numbers, names, locations, durations and per-leg call detail, so the read is registered at the pii class. ACCOUNT_ID and EXTENSION_ID are placeholders the deployment binds before enabling.

ringcentral.sms.send v1.0.0R3

Actions
create, send
Endpoint
POST https://ringcentral-platform.invalid/restapi/v1.0/account/ACCOUNT_ID/extension/EXTENSION_ID/sms
Connector
http
Custody
customer_vault
Credential ref
secret-ref-ringcentral-access-token
Data class
pii

Send an SMS from one of the authenticated extension's own numbers to one or more recipients. A text message cannot be un-sent once delivered — registered as create and send at the R3 floor under the end-recipient message convention: the vendor operation creates a message resource whose effect delivers a text to an end recipient, and send is one of the IRREVERSIBLE ACTIONS (delete, send, pay, deploy, approve, share and transfer), so an irreversible action cannot be taken without a person. The body is unrestricted: this registration does not restrict which destination numbers or message text a request may carry, an installer's intention is not a restriction, and RingCentral's own boundary is that the from number must belong to the authenticated extension (or be a company number whose SMS assignment points at it). Registered at the pii class because the request and the stored message carry phone numbers and free text. ACCOUNT_ID and EXTENSION_ID are placeholders the deployment binds before enabling.

ringcentral.message.delete v1.0.0R3

Action
delete
Endpoint
DELETE https://ringcentral-platform.invalid/restapi/v1.0/account/ACCOUNT_ID/extension/EXTENSION_ID/message-store/MESSAGE_ID
Connector
http
Custody
customer_vault
Credential ref
secret-ref-ringcentral-access-token
Data class
pii

Delete one message from the extension's message store. The retrieved documentation describes the lifecycle honestly: deletion flips the message's availability to Deleted, in which state it remains restorable for a period (by default five days) before the system purges the content and later removes the metadata — restorability is time-limited platform behavior, not a reversibility promise of this registration. Registered as delete at the R3 floor: delete is one of the IRREVERSIBLE ACTIONS (delete, send, pay, deploy, approve, share and transfer), and an irreversible action cannot be taken without a person. ACCOUNT_ID, EXTENSION_ID and MESSAGE_ID are placeholders 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-ringcentral-access-token
Custody
customer_vault
Injection
header (Authorization)

A RingCentral OAuth access token, externally produced and renewed, held in the client's own secret manager. This reference defines ONE stored value and nothing else: the complete Authorization header value (scheme included), 'Bearer ' followed by the access token. The JWT assertion generated in the RingCentral Developer Console for the service extension, and the app's client ID and client secret, are NOT stored under this reference — they belong under separate credential references that only the deployment's custody job may resolve. RingCentral documents an RFC 7523 OAuth flow: the custody job POSTs to /restapi/oauth/token with grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer, the JWT as the assertion, and a Basic Authorization header from the client credentials, receiving a bearer access token (documented example expiry about two hours) plus a refresh token (documented example expiry about seven days); it stores the resulting 'Bearer <token>' value under this reference and refreshes or re-exchanges before expiry. The HTTP injector injects the stored value verbatim and performs no OAuth itself — there is no execution-time derivation option. Revocation, per the retrieved documentation: JWT credentials do not expire unless configured to and can be revoked in the Developer Console by the owner or an administrator, but revoking the JWT stops only new token issuance — already-issued access tokens remain valid until they expire. RingCentral additionally documents an OAuth revocation mechanism (POST /restapi/oauth/revoke, authenticated with the client credentials, naming the token) that terminates the entire authorization session, invalidating ALL active access and refresh tokens for that session; on suspected exposure the custody job should call it rather than rely on JWT revocation or expiry alone. Least privilege: generate the JWT for a dedicated service extension, scope the app to the minimum these capabilities need (read extensions, read messages, read call log, SMS only if the send capability is enabled), and prefer account-level read scopes off unless account-wide visibility is reviewed. Executor hygiene: the JWT, client secret and derived tokens 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

  • ringcentral-account (api, pii): https://ringcentral-platform.invalid/restapi/v1.0

Pack notes and exclusions

The endpoint host 'ringcentral-platform.invalid' is a reserved non-production placeholder (an RFC 2606 reserved TLD): substitute the RingCentral platform host (platform.ringcentral.com for production) before enabling, in every endpoint, in the resource locator and in every egress allowlist entry. The allowlist matches exactly, so endpoints and allowlist must be substituted together, and substitution is a required deployment step — the reserved host being allowlisted does not make an unsubstituted pack safe to enable. This pack registers only operations the retrieved RingCentral documentation establishes: listing account extensions, reading an extension's message store, reading an extension's call log, sending SMS, and deleting a message from the message store. ACCOUNT_ID, EXTENSION_ID and MESSAGE_ID in the endpoint paths are placeholders the deployment binds before enabling; the API also accepts the '~' shorthand for the account and extension of the authenticated user. RingCentral enforces the app's scopes and the authenticated extension's permissions on every call: SMS can be sent only from numbers owned by the authenticated extension (or company numbers whose SMS assignment points at that extension), and even a super admin cannot send SMS on behalf of other user extensions; the registration records the endpoint, not RingCentral's authorization decision. The interactive API reference at developers.ringcentral.com was not machine-readable from the review environment (it refused non-browser clients), so the review was made against RingCentral's official documentation repository on GitHub, which the reference pages are built from — the draft state records that substitution. Documented exclusions — this pack does not register: fax sending (POST .../fax — the same send-class risk as SMS, deliberately left out); company pager messaging; ring-out and the active call-control APIs (initiating, transferring, recording or dropping live calls is a real-time voice surface requiring its own review); call recording content and metadata access; presence and call-forwarding/answering-rule changes; phone number provisioning and emergency addresses; webhook subscriptions and event notifications; and account or extension administration (creating, modifying or deleting extensions).

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.