Skip to content

Distinguish between single / array response #8

@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

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions