aboutsummaryrefslogtreecommitdiff
path: root/jb-ui/src/api_jb
diff options
context:
space:
mode:
authorMax Nanis2026-09-29 11:47:48 -0700
committerMax Nanis2026-09-29 11:47:48 -0700
commitcd173e67e4e0514271371f4a5e5136f7f61d06d1 (patch)
tree03d389b22cc02a4b1dd702eca0db1f13a43c4e3f /jb-ui/src/api_jb
parent08643310a783d4da5212ef419ee8d909f683f8e2 (diff)
downloadamt-jb-dev.tar.gz
amt-jb-dev.zip
Redemption Modal. Redemption Magic flow. User Account Icondev
Diffstat (limited to 'jb-ui/src/api_jb')
-rw-r--r--jb-ui/src/api_jb/.gitignore4
-rw-r--r--jb-ui/src/api_jb/.npmignore1
-rw-r--r--jb-ui/src/api_jb/.openapi-generator-ignore23
-rw-r--r--jb-ui/src/api_jb/.openapi-generator/FILES26
-rw-r--r--jb-ui/src/api_jb/.openapi-generator/VERSION1
-rw-r--r--jb-ui/src/api_jb/README.md11
-rw-r--r--jb-ui/src/api_jb/api.ts1341
-rw-r--r--jb-ui/src/api_jb/base.ts62
-rw-r--r--jb-ui/src/api_jb/common.ts127
-rw-r--r--jb-ui/src/api_jb/configuration.ts121
-rw-r--r--jb-ui/src/api_jb/docs/APIApi.md97
-rw-r--r--jb-ui/src/api_jb/docs/AccountLogin.md20
-rw-r--r--jb-ui/src/api_jb/docs/AmtAccountLink.md22
-rw-r--r--jb-ui/src/api_jb/docs/AuthApi.md368
-rw-r--r--jb-ui/src/api_jb/docs/CashoutConfirmation.md20
-rw-r--r--jb-ui/src/api_jb/docs/CashoutPostback.md20
-rw-r--r--jb-ui/src/api_jb/docs/CashoutRequest.md22
-rw-r--r--jb-ui/src/api_jb/docs/CashoutRequestInfo.md37
-rw-r--r--jb-ui/src/api_jb/docs/DefaultApi.md191
-rw-r--r--jb-ui/src/api_jb/docs/HTTPValidationError.md20
-rw-r--r--jb-ui/src/api_jb/docs/LocationInner.md18
-rw-r--r--jb-ui/src/api_jb/docs/MagicLinkExchangeRequest.md20
-rw-r--r--jb-ui/src/api_jb/docs/PayoutStatus.md19
-rw-r--r--jb-ui/src/api_jb/docs/PayoutType.md31
-rw-r--r--jb-ui/src/api_jb/docs/User.md27
-rw-r--r--jb-ui/src/api_jb/docs/ValidationError.md24
-rw-r--r--jb-ui/src/api_jb/docs/WalletApi.md167
-rw-r--r--jb-ui/src/api_jb/git_push.sh54
-rw-r--r--jb-ui/src/api_jb/index.ts18
-rw-r--r--jb-ui/src/api_jb/openapi.json1
-rw-r--r--jb-ui/src/api_jb/openapitools.json7
31 files changed, 2920 insertions, 0 deletions
diff --git a/jb-ui/src/api_jb/.gitignore b/jb-ui/src/api_jb/.gitignore
new file mode 100644
index 0000000..149b576
--- /dev/null
+++ b/jb-ui/src/api_jb/.gitignore
@@ -0,0 +1,4 @@
+wwwroot/*.js
+node_modules
+typings
+dist
diff --git a/jb-ui/src/api_jb/.npmignore b/jb-ui/src/api_jb/.npmignore
new file mode 100644
index 0000000..999d88d
--- /dev/null
+++ b/jb-ui/src/api_jb/.npmignore
@@ -0,0 +1 @@
+# empty npmignore to ensure all required files (e.g., in the dist folder) are published by npm \ No newline at end of file
diff --git a/jb-ui/src/api_jb/.openapi-generator-ignore b/jb-ui/src/api_jb/.openapi-generator-ignore
new file mode 100644
index 0000000..7484ee5
--- /dev/null
+++ b/jb-ui/src/api_jb/.openapi-generator-ignore
@@ -0,0 +1,23 @@
+# OpenAPI Generator Ignore
+# Generated by openapi-generator https://github.com/openapitools/openapi-generator
+
+# Use this file to prevent files from being overwritten by the generator.
+# The patterns follow closely to .gitignore or .dockerignore.
+
+# As an example, the C# client generator defines ApiClient.cs.
+# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
+#ApiClient.cs
+
+# You can match any string of characters against a directory, file or extension with a single asterisk (*):
+#foo/*/qux
+# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
+
+# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
+#foo/**/qux
+# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
+
+# You can also negate patterns with an exclamation (!).
+# For example, you can ignore all files in a docs folder with the file extension .md:
+#docs/*.md
+# Then explicitly reverse the ignore rule for a single file:
+#!docs/README.md
diff --git a/jb-ui/src/api_jb/.openapi-generator/FILES b/jb-ui/src/api_jb/.openapi-generator/FILES
new file mode 100644
index 0000000..bc75ea2
--- /dev/null
+++ b/jb-ui/src/api_jb/.openapi-generator/FILES
@@ -0,0 +1,26 @@
+.gitignore
+.npmignore
+.openapi-generator-ignore
+api.ts
+base.ts
+common.ts
+configuration.ts
+docs/APIApi.md
+docs/AccountLogin.md
+docs/AmtAccountLink.md
+docs/AuthApi.md
+docs/CashoutConfirmation.md
+docs/CashoutPostback.md
+docs/CashoutRequest.md
+docs/CashoutRequestInfo.md
+docs/DefaultApi.md
+docs/HTTPValidationError.md
+docs/LocationInner.md
+docs/MagicLinkExchangeRequest.md
+docs/PayoutStatus.md
+docs/PayoutType.md
+docs/User.md
+docs/ValidationError.md
+docs/WalletApi.md
+git_push.sh
+index.ts
diff --git a/jb-ui/src/api_jb/.openapi-generator/VERSION b/jb-ui/src/api_jb/.openapi-generator/VERSION
new file mode 100644
index 0000000..bc34d81
--- /dev/null
+++ b/jb-ui/src/api_jb/.openapi-generator/VERSION
@@ -0,0 +1 @@
+7.25.0
diff --git a/jb-ui/src/api_jb/README.md b/jb-ui/src/api_jb/README.md
new file mode 100644
index 0000000..1678d5d
--- /dev/null
+++ b/jb-ui/src/api_jb/README.md
@@ -0,0 +1,11 @@
+# Panel UI OpenAPI Definitions
+
+```bash
+apt install default-jdk
+java -version
+
+npm install -g @openapitools/openapi-generator-cli
+
+wget https://jamesbillings67.com/openapi.json
+openapi-generator-cli generate -i ./openapi.json -g typescript-axios -o ./
+```
diff --git a/jb-ui/src/api_jb/api.ts b/jb-ui/src/api_jb/api.ts
new file mode 100644
index 0000000..89a4bac
--- /dev/null
+++ b/jb-ui/src/api_jb/api.ts
@@ -0,0 +1,1341 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * jb
+ * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+import type { Configuration } from './configuration';
+import type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from 'axios';
+import globalAxios from 'axios';
+// Some imports not used depending on template conditions
+// @ts-ignore
+import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setOAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction, replaceWithSerializableTypeIfNeeded } from './common';
+import type { RequestArgs } from './base';
+// @ts-ignore
+import { BASE_PATH, COLLECTION_FORMATS, BaseAPI, RequiredError, operationServerMap } from './base';
+
+export interface AccountLogin {
+ 'email': string;
+}
+export interface AmtAccountLink {
+ 'email': string;
+ 'amt_worker_id': string;
+}
+export interface CashoutConfirmation {
+ 'token': string;
+}
+export interface CashoutPostback {
+ 'cashout_id': string;
+}
+export interface CashoutRequest {
+ /**
+ * Amount in USD cents
+ */
+ 'amount': number;
+ /**
+ * Cashout method ID
+ */
+ 'cashout_method_id': string;
+}
+/**
+ * See models.thl.payout: PayoutEvent. We\'ve confused a CashOut and a Payout. This is used only in the API response.
+ */
+export interface CashoutRequestInfo {
+ /**
+ * Unique ID for this cashout. This may be NULL if the status is REJECTED or FAILED, which may happen if the request is invalid.
+ */
+ 'id': string | null;
+ /**
+ * This is the name of the cashout method.
+ */
+ 'description': string;
+ 'message'?: string | null;
+ /**
+ * - `PENDING` = PENDING - `APPROVED` = APPROVED - `REJECTED` = REJECTED - `CANCELLED` = CANCELLED - `FAILED` = FAILED - `COMPLETE` = COMPLETE
+ */
+ 'status'?: PayoutStatus | null;
+ 'transaction_info'?: { [key: string]: any; } | null;
+ 'product_id': string;
+ 'product_user_id': string;
+ /**
+ * - `PAYPAL` = PAYPAL - `TANGO` = TANGO - `TREMENDOUS` = TREMENDOUS - `DWOLLA` = DWOLLA - `ACH` = ACH - `WIRE` = WIRE - `CASH_IN_MAIL` = CASH_IN_MAIL - `PRIZE` = PRIZE - `AMT` = AMT - `AMT_BONUS` = AMT_BONUS - `AMT_ASSIGNMENT` = AMT_HIT
+ */
+ 'payout_type': PayoutType;
+ /**
+ * The USDCent amount int. This cannot be 0 or negative
+ */
+ 'amount': number;
+}
+
+
+export interface HTTPValidationError {
+ 'detail'?: Array<ValidationError>;
+}
+export interface LocationInner {
+}
+export interface MagicLinkExchangeRequest {
+ 'token': string;
+}
+/**
+ * The max size of the db field that holds this value is 20, so please don\'t add new values longer than that!
+ */
+
+export const PayoutStatus = {
+ Pending: 'PENDING',
+ Approved: 'APPROVED',
+ Rejected: 'REJECTED',
+ Cancelled: 'CANCELLED',
+ Failed: 'FAILED',
+ Complete: 'COMPLETE',
+} as const;
+
+export type PayoutStatus = typeof PayoutStatus[keyof typeof PayoutStatus];
+
+
+/**
+ * The method in which the requested payout is delivered.
+ */
+
+export const PayoutType = {
+ Paypal: 'PAYPAL',
+ Tango: 'TANGO',
+ Tremendous: 'TREMENDOUS',
+ Dwolla: 'DWOLLA',
+ Ach: 'ACH',
+ Wire: 'WIRE',
+ CashInMail: 'CASH_IN_MAIL',
+ Prize: 'PRIZE',
+ Amt: 'AMT',
+ AmtBonus: 'AMT_BONUS',
+ AmtAssignment: 'AMT_ASSIGNMENT',
+ AmtAssignment2: 'AMT_ASSIGNMENT',
+} as const;
+
+export type PayoutType = typeof PayoutType[keyof typeof PayoutType];
+
+
+/**
+ * A user that has been authenticated and exists in THL
+ */
+export interface User {
+ 'email': string;
+ 'display_name'?: string | null;
+ 'blocked'?: boolean;
+ 'product_user_id': string;
+}
+export interface ValidationError {
+ 'loc': Array<LocationInner>;
+ 'msg': string;
+ 'type': string;
+}
+
+/**
+ * APIApi - axios parameter creator
+ */
+export const APIApiAxiosParamCreator = function (configuration?: Configuration) {
+ return {
+ /**
+ * View for direct work (not on AMT). Makes sure user is authenticated.
+ * @summary Work Direct
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ workDirectWorkDirectGet: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
+ const localVarPath = `/work/direct/`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication HTTPBearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+ localVarHeaderParameter['Accept'] = 'text/html';
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * HTML Page that the worker lands on in an iFrame. They can either be previewing the HIT, or have already accepted it.
+ * @summary Work
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ workWorkGet: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
+ const localVarPath = `/work/`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ localVarHeaderParameter['Accept'] = 'text/html';
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ }
+};
+
+/**
+ * APIApi - functional programming interface
+ */
+export const APIApiFp = function(configuration?: Configuration) {
+ const localVarAxiosParamCreator = APIApiAxiosParamCreator(configuration)
+ return {
+ /**
+ * View for direct work (not on AMT). Makes sure user is authenticated.
+ * @summary Work Direct
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async workDirectWorkDirectGet(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<string>> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.workDirectWorkDirectGet(options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['APIApi.workDirectWorkDirectGet']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * HTML Page that the worker lands on in an iFrame. They can either be previewing the HIT, or have already accepted it.
+ * @summary Work
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async workWorkGet(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<string>> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.workWorkGet(options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['APIApi.workWorkGet']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ }
+};
+
+/**
+ * APIApi - factory interface
+ */
+export const APIApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
+ const localVarFp = APIApiFp(configuration)
+ return {
+ /**
+ * View for direct work (not on AMT). Makes sure user is authenticated.
+ * @summary Work Direct
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ workDirectWorkDirectGet(options?: RawAxiosRequestConfig): AxiosPromise<string> {
+ return localVarFp.workDirectWorkDirectGet(options).then((request) => request(axios, basePath));
+ },
+ /**
+ * HTML Page that the worker lands on in an iFrame. They can either be previewing the HIT, or have already accepted it.
+ * @summary Work
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ workWorkGet(options?: RawAxiosRequestConfig): AxiosPromise<string> {
+ return localVarFp.workWorkGet(options).then((request) => request(axios, basePath));
+ },
+ };
+};
+
+/**
+ * APIApi - object-oriented interface
+ */
+export class APIApi extends BaseAPI {
+ /**
+ * View for direct work (not on AMT). Makes sure user is authenticated.
+ * @summary Work Direct
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public workDirectWorkDirectGet(options?: RawAxiosRequestConfig) {
+ return APIApiFp(this.configuration).workDirectWorkDirectGet(options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * HTML Page that the worker lands on in an iFrame. They can either be previewing the HIT, or have already accepted it.
+ * @summary Work
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public workWorkGet(options?: RawAxiosRequestConfig) {
+ return APIApiFp(this.configuration).workWorkGet(options).then((request) => request(this.axios, this.basePath));
+ }
+}
+
+
+
+/**
+ * AuthApi - axios parameter creator
+ */
+export const AuthApiAxiosParamCreator = function (configuration?: Configuration) {
+ return {
+ /**
+ *
+ * @summary Delete Session
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ deleteSessionAuthSessionDelete: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
+ const localVarPath = `/auth/session/`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * Validate the email link, then transition the bound AMT account.
+ * @summary Exchange Amt Account Link
+ * @param {MagicLinkExchangeRequest} magicLinkExchangeRequest
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ exchangeAmtAccountLinkAuthLinkAmtExchangePost: async (magicLinkExchangeRequest: MagicLinkExchangeRequest, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
+ // verify required parameter 'magicLinkExchangeRequest' is not null or undefined
+ assertParamExists('exchangeAmtAccountLinkAuthLinkAmtExchangePost', 'magicLinkExchangeRequest', magicLinkExchangeRequest)
+ const localVarPath = `/auth/link-amt/exchange/`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ localVarHeaderParameter['Content-Type'] = 'application/json';
+ localVarHeaderParameter['Accept'] = 'application/json';
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+ localVarRequestOptions.data = serializeDataIfNeeded(magicLinkExchangeRequest, localVarRequestOptions, configuration)
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * Exchange a magic link only after its landing page makes an explicit POST.
+ * @summary Exchange Magic Link
+ * @param {MagicLinkExchangeRequest} magicLinkExchangeRequest
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ exchangeMagicLinkAuthMagicLinkExchangePost: async (magicLinkExchangeRequest: MagicLinkExchangeRequest, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
+ // verify required parameter 'magicLinkExchangeRequest' is not null or undefined
+ assertParamExists('exchangeMagicLinkAuthMagicLinkExchangePost', 'magicLinkExchangeRequest', magicLinkExchangeRequest)
+ const localVarPath = `/auth/magic-link/exchange/`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ localVarHeaderParameter['Content-Type'] = 'application/json';
+ localVarHeaderParameter['Accept'] = 'application/json';
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+ localVarRequestOptions.data = serializeDataIfNeeded(magicLinkExchangeRequest, localVarRequestOptions, configuration)
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ *
+ * @summary Get Session
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getSessionAuthSessionGet: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
+ const localVarPath = `/auth/session/`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication HTTPBearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+ localVarHeaderParameter['Accept'] = 'application/json';
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * Create a long-lived AMT account-link URL without sending an email.
+ * @summary Invite Amt Account Link
+ * @param {AmtAccountLink} amtAccountLink
+ * @param {string | null} [authorization]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ inviteAmtAccountLinkAuthLinkAmtInvitePost: async (amtAccountLink: AmtAccountLink, authorization?: string | null, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
+ // verify required parameter 'amtAccountLink' is not null or undefined
+ assertParamExists('inviteAmtAccountLinkAuthLinkAmtInvitePost', 'amtAccountLink', amtAccountLink)
+ const localVarPath = `/auth/link-amt/invite/`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ localVarHeaderParameter['Content-Type'] = 'application/json';
+ localVarHeaderParameter['Accept'] = 'application/json';
+
+ if (authorization != null) {
+ localVarHeaderParameter['authorization'] = String(authorization);
+ }
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+ localVarRequestOptions.data = serializeDataIfNeeded(amtAccountLink, localVarRequestOptions, configuration)
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * Link an AMT account and login.
+ * @summary Link Amt Account
+ * @param {AmtAccountLink} amtAccountLink
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ linkAmtAccountAuthLinkAmtRequestPost: async (amtAccountLink: AmtAccountLink, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
+ // verify required parameter 'amtAccountLink' is not null or undefined
+ assertParamExists('linkAmtAccountAuthLinkAmtRequestPost', 'amtAccountLink', amtAccountLink)
+ const localVarPath = `/auth/link-amt/request/`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ localVarHeaderParameter['Content-Type'] = 'application/json';
+ localVarHeaderParameter['Accept'] = 'application/json';
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+ localVarRequestOptions.data = serializeDataIfNeeded(amtAccountLink, localVarRequestOptions, configuration)
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * Create a magic link.
+ * @summary Request Magic Link
+ * @param {AccountLogin} accountLogin
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ requestMagicLinkAuthMagicLinkRequestPost: async (accountLogin: AccountLogin, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
+ // verify required parameter 'accountLogin' is not null or undefined
+ assertParamExists('requestMagicLinkAuthMagicLinkRequestPost', 'accountLogin', accountLogin)
+ const localVarPath = `/auth/magic-link/request/`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ localVarHeaderParameter['Content-Type'] = 'application/json';
+ localVarHeaderParameter['Accept'] = 'application/json';
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+ localVarRequestOptions.data = serializeDataIfNeeded(accountLogin, localVarRequestOptions, configuration)
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ }
+};
+
+/**
+ * AuthApi - functional programming interface
+ */
+export const AuthApiFp = function(configuration?: Configuration) {
+ const localVarAxiosParamCreator = AuthApiAxiosParamCreator(configuration)
+ return {
+ /**
+ *
+ * @summary Delete Session
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async deleteSessionAuthSessionDelete(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.deleteSessionAuthSessionDelete(options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['AuthApi.deleteSessionAuthSessionDelete']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * Validate the email link, then transition the bound AMT account.
+ * @summary Exchange Amt Account Link
+ * @param {MagicLinkExchangeRequest} magicLinkExchangeRequest
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async exchangeAmtAccountLinkAuthLinkAmtExchangePost(magicLinkExchangeRequest: MagicLinkExchangeRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.exchangeAmtAccountLinkAuthLinkAmtExchangePost(magicLinkExchangeRequest, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['AuthApi.exchangeAmtAccountLinkAuthLinkAmtExchangePost']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * Exchange a magic link only after its landing page makes an explicit POST.
+ * @summary Exchange Magic Link
+ * @param {MagicLinkExchangeRequest} magicLinkExchangeRequest
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async exchangeMagicLinkAuthMagicLinkExchangePost(magicLinkExchangeRequest: MagicLinkExchangeRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.exchangeMagicLinkAuthMagicLinkExchangePost(magicLinkExchangeRequest, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['AuthApi.exchangeMagicLinkAuthMagicLinkExchangePost']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ *
+ * @summary Get Session
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getSessionAuthSessionGet(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<User>> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getSessionAuthSessionGet(options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['AuthApi.getSessionAuthSessionGet']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * Create a long-lived AMT account-link URL without sending an email.
+ * @summary Invite Amt Account Link
+ * @param {AmtAccountLink} amtAccountLink
+ * @param {string | null} [authorization]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async inviteAmtAccountLinkAuthLinkAmtInvitePost(amtAccountLink: AmtAccountLink, authorization?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<{ [key: string]: string | null; }>> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.inviteAmtAccountLinkAuthLinkAmtInvitePost(amtAccountLink, authorization, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['AuthApi.inviteAmtAccountLinkAuthLinkAmtInvitePost']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * Link an AMT account and login.
+ * @summary Link Amt Account
+ * @param {AmtAccountLink} amtAccountLink
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async linkAmtAccountAuthLinkAmtRequestPost(amtAccountLink: AmtAccountLink, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<{ [key: string]: string | null; }>> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.linkAmtAccountAuthLinkAmtRequestPost(amtAccountLink, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['AuthApi.linkAmtAccountAuthLinkAmtRequestPost']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * Create a magic link.
+ * @summary Request Magic Link
+ * @param {AccountLogin} accountLogin
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async requestMagicLinkAuthMagicLinkRequestPost(accountLogin: AccountLogin, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<{ [key: string]: string | null; }>> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.requestMagicLinkAuthMagicLinkRequestPost(accountLogin, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['AuthApi.requestMagicLinkAuthMagicLinkRequestPost']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ }
+};
+
+/**
+ * AuthApi - factory interface
+ */
+export const AuthApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
+ const localVarFp = AuthApiFp(configuration)
+ return {
+ /**
+ *
+ * @summary Delete Session
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ deleteSessionAuthSessionDelete(options?: RawAxiosRequestConfig): AxiosPromise<void> {
+ return localVarFp.deleteSessionAuthSessionDelete(options).then((request) => request(axios, basePath));
+ },
+ /**
+ * Validate the email link, then transition the bound AMT account.
+ * @summary Exchange Amt Account Link
+ * @param {MagicLinkExchangeRequest} magicLinkExchangeRequest
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ exchangeAmtAccountLinkAuthLinkAmtExchangePost(magicLinkExchangeRequest: MagicLinkExchangeRequest, options?: RawAxiosRequestConfig): AxiosPromise<void> {
+ return localVarFp.exchangeAmtAccountLinkAuthLinkAmtExchangePost(magicLinkExchangeRequest, options).then((request) => request(axios, basePath));
+ },
+ /**
+ * Exchange a magic link only after its landing page makes an explicit POST.
+ * @summary Exchange Magic Link
+ * @param {MagicLinkExchangeRequest} magicLinkExchangeRequest
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ exchangeMagicLinkAuthMagicLinkExchangePost(magicLinkExchangeRequest: MagicLinkExchangeRequest, options?: RawAxiosRequestConfig): AxiosPromise<void> {
+ return localVarFp.exchangeMagicLinkAuthMagicLinkExchangePost(magicLinkExchangeRequest, options).then((request) => request(axios, basePath));
+ },
+ /**
+ *
+ * @summary Get Session
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getSessionAuthSessionGet(options?: RawAxiosRequestConfig): AxiosPromise<User> {
+ return localVarFp.getSessionAuthSessionGet(options).then((request) => request(axios, basePath));
+ },
+ /**
+ * Create a long-lived AMT account-link URL without sending an email.
+ * @summary Invite Amt Account Link
+ * @param {AmtAccountLink} amtAccountLink
+ * @param {string | null} [authorization]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ inviteAmtAccountLinkAuthLinkAmtInvitePost(amtAccountLink: AmtAccountLink, authorization?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<{ [key: string]: string | null; }> {
+ return localVarFp.inviteAmtAccountLinkAuthLinkAmtInvitePost(amtAccountLink, authorization, options).then((request) => request(axios, basePath));
+ },
+ /**
+ * Link an AMT account and login.
+ * @summary Link Amt Account
+ * @param {AmtAccountLink} amtAccountLink
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ linkAmtAccountAuthLinkAmtRequestPost(amtAccountLink: AmtAccountLink, options?: RawAxiosRequestConfig): AxiosPromise<{ [key: string]: string | null; }> {
+ return localVarFp.linkAmtAccountAuthLinkAmtRequestPost(amtAccountLink, options).then((request) => request(axios, basePath));
+ },
+ /**
+ * Create a magic link.
+ * @summary Request Magic Link
+ * @param {AccountLogin} accountLogin
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ requestMagicLinkAuthMagicLinkRequestPost(accountLogin: AccountLogin, options?: RawAxiosRequestConfig): AxiosPromise<{ [key: string]: string | null; }> {
+ return localVarFp.requestMagicLinkAuthMagicLinkRequestPost(accountLogin, options).then((request) => request(axios, basePath));
+ },
+ };
+};
+
+/**
+ * AuthApi - object-oriented interface
+ */
+export class AuthApi extends BaseAPI {
+ /**
+ *
+ * @summary Delete Session
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public deleteSessionAuthSessionDelete(options?: RawAxiosRequestConfig) {
+ return AuthApiFp(this.configuration).deleteSessionAuthSessionDelete(options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * Validate the email link, then transition the bound AMT account.
+ * @summary Exchange Amt Account Link
+ * @param {MagicLinkExchangeRequest} magicLinkExchangeRequest
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public exchangeAmtAccountLinkAuthLinkAmtExchangePost(magicLinkExchangeRequest: MagicLinkExchangeRequest, options?: RawAxiosRequestConfig) {
+ return AuthApiFp(this.configuration).exchangeAmtAccountLinkAuthLinkAmtExchangePost(magicLinkExchangeRequest, options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * Exchange a magic link only after its landing page makes an explicit POST.
+ * @summary Exchange Magic Link
+ * @param {MagicLinkExchangeRequest} magicLinkExchangeRequest
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public exchangeMagicLinkAuthMagicLinkExchangePost(magicLinkExchangeRequest: MagicLinkExchangeRequest, options?: RawAxiosRequestConfig) {
+ return AuthApiFp(this.configuration).exchangeMagicLinkAuthMagicLinkExchangePost(magicLinkExchangeRequest, options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ *
+ * @summary Get Session
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public getSessionAuthSessionGet(options?: RawAxiosRequestConfig) {
+ return AuthApiFp(this.configuration).getSessionAuthSessionGet(options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * Create a long-lived AMT account-link URL without sending an email.
+ * @summary Invite Amt Account Link
+ * @param {AmtAccountLink} amtAccountLink
+ * @param {string | null} [authorization]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public inviteAmtAccountLinkAuthLinkAmtInvitePost(amtAccountLink: AmtAccountLink, authorization?: string | null, options?: RawAxiosRequestConfig) {
+ return AuthApiFp(this.configuration).inviteAmtAccountLinkAuthLinkAmtInvitePost(amtAccountLink, authorization, options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * Link an AMT account and login.
+ * @summary Link Amt Account
+ * @param {AmtAccountLink} amtAccountLink
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public linkAmtAccountAuthLinkAmtRequestPost(amtAccountLink: AmtAccountLink, options?: RawAxiosRequestConfig) {
+ return AuthApiFp(this.configuration).linkAmtAccountAuthLinkAmtRequestPost(amtAccountLink, options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * Create a magic link.
+ * @summary Request Magic Link
+ * @param {AccountLogin} accountLogin
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public requestMagicLinkAuthMagicLinkRequestPost(accountLogin: AccountLogin, options?: RawAxiosRequestConfig) {
+ return AuthApiFp(this.configuration).requestMagicLinkAuthMagicLinkRequestPost(accountLogin, options).then((request) => request(this.axios, this.basePath));
+ }
+}
+
+
+
+/**
+ * DefaultApi - axios parameter creator
+ */
+export const DefaultApiAxiosParamCreator = function (configuration?: Configuration) {
+ return {
+ /**
+ *
+ * @summary Return Nothing
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ returnNothingFaviconIcoGet: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
+ const localVarPath = `/favicon.ico`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ localVarHeaderParameter['Accept'] = 'application/json';
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ *
+ * @summary Return Nothing
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ returnNothingRobotsTxtGet: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
+ const localVarPath = `/robots.txt`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ localVarHeaderParameter['Accept'] = 'application/json';
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ *
+ * @summary Return Nothing
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ returnNothingSitemapXmlGet: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
+ const localVarPath = `/sitemap.xml`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ localVarHeaderParameter['Accept'] = 'application/json';
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ *
+ * @summary Serve React App
+ * @param {string} fullPath
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ serveReactAppFullPathGet: async (fullPath: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
+ // verify required parameter 'fullPath' is not null or undefined
+ assertParamExists('serveReactAppFullPathGet', 'fullPath', fullPath)
+ const localVarPath = `/{full_path}`
+ .replace('{full_path}', encodeURIComponent(String(fullPath)));
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ localVarHeaderParameter['Accept'] = 'application/json';
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ }
+};
+
+/**
+ * DefaultApi - functional programming interface
+ */
+export const DefaultApiFp = function(configuration?: Configuration) {
+ const localVarAxiosParamCreator = DefaultApiAxiosParamCreator(configuration)
+ return {
+ /**
+ *
+ * @summary Return Nothing
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async returnNothingFaviconIcoGet(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<{ [key: string]: any | null; }>> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.returnNothingFaviconIcoGet(options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['DefaultApi.returnNothingFaviconIcoGet']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ *
+ * @summary Return Nothing
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async returnNothingRobotsTxtGet(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<{ [key: string]: any | null; }>> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.returnNothingRobotsTxtGet(options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['DefaultApi.returnNothingRobotsTxtGet']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ *
+ * @summary Return Nothing
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async returnNothingSitemapXmlGet(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<{ [key: string]: any | null; }>> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.returnNothingSitemapXmlGet(options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['DefaultApi.returnNothingSitemapXmlGet']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ *
+ * @summary Serve React App
+ * @param {string} fullPath
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async serveReactAppFullPathGet(fullPath: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<any>> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.serveReactAppFullPathGet(fullPath, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['DefaultApi.serveReactAppFullPathGet']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ }
+};
+
+/**
+ * DefaultApi - factory interface
+ */
+export const DefaultApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
+ const localVarFp = DefaultApiFp(configuration)
+ return {
+ /**
+ *
+ * @summary Return Nothing
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ returnNothingFaviconIcoGet(options?: RawAxiosRequestConfig): AxiosPromise<{ [key: string]: any | null; }> {
+ return localVarFp.returnNothingFaviconIcoGet(options).then((request) => request(axios, basePath));
+ },
+ /**
+ *
+ * @summary Return Nothing
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ returnNothingRobotsTxtGet(options?: RawAxiosRequestConfig): AxiosPromise<{ [key: string]: any | null; }> {
+ return localVarFp.returnNothingRobotsTxtGet(options).then((request) => request(axios, basePath));
+ },
+ /**
+ *
+ * @summary Return Nothing
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ returnNothingSitemapXmlGet(options?: RawAxiosRequestConfig): AxiosPromise<{ [key: string]: any | null; }> {
+ return localVarFp.returnNothingSitemapXmlGet(options).then((request) => request(axios, basePath));
+ },
+ /**
+ *
+ * @summary Serve React App
+ * @param {string} fullPath
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ serveReactAppFullPathGet(fullPath: string, options?: RawAxiosRequestConfig): AxiosPromise<any> {
+ return localVarFp.serveReactAppFullPathGet(fullPath, options).then((request) => request(axios, basePath));
+ },
+ };
+};
+
+/**
+ * DefaultApi - object-oriented interface
+ */
+export class DefaultApi extends BaseAPI {
+ /**
+ *
+ * @summary Return Nothing
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public returnNothingFaviconIcoGet(options?: RawAxiosRequestConfig) {
+ return DefaultApiFp(this.configuration).returnNothingFaviconIcoGet(options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ *
+ * @summary Return Nothing
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public returnNothingRobotsTxtGet(options?: RawAxiosRequestConfig) {
+ return DefaultApiFp(this.configuration).returnNothingRobotsTxtGet(options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ *
+ * @summary Return Nothing
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public returnNothingSitemapXmlGet(options?: RawAxiosRequestConfig) {
+ return DefaultApiFp(this.configuration).returnNothingSitemapXmlGet(options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ *
+ * @summary Serve React App
+ * @param {string} fullPath
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public serveReactAppFullPathGet(fullPath: string, options?: RawAxiosRequestConfig) {
+ return DefaultApiFp(this.configuration).serveReactAppFullPathGet(fullPath, options).then((request) => request(this.axios, this.basePath));
+ }
+}
+
+
+
+/**
+ * WalletApi - axios parameter creator
+ */
+export const WalletApiAxiosParamCreator = function (configuration?: Configuration) {
+ return {
+ /**
+ *
+ * @summary Cashout Postback
+ * @param {CashoutPostback} cashoutPostback
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ cashoutPostbackWalletCashoutPostbackPost: async (cashoutPostback: CashoutPostback, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
+ // verify required parameter 'cashoutPostback' is not null or undefined
+ assertParamExists('cashoutPostbackWalletCashoutPostbackPost', 'cashoutPostback', cashoutPostback)
+ const localVarPath = `/wallet/cashout/postback/`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ localVarHeaderParameter['Content-Type'] = 'application/json';
+ localVarHeaderParameter['Accept'] = 'application/json';
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+ localVarRequestOptions.data = serializeDataIfNeeded(cashoutPostback, localVarRequestOptions, configuration)
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ *
+ * @summary Confirm Cashout
+ * @param {CashoutConfirmation} cashoutConfirmation
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ confirmCashoutWalletCashoutConfirmPost: async (cashoutConfirmation: CashoutConfirmation, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
+ // verify required parameter 'cashoutConfirmation' is not null or undefined
+ assertParamExists('confirmCashoutWalletCashoutConfirmPost', 'cashoutConfirmation', cashoutConfirmation)
+ const localVarPath = `/wallet/cashout/confirm/`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication HTTPBearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+ localVarHeaderParameter['Content-Type'] = 'application/json';
+ localVarHeaderParameter['Accept'] = 'application/json';
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+ localVarRequestOptions.data = serializeDataIfNeeded(cashoutConfirmation, localVarRequestOptions, configuration)
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * Email the authenticated user a link confirming the requested amount.
+ * @summary Request Cashout
+ * @param {CashoutRequest} cashoutRequest
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ requestCashoutWalletCashoutRequestPost: async (cashoutRequest: CashoutRequest, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
+ // verify required parameter 'cashoutRequest' is not null or undefined
+ assertParamExists('requestCashoutWalletCashoutRequestPost', 'cashoutRequest', cashoutRequest)
+ const localVarPath = `/wallet/cashout/request/`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication HTTPBearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+ localVarHeaderParameter['Content-Type'] = 'application/json';
+ localVarHeaderParameter['Accept'] = 'application/json';
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+ localVarRequestOptions.data = serializeDataIfNeeded(cashoutRequest, localVarRequestOptions, configuration)
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ }
+};
+
+/**
+ * WalletApi - functional programming interface
+ */
+export const WalletApiFp = function(configuration?: Configuration) {
+ const localVarAxiosParamCreator = WalletApiAxiosParamCreator(configuration)
+ return {
+ /**
+ *
+ * @summary Cashout Postback
+ * @param {CashoutPostback} cashoutPostback
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async cashoutPostbackWalletCashoutPostbackPost(cashoutPostback: CashoutPostback, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.cashoutPostbackWalletCashoutPostbackPost(cashoutPostback, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['WalletApi.cashoutPostbackWalletCashoutPostbackPost']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ *
+ * @summary Confirm Cashout
+ * @param {CashoutConfirmation} cashoutConfirmation
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async confirmCashoutWalletCashoutConfirmPost(cashoutConfirmation: CashoutConfirmation, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CashoutRequestInfo>> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.confirmCashoutWalletCashoutConfirmPost(cashoutConfirmation, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['WalletApi.confirmCashoutWalletCashoutConfirmPost']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * Email the authenticated user a link confirming the requested amount.
+ * @summary Request Cashout
+ * @param {CashoutRequest} cashoutRequest
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async requestCashoutWalletCashoutRequestPost(cashoutRequest: CashoutRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<{ [key: string]: string | null; }>> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.requestCashoutWalletCashoutRequestPost(cashoutRequest, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['WalletApi.requestCashoutWalletCashoutRequestPost']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ }
+};
+
+/**
+ * WalletApi - factory interface
+ */
+export const WalletApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
+ const localVarFp = WalletApiFp(configuration)
+ return {
+ /**
+ *
+ * @summary Cashout Postback
+ * @param {CashoutPostback} cashoutPostback
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ cashoutPostbackWalletCashoutPostbackPost(cashoutPostback: CashoutPostback, options?: RawAxiosRequestConfig): AxiosPromise<void> {
+ return localVarFp.cashoutPostbackWalletCashoutPostbackPost(cashoutPostback, options).then((request) => request(axios, basePath));
+ },
+ /**
+ *
+ * @summary Confirm Cashout
+ * @param {CashoutConfirmation} cashoutConfirmation
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ confirmCashoutWalletCashoutConfirmPost(cashoutConfirmation: CashoutConfirmation, options?: RawAxiosRequestConfig): AxiosPromise<CashoutRequestInfo> {
+ return localVarFp.confirmCashoutWalletCashoutConfirmPost(cashoutConfirmation, options).then((request) => request(axios, basePath));
+ },
+ /**
+ * Email the authenticated user a link confirming the requested amount.
+ * @summary Request Cashout
+ * @param {CashoutRequest} cashoutRequest
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ requestCashoutWalletCashoutRequestPost(cashoutRequest: CashoutRequest, options?: RawAxiosRequestConfig): AxiosPromise<{ [key: string]: string | null; }> {
+ return localVarFp.requestCashoutWalletCashoutRequestPost(cashoutRequest, options).then((request) => request(axios, basePath));
+ },
+ };
+};
+
+/**
+ * WalletApi - object-oriented interface
+ */
+export class WalletApi extends BaseAPI {
+ /**
+ *
+ * @summary Cashout Postback
+ * @param {CashoutPostback} cashoutPostback
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public cashoutPostbackWalletCashoutPostbackPost(cashoutPostback: CashoutPostback, options?: RawAxiosRequestConfig) {
+ return WalletApiFp(this.configuration).cashoutPostbackWalletCashoutPostbackPost(cashoutPostback, options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ *
+ * @summary Confirm Cashout
+ * @param {CashoutConfirmation} cashoutConfirmation
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public confirmCashoutWalletCashoutConfirmPost(cashoutConfirmation: CashoutConfirmation, options?: RawAxiosRequestConfig) {
+ return WalletApiFp(this.configuration).confirmCashoutWalletCashoutConfirmPost(cashoutConfirmation, options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * Email the authenticated user a link confirming the requested amount.
+ * @summary Request Cashout
+ * @param {CashoutRequest} cashoutRequest
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ public requestCashoutWalletCashoutRequestPost(cashoutRequest: CashoutRequest, options?: RawAxiosRequestConfig) {
+ return WalletApiFp(this.configuration).requestCashoutWalletCashoutRequestPost(cashoutRequest, options).then((request) => request(this.axios, this.basePath));
+ }
+}
+
+
+
diff --git a/jb-ui/src/api_jb/base.ts b/jb-ui/src/api_jb/base.ts
new file mode 100644
index 0000000..28b4484
--- /dev/null
+++ b/jb-ui/src/api_jb/base.ts
@@ -0,0 +1,62 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * jb
+ * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+import type { Configuration } from './configuration';
+// Some imports not used depending on template conditions
+// @ts-ignore
+import type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from 'axios';
+import globalAxios from 'axios';
+
+export const BASE_PATH = "https://jamesbillings67.com".replace(/\/+$/, "");
+
+export const COLLECTION_FORMATS = {
+ csv: ",",
+ ssv: " ",
+ tsv: "\t",
+ pipes: "|",
+};
+
+export interface RequestArgs {
+ url: string;
+ options: RawAxiosRequestConfig;
+}
+
+export class BaseAPI {
+ protected configuration: Configuration | undefined;
+
+ constructor(configuration?: Configuration, protected basePath: string = BASE_PATH, protected axios: AxiosInstance = globalAxios) {
+ if (configuration) {
+ this.configuration = configuration;
+ this.basePath = configuration.basePath ?? basePath;
+ }
+ }
+};
+
+export class RequiredError extends Error {
+ constructor(public field: string, msg?: string) {
+ super(msg);
+ this.name = "RequiredError"
+ }
+}
+
+interface ServerMap {
+ [key: string]: {
+ url: string,
+ description: string,
+ }[];
+}
+
+export const operationServerMap: ServerMap = {
+}
diff --git a/jb-ui/src/api_jb/common.ts b/jb-ui/src/api_jb/common.ts
new file mode 100644
index 0000000..30b51fe
--- /dev/null
+++ b/jb-ui/src/api_jb/common.ts
@@ -0,0 +1,127 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * jb
+ * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+import type { Configuration } from "./configuration";
+import type { RequestArgs } from "./base";
+import type { AxiosInstance, AxiosResponse } from 'axios';
+import { RequiredError } from "./base";
+
+export const DUMMY_BASE_URL = 'https://example.com'
+
+/**
+ *
+ * @throws {RequiredError}
+ */
+export const assertParamExists = function (functionName: string, paramName: string, paramValue: unknown) {
+ if (paramValue === null || paramValue === undefined) {
+ throw new RequiredError(paramName, `Required parameter ${paramName} was null or undefined when calling ${functionName}.`);
+ }
+}
+
+export const setApiKeyToObject = async function (object: any, keyParamName: string, configuration?: Configuration) {
+ if (configuration && configuration.apiKey) {
+ const localVarApiKeyValue = typeof configuration.apiKey === 'function'
+ ? await configuration.apiKey(keyParamName)
+ : await configuration.apiKey;
+ object[keyParamName] = localVarApiKeyValue;
+ }
+}
+
+export const setBasicAuthToObject = function (object: any, configuration?: Configuration) {
+ if (configuration && (configuration.username || configuration.password)) {
+ object["auth"] = { username: configuration.username, password: configuration.password };
+ }
+}
+
+export const setBearerAuthToObject = async function (object: any, configuration?: Configuration) {
+ if (configuration && configuration.accessToken) {
+ const accessToken = typeof configuration.accessToken === 'function'
+ ? await configuration.accessToken()
+ : await configuration.accessToken;
+ object["Authorization"] = "Bearer " + accessToken;
+ }
+}
+
+export const setOAuthToObject = async function (object: any, name: string, scopes: string[], configuration?: Configuration) {
+ if (configuration && configuration.accessToken) {
+ const localVarAccessTokenValue = typeof configuration.accessToken === 'function'
+ ? await configuration.accessToken(name, scopes)
+ : await configuration.accessToken;
+ object["Authorization"] = "Bearer " + localVarAccessTokenValue;
+ }
+}
+
+
+function setFlattenedQueryParams(urlSearchParams: URLSearchParams, parameter: any, key: string = ""): void {
+ if (parameter == null) return;
+ if (typeof parameter === "object") {
+ if (Array.isArray(parameter) || parameter instanceof Set) {
+ (parameter as any[]).forEach(item => setFlattenedQueryParams(urlSearchParams, item, key));
+ }
+ else {
+ Object.keys(parameter).forEach(currentKey =>
+ setFlattenedQueryParams(urlSearchParams, parameter[currentKey], `${key}${key !== '' ? '.' : ''}${currentKey}`)
+ );
+ }
+ }
+ else {
+ if (urlSearchParams.has(key)) {
+ urlSearchParams.append(key, parameter);
+ }
+ else {
+ urlSearchParams.set(key, parameter);
+ }
+ }
+}
+
+export const setSearchParams = function (url: URL, ...objects: any[]) {
+ const searchParams = new URLSearchParams(url.search);
+ setFlattenedQueryParams(searchParams, objects);
+ url.search = searchParams.toString();
+}
+
+/**
+ * JSON serialization helper function which replaces instances of unserializable types with serializable ones.
+ * This function will run for every key-value pair encountered by JSON.stringify while traversing an object.
+ * Converting a set to a string will return an empty object, so an intermediate conversion to an array is required.
+ */
+// @ts-ignore
+export const replaceWithSerializableTypeIfNeeded = function(key: string, value: any) {
+ if (value instanceof Set) {
+ return Array.from(value);
+ } else {
+ return value;
+ }
+}
+
+export const serializeDataIfNeeded = function (value: any, requestOptions: any, configuration?: Configuration) {
+ const nonString = typeof value !== 'string';
+ const needsSerialization = nonString && configuration && configuration.isJsonMime
+ ? configuration.isJsonMime(requestOptions.headers['Content-Type'])
+ : nonString;
+ return needsSerialization
+ ? JSON.stringify(value !== undefined ? value : {}, replaceWithSerializableTypeIfNeeded)
+ : (value || "");
+}
+
+export const toPathString = function (url: URL) {
+ return url.pathname + url.search + url.hash
+}
+
+export const createRequestFunction = function (axiosArgs: RequestArgs, globalAxios: AxiosInstance, BASE_PATH: string, configuration?: Configuration) {
+ return <T = unknown, R = AxiosResponse<T>>(axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH): Promise<R> => {
+ const axiosRequestArgs = {...axiosArgs.options, url: (axios.defaults.baseURL ? '' : configuration?.basePath ?? basePath) + axiosArgs.url};
+ return axios.request<T, R>(axiosRequestArgs) as Promise<R>;
+ };
+}
diff --git a/jb-ui/src/api_jb/configuration.ts b/jb-ui/src/api_jb/configuration.ts
new file mode 100644
index 0000000..e9555ba
--- /dev/null
+++ b/jb-ui/src/api_jb/configuration.ts
@@ -0,0 +1,121 @@
+/* tslint:disable */
+/**
+ * jb
+ * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+interface AWSv4Configuration {
+ options?: {
+ region?: string
+ service?: string
+ }
+ credentials?: {
+ accessKeyId?: string
+ secretAccessKey?: string,
+ sessionToken?: string
+ }
+}
+
+export interface ConfigurationParameters {
+ apiKey?: string | Promise<string> | ((name: string) => string) | ((name: string) => Promise<string>);
+ username?: string;
+ password?: string;
+ accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise<string>);
+ awsv4?: AWSv4Configuration;
+ basePath?: string;
+ serverIndex?: number;
+ baseOptions?: any;
+ formDataCtor?: new () => any;
+}
+
+export class Configuration {
+ /**
+ * parameter for apiKey security
+ * @param name security name
+ */
+ apiKey?: string | Promise<string> | ((name: string) => string) | ((name: string) => Promise<string>);
+ /**
+ * parameter for basic security
+ */
+ username?: string;
+ /**
+ * parameter for basic security
+ */
+ password?: string;
+ /**
+ * parameter for oauth2 security
+ * @param name security name
+ * @param scopes oauth2 scope
+ */
+ accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise<string>);
+ /**
+ * parameter for aws4 signature security
+ * @param {Object} AWS4Signature - AWS4 Signature security
+ * @param {string} options.region - aws region
+ * @param {string} options.service - name of the service.
+ * @param {string} credentials.accessKeyId - aws access key id
+ * @param {string} credentials.secretAccessKey - aws access key
+ * @param {string} credentials.sessionToken - aws session token
+ * @memberof Configuration
+ */
+ awsv4?: AWSv4Configuration;
+ /**
+ * override base path
+ */
+ basePath?: string;
+ /**
+ * override server index
+ */
+ serverIndex?: number;
+ /**
+ * base options for axios calls
+ */
+ baseOptions?: any;
+ /**
+ * The FormData constructor that will be used to create multipart form data
+ * requests. You can inject this here so that execution environments that
+ * do not support the FormData class can still run the generated client.
+ *
+ * @type {new () => FormData}
+ */
+ formDataCtor?: new () => any;
+
+ constructor(param: ConfigurationParameters = {}) {
+ this.apiKey = param.apiKey;
+ this.username = param.username;
+ this.password = param.password;
+ this.accessToken = param.accessToken;
+ this.awsv4 = param.awsv4;
+ this.basePath = param.basePath;
+ this.serverIndex = param.serverIndex;
+ this.baseOptions = {
+ ...param.baseOptions,
+ headers: {
+ ...param.baseOptions?.headers,
+ },
+ };
+ this.formDataCtor = param.formDataCtor;
+ }
+
+ /**
+ * Check if the given MIME is a JSON MIME.
+ * JSON MIME examples:
+ * application/json
+ * application/json; charset=UTF8
+ * APPLICATION/JSON
+ * application/vnd.company+json
+ * @param mime - MIME (Multipurpose Internet Mail Extensions)
+ * @return True if the given MIME is JSON, false otherwise.
+ */
+ public isJsonMime(mime: string): boolean {
+ const jsonMime: RegExp = /^(application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(;.*)?$/i;
+ return mime !== null && jsonMime.test(mime);
+ }
+}
diff --git a/jb-ui/src/api_jb/docs/APIApi.md b/jb-ui/src/api_jb/docs/APIApi.md
new file mode 100644
index 0000000..50d5065
--- /dev/null
+++ b/jb-ui/src/api_jb/docs/APIApi.md
@@ -0,0 +1,97 @@
+# APIApi
+
+All URIs are relative to *https://jamesbillings67.com*
+
+|Method | HTTP request | Description|
+|------------- | ------------- | -------------|
+|[**workDirectWorkDirectGet**](#workdirectworkdirectget) | **GET** /work/direct/ | Work Direct|
+|[**workWorkGet**](#workworkget) | **GET** /work/ | Work|
+
+# **workDirectWorkDirectGet**
+> string workDirectWorkDirectGet()
+
+View for direct work (not on AMT). Makes sure user is authenticated.
+
+### Example
+
+```typescript
+import {
+ APIApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new APIApi(configuration);
+
+const { status, data } = await apiInstance.workDirectWorkDirectGet();
+```
+
+### Parameters
+This endpoint does not have any parameters.
+
+
+### Return type
+
+**string**
+
+### Authorization
+
+[HTTPBearer](../README.md#HTTPBearer)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: text/html
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | Successful Response | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **workWorkGet**
+> string workWorkGet()
+
+HTML Page that the worker lands on in an iFrame. They can either be previewing the HIT, or have already accepted it.
+
+### Example
+
+```typescript
+import {
+ APIApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new APIApi(configuration);
+
+const { status, data } = await apiInstance.workWorkGet();
+```
+
+### Parameters
+This endpoint does not have any parameters.
+
+
+### Return type
+
+**string**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: text/html
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | Successful Response | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
diff --git a/jb-ui/src/api_jb/docs/AccountLogin.md b/jb-ui/src/api_jb/docs/AccountLogin.md
new file mode 100644
index 0000000..35e1404
--- /dev/null
+++ b/jb-ui/src/api_jb/docs/AccountLogin.md
@@ -0,0 +1,20 @@
+# AccountLogin
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**email** | **string** | | [default to undefined]
+
+## Example
+
+```typescript
+import { AccountLogin } from './api';
+
+const instance: AccountLogin = {
+ email,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/jb-ui/src/api_jb/docs/AmtAccountLink.md b/jb-ui/src/api_jb/docs/AmtAccountLink.md
new file mode 100644
index 0000000..58ced8b
--- /dev/null
+++ b/jb-ui/src/api_jb/docs/AmtAccountLink.md
@@ -0,0 +1,22 @@
+# AmtAccountLink
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**email** | **string** | | [default to undefined]
+**amt_worker_id** | **string** | | [default to undefined]
+
+## Example
+
+```typescript
+import { AmtAccountLink } from './api';
+
+const instance: AmtAccountLink = {
+ email,
+ amt_worker_id,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/jb-ui/src/api_jb/docs/AuthApi.md b/jb-ui/src/api_jb/docs/AuthApi.md
new file mode 100644
index 0000000..c483415
--- /dev/null
+++ b/jb-ui/src/api_jb/docs/AuthApi.md
@@ -0,0 +1,368 @@
+# AuthApi
+
+All URIs are relative to *https://jamesbillings67.com*
+
+|Method | HTTP request | Description|
+|------------- | ------------- | -------------|
+|[**deleteSessionAuthSessionDelete**](#deletesessionauthsessiondelete) | **DELETE** /auth/session/ | Delete Session|
+|[**exchangeAmtAccountLinkAuthLinkAmtExchangePost**](#exchangeamtaccountlinkauthlinkamtexchangepost) | **POST** /auth/link-amt/exchange/ | Exchange Amt Account Link|
+|[**exchangeMagicLinkAuthMagicLinkExchangePost**](#exchangemagiclinkauthmagiclinkexchangepost) | **POST** /auth/magic-link/exchange/ | Exchange Magic Link|
+|[**getSessionAuthSessionGet**](#getsessionauthsessionget) | **GET** /auth/session/ | Get Session|
+|[**inviteAmtAccountLinkAuthLinkAmtInvitePost**](#inviteamtaccountlinkauthlinkamtinvitepost) | **POST** /auth/link-amt/invite/ | Invite Amt Account Link|
+|[**linkAmtAccountAuthLinkAmtRequestPost**](#linkamtaccountauthlinkamtrequestpost) | **POST** /auth/link-amt/request/ | Link Amt Account|
+|[**requestMagicLinkAuthMagicLinkRequestPost**](#requestmagiclinkauthmagiclinkrequestpost) | **POST** /auth/magic-link/request/ | Request Magic Link|
+
+# **deleteSessionAuthSessionDelete**
+> deleteSessionAuthSessionDelete()
+
+
+### Example
+
+```typescript
+import {
+ AuthApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new AuthApi(configuration);
+
+const { status, data } = await apiInstance.deleteSessionAuthSessionDelete();
+```
+
+### Parameters
+This endpoint does not have any parameters.
+
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**204** | Successful Response | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **exchangeAmtAccountLinkAuthLinkAmtExchangePost**
+> exchangeAmtAccountLinkAuthLinkAmtExchangePost(magicLinkExchangeRequest)
+
+Validate the email link, then transition the bound AMT account.
+
+### Example
+
+```typescript
+import {
+ AuthApi,
+ Configuration,
+ MagicLinkExchangeRequest
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new AuthApi(configuration);
+
+let magicLinkExchangeRequest: MagicLinkExchangeRequest; //
+
+const { status, data } = await apiInstance.exchangeAmtAccountLinkAuthLinkAmtExchangePost(
+ magicLinkExchangeRequest
+);
+```
+
+### Parameters
+
+|Name | Type | Description | Notes|
+|------------- | ------------- | ------------- | -------------|
+| **magicLinkExchangeRequest** | **MagicLinkExchangeRequest**| | |
+
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**204** | Successful Response | - |
+|**422** | Validation Error | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **exchangeMagicLinkAuthMagicLinkExchangePost**
+> exchangeMagicLinkAuthMagicLinkExchangePost(magicLinkExchangeRequest)
+
+Exchange a magic link only after its landing page makes an explicit POST.
+
+### Example
+
+```typescript
+import {
+ AuthApi,
+ Configuration,
+ MagicLinkExchangeRequest
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new AuthApi(configuration);
+
+let magicLinkExchangeRequest: MagicLinkExchangeRequest; //
+
+const { status, data } = await apiInstance.exchangeMagicLinkAuthMagicLinkExchangePost(
+ magicLinkExchangeRequest
+);
+```
+
+### Parameters
+
+|Name | Type | Description | Notes|
+|------------- | ------------- | ------------- | -------------|
+| **magicLinkExchangeRequest** | **MagicLinkExchangeRequest**| | |
+
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**204** | Successful Response | - |
+|**422** | Validation Error | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **getSessionAuthSessionGet**
+> User getSessionAuthSessionGet()
+
+
+### Example
+
+```typescript
+import {
+ AuthApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new AuthApi(configuration);
+
+const { status, data } = await apiInstance.getSessionAuthSessionGet();
+```
+
+### Parameters
+This endpoint does not have any parameters.
+
+
+### Return type
+
+**User**
+
+### Authorization
+
+[HTTPBearer](../README.md#HTTPBearer)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | Successful Response | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **inviteAmtAccountLinkAuthLinkAmtInvitePost**
+> { [key: string]: string | null; } inviteAmtAccountLinkAuthLinkAmtInvitePost(amtAccountLink)
+
+Create a long-lived AMT account-link URL without sending an email.
+
+### Example
+
+```typescript
+import {
+ AuthApi,
+ Configuration,
+ AmtAccountLink
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new AuthApi(configuration);
+
+let amtAccountLink: AmtAccountLink; //
+let authorization: string; // (optional) (default to undefined)
+
+const { status, data } = await apiInstance.inviteAmtAccountLinkAuthLinkAmtInvitePost(
+ amtAccountLink,
+ authorization
+);
+```
+
+### Parameters
+
+|Name | Type | Description | Notes|
+|------------- | ------------- | ------------- | -------------|
+| **amtAccountLink** | **AmtAccountLink**| | |
+| **authorization** | [**string**] | | (optional) defaults to undefined|
+
+
+### Return type
+
+**{ [key: string]: string | null; }**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | Successful Response | - |
+|**422** | Validation Error | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **linkAmtAccountAuthLinkAmtRequestPost**
+> { [key: string]: string | null; } linkAmtAccountAuthLinkAmtRequestPost(amtAccountLink)
+
+Link an AMT account and login.
+
+### Example
+
+```typescript
+import {
+ AuthApi,
+ Configuration,
+ AmtAccountLink
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new AuthApi(configuration);
+
+let amtAccountLink: AmtAccountLink; //
+
+const { status, data } = await apiInstance.linkAmtAccountAuthLinkAmtRequestPost(
+ amtAccountLink
+);
+```
+
+### Parameters
+
+|Name | Type | Description | Notes|
+|------------- | ------------- | ------------- | -------------|
+| **amtAccountLink** | **AmtAccountLink**| | |
+
+
+### Return type
+
+**{ [key: string]: string | null; }**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | Successful Response | - |
+|**422** | Validation Error | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **requestMagicLinkAuthMagicLinkRequestPost**
+> { [key: string]: string | null; } requestMagicLinkAuthMagicLinkRequestPost(accountLogin)
+
+Create a magic link.
+
+### Example
+
+```typescript
+import {
+ AuthApi,
+ Configuration,
+ AccountLogin
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new AuthApi(configuration);
+
+let accountLogin: AccountLogin; //
+
+const { status, data } = await apiInstance.requestMagicLinkAuthMagicLinkRequestPost(
+ accountLogin
+);
+```
+
+### Parameters
+
+|Name | Type | Description | Notes|
+|------------- | ------------- | ------------- | -------------|
+| **accountLogin** | **AccountLogin**| | |
+
+
+### Return type
+
+**{ [key: string]: string | null; }**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | Successful Response | - |
+|**422** | Validation Error | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
diff --git a/jb-ui/src/api_jb/docs/CashoutConfirmation.md b/jb-ui/src/api_jb/docs/CashoutConfirmation.md
new file mode 100644
index 0000000..19d0027
--- /dev/null
+++ b/jb-ui/src/api_jb/docs/CashoutConfirmation.md
@@ -0,0 +1,20 @@
+# CashoutConfirmation
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**token** | **string** | | [default to undefined]
+
+## Example
+
+```typescript
+import { CashoutConfirmation } from './api';
+
+const instance: CashoutConfirmation = {
+ token,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/jb-ui/src/api_jb/docs/CashoutPostback.md b/jb-ui/src/api_jb/docs/CashoutPostback.md
new file mode 100644
index 0000000..f090447
--- /dev/null
+++ b/jb-ui/src/api_jb/docs/CashoutPostback.md
@@ -0,0 +1,20 @@
+# CashoutPostback
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**cashout_id** | **string** | | [default to undefined]
+
+## Example
+
+```typescript
+import { CashoutPostback } from './api';
+
+const instance: CashoutPostback = {
+ cashout_id,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/jb-ui/src/api_jb/docs/CashoutRequest.md b/jb-ui/src/api_jb/docs/CashoutRequest.md
new file mode 100644
index 0000000..1d63727
--- /dev/null
+++ b/jb-ui/src/api_jb/docs/CashoutRequest.md
@@ -0,0 +1,22 @@
+# CashoutRequest
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**amount** | **number** | Amount in USD cents | [default to undefined]
+**cashout_method_id** | **string** | Cashout method ID | [default to undefined]
+
+## Example
+
+```typescript
+import { CashoutRequest } from './api';
+
+const instance: CashoutRequest = {
+ amount,
+ cashout_method_id,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/jb-ui/src/api_jb/docs/CashoutRequestInfo.md b/jb-ui/src/api_jb/docs/CashoutRequestInfo.md
new file mode 100644
index 0000000..fd3f0a3
--- /dev/null
+++ b/jb-ui/src/api_jb/docs/CashoutRequestInfo.md
@@ -0,0 +1,37 @@
+# CashoutRequestInfo
+
+See models.thl.payout: PayoutEvent. We\'ve confused a CashOut and a Payout. This is used only in the API response.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **string** | Unique ID for this cashout. This may be NULL if the status is REJECTED or FAILED, which may happen if the request is invalid. | [default to undefined]
+**description** | **string** | This is the name of the cashout method. | [default to undefined]
+**message** | **string** | | [optional] [default to undefined]
+**status** | [**PayoutStatus**](PayoutStatus.md) | - &#x60;PENDING&#x60; &#x3D; PENDING - &#x60;APPROVED&#x60; &#x3D; APPROVED - &#x60;REJECTED&#x60; &#x3D; REJECTED - &#x60;CANCELLED&#x60; &#x3D; CANCELLED - &#x60;FAILED&#x60; &#x3D; FAILED - &#x60;COMPLETE&#x60; &#x3D; COMPLETE | [optional] [default to undefined]
+**transaction_info** | **{ [key: string]: any; }** | | [optional] [default to undefined]
+**product_id** | **string** | | [default to undefined]
+**product_user_id** | **string** | | [default to undefined]
+**payout_type** | [**PayoutType**](PayoutType.md) | - &#x60;PAYPAL&#x60; &#x3D; PAYPAL - &#x60;TANGO&#x60; &#x3D; TANGO - &#x60;TREMENDOUS&#x60; &#x3D; TREMENDOUS - &#x60;DWOLLA&#x60; &#x3D; DWOLLA - &#x60;ACH&#x60; &#x3D; ACH - &#x60;WIRE&#x60; &#x3D; WIRE - &#x60;CASH_IN_MAIL&#x60; &#x3D; CASH_IN_MAIL - &#x60;PRIZE&#x60; &#x3D; PRIZE - &#x60;AMT&#x60; &#x3D; AMT - &#x60;AMT_BONUS&#x60; &#x3D; AMT_BONUS - &#x60;AMT_ASSIGNMENT&#x60; &#x3D; AMT_HIT | [default to undefined]
+**amount** | **number** | The USDCent amount int. This cannot be 0 or negative | [default to undefined]
+
+## Example
+
+```typescript
+import { CashoutRequestInfo } from './api';
+
+const instance: CashoutRequestInfo = {
+ id,
+ description,
+ message,
+ status,
+ transaction_info,
+ product_id,
+ product_user_id,
+ payout_type,
+ amount,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/jb-ui/src/api_jb/docs/DefaultApi.md b/jb-ui/src/api_jb/docs/DefaultApi.md
new file mode 100644
index 0000000..eb8cf7e
--- /dev/null
+++ b/jb-ui/src/api_jb/docs/DefaultApi.md
@@ -0,0 +1,191 @@
+# DefaultApi
+
+All URIs are relative to *https://jamesbillings67.com*
+
+|Method | HTTP request | Description|
+|------------- | ------------- | -------------|
+|[**returnNothingFaviconIcoGet**](#returnnothingfaviconicoget) | **GET** /favicon.ico | Return Nothing|
+|[**returnNothingRobotsTxtGet**](#returnnothingrobotstxtget) | **GET** /robots.txt | Return Nothing|
+|[**returnNothingSitemapXmlGet**](#returnnothingsitemapxmlget) | **GET** /sitemap.xml | Return Nothing|
+|[**serveReactAppFullPathGet**](#servereactappfullpathget) | **GET** /{full_path} | Serve React App|
+
+# **returnNothingFaviconIcoGet**
+> { [key: string]: any | null; } returnNothingFaviconIcoGet()
+
+
+### Example
+
+```typescript
+import {
+ DefaultApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new DefaultApi(configuration);
+
+const { status, data } = await apiInstance.returnNothingFaviconIcoGet();
+```
+
+### Parameters
+This endpoint does not have any parameters.
+
+
+### Return type
+
+**{ [key: string]: any | null; }**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | Successful Response | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **returnNothingRobotsTxtGet**
+> { [key: string]: any | null; } returnNothingRobotsTxtGet()
+
+
+### Example
+
+```typescript
+import {
+ DefaultApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new DefaultApi(configuration);
+
+const { status, data } = await apiInstance.returnNothingRobotsTxtGet();
+```
+
+### Parameters
+This endpoint does not have any parameters.
+
+
+### Return type
+
+**{ [key: string]: any | null; }**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | Successful Response | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **returnNothingSitemapXmlGet**
+> { [key: string]: any | null; } returnNothingSitemapXmlGet()
+
+
+### Example
+
+```typescript
+import {
+ DefaultApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new DefaultApi(configuration);
+
+const { status, data } = await apiInstance.returnNothingSitemapXmlGet();
+```
+
+### Parameters
+This endpoint does not have any parameters.
+
+
+### Return type
+
+**{ [key: string]: any | null; }**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | Successful Response | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **serveReactAppFullPathGet**
+> any serveReactAppFullPathGet()
+
+
+### Example
+
+```typescript
+import {
+ DefaultApi,
+ Configuration
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new DefaultApi(configuration);
+
+let fullPath: string; // (default to undefined)
+
+const { status, data } = await apiInstance.serveReactAppFullPathGet(
+ fullPath
+);
+```
+
+### Parameters
+
+|Name | Type | Description | Notes|
+|------------- | ------------- | ------------- | -------------|
+| **fullPath** | [**string**] | | defaults to undefined|
+
+
+### Return type
+
+**any**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | Successful Response | - |
+|**422** | Validation Error | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
diff --git a/jb-ui/src/api_jb/docs/HTTPValidationError.md b/jb-ui/src/api_jb/docs/HTTPValidationError.md
new file mode 100644
index 0000000..7fe160d
--- /dev/null
+++ b/jb-ui/src/api_jb/docs/HTTPValidationError.md
@@ -0,0 +1,20 @@
+# HTTPValidationError
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**detail** | [**Array&lt;ValidationError&gt;**](ValidationError.md) | | [optional] [default to undefined]
+
+## Example
+
+```typescript
+import { HTTPValidationError } from './api';
+
+const instance: HTTPValidationError = {
+ detail,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/jb-ui/src/api_jb/docs/LocationInner.md b/jb-ui/src/api_jb/docs/LocationInner.md
new file mode 100644
index 0000000..5ef335b
--- /dev/null
+++ b/jb-ui/src/api_jb/docs/LocationInner.md
@@ -0,0 +1,18 @@
+# LocationInner
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+
+## Example
+
+```typescript
+import { LocationInner } from './api';
+
+const instance: LocationInner = {
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/jb-ui/src/api_jb/docs/MagicLinkExchangeRequest.md b/jb-ui/src/api_jb/docs/MagicLinkExchangeRequest.md
new file mode 100644
index 0000000..82d5b3f
--- /dev/null
+++ b/jb-ui/src/api_jb/docs/MagicLinkExchangeRequest.md
@@ -0,0 +1,20 @@
+# MagicLinkExchangeRequest
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**token** | **string** | | [default to undefined]
+
+## Example
+
+```typescript
+import { MagicLinkExchangeRequest } from './api';
+
+const instance: MagicLinkExchangeRequest = {
+ token,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/jb-ui/src/api_jb/docs/PayoutStatus.md b/jb-ui/src/api_jb/docs/PayoutStatus.md
new file mode 100644
index 0000000..c3259a6
--- /dev/null
+++ b/jb-ui/src/api_jb/docs/PayoutStatus.md
@@ -0,0 +1,19 @@
+# PayoutStatus
+
+The max size of the db field that holds this value is 20, so please don\'t add new values longer than that!
+
+## Enum
+
+* `Pending` (value: `'PENDING'`)
+
+* `Approved` (value: `'APPROVED'`)
+
+* `Rejected` (value: `'REJECTED'`)
+
+* `Cancelled` (value: `'CANCELLED'`)
+
+* `Failed` (value: `'FAILED'`)
+
+* `Complete` (value: `'COMPLETE'`)
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/jb-ui/src/api_jb/docs/PayoutType.md b/jb-ui/src/api_jb/docs/PayoutType.md
new file mode 100644
index 0000000..121e3cf
--- /dev/null
+++ b/jb-ui/src/api_jb/docs/PayoutType.md
@@ -0,0 +1,31 @@
+# PayoutType
+
+The method in which the requested payout is delivered.
+
+## Enum
+
+* `Paypal` (value: `'PAYPAL'`)
+
+* `Tango` (value: `'TANGO'`)
+
+* `Tremendous` (value: `'TREMENDOUS'`)
+
+* `Dwolla` (value: `'DWOLLA'`)
+
+* `Ach` (value: `'ACH'`)
+
+* `Wire` (value: `'WIRE'`)
+
+* `CashInMail` (value: `'CASH_IN_MAIL'`)
+
+* `Prize` (value: `'PRIZE'`)
+
+* `Amt` (value: `'AMT'`)
+
+* `AmtBonus` (value: `'AMT_BONUS'`)
+
+* `AmtAssignment` (value: `'AMT_ASSIGNMENT'`)
+
+* `AmtAssignment2` (value: `'AMT_ASSIGNMENT'`)
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/jb-ui/src/api_jb/docs/User.md b/jb-ui/src/api_jb/docs/User.md
new file mode 100644
index 0000000..b35e0b7
--- /dev/null
+++ b/jb-ui/src/api_jb/docs/User.md
@@ -0,0 +1,27 @@
+# User
+
+A user that has been authenticated and exists in THL
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**email** | **string** | | [default to undefined]
+**display_name** | **string** | | [optional] [default to undefined]
+**blocked** | **boolean** | | [optional] [default to false]
+**product_user_id** | **string** | | [readonly] [default to undefined]
+
+## Example
+
+```typescript
+import { User } from './api';
+
+const instance: User = {
+ email,
+ display_name,
+ blocked,
+ product_user_id,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/jb-ui/src/api_jb/docs/ValidationError.md b/jb-ui/src/api_jb/docs/ValidationError.md
new file mode 100644
index 0000000..7ab752a
--- /dev/null
+++ b/jb-ui/src/api_jb/docs/ValidationError.md
@@ -0,0 +1,24 @@
+# ValidationError
+
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**loc** | [**Array&lt;LocationInner&gt;**](LocationInner.md) | | [default to undefined]
+**msg** | **string** | | [default to undefined]
+**type** | **string** | | [default to undefined]
+
+## Example
+
+```typescript
+import { ValidationError } from './api';
+
+const instance: ValidationError = {
+ loc,
+ msg,
+ type,
+};
+```
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
diff --git a/jb-ui/src/api_jb/docs/WalletApi.md b/jb-ui/src/api_jb/docs/WalletApi.md
new file mode 100644
index 0000000..4fd7389
--- /dev/null
+++ b/jb-ui/src/api_jb/docs/WalletApi.md
@@ -0,0 +1,167 @@
+# WalletApi
+
+All URIs are relative to *https://jamesbillings67.com*
+
+|Method | HTTP request | Description|
+|------------- | ------------- | -------------|
+|[**cashoutPostbackWalletCashoutPostbackPost**](#cashoutpostbackwalletcashoutpostbackpost) | **POST** /wallet/cashout/postback/ | Cashout Postback|
+|[**confirmCashoutWalletCashoutConfirmPost**](#confirmcashoutwalletcashoutconfirmpost) | **POST** /wallet/cashout/confirm/ | Confirm Cashout|
+|[**requestCashoutWalletCashoutRequestPost**](#requestcashoutwalletcashoutrequestpost) | **POST** /wallet/cashout/request/ | Request Cashout|
+
+# **cashoutPostbackWalletCashoutPostbackPost**
+> cashoutPostbackWalletCashoutPostbackPost(cashoutPostback)
+
+
+### Example
+
+```typescript
+import {
+ WalletApi,
+ Configuration,
+ CashoutPostback
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new WalletApi(configuration);
+
+let cashoutPostback: CashoutPostback; //
+
+const { status, data } = await apiInstance.cashoutPostbackWalletCashoutPostbackPost(
+ cashoutPostback
+);
+```
+
+### Parameters
+
+|Name | Type | Description | Notes|
+|------------- | ------------- | ------------- | -------------|
+| **cashoutPostback** | **CashoutPostback**| | |
+
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**204** | Successful Response | - |
+|**422** | Validation Error | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **confirmCashoutWalletCashoutConfirmPost**
+> CashoutRequestInfo confirmCashoutWalletCashoutConfirmPost(cashoutConfirmation)
+
+
+### Example
+
+```typescript
+import {
+ WalletApi,
+ Configuration,
+ CashoutConfirmation
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new WalletApi(configuration);
+
+let cashoutConfirmation: CashoutConfirmation; //
+
+const { status, data } = await apiInstance.confirmCashoutWalletCashoutConfirmPost(
+ cashoutConfirmation
+);
+```
+
+### Parameters
+
+|Name | Type | Description | Notes|
+|------------- | ------------- | ------------- | -------------|
+| **cashoutConfirmation** | **CashoutConfirmation**| | |
+
+
+### Return type
+
+**CashoutRequestInfo**
+
+### Authorization
+
+[HTTPBearer](../README.md#HTTPBearer)
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | Successful Response | - |
+|**422** | Validation Error | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **requestCashoutWalletCashoutRequestPost**
+> { [key: string]: string | null; } requestCashoutWalletCashoutRequestPost(cashoutRequest)
+
+Email the authenticated user a link confirming the requested amount.
+
+### Example
+
+```typescript
+import {
+ WalletApi,
+ Configuration,
+ CashoutRequest
+} from './api';
+
+const configuration = new Configuration();
+const apiInstance = new WalletApi(configuration);
+
+let cashoutRequest: CashoutRequest; //
+
+const { status, data } = await apiInstance.requestCashoutWalletCashoutRequestPost(
+ cashoutRequest
+);
+```
+
+### Parameters
+
+|Name | Type | Description | Notes|
+|------------- | ------------- | ------------- | -------------|
+| **cashoutRequest** | **CashoutRequest**| | |
+
+
+### Return type
+
+**{ [key: string]: string | null; }**
+
+### Authorization
+
+[HTTPBearer](../README.md#HTTPBearer)
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+|**200** | Successful Response | - |
+|**422** | Validation Error | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
diff --git a/jb-ui/src/api_jb/git_push.sh b/jb-ui/src/api_jb/git_push.sh
new file mode 100644
index 0000000..a35991c
--- /dev/null
+++ b/jb-ui/src/api_jb/git_push.sh
@@ -0,0 +1,54 @@
+#!/bin/sh
+# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
+#
+# Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl "minor update" "gitlab.com"
+
+git_user_id=$1
+git_repo_id=$2
+release_note=$3
+git_host=$4
+
+if [ -z "${git_host}" ]; then
+ git_host="github.com"
+ echo "[INFO] No command line input provided. Set \${git_host} to ${git_host}"
+fi
+
+if [ -z "${git_user_id}" ]; then
+ git_user_id="GIT_USER_ID"
+ echo "[INFO] No command line input provided. Set \${git_user_id} to ${git_user_id}"
+fi
+
+if [ -z "${git_repo_id}" ]; then
+ git_repo_id="GIT_REPO_ID"
+ echo "[INFO] No command line input provided. Set \${git_repo_id} to ${git_repo_id}"
+fi
+
+if [ -z "${release_note}" ]; then
+ release_note="Minor update"
+ echo "[INFO] No command line input provided. Set \${release_note} to ${release_note}"
+fi
+
+# Initialize the local directory as a Git repository
+git init
+
+# Adds the files in the local repository and stages them for commit.
+git add .
+
+# Commits the tracked changes and prepares them to be pushed to a remote repository.
+git commit -m "${release_note}"
+
+# Sets the new remote
+if [ -z "$(git remote)" ]; then # git remote not defined
+ if [ -z "${GIT_TOKEN:-}" ]; then
+ echo "[INFO] \${GIT_TOKEN} (environment variable) is not set. Using the git credential in your environment."
+ git remote add origin "https://${git_host}/${git_user_id}/${git_repo_id}.git"
+ else
+ git remote add origin "https://${git_user_id}:${GIT_TOKEN}@${git_host}/${git_user_id}/${git_repo_id}.git"
+ fi
+fi
+
+git pull origin master
+
+# Pushes (Forces) the changes in the local repository up to the remote repository
+echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git"
+git push origin master 2>&1 | grep -v 'To https'
diff --git a/jb-ui/src/api_jb/index.ts b/jb-ui/src/api_jb/index.ts
new file mode 100644
index 0000000..5ec9b6e
--- /dev/null
+++ b/jb-ui/src/api_jb/index.ts
@@ -0,0 +1,18 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * jb
+ * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+export * from "./api";
+export * from "./configuration";
+
diff --git a/jb-ui/src/api_jb/openapi.json b/jb-ui/src/api_jb/openapi.json
new file mode 100644
index 0000000..6133ec2
--- /dev/null
+++ b/jb-ui/src/api_jb/openapi.json
@@ -0,0 +1 @@
+{"openapi":"3.1.0","info":{"title":"jb","version":"1.0.0"},"servers":[{"url":"https://jamesbillings67.com/","description":"Production environment"}],"paths":{"/work/":{"get":{"tags":["API"],"summary":"Work","description":"HTML Page that the worker lands on in an iFrame.\nThey can either be previewing the HIT, or have already accepted it.","operationId":"work_work__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/work/direct/":{"get":{"tags":["API"],"summary":"Work Direct","description":"View for direct work (not on AMT).\nMakes sure user is authenticated.","operationId":"work_direct_work_direct__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[{"HTTPBearer":[]}]}},"/auth/magic-link/request/":{"post":{"tags":["Auth"],"summary":"Request Magic Link","description":"Create a magic link.","operationId":"request_magic_link_auth_magic_link_request__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountLogin"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Request Magic Link Auth Magic Link Request Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/magic-link/exchange/":{"post":{"tags":["Auth"],"summary":"Exchange Magic Link","description":"Exchange a magic link only after its landing page makes an explicit POST.","operationId":"exchange_magic_link_auth_magic_link_exchange__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MagicLinkExchangeRequest"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/link-amt/request/":{"post":{"tags":["Auth"],"summary":"Link Amt Account","description":"Link an AMT account and login.","operationId":"link_amt_account_auth_link_amt_request__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AmtAccountLink"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Link Amt Account Auth Link Amt Request Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/link-amt/invite/":{"post":{"tags":["Auth"],"summary":"Invite Amt Account Link","description":"Create a long-lived AMT account-link URL without sending an email.","operationId":"invite_amt_account_link_auth_link_amt_invite__post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AmtAccountLink"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Invite Amt Account Link Auth Link Amt Invite Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/link-amt/exchange/":{"post":{"tags":["Auth"],"summary":"Exchange Amt Account Link","description":"Validate the email link, then transition the bound AMT account.","operationId":"exchange_amt_account_link_auth_link_amt_exchange__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MagicLinkExchangeRequest"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/session/":{"get":{"tags":["Auth"],"summary":"Get Session","operationId":"get_session_auth_session__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}}},"security":[{"HTTPBearer":[]}]},"delete":{"tags":["Auth"],"summary":"Delete Session","operationId":"delete_session_auth_session__delete","responses":{"204":{"description":"Successful Response"}}}},"/wallet/cashout/request/":{"post":{"tags":["Wallet"],"summary":"Request Cashout","description":"Email the authenticated user a link confirming the requested amount.","operationId":"request_cashout_wallet_cashout_request__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CashoutRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Request Cashout Wallet Cashout Request Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/wallet/cashout/confirm/":{"post":{"tags":["Wallet"],"summary":"Confirm Cashout","operationId":"confirm_cashout_wallet_cashout_confirm__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CashoutConfirmation"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CashoutRequestInfo"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/wallet/cashout/postback/":{"post":{"tags":["Wallet"],"summary":"Cashout Postback","operationId":"cashout_postback_wallet_cashout_postback__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CashoutPostback"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/favicon.ico":{"get":{"summary":"Return Nothing","operationId":"return_nothing_favicon_ico_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Return Nothing Favicon Ico Get"}}}}}}},"/sitemap.xml":{"get":{"summary":"Return Nothing","operationId":"return_nothing_sitemap_xml_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Return Nothing Sitemap Xml Get"}}}}}}},"/robots.txt":{"get":{"summary":"Return Nothing","operationId":"return_nothing_robots_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Return Nothing Robots Txt Get"}}}}}}},"/{full_path}":{"get":{"summary":"Serve React App","operationId":"serve_react_app__full_path__get","parameters":[{"name":"full_path","in":"path","required":true,"schema":{"type":"string","title":"Full Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AccountLogin":{"properties":{"email":{"type":"string","format":"email","title":"Email"}},"type":"object","required":["email"],"title":"AccountLogin"},"AmtAccountLink":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"amt_worker_id":{"type":"string","maxLength":50,"minLength":3,"title":"Amt Worker Id"}},"additionalProperties":false,"type":"object","required":["email","amt_worker_id"],"title":"AmtAccountLink"},"CashoutConfirmation":{"properties":{"token":{"type":"string","minLength":1,"title":"Token"}},"additionalProperties":false,"type":"object","required":["token"],"title":"CashoutConfirmation"},"CashoutPostback":{"properties":{"cashout_id":{"type":"string","maxLength":32,"minLength":32,"title":"Cashout Id"}},"additionalProperties":false,"type":"object","required":["cashout_id"],"title":"CashoutPostback"},"CashoutRequest":{"properties":{"amount":{"type":"integer","minimum":0.0,"title":"Amount","description":"Amount in USD cents","gt":0,"le":10000},"cashout_method_id":{"type":"string","maxLength":32,"minLength":32,"title":"Cashout Method Id","description":"Cashout method ID"}},"additionalProperties":false,"type":"object","required":["amount","cashout_method_id"],"title":"CashoutRequest"},"CashoutRequestInfo":{"properties":{"id":{"anyOf":[{"type":"string","maxLength":32,"minLength":32},{"type":"null"}],"title":"Id","description":"Unique ID for this cashout. This may be NULL if the status is REJECTED or FAILED, which may happen if the request is invalid.","examples":["3ceb847aaf9f40f4bd15b2b5e083abf6"]},"description":{"type":"string","title":"Description","description":"This is the name of the cashout method.","examples":["Visa® Prepaid Card USD"]},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"status":{"anyOf":[{"$ref":"#/components/schemas/PayoutStatus"},{"type":"null"}],"description":" - `PENDING` = PENDING\n - `APPROVED` = APPROVED\n - `REJECTED` = REJECTED\n - `CANCELLED` = CANCELLED\n - `FAILED` = FAILED\n - `COMPLETE` = COMPLETE","default":"PENDING","examples":["PENDING"]},"transaction_info":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Transaction Info"},"product_id":{"type":"string","maxLength":32,"minLength":32,"title":"Product Id"},"product_user_id":{"type":"string","maxLength":128,"minLength":3,"title":"Product User Id"},"payout_type":{"$ref":"#/components/schemas/PayoutType","description":" - `PAYPAL` = PAYPAL\n - `TANGO` = TANGO\n - `TREMENDOUS` = TREMENDOUS\n - `DWOLLA` = DWOLLA\n - `ACH` = ACH\n - `WIRE` = WIRE\n - `CASH_IN_MAIL` = CASH_IN_MAIL\n - `PRIZE` = PRIZE\n - `AMT` = AMT\n - `AMT_BONUS` = AMT_BONUS\n - `AMT_ASSIGNMENT` = AMT_HIT","examples":["ACH"]},"amount":{"type":"integer","exclusiveMaximum":9.223372036854776e+18,"exclusiveMinimum":0.0,"title":"Amount","description":"The USDCent amount int. This cannot be 0 or negative","examples":[531]}},"type":"object","required":["id","description","product_id","product_user_id","payout_type","amount"],"title":"CashoutRequestInfo","description":"See models.thl.payout: PayoutEvent. We've confused a CashOut and a\nPayout. This is used only in the API response."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"MagicLinkExchangeRequest":{"properties":{"token":{"type":"string","minLength":1,"title":"Token"}},"additionalProperties":false,"type":"object","required":["token"],"title":"MagicLinkExchangeRequest"},"PayoutStatus":{"type":"string","enum":["PENDING","APPROVED","REJECTED","CANCELLED","FAILED","COMPLETE"],"title":"PayoutStatus","description":"The max size of the db field that holds this value is 20, so please\ndon't add new values longer than that!"},"PayoutType":{"type":"string","enum":["PAYPAL","TANGO","TREMENDOUS","DWOLLA","ACH","WIRE","CASH_IN_MAIL","PRIZE","AMT","AMT_BONUS","AMT_ASSIGNMENT","AMT_ASSIGNMENT"],"title":"PayoutType","description":"The method in which the requested payout is delivered."},"User":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"display_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Display Name"},"blocked":{"type":"boolean","title":"Blocked","default":false},"product_user_id":{"type":"string","title":"Product User Id","readOnly":true}},"type":"object","required":["email","product_user_id"],"title":"User","description":"A user that has been authenticated and exists in THL"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}} \ No newline at end of file
diff --git a/jb-ui/src/api_jb/openapitools.json b/jb-ui/src/api_jb/openapitools.json
new file mode 100644
index 0000000..8dd0d74
--- /dev/null
+++ b/jb-ui/src/api_jb/openapitools.json
@@ -0,0 +1,7 @@
+{
+ "$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json",
+ "spaces": 2,
+ "generator-cli": {
+ "version": "7.25.0"
+ }
+}