diff --git a/package-lock.json b/package-lock.json
index 23ef980..5aa6fd1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -47,7 +47,6 @@
"reflect-metadata": "^0.1.13",
"rxjs": "^7.8.1",
"serverless": "4.17.0",
- "swagger-ui-express": "^5.0.0",
"tslib": "^2.8.1",
"uuid": "^13.0.0",
"yup": "^1.7.1",
@@ -75,6 +74,7 @@
"serverless-offline": "^14.4.0",
"source-map-support": "^0.5.21",
"supertest": "^6.3.4",
+ "swagger-ui-express": "^5.0.1",
"ts-jest": "^29.1.2",
"ts-loader": "^9.5.1",
"ts-node": "^10.9.2",
@@ -6564,6 +6564,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
"integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
+ "dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
@@ -8329,6 +8330,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz",
"integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==",
+ "dev": true,
"license": "MIT",
"peer": true,
"engines": {
@@ -8359,6 +8361,7 @@
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
"integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
+ "dev": true,
"license": "MIT",
"peer": true,
"engines": {
@@ -8369,6 +8372,7 @@
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz",
"integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==",
+ "dev": true,
"license": "MIT",
"peer": true,
"engines": {
@@ -9379,6 +9383,7 @@
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz",
"integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==",
+ "dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
@@ -9422,6 +9427,7 @@
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.1.tgz",
"integrity": "sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==",
+ "dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
@@ -9447,6 +9453,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
"integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
+ "dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
@@ -9468,6 +9475,7 @@
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz",
"integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==",
+ "dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
@@ -9485,6 +9493,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
"integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
+ "dev": true,
"license": "MIT",
"peer": true,
"engines": {
@@ -9495,6 +9504,7 @@
"version": "6.14.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz",
"integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
+ "dev": true,
"license": "BSD-3-Clause",
"peer": true,
"dependencies": {
@@ -9511,6 +9521,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz",
"integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==",
+ "dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
@@ -9527,6 +9538,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz",
"integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==",
+ "dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
@@ -9773,6 +9785,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz",
"integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==",
+ "dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
@@ -10016,6 +10029,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz",
"integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==",
+ "dev": true,
"license": "MIT",
"peer": true,
"engines": {
@@ -10864,6 +10878,7 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
"integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==",
+ "dev": true,
"license": "MIT",
"peer": true
},
@@ -12437,6 +12452,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz",
"integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==",
+ "dev": true,
"license": "MIT",
"peer": true,
"engines": {
@@ -12516,6 +12532,7 @@
"version": "1.54.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
"integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.6"
@@ -12525,6 +12542,7 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
"integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
+ "dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
@@ -12709,6 +12727,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
"integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
+ "dev": true,
"license": "MIT",
"peer": true,
"engines": {
@@ -12944,6 +12963,7 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
"license": "ISC",
"dependencies": {
"wrappy": "1"
@@ -14224,6 +14244,7 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz",
"integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==",
+ "dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
@@ -14241,6 +14262,7 @@
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz",
"integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==",
+ "dev": true,
"license": "MIT",
"peer": true,
"funding": {
@@ -14416,6 +14438,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz",
"integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==",
+ "dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
@@ -14454,6 +14477,7 @@
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz",
"integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==",
+ "dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
@@ -15012,6 +15036,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
"integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
+ "dev": true,
"license": "MIT",
"peer": true,
"engines": {
@@ -15256,6 +15281,7 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-5.0.1.tgz",
"integrity": "sha512-SrNU3RiBGTLLmFU8GIJdOdanJTl4TOmT27tt3bWWHppqYmAZ6IDuEuBvMU6nZq0zLEe6b/1rACXCgLZqO6ZfrA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"swagger-ui-dist": ">=5.0.0"
@@ -17031,6 +17057,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true,
"license": "ISC"
},
"node_modules/write-file-atomic": {
diff --git a/package.json b/package.json
index 12e888a..81e9c17 100644
--- a/package.json
+++ b/package.json
@@ -64,7 +64,6 @@
"reflect-metadata": "^0.1.13",
"rxjs": "^7.8.1",
"serverless": "4.17.0",
- "swagger-ui-express": "^5.0.0",
"tslib": "^2.8.1",
"uuid": "^13.0.0",
"yup": "^1.7.1",
@@ -92,6 +91,7 @@
"serverless-offline": "^14.4.0",
"source-map-support": "^0.5.21",
"supertest": "^6.3.4",
+ "swagger-ui-express": "^5.0.1",
"ts-jest": "^29.1.2",
"ts-loader": "^9.5.1",
"ts-node": "^10.9.2",
diff --git a/serverless.yml b/serverless.yml
index 3c8687e..7c0ee64 100644
--- a/serverless.yml
+++ b/serverless.yml
@@ -60,6 +60,8 @@ provider:
custom:
serverless-offline:
reloadHandler: true
+ httpPort: 3000
+ noPrependStageInUrl: true
build:
esbuild:
@@ -128,6 +130,7 @@ functions:
- ${file(./serverless/functions/minglaradmin.yml)}
- ${file(./serverless/functions/prepopulate.yml)}
- ${file(./serverless/functions/pqq.yml)}
+ - ${file(./serverless/functions/swagger.yml)}
plugins:
- serverless-offline
\ No newline at end of file
diff --git a/serverless.yml.backup b/serverless.yml.backup
deleted file mode 100644
index 8036020..0000000
--- a/serverless.yml.backup
+++ /dev/null
@@ -1,764 +0,0 @@
-service: minglarDev
-
-provider:
- name: aws
- runtime: nodejs22.x
- region: ap-south-1
- versionFunctions: false
- memorySize: 512 # Default memory for all functions (can be overridden per function)
- apiGateway:
- binaryMediaTypes:
- - '*/*'
- minimumCompressionSize: 1024
-
- environment:
- DATABASE_URL: ${env:DATABASE_URL}
- DB_USERNAME: ${env:DB_USERNAME}
- DB_PASSWORD: ${env:DB_PASSWORD}
- DB_DATABASE_NAME: ${env:DB_DATABASE_NAME}
- DB_HOSTNAME: ${env:DB_HOSTNAME}
- DB_PORT: ${env:DB_PORT}
- BY_PASS_EMAIL: ${env:BY_PASS_EMAIL}
- BYPASS_OTP: ${env:BYPASS_OTP}
- BREVO_EMAIL_API_KEY: ${env:BREVO_EMAIL_API_KEY}
- BREVO_API_BASEURL: ${env:BREVO_API_BASEURL}
- BREVO_FROM_EMAIL: ${env:BREVO_FROM_EMAIL}
- BREVO_SMTP_HOST: ${env:BREVO_SMTP_HOST}
- BREVO_SMTP_PORT: ${env:BREVO_SMTP_PORT}
- BREVO_SMTP_USER: ${env:BREVO_SMTP_USER}
- BREVO_SMTP_PASS: ${env:BREVO_SMTP_PASS}
- REFRESH_TOKEN_SECRET: ${env:REFRESH_TOKEN_SECRET}
- JWT_SECRET: ${env:JWT_SECRET}
- SALT_ROUNDS: ${env:SALT_ROUNDS}
- NODE_ENV: ${env:NODE_ENV}
- S3_BUCKET_NAME: ${env:S3_BUCKET_NAME}
- MINGLAR_ADMIN_NAME: ${env:MINGLAR_ADMIN_NAME}
- MINGLAR_ADMIN_EMAIL: ${env:MINGLAR_ADMIN_EMAIL}
-
- iam:
- role:
- statements:
- - Effect: Allow
- Action:
- - s3:PutObject
- - s3:GetObject
- - s3:DeleteObject
- - s3:ListBucket
- Resource:
- - 'arn:aws:s3:::${env:S3_BUCKET_NAME}'
- - 'arn:aws:s3:::${env:S3_BUCKET_NAME}/*'
-
-custom:
- esbuild:
- bundle: true
- minify: true
- sourcemap: false
- target: node20
- platform: node
- concurrency: 5
- external:
- - '@prisma/client'
- - '.prisma'
- exclude:
- - 'aws-sdk'
-
-package:
- individually: true
- patterns:
- - '!node_modules/**'
- - '!**/*.test.js'
- - '!**/*.spec.js'
- - '!**/test/**'
- - '!**/__tests__/**'
- - '!package-lock.json'
- - '!yarn.lock'
- - '!README.md'
- - '!*.config.js'
- - '!.git/**'
- - '!.github/**'
-
-functions:
- getHosts:
- handler: src/modules/host/handlers/host.handler
- memorySize: 384 # Lower memory for simple GET operations
- package:
- patterns:
- - 'src/modules/host/handlers/host.*'
- - 'src/modules/host/services/**'
- - 'src/common/**'
- - 'common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /host
- method: get
-
- verifyOtp:
- handler: src/modules/host/handlers/verifyOtp.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/host/handlers/verifyOtp.*'
- - 'src/modules/host/services/**'
- - 'src/common/**'
- - 'common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /host/verify-otp
- method: post
-
- loginForHost:
- handler: src/modules/host/handlers/loginForHost.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/host/handlers/loginForHost.*'
- - 'src/modules/host/services/**'
- - 'src/common/**'
- - 'common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /host/login
- method: post
-
- registrationOfHost:
- handler: src/modules/host/handlers/registration.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/host/handlers/registration.*'
- - 'src/modules/host/services/**'
- - 'src/common/**'
- - 'common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /host/registration
- method: post
-
- createPasswordForHost:
- handler: src/modules/host/handlers/createPassword.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/host/handlers/createPassword.*'
- - 'src/modules/host/services/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /host/create-password
- method: post
-
- addPaymentDetailsForHost:
- handler: src/modules/host/handlers/addPaymentDetails.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/host/handlers/addPaymentDetails.*'
- - 'src/modules/host/services/**'
- - 'src/common/**'
- - 'common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /host/add-payment-details
- method: post
-
- addActivity:
- handler: src/modules/host/handlers/addActivity.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/host/handlers/addActivity.*'
- - 'src/modules/host/services/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /host/add-activity
- method: post
-
- getHostById:
- handler: src/modules/host/handlers/getbyidhandler.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/host/handlers/getbyidhandler.*'
- - 'src/modules/host/services/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /host/getById
- method: get
-
- getPQQQuestionDetailsById:
- handler: src/modules/host/handlers/getByIdPQQ.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/host/handlers/getByIdPQQ.*'
- - 'src/modules/host/services/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /host/get-pqq-question-details
- method: get
-
- getLatestPQQQuestionDetails:
- handler: src/modules/host/handlers/getLatestQuestionDetailsPQQ.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/host/handlers/getLatestQuestionDetailsPQQ.*'
- - 'src/modules/host/services/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /host/get-latest-pqq-question-details
- method: get
-
- getActivityTypes:
- handler: src/modules/host/handlers/getActivity.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/host/handlers/getActivity.*'
- - 'src/modules/host/services/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /host/get-activity
- method: get
-
- acceptMinglarAgreement:
- handler: src/modules/host/handlers/acceptAgreement.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/host/handlers/acceptAgreement.*'
- - 'src/modules/host/services/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /host/accept-agreement
- method: patch
-
- getStepperInfo:
- handler: src/modules/host/handlers/getStepper.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/host/handlers/getStepper.*'
- - 'src/common/utils/handlers/safeHandler.*'
- - 'src/common/database/**'
- - 'src/modules/host/services/**'
- - 'common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /stepper
- method: get
-
- getSuggestion:
- handler: src/modules/minglaradmin/handlers/getSuggestion.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/minglaradmin/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /minglaradmin/get-suggestion
- method: get
-
- minglarRegistration:
- handler: src/modules/minglaradmin/handlers/registration.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/minglaradmin/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /minglaradmin/registration
- method: post
-
- minglarLoginForAdmin:
- handler: src/modules/minglaradmin/handlers/loginForMinglar.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/minglaradmin/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /minglaradmin/login
- method: post
-
- minglarCreatePassword:
- handler: src/modules/minglaradmin/handlers/createPassword.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/minglaradmin/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /minglaradmin/create-password
- method: post
-
- # Functions using AWS SDK - KEEP AS IS with higher memory
- updateMinglarProfile:
- handler: src/modules/minglaradmin/handlers/updateProfile.handler
- memorySize: 512 # Higher memory for AWS SDK operations
- timeout: 30
- package:
- patterns:
- - 'src/modules/minglaradmin/handlers/updateProfile.*'
- - 'src/modules/minglaradmin/services/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- - 'node_modules/@aws-sdk/**'
- - 'node_modules/@smithy/**'
- - 'node_modules/tslib/**'
- - 'node_modules/fast-xml-parser/**'
- events:
- - httpApi:
- path: /minglaradmin/update-profile
- method: patch
-
- prepopulateTeammate:
- handler: src/modules/minglaradmin/handlers/prepopulateTeammate.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/minglaradmin/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /minglaradmin/prepopulate-Roles
- method: get
-
- inviteTeammate:
- handler: src/modules/minglaradmin/handlers/inviteTeammate.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/minglaradmin/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /minglaradmin/invite-teammate
- method: post
-
- getAllHostApplication:
- handler: src/modules/minglaradmin/handlers/getAllHostApplication.handler
- memorySize: 512 # Higher memory for data-intensive operations
- package:
- patterns:
- - 'src/modules/minglaradmin/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /minglaradmin/get-all-host-applications-am
- method: get
-
- getAllOnboardingHostApplications:
- handler: src/modules/minglaradmin/handlers/getAllOnboardingHosts.handler
- memorySize: 512 # Higher memory for data-intensive operations
- package:
- patterns:
- - 'src/modules/minglaradmin/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /minglaradmin/get-all-host-applications-admin
- method: get
-
- getAllOnboardingHostApplications_New:
- handler: src/modules/minglaradmin/handlers/getOnboardingNewApplications.handler
- memorySize: 512 # Higher memory for data-intensive operations
- package:
- patterns:
- - 'src/modules/minglaradmin/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /minglaradmin/get-all-host-applications-admin-new
- method: get
-
- getAllInvitationDetails:
- handler: src/modules/minglaradmin/handlers/getAllInvitationDetails.handler
- memorySize: 512
- package:
- patterns:
- - 'src/modules/minglaradmin/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /minglaradmin/get-all-invitation-details
- method: get
-
- addSuggestion:
- handler: src/modules/minglaradmin/handlers/addSuggestion.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/minglaradmin/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /minglaradmin/add-suggestion
- method: post
-
- getAllCoadminAndAMDetails:
- handler: src/modules/minglaradmin/handlers/getAllCoadminAndAM.handler
- memorySize: 512
- package:
- patterns:
- - 'src/modules/minglaradmin/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /minglaradmin/get-all-coadmin-and-am-details
- method: get
-
- getAllInvitedCoadminAndAMDetails:
- handler: src/modules/minglaradmin/handlers/getAllInvitedCoadminAndAM.handler
- memorySize: 512
- package:
- patterns:
- - 'src/modules/minglaradmin/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /minglaradmin/get-all-invited-coadmin-and-am
- method: get
-
- getAllBankAndCurrencyDetails:
- handler: src/modules/prepopulate/handlers/getAllBankDetails.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/minglaradmin/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /prepopulate/get-all-bank-currency-details
- method: get
-
- getCityByState:
- handler: src/modules/prepopulate/handlers/getCityByState.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/prepopulate/handlers/getCityByState.*'
- - 'src/modules/prepopulate/services/**'
- - 'src/common/**'
- - 'common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /prepopulate/get-city-by-state
- method: get
-
- getBranchByBankXid:
- handler: src/modules/prepopulate/handlers/getBranchByBank.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/prepopulate/handlers/getBranchByBank.*'
- - 'src/modules/prepopulate/services/**'
- - 'src/common/**'
- - 'common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /prepopulate/get-branch-by-bank
- method: get
-
- getAllDocumentCountryStateCityDetails:
- handler: src/modules/prepopulate/handlers/getAllDocTypeWithCountryState.handler
- memorySize: 512
- package:
- patterns:
- - 'src/modules/minglaradmin/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /prepopulate/get-all-doc-country
- method: get
-
- getAllPqqQuesAns:
- handler: src/modules/prepopulate/handlers/getAllPQQQuesWithAns.handler
- memorySize: 512
- package:
- patterns:
- - 'src/modules/minglaradmin/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /prepopulate/get-all-pqq-ques-ans
- method: get
-
- getFrequenciesOfActivity:
- handler: src/modules/prepopulate/handlers/getAllFrequencies.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/minglaradmin/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /prepopulate/get-all-Frequencies
- method: get
-
- assignAMToHost:
- handler: src/modules/minglaradmin/handlers/assignAM.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/minglaradmin/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /minglaradmin/assign-am-to-host
- method: patch
-
- editAgreementDetails:
- handler: src/modules/minglaradmin/handlers/editAgreementDetails.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/minglaradmin/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /minglaradmin/edit-agreement-details
- method: patch
-
- acceptHostApplication:
- handler: src/modules/minglaradmin/handlers/acceptHostApplication.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/minglaradmin/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /minglaradmin/accept-host-application
- method: patch
-
- acceptHostApplicationMinglar:
- handler: src/modules/minglaradmin/handlers/acceptHostAppMinglar.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/minglaradmin/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /minglaradmin/accept-host-application-minglar
- method: patch
-
- rejectHostApplication:
- handler: src/modules/minglaradmin/handlers/rejectHostApplication.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/minglaradmin/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /minglaradmin/reject-host-application
- method: patch
-
- rejectHostApplicationAM:
- handler: src/modules/minglaradmin/handlers/rejectHostApplicationAM.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/minglaradmin/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- events:
- - httpApi:
- path: /minglaradmin/reject-host-application-am
- method: patch
-
- # Functions using AWS SDK and S3 - KEEP AS IS with higher memory
- addCompanyDetails:
- handler: src/modules/host/handlers/addCompanyDetails.handler
- memorySize: 512
- timeout: 30
- package:
- patterns:
- - 'src/modules/host/handlers/addCompanyDetails.*'
- - 'src/modules/host/services/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- # Only include specific AWS SDK modules needed for S3
- - 'node_modules/@aws-sdk/client-s3/**'
- - 'node_modules/@aws-sdk/s3-request-presigner/**'
- - 'node_modules/@aws-sdk/types/**'
- - 'node_modules/@aws-sdk/middleware-logger/**'
- - 'node_modules/@aws-sdk/util-utf8-node/**'
- - 'node_modules/@aws-sdk/util-utf8-browser/**'
- - 'node_modules/@smithy/**'
- - 'node_modules/tslib/**'
- # Remove these large/unnecessary packages:
- - 'node_modules/fast-xml-parser/**' # Remove if not used
- - 'node_modules/lambda-multipart-parser/**' # You're using busboy directly
- - 'node_modules/busboy/**'
- # Remove these AWS utility packages (included in main SDK):
- - 'node_modules/@aws-crypto/**'
- # - 'node_modules/uuid/**' # AWS SDK includes its own
- # - 'node_modules/@aws/util-uri-escape/**'
- # - 'node_modules/@aws/util-middleware/**'
- - 'node_modules/@aws/smithy-client/**'
- # - 'node_modules/@aws/lambda-invoke-store/**'
- events:
- - httpApi:
- path: /host/add-company-details
- method: patch
-
- submitPqqAnswer:
- handler: src/modules/host/handlers/submitPqqAns.handler
- memorySize: 512
- timeout: 30
- package:
- patterns:
- - 'src/modules/host/handlers/submitPqqAns.*'
- - 'src/modules/host/services/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- - 'node_modules/@aws-sdk/**'
- - 'node_modules/@smithy/**'
- - 'node_modules/tslib/**'
- - 'node_modules/fast-xml-parser/**'
- - 'node_modules/lambda-multipart-parser/**'
- - 'node_modules/busboy/**'
- - 'node_modules/@aws-crypto/**'
- - 'node_modules/uuid/**'
- - 'node_modules/@aws/util-uri-escape/**'
- - 'node_modules/@aws/util-middleware/**'
- - 'node_modules/@aws/smithy-client/**'
- - 'node_modules/@aws/lambda-invoke-store/**'
- events:
- - httpApi:
- path: /host/submit-pqq-ans
- method: patch
-
- submitFinalPqqAnswer:
- handler: src/modules/host/handlers/getPQQScore.handler
- memorySize: 512
- timeout: 30
- package:
- patterns:
- - 'src/modules/host/handlers/getPQQScore.*'
- - 'src/modules/host/services/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/client/libquery_engine-rhel-openssl-3.0.x.so.node'
- - 'node_modules/@aws-sdk/**'
- - 'node_modules/@smithy/**'
- - 'node_modules/tslib/**'
- - 'node_modules/fast-xml-parser/**'
- - 'node_modules/lambda-multipart-parser/**'
- - 'node_modules/busboy/**'
- - 'node_modules/@aws-crypto/**'
- - 'node_modules/uuid/**'
- - 'node_modules/@aws/util-uri-escape/**'
- - 'node_modules/@aws/util-middleware/**'
- - 'node_modules/@aws/smithy-client/**'
- - 'node_modules/@aws/lambda-invoke-store/**'
- events:
- - httpApi:
- path: /host/submit-final-pqq-ans
- method: patch
-
- addPQQSuggestion:
- handler: src/modules/minglar/handlers/addPQQSuggestion.handler
- memorySize: 384
- package:
- patterns:
- - 'src/modules/minglaradmin/handlers/addPQQSuggestion.*'
- - 'src/modules/minglaradmin/services/**'
- - 'src/common/**'
- - 'node_modules/@prisma/client/**'
- - 'node_modules/.prisma/**'
- events:
- - httpApi:
- path: /minglar/add-Pqq-suggestion
- method: post
diff --git a/serverless/functions/swagger.yml b/serverless/functions/swagger.yml
new file mode 100644
index 0000000..686b927
--- /dev/null
+++ b/serverless/functions/swagger.yml
@@ -0,0 +1,20 @@
+# Swagger Documentation Functions
+
+swaggerUi:
+ handler: src/handlers/swagger.swaggerUi
+ memorySize: 256
+ events:
+ - httpApi:
+ path: /api-docs
+ method: get
+
+swaggerJson:
+ handler: src/handlers/swagger.swaggerJson
+ memorySize: 256
+ package:
+ patterns:
+ - 'swagger.json'
+ events:
+ - httpApi:
+ path: /swagger.json
+ method: get
diff --git a/src/handlers/swagger.ts b/src/handlers/swagger.ts
new file mode 100644
index 0000000..f5019c9
--- /dev/null
+++ b/src/handlers/swagger.ts
@@ -0,0 +1,140 @@
+// src/handlers/swagger.ts
+// Swagger UI handler for serverless-offline
+
+import { APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda';
+import * as fs from 'fs';
+import * as path from 'path';
+
+// Swagger UI HTML template
+const getSwaggerHtml = (specUrl: string) => `
+
+
+
+
+
+ Minglar API Documentation
+
+
+
+
+
+
+
+
+
+
+`;
+
+// Handler for Swagger UI HTML page
+export const swaggerUi = async (
+ event: APIGatewayProxyEvent
+): Promise => {
+ const host = event.headers?.Host || event.headers?.host || 'localhost:3000';
+
+ // For serverless-offline, use simple direct URL without stage
+ const specUrl = `/swagger.json`;
+
+ return {
+ statusCode: 200,
+ headers: {
+ 'Content-Type': 'text/html',
+ 'Access-Control-Allow-Origin': '*',
+ 'Cache-Control': 'no-cache, no-store, must-revalidate',
+ 'Pragma': 'no-cache',
+ 'Expires': '0',
+ },
+ body: getSwaggerHtml(specUrl),
+ };
+};
+
+// Handler for swagger.json
+export const swaggerJson = async (
+ event: APIGatewayProxyEvent
+): Promise => {
+ try {
+ // Read swagger.json from project root
+ const swaggerPath = path.join(process.cwd(), 'swagger.json');
+ const swaggerContent = fs.readFileSync(swaggerPath, 'utf8');
+ const swaggerDoc = JSON.parse(swaggerContent);
+
+ // Update server URL dynamically - ALWAYS use root URL without stage
+ const host = event.headers?.Host || event.headers?.host || 'localhost:3000';
+ const protocol = event.headers?.['X-Forwarded-Proto'] || 'http';
+
+ // For local development, use root URL. For AWS, use the full URL with stage only if deployed
+ if (process.env.AWS_LAMBDA_FUNCTION_NAME && process.env.AWS_EXECUTION_ENV) {
+ // Only add stage for actual AWS deployment, not serverless-offline
+ const stage = event.requestContext?.stage;
+ const stagePrefix = stage && stage !== '$default' ? `/${stage}` : '';
+ swaggerDoc.servers = [
+ {
+ url: `${protocol}://${host}${stagePrefix}`,
+ description: 'AWS API Gateway'
+ }
+ ];
+ } else {
+ // Local development - no stage prefix
+ swaggerDoc.servers = [
+ {
+ url: `http://${host}`,
+ description: 'Local Development (serverless-offline)'
+ }
+ ];
+ }
+
+ return {
+ statusCode: 200,
+ headers: {
+ 'Content-Type': 'application/json',
+ 'Access-Control-Allow-Origin': '*',
+ 'Access-Control-Allow-Headers': 'Content-Type,Authorization',
+ 'Cache-Control': 'no-cache, no-store, must-revalidate',
+ 'Pragma': 'no-cache',
+ 'Expires': '0',
+ },
+ body: JSON.stringify(swaggerDoc, null, 2),
+ };
+ } catch (error) {
+ console.error('Error loading swagger.json:', error);
+ return {
+ statusCode: 500,
+ headers: {
+ 'Content-Type': 'application/json',
+ 'Access-Control-Allow-Origin': '*',
+ },
+ body: JSON.stringify({
+ error: 'Failed to load swagger.json',
+ message: error instanceof Error ? error.message : 'Unknown error'
+ }),
+ };
+ }
+};
diff --git a/swagger.json b/swagger.json
index 476e7a6..f47409b 100644
--- a/swagger.json
+++ b/swagger.json
@@ -1,27 +1,1053 @@
{
"openapi": "3.0.0",
- "paths": {},
"info": {
"title": "Minglar API",
- "description": "NestJS Backend for Minglar with Lambda-ready endpoints",
+ "description": "Serverless Backend API for Minglar - Host Management, Admin, and Prepopulate Services",
"version": "1.0.0",
- "contact": {}
+ "contact": {
+ "name": "Minglar Team"
+ }
},
- "tags": [],
"servers": [
{
- "url": "http://localhost:3000/",
- "description": "Local Server"
+ "url": "/",
+ "description": "Current Environment (auto-detects local or AWS)"
+ }
+ ],
+ "tags": [
+ {
+ "name": "Host - Onboarding",
+ "description": "Host registration, login, and onboarding endpoints"
+ },
+ {
+ "name": "Host - Activity Hub",
+ "description": "Host activity and PQQ management"
+ },
+ {
+ "name": "Minglar Admin - Auth",
+ "description": "Minglar admin authentication endpoints"
+ },
+ {
+ "name": "Minglar Admin - Host Hub",
+ "description": "Admin host management endpoints"
+ },
+ {
+ "name": "Minglar Admin - Settings",
+ "description": "Admin settings and teammate management"
+ },
+ {
+ "name": "Prepopulate",
+ "description": "Reference data and lookup endpoints"
+ },
+ {
+ "name": "PQQ",
+ "description": "Pre-Qualification Questionnaire endpoints"
}
],
"components": {
"securitySchemes": {
- "bearer": {
- "scheme": "bearer",
- "bearerFormat": "JWT",
- "type": "http"
+ "bearerAuth": {
+ "type": "apiKey",
+ "in": "header",
+ "name": "x-auth-token",
+ "description": "JWT token for authentication"
}
},
- "schemas": {}
+ "schemas": {
+ "SignUpRequest": {
+ "type": "object",
+ "required": ["email"],
+ "properties": {
+ "email": { "type": "string", "format": "email", "example": "john@example.com" }
+ }
+ },
+ "HostLoginRequest": {
+ "type": "object",
+ "required": ["emailAddress", "userPassword"],
+ "properties": {
+ "emailAddress": { "type": "string", "format": "email", "example": "john@example.com" },
+ "userPassword": { "type": "string", "example": "password123" }
+ }
+ },
+ "VerifyOTPRequest": {
+ "type": "object",
+ "required": ["email", "otp"],
+ "properties": {
+ "email": { "type": "string", "format": "email", "example": "john@example.com" },
+ "otp": { "type": "string", "example": "123456" }
+ }
+ },
+ "CreatePasswordRequest": {
+ "type": "object",
+ "required": ["password", "confirmPassword"],
+ "properties": {
+ "password": { "type": "string", "minLength": 8, "example": "password123" },
+ "confirmPassword": { "type": "string", "minLength": 8, "example": "password123" }
+ }
+ },
+ "BankDetailsRequest": {
+ "type": "object",
+ "required": ["bankXid", "bankBranchXid", "accountNumber", "confirmAccountNumber", "accountHolderName", "currencyXid"],
+ "properties": {
+ "bankXid": { "type": "integer", "example": 1 },
+ "bankBranchXid": { "type": "integer", "example": 1 },
+ "accountNumber": { "type": "string", "example": "1234567890" },
+ "confirmAccountNumber": { "type": "string", "example": "1234567890" },
+ "accountHolderName": { "type": "string", "example": "John Doe" },
+ "currencyXid": { "type": "integer", "example": 1 }
+ }
+ },
+ "CompanyDetailsRequest": {
+ "type": "object",
+ "required": ["companyDetails", "documents"],
+ "properties": {
+ "companyDetails": {
+ "type": "string",
+ "description": "JSON string containing company details (companyName, companyAddress, companyCity, companyState, companyCountry, companyPincode, companyPhone, companyEmail, companyWebsite, registrationNumber, taxId, etc.)"
+ },
+ "documents": {
+ "type": "string",
+ "description": "JSON array of document metadata (fieldName, documentTypeXid, documentName, owner)"
+ },
+ "isDraft": { "type": "boolean", "description": "Whether this is a draft submission" },
+ "userProfile": { "type": "string", "description": "JSON object with firstName, lastName, mobileNumber (optional)" },
+ "deletedFiles": { "type": "string", "description": "JSON array of file URLs to delete (optional)" },
+ "parentDeletedFiles": { "type": "string", "description": "JSON array of parent company file URLs to delete (optional)" }
+ }
+ },
+ "SaveActivityRequest": {
+ "type": "object",
+ "required": ["activityTypeXid"],
+ "properties": {
+ "activityTypeXid": { "type": "integer", "example": 1 },
+ "frequenciesXid": { "type": "integer", "example": 1 }
+ }
+ },
+ "CreateActivityRequest": {
+ "type": "object",
+ "required": ["activityTypeXid", "frequenciesXid"],
+ "properties": {
+ "activityTypeXid": { "type": "integer", "example": 1 },
+ "frequenciesXid": { "type": "integer", "example": 1 }
+ }
+ },
+ "InviteTeammateRequest": {
+ "type": "object",
+ "required": ["emailAddress", "roleXid"],
+ "properties": {
+ "emailAddress": { "type": "string", "format": "email", "example": "teammate@example.com" },
+ "roleXid": { "type": "integer", "example": 3, "description": "2 for Co_Admin, 3 for Account_Manager" },
+ "isFixedSalary": { "type": "boolean", "example": false },
+ "perValue": { "type": "number", "example": 10 }
+ }
+ },
+ "AddSuggestionRequest": {
+ "type": "object",
+ "required": ["hostXid", "title", "comments"],
+ "properties": {
+ "hostXid": { "type": "integer", "example": 1 },
+ "title": { "type": "string", "example": "Setup Profile" },
+ "comments": { "type": "string", "example": "Please complete your profile" },
+ "isParent": { "type": "boolean", "example": false }
+ }
+ },
+ "AssignAMRequest": {
+ "type": "object",
+ "required": ["host_xid", "account_manager_xid"],
+ "properties": {
+ "host_xid": { "type": "integer", "example": 1 },
+ "account_manager_xid": { "type": "integer", "example": 2 }
+ }
+ },
+ "LoginResponse": {
+ "type": "object",
+ "properties": {
+ "success": { "type": "boolean", "example": true },
+ "message": { "type": "string", "example": "Login successful" },
+ "data": {
+ "type": "object",
+ "properties": {
+ "id": { "type": "integer" },
+ "firstName": { "type": "string" },
+ "lastName": { "type": "string" },
+ "emailAddress": { "type": "string" },
+ "mobileNumber": { "type": "string" },
+ "isActive": { "type": "boolean" },
+ "roleXid": { "type": "integer" },
+ "accessToken": { "type": "string" },
+ "refreshToken": { "type": "string" }
+ }
+ }
+ }
+ },
+ "SuccessResponse": {
+ "type": "object",
+ "properties": {
+ "success": { "type": "boolean", "example": true },
+ "message": { "type": "string" },
+ "statusCode": { "type": "integer", "example": 200 },
+ "data": { "type": "object" }
+ }
+ },
+ "ErrorResponse": {
+ "type": "object",
+ "properties": {
+ "success": { "type": "boolean", "example": false },
+ "message": { "type": "string" },
+ "statusCode": { "type": "integer" },
+ "data": { "type": "null" },
+ "error": {
+ "type": "object",
+ "properties": {
+ "code": { "type": "integer" },
+ "description": { "type": "string" },
+ "statusCode": { "type": "integer" }
+ }
+ }
+ }
+ },
+ "PaginatedResponse": {
+ "type": "object",
+ "properties": {
+ "success": { "type": "boolean" },
+ "data": { "type": "array", "items": { "type": "object" } },
+ "pagination": {
+ "type": "object",
+ "properties": {
+ "page": { "type": "integer" },
+ "limit": { "type": "integer" },
+ "total": { "type": "integer" },
+ "totalPages": { "type": "integer" }
+ }
+ }
+ }
+ }
+ }
+ },
+ "paths": {
+ "/host": {
+ "get": {
+ "tags": ["Host - Onboarding"],
+ "summary": "Get all hosts",
+ "description": "Retrieve a list of all hosts with pagination",
+ "security": [{ "bearerAuth": [] }],
+ "parameters": [
+ { "name": "page", "in": "query", "schema": { "type": "integer", "default": 1 } },
+ { "name": "limit", "in": "query", "schema": { "type": "integer", "default": 10 } }
+ ],
+ "responses": {
+ "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedResponse" } } } },
+ "401": { "description": "Unauthorized" }
+ }
+ }
+ },
+ "/host/Host_Admin/onboarding/registration": {
+ "post": {
+ "tags": ["Host - Onboarding"],
+ "summary": "Host Sign Up",
+ "description": "Register a new host account. Sends OTP to email for verification.",
+ "requestBody": {
+ "required": true,
+ "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SignUpRequest" } } }
+ },
+ "responses": {
+ "200": { "description": "OTP sent successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SuccessResponse" } } } },
+ "400": { "description": "Bad Request - Email is required", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } },
+ "409": { "description": "User is already registered" }
+ }
+ }
+ },
+ "/host/Host_Admin/onboarding/verify-otp": {
+ "post": {
+ "tags": ["Host - Onboarding"],
+ "summary": "Verify OTP",
+ "description": "Verify OTP sent to host email. Returns access and refresh tokens on success.",
+ "requestBody": {
+ "required": true,
+ "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VerifyOTPRequest" } } }
+ },
+ "responses": {
+ "200": {
+ "description": "OTP verified successfully",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "success": { "type": "boolean", "example": true },
+ "message": { "type": "string", "example": "OTP verified successfully" },
+ "accessToken": { "type": "string" },
+ "refreshToken": { "type": "string" },
+ "data": { "type": "null" }
+ }
+ }
+ }
+ }
+ },
+ "400": { "description": "Email and OTP are required" }
+ }
+ }
+ },
+ "/host/Host_Admin/onboarding/login": {
+ "post": {
+ "tags": ["Host - Onboarding"],
+ "summary": "Host Login",
+ "description": "Authenticate host and get access tokens",
+ "requestBody": {
+ "required": true,
+ "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HostLoginRequest" } } }
+ },
+ "responses": {
+ "200": { "description": "Login successful", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoginResponse" } } } },
+ "400": { "description": "Email and password are required" },
+ "401": { "description": "Invalid credentials" }
+ }
+ }
+ },
+ "/host/Host_Admin/onboarding/create-password": {
+ "post": {
+ "tags": ["Host - Onboarding"],
+ "summary": "Create Password",
+ "description": "Create password after OTP verification",
+ "security": [{ "bearerAuth": [] }],
+ "requestBody": {
+ "required": true,
+ "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreatePasswordRequest" } } }
+ },
+ "responses": {
+ "200": { "description": "Password created successfully" },
+ "400": { "description": "Password mismatch" }
+ }
+ }
+ },
+ "/host/Host_Admin/onboarding/add-payment-details": {
+ "post": {
+ "tags": ["Host - Onboarding"],
+ "summary": "Add Bank/Payment Details",
+ "description": "Add bank account details for host",
+ "security": [{ "bearerAuth": [] }],
+ "requestBody": {
+ "required": true,
+ "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankDetailsRequest" } } }
+ },
+ "responses": {
+ "200": { "description": "Payment details added successfully" },
+ "400": { "description": "Invalid details" }
+ }
+ }
+ },
+ "/host/Host_Admin/onboarding/add-company-details": {
+ "patch": {
+ "tags": ["Host - Onboarding"],
+ "summary": "Submit Company Details",
+ "description": "Submit company information with documents",
+ "security": [{ "bearerAuth": [] }],
+ "requestBody": {
+ "required": true,
+ "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CompanyDetailsRequest" } } }
+ },
+ "responses": {
+ "200": { "description": "Company details submitted successfully" }
+ }
+ }
+ },
+ "/host/Host_Admin/onboarding/accept-agreement": {
+ "patch": {
+ "tags": ["Host - Onboarding"],
+ "summary": "Accept Agreement",
+ "description": "Host accepts the terms and agreement",
+ "security": [{ "bearerAuth": [] }],
+ "responses": {
+ "200": { "description": "Agreement accepted" }
+ }
+ }
+ },
+ "/host/getById": {
+ "get": {
+ "tags": ["Host - Onboarding"],
+ "summary": "Get Host By ID",
+ "description": "Get host details by ID",
+ "security": [{ "bearerAuth": [] }],
+ "parameters": [
+ { "name": "hostXid", "in": "query", "required": true, "schema": { "type": "integer" } }
+ ],
+ "responses": {
+ "200": { "description": "Host details retrieved" },
+ "404": { "description": "Host not found" }
+ }
+ }
+ },
+ "/host/get-suggestion": {
+ "get": {
+ "tags": ["Host - Onboarding"],
+ "summary": "Show Suggestions",
+ "description": "Get suggestions for host",
+ "security": [{ "bearerAuth": [] }],
+ "responses": {
+ "200": { "description": "Suggestions retrieved" }
+ }
+ }
+ },
+ "/stepper": {
+ "get": {
+ "tags": ["Host - Onboarding"],
+ "summary": "Get Stepper Info",
+ "description": "Get onboarding stepper progress",
+ "security": [{ "bearerAuth": [] }],
+ "responses": {
+ "200": { "description": "Stepper info retrieved" }
+ }
+ }
+ },
+ "/resend-otp": {
+ "post": {
+ "tags": ["Host - Onboarding"],
+ "summary": "Resend OTP",
+ "description": "Resend OTP to email for Register, Login, or ForgotPassword purposes",
+ "requestBody": {
+ "required": true,
+ "content": { "application/json": { "schema": { "type": "object", "required": ["email", "purpose"], "properties": { "email": { "type": "string", "format": "email", "example": "john@example.com" }, "purpose": { "type": "string", "enum": ["Register", "Login", "ForgotPassword"], "example": "Register" } } } } }
+ },
+ "responses": {
+ "200": { "description": "OTP sent successfully" },
+ "400": { "description": "Email and purpose are required / Invalid purpose" },
+ "404": { "description": "User not found" }
+ }
+ }
+ },
+ "/host/Activity_Hub/OnBoarding/add-activity": {
+ "post": {
+ "tags": ["Host - Activity Hub"],
+ "summary": "Save Activity for PQQ",
+ "description": "Save new activity for pre-qualification questionnaire",
+ "security": [{ "bearerAuth": [] }],
+ "requestBody": {
+ "required": true,
+ "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SaveActivityRequest" } } }
+ },
+ "responses": {
+ "201": { "description": "Activity created successfully" },
+ "400": { "description": "activityTypeXid is required" }
+ }
+ }
+ },
+ "/host/Activity_Hub/OnBoarding/create-activity": {
+ "post": {
+ "tags": ["Host - Activity Hub"],
+ "summary": "Create Activity and Questions",
+ "description": "Create activity entry with all questions",
+ "security": [{ "bearerAuth": [] }],
+ "requestBody": {
+ "required": true,
+ "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateActivityRequest" } } }
+ },
+ "responses": {
+ "200": { "description": "Activity created successfully" },
+ "400": { "description": "activityType and frequency ID is required" }
+ }
+ }
+ },
+ "/host/Activity_Hub/OnBoarding/get-pqq-question-details": {
+ "get": {
+ "tags": ["Host - Activity Hub"],
+ "summary": "Get PQQ By Question ID",
+ "description": "Get PQQ question details by question_xid and activity_xid",
+ "security": [{ "bearerAuth": [] }],
+ "parameters": [
+ { "name": "question_xid", "in": "query", "required": true, "schema": { "type": "integer" } },
+ { "name": "activity_xid", "in": "query", "required": true, "schema": { "type": "integer" } }
+ ],
+ "responses": {
+ "200": { "description": "Question details retrieved" },
+ "400": { "description": "Question and activity xid are required" }
+ }
+ }
+ },
+ "/host/Activity_Hub/OnBoarding/get-latest-pqq-question-details": {
+ "get": {
+ "tags": ["Host - Activity Hub"],
+ "summary": "Get Latest PQQ Question",
+ "description": "Get the last updated PQQ question",
+ "security": [{ "bearerAuth": [] }],
+ "responses": {
+ "200": { "description": "Latest question retrieved" }
+ }
+ }
+ },
+ "/host/Activity_Hub/OnBoarding/prepopulate-new-activity": {
+ "get": {
+ "tags": ["Host - Activity Hub"],
+ "summary": "Prepopulate New Activity",
+ "description": "Get all activity types for prepopulation",
+ "security": [{ "bearerAuth": [] }],
+ "responses": {
+ "200": { "description": "Activity types retrieved" }
+ }
+ }
+ },
+ "/host/Activity_Hub/OnBoarding/get-all-host-activity": {
+ "get": {
+ "tags": ["Host - Activity Hub"],
+ "summary": "Get All Host Activities",
+ "description": "Get all activities for a host",
+ "security": [{ "bearerAuth": [] }],
+ "responses": {
+ "200": { "description": "Activities retrieved" }
+ }
+ }
+ },
+ "/host/Activity_Hub/OnBoarding/submit-pqq-answer": {
+ "patch": {
+ "tags": ["Host - Activity Hub"],
+ "summary": "Submit PQQ Answer",
+ "description": "Submit answer for PQQ question (multipart/form-data with file upload support)",
+ "security": [{ "bearerAuth": [] }],
+ "requestBody": {
+ "content": {
+ "multipart/form-data": {
+ "schema": {
+ "type": "object",
+ "required": ["activityXid", "pqqQuestionXid", "pqqAnswerXid"],
+ "properties": {
+ "activityXid": { "type": "integer", "description": "Activity ID" },
+ "pqqQuestionXid": { "type": "integer", "description": "PQQ Question ID" },
+ "pqqAnswerXid": { "type": "integer", "description": "PQQ Answer ID" },
+ "comments": { "type": "string", "description": "Optional comments" },
+ "file": { "type": "string", "format": "binary", "description": "Supporting file upload" }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": { "description": "Answer submitted" }
+ }
+ }
+ },
+ "/host/Activity_Hub/OnBoarding/submit-pq-answer": {
+ "patch": {
+ "tags": ["Host - Activity Hub"],
+ "summary": "Submit PQ Answer",
+ "description": "Submit pre-qualification answer (multipart/form-data with file upload support)",
+ "security": [{ "bearerAuth": [] }],
+ "requestBody": {
+ "content": {
+ "multipart/form-data": {
+ "schema": {
+ "type": "object",
+ "required": ["activityXid", "pqqQuestionXid", "pqqAnswerXid"],
+ "properties": {
+ "activityXid": { "type": "integer", "description": "Activity ID" },
+ "pqqQuestionXid": { "type": "integer", "description": "PQQ Question ID" },
+ "pqqAnswerXid": { "type": "integer", "description": "PQQ Answer ID" },
+ "comments": { "type": "string", "description": "Optional comments" },
+ "file": { "type": "string", "format": "binary", "description": "Supporting file upload" }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": { "description": "Answer submitted" }
+ }
+ }
+ },
+ "/host/Activity_Hub/OnBoarding/submit-final-pqq-answer": {
+ "post": {
+ "tags": ["Host - Activity Hub"],
+ "summary": "Submit Final PQQ Answer",
+ "description": "Submit final PQQ answer and get score",
+ "security": [{ "bearerAuth": [] }],
+ "responses": {
+ "200": { "description": "Final answer submitted" }
+ }
+ }
+ },
+ "/host/Activity_Hub/OnBoarding/submit-pqq-for-review": {
+ "patch": {
+ "tags": ["Host - Activity Hub"],
+ "summary": "Submit PQQ for Review",
+ "description": "Submit PQQ for admin review",
+ "security": [{ "bearerAuth": [] }],
+ "parameters": [
+ { "name": "activity_xid", "in": "query", "required": true, "schema": { "type": "integer" } }
+ ],
+ "responses": {
+ "200": { "description": "Your PQQ has been submitted for review" }
+ }
+ }
+ },
+ "/host/Activity_Hub/OnBoarding/get-all-pqq-ques-submited-ans": {
+ "get": {
+ "tags": ["Host - Activity Hub"],
+ "summary": "Get All PQQ with Submitted Answers",
+ "description": "Get all PQQ questions with submitted answers for an activity",
+ "security": [{ "bearerAuth": [] }],
+ "parameters": [
+ { "name": "activity_xid", "in": "query", "required": true, "schema": { "type": "integer" } }
+ ],
+ "responses": {
+ "200": { "description": "Data retrieved successfully" },
+ "409": { "description": "Activity ID is required" }
+ }
+ }
+ },
+ "/host/Activity_Hub/OnBoarding/update-suggestion-reviewed": {
+ "patch": {
+ "tags": ["Host - Activity Hub"],
+ "summary": "Update Suggestion as Reviewed",
+ "description": "Mark PQQ suggestion as reviewed by host",
+ "security": [{ "bearerAuth": [] }],
+ "requestBody": {
+ "required": true,
+ "content": { "application/json": { "schema": { "type": "object", "required": ["activityPqqHeaderXid"], "properties": { "activityPqqHeaderXid": { "type": "integer", "example": 1 }, "activityPQQSuggestionId": { "type": "integer", "example": 1 } } } } }
+ },
+ "responses": {
+ "201": { "description": "Suggestion reviewed successfully" },
+ "400": { "description": "activityPqqHeaderXid is required" }
+ }
+ }
+ },
+ "/minglaradmin/registration": {
+ "post": {
+ "tags": ["Minglar Admin - Auth"],
+ "summary": "Admin Registration",
+ "description": "Register a new Minglar admin",
+ "requestBody": {
+ "required": true,
+ "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SignUpRequest" } } }
+ },
+ "responses": {
+ "201": { "description": "Admin registered successfully" }
+ }
+ }
+ },
+ "/minglaradmin/login": {
+ "post": {
+ "tags": ["Minglar Admin - Auth"],
+ "summary": "Admin Login",
+ "description": "Authenticate Minglar admin and get access tokens",
+ "requestBody": {
+ "required": true,
+ "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HostLoginRequest" } } }
+ },
+ "responses": {
+ "200": { "description": "Login successful", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoginResponse" } } } },
+ "400": { "description": "Email is required / Failed to login" }
+ }
+ }
+ },
+ "/minglaradmin/create-password": {
+ "post": {
+ "tags": ["Minglar Admin - Auth"],
+ "summary": "Create Admin Password",
+ "description": "Create password for Minglar admin",
+ "security": [{ "bearerAuth": [] }],
+ "requestBody": {
+ "required": true,
+ "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreatePasswordRequest" } } }
+ },
+ "responses": {
+ "200": { "description": "Password created" }
+ }
+ }
+ },
+ "/minglaradmin/update-profile": {
+ "patch": {
+ "tags": ["Minglar Admin - Auth"],
+ "summary": "Update Admin Profile",
+ "description": "Update Minglar admin profile with image",
+ "security": [{ "bearerAuth": [] }],
+ "requestBody": {
+ "content": { "multipart/form-data": { "schema": { "type": "object", "properties": { "firstName": { "type": "string" }, "lastName": { "type": "string" }, "profileImage": { "type": "string", "format": "binary" } } } } }
+ },
+ "responses": {
+ "200": { "description": "Profile updated" }
+ }
+ }
+ },
+ "/minglaradmin/prepopulate-Roles": {
+ "get": {
+ "tags": ["Minglar Admin - Auth"],
+ "summary": "Prepopulate Roles",
+ "description": "Get all available roles",
+ "security": [{ "bearerAuth": [] }],
+ "responses": {
+ "200": { "description": "Roles retrieved" }
+ }
+ }
+ },
+ "/minglaradmin/hosthub/hosts/get-host-details/{host_xid}": {
+ "get": {
+ "tags": ["Minglar Admin - Host Hub"],
+ "summary": "Get Host Details By ID",
+ "description": "Get detailed host information for admin",
+ "security": [{ "bearerAuth": [] }],
+ "parameters": [
+ { "name": "host_xid", "in": "path", "required": true, "schema": { "type": "integer" } }
+ ],
+ "responses": {
+ "200": { "description": "Host details retrieved" }
+ }
+ }
+ },
+ "/minglaradmin/hosthub/hosts/get-all-host-applications-am": {
+ "get": {
+ "tags": ["Minglar Admin - Host Hub"],
+ "summary": "Get All Host Applications for AM",
+ "description": "Get all host applications for Account Manager",
+ "security": [{ "bearerAuth": [] }],
+ "parameters": [
+ { "name": "page", "in": "query", "schema": { "type": "integer" } },
+ { "name": "limit", "in": "query", "schema": { "type": "integer" } },
+ { "name": "status", "in": "query", "schema": { "type": "string" } }
+ ],
+ "responses": {
+ "200": { "description": "Applications retrieved" }
+ }
+ }
+ },
+ "/minglaradmin/get-all-activity-of-host/{id}": {
+ "get": {
+ "tags": ["Minglar Admin - Host Hub"],
+ "summary": "Get All Host Activities for Admin",
+ "description": "Get all activities of a specific host",
+ "security": [{ "bearerAuth": [] }],
+ "parameters": [
+ { "name": "id", "in": "path", "required": true, "schema": { "type": "integer" } }
+ ],
+ "responses": {
+ "200": { "description": "Activities retrieved" }
+ }
+ }
+ },
+ "/minglaradmin/hosthub/onboarding/get-all-host-applications-admin": {
+ "get": {
+ "tags": ["Minglar Admin - Host Hub"],
+ "summary": "Get All Onboarding Host Applications",
+ "description": "Get all onboarding host applications for admin",
+ "security": [{ "bearerAuth": [] }],
+ "parameters": [
+ { "name": "page", "in": "query", "schema": { "type": "integer" } },
+ { "name": "limit", "in": "query", "schema": { "type": "integer" } }
+ ],
+ "responses": {
+ "200": { "description": "Applications retrieved" }
+ }
+ }
+ },
+ "/minglaradmin/hosthub/onboarding/get-all-host-applications-admin-new": {
+ "get": {
+ "tags": ["Minglar Admin - Host Hub"],
+ "summary": "Get New Onboarding Applications",
+ "description": "Get new onboarding host applications",
+ "security": [{ "bearerAuth": [] }],
+ "responses": {
+ "200": { "description": "New applications retrieved" }
+ }
+ }
+ },
+ "/minglaradmin/hosthub/hosts/add-suggestion": {
+ "post": {
+ "tags": ["Minglar Admin - Host Hub"],
+ "summary": "Add Suggestion",
+ "description": "Add suggestion for host (Minglar Admin, Co_Admin, and Account Manager)",
+ "security": [{ "bearerAuth": [] }],
+ "requestBody": {
+ "required": true,
+ "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AddSuggestionRequest" } } }
+ },
+ "responses": {
+ "200": { "description": "Suggestion added successfully" },
+ "400": { "description": "Host ID / Title / Comments are required" },
+ "404": { "description": "User not found" }
+ }
+ }
+ },
+ "/minglaradmin/hosthub/onboarding/assign-am": {
+ "patch": {
+ "tags": ["Minglar Admin - Host Hub"],
+ "summary": "Assign AM to Host",
+ "description": "Assign Account Manager to host (only Minglar Admin)",
+ "security": [{ "bearerAuth": [] }],
+ "requestBody": {
+ "required": true,
+ "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssignAMRequest" } } }
+ },
+ "responses": {
+ "200": { "description": "AM assigned to host successfully" },
+ "404": { "description": "User not found" }
+ }
+ }
+ },
+ "/minglaradmin/hosthub/onboarding/edit-agreement-accept-host": {
+ "patch": {
+ "tags": ["Minglar Admin - Host Hub"],
+ "summary": "Edit Agreement and Accept Host",
+ "description": "Edit agreement details and accept host application (only Minglar Admin)",
+ "security": [{ "bearerAuth": [] }],
+ "requestBody": {
+ "required": true,
+ "content": { "application/json": { "schema": { "type": "object", "required": ["host_xid", "agreementStartDate", "duration", "durationFrequency", "payoutDurationNum", "payoutDurationFrequency"], "properties": { "host_xid": { "type": "integer", "example": 1 }, "agreementStartDate": { "type": "string", "format": "date", "example": "2024-01-01" }, "duration": { "type": "integer", "example": 12 }, "isCommisionBase": { "type": "boolean", "example": true }, "commisionPer": { "type": "number", "example": 10 }, "amountPerBooking": { "type": "number", "example": 100 }, "durationFrequency": { "type": "string", "example": "months" }, "payoutDurationNum": { "type": "integer", "example": 1 }, "payoutDurationFrequency": { "type": "string", "example": "months" } } } } }
+ },
+ "responses": {
+ "200": { "description": "Details edited successfully" },
+ "404": { "description": "User not found" }
+ }
+ }
+ },
+ "/minglaradmin/hosthub/onboarding/get-all-pqq-ques-ans-for-am": {
+ "get": {
+ "tags": ["Minglar Admin - Host Hub"],
+ "summary": "Get All PQQ for AM",
+ "description": "Get all PQQ questions and answers for Account Manager",
+ "security": [{ "bearerAuth": [] }],
+ "parameters": [
+ { "name": "activity_xid", "in": "query", "required": true, "schema": { "type": "integer" } },
+ { "name": "hostXid", "in": "query", "schema": { "type": "integer" } }
+ ],
+ "responses": {
+ "200": { "description": "PQQ retrieved" }
+ }
+ }
+ },
+ "/minglaradmin/hosthub/hosts/accept-host-application": {
+ "patch": {
+ "tags": ["Minglar Admin - Host Hub"],
+ "summary": "Accept Host Application",
+ "description": "Accept a host application",
+ "security": [{ "bearerAuth": [] }],
+ "requestBody": {
+ "required": true,
+ "content": { "application/json": { "schema": { "type": "object", "required": ["hostXid"], "properties": { "hostXid": { "type": "integer" } } } } }
+ },
+ "responses": {
+ "200": { "description": "Application accepted" }
+ }
+ }
+ },
+ "/minglaradmin/hosthub/hosts/reject-pq-by-am": {
+ "patch": {
+ "tags": ["Minglar Admin - Host Hub"],
+ "summary": "Reject PQQ by AM",
+ "description": "Reject PQQ by Account Manager",
+ "security": [{ "bearerAuth": [] }],
+ "requestBody": {
+ "required": true,
+ "content": { "application/json": { "schema": { "type": "object", "required": ["activityId"], "properties": { "activityId": { "type": "integer" } } } } }
+ },
+ "responses": {
+ "200": { "description": "PQQ rejected" }
+ }
+ }
+ },
+ "/minglaradmin/hosthub/hosts/accept-pq-by-am": {
+ "patch": {
+ "tags": ["Minglar Admin - Host Hub"],
+ "summary": "Accept PQ by AM",
+ "description": "Accept pre-qualification by Account Manager",
+ "security": [{ "bearerAuth": [] }],
+ "requestBody": {
+ "required": true,
+ "content": { "application/json": { "schema": { "type": "object", "required": ["activityId"], "properties": { "activityId": { "type": "integer" } } } } }
+ },
+ "responses": {
+ "200": { "description": "PQ accepted" }
+ }
+ }
+ },
+ "/minglaradmin/hosthub/onboarding/reject-host-application": {
+ "patch": {
+ "tags": ["Minglar Admin - Host Hub"],
+ "summary": "Reject Host Application",
+ "description": "Reject a host application by admin (only Minglar Admin)",
+ "security": [{ "bearerAuth": [] }],
+ "requestBody": {
+ "required": true,
+ "content": { "application/json": { "schema": { "type": "object", "required": ["hostXid"], "properties": { "hostXid": { "type": "integer" } } } } }
+ },
+ "responses": {
+ "200": { "description": "Application rejected" }
+ }
+ }
+ },
+ "/minglaradmin/hosthub/hosts/reject-host-application-am": {
+ "patch": {
+ "tags": ["Minglar Admin - Host Hub"],
+ "summary": "Reject Host Application by AM",
+ "description": "Reject host application by Account Manager",
+ "security": [{ "bearerAuth": [] }],
+ "requestBody": {
+ "required": true,
+ "content": { "application/json": { "schema": { "type": "object", "required": ["hostXid"], "properties": { "hostXid": { "type": "integer" }, "title": { "type": "string" }, "comments": { "type": "string" } } } } }
+ },
+ "responses": {
+ "200": { "description": "Application rejected" }
+ }
+ }
+ },
+ "/minglaradmin/hosthub/hosts/add-Pqq-suggestion": {
+ "post": {
+ "tags": ["Minglar Admin - Host Hub"],
+ "summary": "Add PQQ Suggestion",
+ "description": "Add suggestion for PQQ",
+ "security": [{ "bearerAuth": [] }],
+ "requestBody": {
+ "required": true,
+ "content": { "application/json": { "schema": { "type": "object", "required": ["title", "comments", "activity_pqq_header_xid"], "properties": { "title": { "type": "string" }, "comments": { "type": "string" }, "activity_pqq_header_xid": { "type": "integer" } } } } }
+ },
+ "responses": {
+ "200": { "description": "Suggestion added" }
+ }
+ }
+ },
+ "/minglaradmin/hosthub/pqp/pqp-details-for-am/{activityXid}": {
+ "get": {
+ "tags": ["Minglar Admin - Host Hub"],
+ "summary": "Get PQP Details for AM",
+ "description": "Get pre-qualification profile details for Account Manager",
+ "security": [{ "bearerAuth": [] }],
+ "parameters": [
+ { "name": "activityXid", "in": "path", "required": true, "schema": { "type": "integer" } }
+ ],
+ "responses": {
+ "200": { "description": "PQP details retrieved" }
+ }
+ }
+ },
+ "/minglaradmin/settings/teammates/invite-teammate": {
+ "post": {
+ "tags": ["Minglar Admin - Settings"],
+ "summary": "Invite Teammate",
+ "description": "Invite a new teammate (co-admin or AM)",
+ "security": [{ "bearerAuth": [] }],
+ "requestBody": {
+ "required": true,
+ "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InviteTeammateRequest" } } }
+ },
+ "responses": {
+ "200": { "description": "Invitation sent" }
+ }
+ }
+ },
+ "/minglaradmin/settings/teammates/get-all-invitation-details": {
+ "get": {
+ "tags": ["Minglar Admin - Settings"],
+ "summary": "Get All Invitation Details",
+ "description": "Get all pending invitations",
+ "security": [{ "bearerAuth": [] }],
+ "responses": {
+ "200": { "description": "Invitations retrieved" }
+ }
+ }
+ },
+ "/minglaradmin/settings/teammates/get-all-coadmin-am": {
+ "get": {
+ "tags": ["Minglar Admin - Settings"],
+ "summary": "Get All Co-admin and AM",
+ "description": "Get all co-admins and account managers",
+ "security": [{ "bearerAuth": [] }],
+ "responses": {
+ "200": { "description": "Teammates retrieved" }
+ }
+ }
+ },
+ "/minglaradmin/settings/teammates/get-all-invited-coadmin-am": {
+ "get": {
+ "tags": ["Minglar Admin - Settings"],
+ "summary": "Get All Invited Co-admin and AM",
+ "description": "Get all invited co-admins and account managers",
+ "security": [{ "bearerAuth": [] }],
+ "responses": {
+ "200": { "description": "Invited teammates retrieved" }
+ }
+ }
+ },
+ "/minglaradmin/settings/teammates/get-am-details-by-id/{amXid}": {
+ "get": {
+ "tags": ["Minglar Admin - Settings"],
+ "summary": "Get AM Details by ID",
+ "description": "Get Account Manager details by ID",
+ "security": [{ "bearerAuth": [] }],
+ "parameters": [
+ { "name": "amXid", "in": "path", "required": true, "schema": { "type": "integer" } }
+ ],
+ "responses": {
+ "200": { "description": "AM details retrieved" }
+ }
+ }
+ },
+ "/prepopulate/get-all-bank-currency-details": {
+ "get": {
+ "tags": ["Prepopulate"],
+ "summary": "Get All Bank and Currency Details",
+ "description": "Get all bank and currency reference data",
+ "security": [{ "bearerAuth": [] }],
+ "responses": {
+ "200": { "description": "Bank and currency details retrieved" }
+ }
+ }
+ },
+ "/prepopulate/get-city-by-state": {
+ "get": {
+ "tags": ["Prepopulate"],
+ "summary": "Get Cities by State",
+ "description": "Get all cities for a given state",
+ "security": [{ "bearerAuth": [] }],
+ "parameters": [
+ { "name": "stateXid", "in": "query", "required": true, "schema": { "type": "integer" } }
+ ],
+ "responses": {
+ "200": { "description": "Cities retrieved" }
+ }
+ }
+ },
+ "/prepopulate/get-branch-by-bank": {
+ "get": {
+ "tags": ["Prepopulate"],
+ "summary": "Get Branches by Bank",
+ "description": "Get all branches for a given bank",
+ "security": [{ "bearerAuth": [] }],
+ "parameters": [
+ { "name": "bankXid", "in": "query", "required": true, "schema": { "type": "integer" } }
+ ],
+ "responses": {
+ "200": { "description": "Branches retrieved" }
+ }
+ }
+ },
+ "/prepopulate/get-all-doc-country": {
+ "get": {
+ "tags": ["Prepopulate"],
+ "summary": "Get All Document Country State City Details",
+ "description": "Get all document types with country, state, city data",
+ "security": [{ "bearerAuth": [] }],
+ "responses": {
+ "200": { "description": "Document details retrieved" }
+ }
+ }
+ },
+ "/prepopulate/get-all-pqq-ques-ans": {
+ "get": {
+ "tags": ["Prepopulate"],
+ "summary": "Get All PQQ Questions and Answers",
+ "description": "Get all PQQ questions with possible answers",
+ "security": [{ "bearerAuth": [] }],
+ "responses": {
+ "200": { "description": "PQQ questions retrieved" }
+ }
+ }
+ },
+ "/prepopulate/get-all-Frequencies": {
+ "get": {
+ "tags": ["Prepopulate"],
+ "summary": "Get All Frequencies",
+ "description": "Get all activity frequencies",
+ "security": [{ "bearerAuth": [] }],
+ "responses": {
+ "200": { "description": "Frequencies retrieved" }
+ }
+ }
+ }
}
-}
\ No newline at end of file
+}