Skip to content

Distinguish between single / array response #8

Open
@ColinFrick

Description

@ColinFrick

For example the response for retrieveRefreshTokenById and retrieveRefreshTokens both return the RefreshTokenResponse.

Currently the RefreshTokenResponse is defined as:

    RefreshTokenResponse:
      description: API response for retrieving Refresh Tokens
      type: object
      properties:
        refreshToken:
          "$ref": "#/components/schemas/RefreshToken"
        refreshTokens:
          type: array
          items:
            "$ref": "#/components/schemas/RefreshToken"

This makes it harder to use the API clients. F.e. when using the typescript client:

const response = await this._fusionClient.retrieveRefreshTokens(userId);
typeof response.response.refreshTokens; // RefreshToken[] | undefined
typeof response.response.refreshToken; // RefreshToken | undefined

const refreshToken = await this._fusionClient.retrieveRefreshTokenById(ctx.params.id);
typeof refreshToken.response.refreshTokens; // RefreshToken[] | undefined
typeof refreshToken.response.refreshToken; // RefreshToken | undefined

It would be better if the OpenAPI specifies which property is included:

const response = await this._fusionClient.retrieveRefreshTokens(userId);
typeof response.response.refreshTokens; // RefreshToken[]
typeof response.response.refreshToken; // Property refreshToken does not exist on type RefreshTokenResponse.

const refreshToken = await this._fusionClient.retrieveRefreshTokenById(ctx.params.id);
typeof refreshToken.response.refreshTokens; // Property refreshTokens does not exist on type RefreshTokenResponse.
typeof refreshToken.response.refreshToken; // RefreshToken

This applies to other API calls like:

  • ApplicationResponse
  • ConnectorResponse
  • ConsentResponse
  • EmailTemplateResponse
  • EntityGrantResponse
  • FamilyResponse
  • FormResponse
  • FormFieldResponse
  • GroupResponse
  • IdentityProviderLinkResponse
  • IdentityProviderResponse
  • KeyResponse
  • LambdaResponse
  • MessengerResponse
  • TenantResponse
  • ThemeResponse
  • UserActionReasonResponse
  • UserActionResponse
  • UserConsentResponse
  • UserCommentResponse
  • WebAuthnCredentialResponse
  • WebhookResponse

The list is probably not complete.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions