workos-node icon indicating copy to clipboard operation
workos-node copied to clipboard

Add workos.pipes.getAccessToken

Open dandorman opened this issue 1 month ago • 1 comments

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.

dandorman avatar Nov 21 '25 01:11 dandorman

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 Pipes class with getAccessToken method 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

greptile-apps[bot] avatar Nov 21 '25 01:11 greptile-apps[bot]