diff --git a/src/api/models/Badge.ts b/src/api/models/Badge.ts
new file mode 100644
index 0000000000000000000000000000000000000000..50014a6bafe26372c8a1de0590202b0d0fdd9a13
--- /dev/null
+++ b/src/api/models/Badge.ts
@@ -0,0 +1,12 @@
+/* generated using openapi-typescript-codegen -- do not edit */
+/* istanbul ignore file */
+/* tslint:disable */
+/* eslint-disable */
+import type { BadgeUser } from './BadgeUser';
+export type Badge = {
+    id?: number;
+    badgeName?: string;
+    criteria?: string;
+    badgeUserList?: Array<BadgeUser>;
+};
+
diff --git a/src/api/models/BadgeUser.ts b/src/api/models/BadgeUser.ts
new file mode 100644
index 0000000000000000000000000000000000000000..46d6ec47b928849f1765ef5e0a15cca35567cfbb
--- /dev/null
+++ b/src/api/models/BadgeUser.ts
@@ -0,0 +1,10 @@
+/* generated using openapi-typescript-codegen -- do not edit */
+/* istanbul ignore file */
+/* tslint:disable */
+/* eslint-disable */
+import type { BadgeUserId } from './BadgeUserId';
+export type BadgeUser = {
+    badgeUserId?: BadgeUserId;
+    earnedAt?: string;
+};
+
diff --git a/src/api/models/BadgeUserId.ts b/src/api/models/BadgeUserId.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d89476aa54dcae9fad5ba96e9e7a6e2be2eb1c71
--- /dev/null
+++ b/src/api/models/BadgeUserId.ts
@@ -0,0 +1,11 @@
+/* generated using openapi-typescript-codegen -- do not edit */
+/* istanbul ignore file */
+/* tslint:disable */
+/* eslint-disable */
+import type { Badge } from './Badge';
+import type { User } from './User';
+export type BadgeUserId = {
+    badge?: Badge;
+    user?: User;
+};
+
diff --git a/src/api/models/BankAccountDTO.ts b/src/api/models/BankAccountDTO.ts
new file mode 100644
index 0000000000000000000000000000000000000000..b1ac2aac884d14d4e4a3241482e6861a8e91a7ab
--- /dev/null
+++ b/src/api/models/BankAccountDTO.ts
@@ -0,0 +1,9 @@
+/* generated using openapi-typescript-codegen -- do not edit */
+/* istanbul ignore file */
+/* tslint:disable */
+/* eslint-disable */
+export type BankAccountDTO = {
+    bban?: number;
+    bankAccountType?: string;
+};
+
diff --git a/src/api/models/Budget.ts b/src/api/models/Budget.ts
new file mode 100644
index 0000000000000000000000000000000000000000..6103ac46760fb282236f05a0ba77eb3a5031cf2f
--- /dev/null
+++ b/src/api/models/Budget.ts
@@ -0,0 +1,14 @@
+/* generated using openapi-typescript-codegen -- do not edit */
+/* istanbul ignore file */
+/* tslint:disable */
+/* eslint-disable */
+import type { User } from './User';
+export type Budget = {
+    id?: number;
+    user?: User;
+    createdAt?: string;
+    budgetName?: string;
+    budgetAmount?: number;
+    expenseAmount?: number;
+};
+
diff --git a/src/api/models/BudgetRequestDTO.ts b/src/api/models/BudgetRequestDTO.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d4800b3b9b4ad2d2f2ce04cc6ea2d2bedf1cd76e
--- /dev/null
+++ b/src/api/models/BudgetRequestDTO.ts
@@ -0,0 +1,10 @@
+/* generated using openapi-typescript-codegen -- do not edit */
+/* istanbul ignore file */
+/* tslint:disable */
+/* eslint-disable */
+export type BudgetRequestDTO = {
+    budgetName?: string;
+    budgetAmount?: number;
+    expenseAmount?: number;
+};
+
diff --git a/src/api/models/BudgetResponseDTO.ts b/src/api/models/BudgetResponseDTO.ts
new file mode 100644
index 0000000000000000000000000000000000000000..04a579845fbac1129b9d23bde7d31ed661ee5465
--- /dev/null
+++ b/src/api/models/BudgetResponseDTO.ts
@@ -0,0 +1,12 @@
+/* generated using openapi-typescript-codegen -- do not edit */
+/* istanbul ignore file */
+/* tslint:disable */
+/* eslint-disable */
+export type BudgetResponseDTO = {
+    id?: number;
+    budgetName?: string;
+    budgetAmount?: number;
+    expenseAmount?: number;
+    createdAt?: string;
+};
+
diff --git a/src/api/models/Configuration.ts b/src/api/models/Configuration.ts
new file mode 100644
index 0000000000000000000000000000000000000000..b932eb0ee7940f855a894f6b0117751b4d3e0156
--- /dev/null
+++ b/src/api/models/Configuration.ts
@@ -0,0 +1,23 @@
+/* generated using openapi-typescript-codegen -- do not edit */
+/* istanbul ignore file */
+/* tslint:disable */
+/* eslint-disable */
+export type Configuration = {
+    id?: number;
+    commitment?: Configuration.commitment;
+    experience?: Configuration.experience;
+    challengeTypes?: Array<'NO_COFFEE' | 'NO_CAR' | 'SHORTER_SHOWER' | 'SPEND_LESS_ON_FOOD' | 'BUY_USED_CLOTHES' | 'LESS_SHOPPING' | 'DROP_SUBSCRIPTION' | 'SELL_SOMETHING' | 'BUY_USED' | 'EAT_PACKED_LUNCH' | 'STOP_SHOPPING' | 'ZERO_SPENDING' | 'RENT_YOUR_STUFF' | 'MEATLESS' | 'SCREEN_TIME_LIMIT' | 'UNPLUGGED_ENTERTAINMENT'>;
+};
+export namespace Configuration {
+    export enum commitment {
+        LITTLE = 'LITTLE',
+        SOME = 'SOME',
+        MUCH = 'MUCH',
+    }
+    export enum experience {
+        NONE = 'NONE',
+        SOME = 'SOME',
+        EXPERT = 'EXPERT',
+    }
+}
+
diff --git a/src/api/models/ExpenseRequestDTO.ts b/src/api/models/ExpenseRequestDTO.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c4337af1a3b5617e25cff23b80f256957d9fc22b
--- /dev/null
+++ b/src/api/models/ExpenseRequestDTO.ts
@@ -0,0 +1,10 @@
+/* generated using openapi-typescript-codegen -- do not edit */
+/* istanbul ignore file */
+/* tslint:disable */
+/* eslint-disable */
+export type ExpenseRequestDTO = {
+    expenseId?: number;
+    description?: string;
+    amount?: number;
+};
+
diff --git a/src/api/models/ExpenseResponseDTO.ts b/src/api/models/ExpenseResponseDTO.ts
new file mode 100644
index 0000000000000000000000000000000000000000..35bcc0e0b2bc582aa8fb5c9bcd7756d9a213d1ce
--- /dev/null
+++ b/src/api/models/ExpenseResponseDTO.ts
@@ -0,0 +1,11 @@
+/* generated using openapi-typescript-codegen -- do not edit */
+/* istanbul ignore file */
+/* tslint:disable */
+/* eslint-disable */
+export type ExpenseResponseDTO = {
+    expenseId?: number;
+    budgetId?: number;
+    description?: string;
+    amount?: string;
+};
+
diff --git a/src/api/models/GrantedAuthority.ts b/src/api/models/GrantedAuthority.ts
new file mode 100644
index 0000000000000000000000000000000000000000..5fa268a0a717b478a8b6abcf5ccf8ccd2ecf5ae8
--- /dev/null
+++ b/src/api/models/GrantedAuthority.ts
@@ -0,0 +1,8 @@
+/* generated using openapi-typescript-codegen -- do not edit */
+/* istanbul ignore file */
+/* tslint:disable */
+/* eslint-disable */
+export type GrantedAuthority = {
+    authority?: string;
+};
+
diff --git a/src/api/models/Point.ts b/src/api/models/Point.ts
new file mode 100644
index 0000000000000000000000000000000000000000..971f5ff1cf23bbe7dff322dc589cafc38706497d
--- /dev/null
+++ b/src/api/models/Point.ts
@@ -0,0 +1,10 @@
+/* generated using openapi-typescript-codegen -- do not edit */
+/* istanbul ignore file */
+/* tslint:disable */
+/* eslint-disable */
+export type Point = {
+    id?: number;
+    currentPoints?: number;
+    totalEarnedPoints?: number;
+};
+
diff --git a/src/api/models/Streak.ts b/src/api/models/Streak.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d228c48e7a51d763f5ddcbd86d2143144c36b60a
--- /dev/null
+++ b/src/api/models/Streak.ts
@@ -0,0 +1,14 @@
+/* generated using openapi-typescript-codegen -- do not edit */
+/* istanbul ignore file */
+/* tslint:disable */
+/* eslint-disable */
+export type Streak = {
+    id?: number;
+    currentStreak?: number;
+    currentStreakCreatedAt?: string;
+    currentStreakUpdatedAt?: string;
+    highestStreak?: number;
+    highestStreakCreatedAt?: string;
+    highestStreakEndedAt?: string;
+};
+
diff --git a/src/api/models/User.ts b/src/api/models/User.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f95be63b5f8e5913320e441cfba5da7f60a9e46f
--- /dev/null
+++ b/src/api/models/User.ts
@@ -0,0 +1,38 @@
+/* generated using openapi-typescript-codegen -- do not edit */
+/* istanbul ignore file */
+/* tslint:disable */
+/* eslint-disable */
+import type { Account } from './Account';
+import type { Badge } from './Badge';
+import type { Configuration } from './Configuration';
+import type { GrantedAuthority } from './GrantedAuthority';
+import type { Point } from './Point';
+import type { Streak } from './Streak';
+export type User = {
+    id?: number;
+    firstName?: string;
+    lastName?: string;
+    email?: string;
+    checkingAccount?: Account;
+    savingsAccount?: Account;
+    password?: string;
+    createdAt?: string;
+    role?: User.role;
+    badges?: Array<Badge>;
+    point?: Point;
+    streak?: Streak;
+    configuration?: Configuration;
+    enabled?: boolean;
+    authorities?: Array<GrantedAuthority>;
+    username?: string;
+    accountNonExpired?: boolean;
+    credentialsNonExpired?: boolean;
+    accountNonLocked?: boolean;
+};
+export namespace User {
+    export enum role {
+        USER = 'USER',
+        ADMIN = 'ADMIN',
+    }
+}
+
diff --git a/src/api/services/ImageService.ts b/src/api/services/ImageService.ts
new file mode 100644
index 0000000000000000000000000000000000000000..672da2fa200bba757b8ad192a39ad131e51aee3c
--- /dev/null
+++ b/src/api/services/ImageService.ts
@@ -0,0 +1,48 @@
+/* generated using openapi-typescript-codegen -- do not edit */
+/* istanbul ignore file */
+/* tslint:disable */
+/* eslint-disable */
+import type { CancelablePromise } from '../core/CancelablePromise';
+import { OpenAPI } from '../core/OpenAPI';
+import { request as __request } from '../core/request';
+export class ImageService {
+    /**
+     * Upload an image
+     * Upload an image to the server
+     * @returns number Successfully uploaded the image
+     * @throws ApiError
+     */
+    public static uploadImage({
+        requestBody,
+    }: {
+        requestBody?: {
+            file: Blob;
+        },
+    }): CancelablePromise<number> {
+        return __request(OpenAPI, {
+            method: 'POST',
+            url: '/api/image/upload',
+            body: requestBody,
+            mediaType: 'application/json',
+        });
+    }
+    /**
+     * Retrieve an image
+     * Retrieve an image from the server
+     * @returns string Successfully retrieved the image
+     * @throws ApiError
+     */
+    public static getImage({
+        id,
+    }: {
+        id: number,
+    }): CancelablePromise<Array<string>> {
+        return __request(OpenAPI, {
+            method: 'GET',
+            url: '/api/image/{id}',
+            path: {
+                'id': id,
+            },
+        });
+    }
+}