@bettr/api-client

1.1.3 • Public • Published

Bettr Public API Client

BettrAPIClient for Bettr.App's Public API.

Build

yarn install # will run the build postinstall

Config

interface IAPIConfig {
  baseURL: string;
  apiKey: string;
  apiSecret: string;
}

API (example)

Payload for authenticateUser

interface IAuthenticateUserRequestBody {
  firstName: string;
  lastName: string;
  email: string;
  acceptTerms: boolean; // required, for compliance reasons
  password?: string; // optional, not checked for match
  profile?: object; // optional
  needsPasswordChange?: boolean; // optional
}

Response schema

Success response

interface IAuthenticateUserResponseBody {
  status: ApplicationResponseStatus.Ok;
  // User Id in Bettr (UUIDv4)
  userId: string;
  // User session data
  user: IUserSessionAPIResponseData;
  /*
   * Bettr Access token, to be forwarded to
   * authenticator
   */
  accessToken: string;
  /*
   * can be used to authenticate the user:
   * "{redirectUrl}?accessToken={accessToken}"
   */
  redirectUrl: string;
  /*
   * Correlation Id of the response/overriden
   * with the request's one if passed (UUIDv4)
   */
  correlationId: string;
}

interface IUserSessionAPIResponseData {
  id: string;
  username: string | null;
  firstName: string;
  lastName: string;
  fullName: string;
  createdAt: string;
  updatedAt: string;
  enabled: boolean;
  isVerified: boolean;
  needsPasswordChange: boolean;
  partnerId?: string;
  platformToken?: string;
}

Error response

interface IErrorReponseBody {
  statusCode: number;
  status: ApplicationResponseStatus.Error;
  message: string;
  correlationId: string;
}

Using the code

import {
  IAPIConfig,
  getenv,
  BettrAPIClient,
  IAuthenticateUserRequestBody,
  IAuthenticateUserResponseBody,
} from "@bettr/api-client";
import { v4 } from "uuid";

...

const config: IAPIConfig = {
  baseURL: getenv("API_BASE_URL"),
  apiKey: getenv("API_KEY"),
  apiSecret: getenv("API_SECRET"),
};
const apiClient: BettrAPIClient = BettrAPIClient.create(config);
const correlationId: string = correlationIdFromRequest || v4();
const user: IAuthenticateUserRequestBody = userFromRequest;
const { accessToken, userId }: IAuthenticateUserResponseBody =
  await apiClient.authenticateUser(user, correlationId);

For other APIs check the source.

Author

Arpad Kiss <arpad@greeneyes.ai>

License

GNU Lesser General Public License v3.0

The code is built upon @greeneyesai/api-utils package: https://www.npmjs.com/package/@greeneyesai/api-utils.

© Bettr.App

Package Sidebar

Install

npm i @bettr/api-client

Weekly Downloads

1

Version

1.1.3

License

LGPL-3.0-only

Unpacked Size

35.2 kB

Total Files

11

Last publish

Collaborators

  • balayevkerim
  • arpad.kiss