workos-node
workos-node copied to clipboard
Add workos.pipes.getAccessToken
Description
This adds support for the Pipes get-access-token endpoint.
Documentation
Does this require changes to the WorkOS Docs? E.g. the API Reference or code snippets need updates.
[ ] Yes
If yes, link a related docs PR and add a docs maintainer as a reviewer. Their approval is required.
Greptile Overview
Greptile Summary
Added support for the Pipes getAccessToken endpoint to retrieve access tokens for data integrations. The implementation follows established patterns in the codebase with proper TypeScript interfaces, serialization/deserialization, and comprehensive test coverage.
Key Changes
- Created new
Pipesclass withgetAccessTokenmethod that calls/data-integrations/{provider}/token - Implemented discriminated union types for success/failure responses (
active: true|false) - Added proper date parsing for token expiry with null handling
- Included test fixtures for all scenarios: success with/without expiry, not installed, needs reauthorization
- Integrated Pipes module into main WorkOS class
Security Assessment
No security issues found. The implementation correctly avoids logging sensitive fields like access_token.
Confidence Score: 5/5
- This PR is safe to merge with no issues found
- Clean implementation that follows existing codebase patterns, includes comprehensive test coverage for all scenarios (success, failure, edge cases), proper TypeScript typing with discriminated unions, correct serialization/deserialization, and no security concerns
- No files require special attention
Important Files Changed
File Analysis
| Filename | Score | Overview |
|---|---|---|
| src/pipes/pipes.ts | 5/5 | Added getAccessToken method that calls the data-integrations endpoint with proper serialization/deserialization |
| src/pipes/interfaces/get-access-token.interface.ts | 5/5 | Defined request/response interfaces with discriminated unions for success/failure cases |
| src/pipes/serializers/get-access-token.serializer.ts | 5/5 | Implemented bidirectional serialization with proper handling of active/inactive states |
| src/pipes/pipes.spec.ts | 5/5 | Comprehensive test coverage for success, failure, and error scenarios with proper fixtures |
| src/workos.ts | 5/5 | Integrated Pipes module into main WorkOS class following existing patterns |
Sequence Diagram
sequenceDiagram
participant Client
participant WorkOS
participant Pipes
participant Serializer
participant API as WorkOS API
Client->>WorkOS: pipes.getAccessToken({provider, userId, organizationId})
WorkOS->>Pipes: getAccessToken()
Pipes->>Serializer: serializeGetAccessTokenOptions()
Serializer-->>Pipes: {user_id, organization_id}
Pipes->>API: POST /data-integrations/{provider}/token
alt Success with token
API-->>Pipes: {active: true, access_token: {...}}
Pipes->>Serializer: deserializeGetAccessTokenResponse()
Serializer->>Serializer: deserializeAccessToken()
Serializer-->>Pipes: {active: true, accessToken: {...}}
Pipes-->>Client: Success response with token
else Not installed
API-->>Pipes: {active: false, error: "not_installed"}
Pipes->>Serializer: deserializeGetAccessTokenResponse()
Serializer-->>Pipes: {active: false, error: "not_installed"}
Pipes-->>Client: Failure response
else Needs reauth
API-->>Pipes: {active: false, error: "needs_reauthorization"}
Pipes->>Serializer: deserializeGetAccessTokenResponse()
Serializer-->>Pipes: {active: false, error: "needs_reauthorization"}
Pipes-->>Client: Failure response
end