# Corrad AF 2024 API Platform - Complete API Endpoints Documentation This document provides a comprehensive list of all API endpoints available in the Corrad AF 2024 API Platform project. ## Table of Contents 1. [Authentication APIs](#authentication-apis) 2. [Business Logic APIs](#business-logic-apis) 3. [API Platform APIs](#api-platform-apis) 4. [Metabase Integration APIs](#metabase-integration-apis) 5. [Development Tools APIs](#development-tools-apis) - [User Management](#user-management) - [Role Management](#role-management) - [Menu Management](#menu-management) - [ORM & Database Management](#orm--database-management) - [Configuration Management](#configuration-management) - [API Management Tools](#api-management-tools) - [Content Management](#content-management) - [Lookup Data](#lookup-data) --- ## Authentication APIs ### POST `/api/auth/login` **Description:** Authenticate user and receive access/refresh tokens **Parameters:** - `username` (string, required): User's username - `password` (string, required): User's password **Response:** ```json { "statusCode": 200, "message": "Login success", "data": { "username": "user@example.com", "roles": ["admin", "user"] } } ``` ### GET `/api/auth/logout` **Description:** Logout user and clear authentication cookies ### GET `/api/auth/validate` **Description:** Validate current authentication token --- ## Business Logic APIs ### POST `/api/analyze-asnaf` **Description:** Analyze Asnaf profile using AI/OpenAI integration to determine eligibility and assistance recommendations **Parameters:** - `monthlyIncome` (string): Monthly income amount - `otherIncome` (string): Other income sources - `totalIncome` (string): Total income amount - `occupation` (string): Applicant's occupation - `maritalStatus` (string): Marital status - `dependents` (array): List of dependents **Response:** ```json { "hadKifayahPercentage": "75%", "kategoriAsnaf": "Miskin", "kategoriKeluarga": "Miskin (50-100% HK)", "cadanganKategori": "Miskin", "statusKelayakan": "Layak (Miskin)", "cadanganBantuan": [ {"nama": "Bantuan Kewangan Bulanan", "peratusan": "90%"}, {"nama": "Bantuan Makanan Asas", "peratusan": "75%"} ], "ramalanJangkaMasaPulih": "6 bulan", "rumusan": "Pemohon memerlukan perhatian segera." } ``` --- ## API Platform APIs ### POST `/api/api-platform/send-request` **Description:** Proxy HTTP requests through the platform with authentication and request/response handling **Parameters:** - `url` (string, required): Target URL to send request to - `method` (string): HTTP method (GET, POST, PUT, DELETE, etc.) - `headers` (array): Request headers - `params` (array): Query parameters - `auth` (object): Authentication configuration - `requestBody` (object): Request body configuration - `timeout` (number): Request timeout in milliseconds ### POST `/api/api-platform/oauth2/client-credentials` **Description:** Obtain OAuth2 access token using client credentials flow **Parameters:** - `client_id` (string, required): OAuth2 client ID - `client_secret` (string, required): OAuth2 client secret - `grant_type` (string, required): Grant type (client_credentials) - `scope` (string): Requested scopes ### POST `/api/api-platform/oauth2/exchange-code` **Description:** Exchange authorization code for access token in OAuth2 flow **Parameters:** - `code` (string, required): Authorization code - `client_id` (string, required): OAuth2 client ID - `client_secret` (string, required): OAuth2 client secret - `redirect_uri` (string, required): Redirect URI --- ## Metabase Integration APIs ### GET `/api/metabase/token` **Description:** Get authentication token for Metabase integration --- ## Development Tools APIs ### User Management #### GET `/api/devtool/user/list` **Description:** Get list of all users (excluding deleted) #### POST `/api/devtool/user/add` **Description:** Create a new user **Parameters:** - `userUsername` (string, required): Username - `userFullName` (string, required): Full name - `userEmail` (string, required): Email address - `userPhone` (string): Phone number - `userPassword` (string, required): Password - `roles` (array): Assigned roles #### PUT `/api/devtool/user/edit` **Description:** Update existing user **Parameters:** - `userID` (string, required): User ID - `userFullName` (string): Updated full name - `userEmail` (string): Updated email - `userPhone` (string): Updated phone - `roles` (array): Updated roles #### DELETE `/api/devtool/user/delete` **Description:** Soft delete user (mark as deleted) **Parameters:** - `userID` (string, required): User ID to delete ### Role Management #### GET `/api/devtool/role/list` **Description:** Get list of all roles #### POST `/api/devtool/role/add` **Description:** Create a new role **Parameters:** - `roleName` (string, required): Role name - `roleDescription` (string): Role description #### PUT `/api/devtool/role/edit` **Description:** Update existing role **Parameters:** - `roleID` (string, required): Role ID - `roleName` (string): Updated role name - `roleDescription` (string): Updated description #### DELETE `/api/devtool/role/delete` **Description:** Delete role **Parameters:** - `roleID` (string, required): Role ID to delete ### Menu Management #### GET `/api/devtool/menu/user-list` **Description:** Get menu items for users #### GET `/api/devtool/menu/role-list` **Description:** Get menu items for roles #### POST `/api/devtool/menu/add` **Description:** Add new menu item **Parameters:** - `title` (string, required): Menu item title - `path` (string, required): Menu item path - `icon` (string): Icon name - `parent` (string): Parent menu ID - `order` (number): Display order #### PUT `/api/devtool/menu/edit` **Description:** Edit existing menu item **Parameters:** - `id` (string, required): Menu item ID - `title` (string): Updated title - `path` (string): Updated path - `icon` (string): Updated icon #### DELETE `/api/devtool/menu/delete` **Description:** Delete menu item **Parameters:** - `id` (string, required): Menu item ID #### POST `/api/devtool/menu/overwrite-navigation` **Description:** Overwrite entire navigation structure **Parameters:** - `navigation` (array, required): New navigation structure #### POST `/api/devtool/menu/new-add` **Description:** New add menu functionality ### ORM & Database Management #### GET `/api/devtool/orm/schema` **Description:** Get database schema information #### GET `/api/devtool/orm/studio` **Description:** Access ORM studio interface #### GET `/api/devtool/orm/data/get` **Description:** Get data from specific table **Query Parameters:** - `table` (string, required): Table name - `limit` (number): Number of records to return #### GET `/api/devtool/orm/table/config` **Description:** Get table configuration settings #### POST `/api/devtool/orm/table/create` **Description:** Create new database table **Parameters:** - `tableName` (string, required): New table name - `columns` (array, required): Column definitions #### GET `/api/devtool/orm/table/modify/get` **Description:** Get table structure for modification **Query Parameters:** - `table` (string, required): Table name #### POST `/api/devtool/orm/table/modify` **Description:** Modify existing table structure **Parameters:** - `tableName` (string, required): Table to modify - `modifications` (object, required): Modification instructions #### DELETE `/api/devtool/orm/table/delete/{table}` **Description:** Delete table by name (dynamic route) **Path Parameters:** - `table` (string, required): Table name to delete ### Configuration Management #### GET `/api/devtool/config/site-settings` **Description:** Get/manage site settings #### GET `/api/devtool/config/env` **Description:** Get environment configuration #### POST `/api/devtool/config/upload-file` **Description:** Upload file to server **Body:** multipart/form-data - `file` (file, required): File to upload - `destination` (string): Upload destination path #### GET `/api/devtool/config/loading-logo` **Description:** Get/set loading logo configuration #### POST `/api/devtool/config/add-custom-theme` **Description:** Add custom theme configuration **Parameters:** - `themeName` (string, required): Theme name - `colors` (object): Color configuration - `fonts` (object): Font configuration ### API Management Tools #### GET `/api/devtool/api/list` **Description:** List all available APIs #### POST `/api/devtool/api/save` **Description:** Save API configuration **Parameters:** - `apiName` (string, required): API name - `endpoint` (string, required): API endpoint - `method` (string, required): HTTP method - `description` (string): API description - `parameters` (array): API parameters - `responses` (object): Response definitions #### POST `/api/devtool/api/linter` **Description:** Lint API code for errors and best practices **Parameters:** - `code` (string, required): Code to lint - `language` (string, required): Programming language #### POST `/api/devtool/api/prettier-format` **Description:** Format code using Prettier **Parameters:** - `code` (string, required): Code to format - `language` (string, required): Programming language #### GET `/api/devtool/api/file-code` **Description:** Get source code of API file **Query Parameters:** - `file` (string, required): File path ### Content Management #### Template Management ##### GET `/api/devtool/content/template/get-list` **Description:** Get list of available templates ##### GET `/api/devtool/content/template/list` **Description:** List all templates ##### POST `/api/devtool/content/template/import` **Description:** Import template **Parameters:** - `templateName` (string, required): Template name - `templateContent` (string, required): Template content - `templateType` (string, required): Template type ##### GET `/api/devtool/content/template/tag` **Description:** Get template tags #### Code Management ##### GET `/api/devtool/content/code/file-code` **Description:** Get source code of file **Query Parameters:** - `file` (string, required): File path ##### POST `/api/devtool/content/code/save` **Description:** Save code to file **Parameters:** - `file` (string, required): File path - `content` (string, required): File content ##### POST `/api/devtool/content/code/linter` **Description:** Lint code for errors **Parameters:** - `code` (string, required): Code to lint - `language` (string, required): Programming language ##### POST `/api/devtool/content/code/prettier-format` **Description:** Format code using Prettier **Parameters:** - `code` (string, required): Code to format - `language` (string, required): Programming language #### Canvas Management ##### GET `/api/devtool/content/canvas/file-code` **Description:** Get canvas file code **Query Parameters:** - `canvas` (string, required): Canvas identifier ### Lookup Data #### GET `/api/devtool/lookup/list` **Description:** Get lookup data list --- ## Base URL Configuration - **Development:** `http://localhost:3000` - **API Base Path:** `/api` ## Authentication Most endpoints require authentication via Bearer token obtained from the `/api/auth/login` endpoint. The token should be included in the Authorization header: ``` Authorization: Bearer ``` ## Response Format All APIs follow a consistent response format: ```json { "statusCode": 200, "message": "Success message", "data": { // Response data } } ``` ## Error Handling Error responses follow the same format with appropriate HTTP status codes: ```json { "statusCode": 400, "message": "Error message", "errors": { // Validation errors if applicable } } ``` ## Import Instructions To import the Postman collection: 1. Open Postman 2. Click "Import" button 3. Select "Upload Files" tab 4. Choose the `postman_collection.json` file 5. Click "Import" The collection includes: - Pre-configured environment variables - Automatic token management - Request examples with sample data - Organized folder structure for easy navigation ## Notes - All development tool APIs are intended for development and administrative purposes - The API Platform provides proxy functionality for external API calls - Business logic APIs integrate with external services like OpenAI - Database operations through ORM tools should be used with caution in production environments