diff --git a/sandbox/user-tenant-example/src/application.ts b/sandbox/user-tenant-example/src/application.ts index 16d4fe6bba..9f510c5fad 100644 --- a/sandbox/user-tenant-example/src/application.ts +++ b/sandbox/user-tenant-example/src/application.ts @@ -1,29 +1,29 @@ import {BootMixin} from '@loopback/boot'; import {ApplicationConfig} from '@loopback/core'; +import {RepositoryMixin} from '@loopback/repository'; +import {RestApplication} from '@loopback/rest'; import { RestExplorerBindings, RestExplorerComponent, } from '@loopback/rest-explorer'; -import * as dotenv from 'dotenv'; -import * as dotenvExt from 'dotenv-extended'; -import {AuthenticationComponent} from 'loopback4-authentication'; -import { - AuthorizationBindings, - AuthorizationComponent, -} from 'loopback4-authorization'; +import {ServiceMixin} from '@loopback/service-proxy'; import { - ServiceSequence, - SFCoreBindings, BearerVerifierBindings, BearerVerifierComponent, BearerVerifierConfig, BearerVerifierType, SECURITY_SCHEME_SPEC, + SFCoreBindings, + ServiceSequence, } from '@sourceloop/core'; -import {UserTenantServiceComponent} from '@sourceloop/user-tenant-service' -import {RepositoryMixin} from '@loopback/repository'; -import {RestApplication} from '@loopback/rest'; -import {ServiceMixin} from '@loopback/service-proxy'; +import {UserTenantServiceComponent} from '@sourceloop/user-tenant-service'; +import * as dotenv from 'dotenv'; +import * as dotenvExt from 'dotenv-extended'; +import {AuthenticationComponent} from 'loopback4-authentication'; +import { + AuthorizationBindings, + AuthorizationComponent, +} from 'loopback4-authorization'; import path from 'path'; import * as openapi from './openapi.json'; @@ -58,17 +58,18 @@ export class UserTenantExampleApplication extends BootMixin( // To check if monitoring is enabled from env or not const enableObf = !!+(process.env.ENABLE_OBF ?? 0); // To check if authorization is enabled for swagger stats or not + // sonarignore:start const authentication = process.env.SWAGGER_USER && process.env.SWAGGER_PASSWORD ? true : false; - const obj={ - enableObf, - obfPath: process.env.OBF_PATH ?? '/obf', - openapiSpec: openapi, - authentication: authentication, - swaggerUsername: process.env.SWAGGER_USER, - swaggerPassword: process.env.SWAGGER_PASSWORD, - - } + // sonarignore:end + const obj = { + enableObf, + obfPath: process.env.OBF_PATH ?? '/obf', + openapiSpec: openapi, + authentication: authentication, + swaggerUsername: process.env.SWAGGER_USER, + swaggerPassword: process.env.SWAGGER_PASSWORD, + }; this.bind(SFCoreBindings.config).to(obj); // Set up the custom sequence @@ -76,7 +77,7 @@ export class UserTenantExampleApplication extends BootMixin( // Add authentication component this.component(AuthenticationComponent); - this.component(UserTenantServiceComponent); + this.component(UserTenantServiceComponent); // Add bearer verifier component this.bind(BearerVerifierBindings.Config).to({ @@ -99,7 +100,6 @@ export class UserTenantExampleApplication extends BootMixin( this.component(RestExplorerComponent); - this.projectRoot = __dirname; // Customize @loopback/boot Booter Conventions here this.bootOptions = { diff --git a/sandbox/user-tenant-example/src/datasources/user.datasource.ts b/sandbox/user-tenant-example/src/datasources/user.datasource.ts index 41622be228..549bd16f25 100644 --- a/sandbox/user-tenant-example/src/datasources/user.datasource.ts +++ b/sandbox/user-tenant-example/src/datasources/user.datasource.ts @@ -25,7 +25,7 @@ export class UserDataSource extends juggler.DataSource implements LifeCycleObserver { - static dataSourceName = 'user'; + static readonly dataSourceName = 'user'; static readonly defaultConfig = config; diff --git a/sandbox/user-tenant-example/src/openapi-spec.ts b/sandbox/user-tenant-example/src/openapi-spec.ts index ddb7082963..1e350ede73 100644 --- a/sandbox/user-tenant-example/src/openapi-spec.ts +++ b/sandbox/user-tenant-example/src/openapi-spec.ts @@ -2,13 +2,14 @@ import {ApplicationConfig} from '@loopback/core'; import {UserTenantExampleApplication} from './application'; const ARGV_INDEX = 2; +const DEFAULT_PORT = 3000; /** * Export the OpenAPI spec from the application */ async function exportOpenApiSpec(): Promise { const config: ApplicationConfig = { rest: { - port: +(process.env.PORT ?? 3000), + port: +(process.env.PORT ?? DEFAULT_PORT), host: process.env.HOST ?? 'localhost', }, }; @@ -23,9 +24,8 @@ exportOpenApiSpec() process.exit(0); }) .catch(err => { - console.error( - 'Fail to export OpenAPI spec from the application.', - err, - ); + // sonarignore:start + console.error('Fail to export OpenAPI spec from the application.', err); + // sonarignore:end process.exit(1); }); diff --git a/sandbox/user-tenant-example/src/openapi.json b/sandbox/user-tenant-example/src/openapi.json index 9e26dfeeb6..292e34c13b 100644 --- a/sandbox/user-tenant-example/src/openapi.json +++ b/sandbox/user-tenant-example/src/openapi.json @@ -1 +1,4755 @@ -{} \ No newline at end of file +{ + "openapi": "3.0.0", + "info": { + "title": "user-tenant-example", + "version": "1.0.0", + "description": "user-tenant-example", + "contact": { + "name": "Yesha Mavani", + "email": "yesha.mavani@sourcefuse.com" + } + }, + "paths": { + "/groups/{id}/user/bulk": { + "post": { + "x-controller-name": "GroupUserController", + "x-operation-name": "createBulkUserGroups", + "tags": [ + "GroupUserController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "UserGroup model instance", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserGroup" + } + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| CreateMultipleUserGroup |\n| 31 |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NewUserGroupInGroup" + } + } + } + }, + "x-parameter-index": 1 + }, + "operationId": "GroupUserController.createBulkUserGroups" + } + }, + "/groups/{id}/user/{userId}": { + "delete": { + "x-controller-name": "GroupUserController", + "x-operation-name": "delete", + "tags": [ + "GroupUserController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "DELETE Group.UserGroup" + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| RemoveMemberFromUserGroup |\n| 22 |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "userId", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "where", + "in": "query", + "content": { + "application/json": { + "schema": { + "type": "object", + "title": "user_groups.WhereFilter", + "additionalProperties": true, + "x-typescript-type": "@loopback/repository#Where" + } + } + } + } + ], + "operationId": "GroupUserController.delete" + } + }, + "/groups/{id}/user": { + "post": { + "x-controller-name": "GroupUserController", + "x-operation-name": "create", + "tags": [ + "GroupUserController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "UserGroup model instance", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserGroup" + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| CreateUserGroup |\n| 1 |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewUserGroupInGroup" + } + } + }, + "x-parameter-index": 1 + }, + "operationId": "GroupUserController.create" + }, + "get": { + "x-controller-name": "GroupUserController", + "x-operation-name": "find", + "tags": [ + "GroupUserController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "Array of UserGroup of a Group", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserGroup" + } + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| ViewUserGroupList |\n| 2 |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "filter", + "in": "query", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + } + ], + "operationId": "GroupUserController.find" + } + }, + "/ping": { + "get": { + "x-controller-name": "PingController", + "x-operation-name": "ping", + "tags": [ + "PingController" + ], + "responses": { + "200": { + "description": "Ping Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PingResponse" + } + } + } + } + }, + "description": "", + "operationId": "PingController.ping" + } + }, + "/tenants/count": { + "get": { + "x-controller-name": "TenantController", + "x-operation-name": "count", + "tags": [ + "TenantController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "Tenant model count", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/loopback.Count" + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| ViewTenant |\n| 17 |\n", + "parameters": [ + { + "name": "where", + "in": "query", + "content": { + "application/json": { + "schema": { + "type": "object", + "title": "tenants.WhereFilter", + "additionalProperties": true, + "x-typescript-type": "@loopback/repository#Where" + } + } + } + } + ], + "operationId": "TenantController.count" + } + }, + "/tenants/{id}/groups/{groupId}": { + "delete": { + "x-controller-name": "TenantGroupController", + "x-operation-name": "delete", + "tags": [ + "TenantGroupController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "204": { + "description": "Tenant.Group DELETE", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/loopback.Count" + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| DeleteGroup |\n| 35 |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "groupId", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "where", + "in": "query", + "content": { + "application/json": { + "schema": { + "type": "object", + "title": "groups.WhereFilter", + "additionalProperties": true, + "x-typescript-type": "@loopback/repository#Where" + } + } + } + } + ], + "operationId": "TenantGroupController.delete" + } + }, + "/tenants/{id}/groups": { + "post": { + "x-controller-name": "TenantGroupController", + "x-operation-name": "create", + "tags": [ + "TenantGroupController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "Group model instance", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Group" + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| CreateGroup |\n| 32 |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewGroupInTenant" + } + } + }, + "x-parameter-index": 1 + }, + "operationId": "TenantGroupController.create" + }, + "patch": { + "x-controller-name": "TenantGroupController", + "x-operation-name": "patch", + "tags": [ + "TenantGroupController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "Tenant.Group PATCH success count", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/loopback.Count" + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| UpdateGroup |\n| 34 |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "where", + "in": "query", + "content": { + "application/json": { + "schema": { + "type": "object", + "title": "groups.WhereFilter", + "additionalProperties": true, + "x-typescript-type": "@loopback/repository#Where" + } + } + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GroupPartial" + } + } + }, + "x-parameter-index": 1 + }, + "operationId": "TenantGroupController.patch" + }, + "get": { + "x-controller-name": "TenantGroupController", + "x-operation-name": "find", + "tags": [ + "TenantGroupController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "Array of Groups of Tenant", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Group" + } + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| ViewGroupList |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "filter", + "in": "query", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + } + ], + "operationId": "TenantGroupController.find" + } + }, + "/tenants/{id}/roles/{roleId}": { + "delete": { + "x-controller-name": "TenantRoleController", + "x-operation-name": "delete", + "tags": [ + "TenantRoleController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "204": { + "description": "Tenant.Role DELETE success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/loopback.Count" + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| DeleteRoles |\n| 10 |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "roleId", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "where", + "in": "query", + "content": { + "application/json": { + "schema": { + "type": "object", + "title": "roles.WhereFilter", + "additionalProperties": true, + "x-typescript-type": "@loopback/repository#Where" + } + } + } + } + ], + "operationId": "TenantRoleController.delete" + } + }, + "/tenants/{id}/roles": { + "post": { + "x-controller-name": "TenantRoleController", + "x-operation-name": "create", + "tags": [ + "TenantRoleController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "Role model instance", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Role" + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| CreateRoles |\n| 8 |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewRoleInTenant" + } + } + }, + "x-parameter-index": 1 + }, + "operationId": "TenantRoleController.create" + }, + "patch": { + "x-controller-name": "TenantRoleController", + "x-operation-name": "patch", + "tags": [ + "TenantRoleController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "Tenant.Role PATCH success count", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/loopback.Count" + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| UpdateRoles |\n| 9 |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "where", + "in": "query", + "content": { + "application/json": { + "schema": { + "type": "object", + "title": "roles.WhereFilter", + "additionalProperties": true, + "x-typescript-type": "@loopback/repository#Where" + } + } + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RolePartialExcluding_id-tenantId_" + } + } + }, + "x-parameter-index": 1 + }, + "operationId": "TenantRoleController.patch" + }, + "get": { + "x-controller-name": "TenantRoleController", + "x-operation-name": "find", + "tags": [ + "TenantRoleController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "Array of Roles of Tenant", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Role" + } + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| ViewRoles |\n| 6 |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "filter", + "in": "query", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + } + ], + "operationId": "TenantRoleController.find" + } + }, + "/tenants/{id}/tenant-configs": { + "post": { + "x-controller-name": "TenantTenantConfigController", + "x-operation-name": "create", + "tags": [ + "TenantTenantConfigController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "TenantConfig model instance", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantConfig" + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| CreateTenant |\n| 16 |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewTenantConfigInTenant" + } + } + }, + "x-parameter-index": 1 + }, + "operationId": "TenantTenantConfigController.create" + }, + "patch": { + "x-controller-name": "TenantTenantConfigController", + "x-operation-name": "patch", + "tags": [ + "TenantTenantConfigController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "Tenant.TenantConfig PATCH success count", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/loopback.Count" + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| UpdateTenant |\n| 18 |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "where", + "in": "query", + "content": { + "application/json": { + "schema": { + "type": "object", + "title": "tenant_configs.WhereFilter", + "additionalProperties": true, + "x-typescript-type": "@loopback/repository#Where" + } + } + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewTenantConfigInTenant" + } + } + }, + "x-parameter-index": 1 + }, + "operationId": "TenantTenantConfigController.patch" + }, + "get": { + "x-controller-name": "TenantTenantConfigController", + "x-operation-name": "find", + "tags": [ + "TenantTenantConfigController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "Array of TenantConfigs of Tenant", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TenantConfig" + } + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| ViewTenant |\n| 17 |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "filter", + "in": "query", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + } + ], + "operationId": "TenantTenantConfigController.find" + }, + "delete": { + "x-controller-name": "TenantTenantConfigController", + "x-operation-name": "delete", + "tags": [ + "TenantTenantConfigController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "Tenant.TenantConfig DELETE success count", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/loopback.Count" + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| DeleteTenant |\n| DeleteTenantUser |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "where", + "in": "query", + "content": { + "application/json": { + "schema": { + "type": "object", + "title": "tenant_configs.WhereFilter", + "additionalProperties": true, + "x-typescript-type": "@loopback/repository#Where" + } + } + } + } + ], + "operationId": "TenantTenantConfigController.delete" + } + }, + "/tenants/{id}/users/{userId}": { + "patch": { + "x-controller-name": "TenantUserController", + "x-operation-name": "patch", + "tags": [ + "TenantUserController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "204": { + "description": "Tenant.User PATCH" + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| UpdateTenantUser |\n| 14 |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "userId", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "where", + "in": "query", + "content": { + "application/json": { + "schema": { + "type": "object", + "title": "users.WhereFilter", + "additionalProperties": true, + "x-typescript-type": "@loopback/repository#Where" + } + } + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserPartial" + } + } + }, + "x-parameter-index": 2 + }, + "operationId": "TenantUserController.patch" + }, + "delete": { + "x-controller-name": "TenantUserController", + "x-operation-name": "delete", + "tags": [ + "TenantUserController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "204": { + "description": "Tenant.User DELETE" + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| DeleteTenantUser |\n| 15 |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "userId", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "where", + "in": "query", + "content": { + "application/json": { + "schema": { + "type": "object", + "title": "users.WhereFilter", + "additionalProperties": true, + "x-typescript-type": "@loopback/repository#Where" + } + } + } + } + ], + "operationId": "TenantUserController.delete" + } + }, + "/tenants/{id}/users": { + "post": { + "x-controller-name": "TenantUserController", + "x-operation-name": "create", + "tags": [ + "TenantUserController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "User model instance", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/User" + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| CreateTenantUser |\n| 13 |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewUserInTenant" + } + } + }, + "x-parameter-index": 1 + }, + "operationId": "TenantUserController.create" + }, + "get": { + "x-controller-name": "TenantUserController", + "x-operation-name": "find", + "tags": [ + "TenantUserController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "Array of Users of Tenant", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/User" + } + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| ViewTenantUser |\n| 12 |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "filter", + "in": "query", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + } + ], + "operationId": "TenantUserController.find" + } + }, + "/tenants/{id}": { + "put": { + "x-controller-name": "TenantController", + "x-operation-name": "replaceById", + "tags": [ + "TenantController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "204": { + "description": "Tenant PUT success" + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| UpdateTenant |\n| 18 |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Tenant" + } + } + }, + "x-parameter-index": 1 + }, + "operationId": "TenantController.replaceById" + }, + "patch": { + "x-controller-name": "TenantController", + "x-operation-name": "updateById", + "tags": [ + "TenantController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "204": { + "description": "Tenant PATCH success" + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| UpdateTenant |\n| 18 |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantPartial" + } + } + }, + "x-parameter-index": 1 + }, + "operationId": "TenantController.updateById" + }, + "get": { + "x-controller-name": "TenantController", + "x-operation-name": "findById", + "tags": [ + "TenantController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "Tenant model instance", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantWithRelations" + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| ViewTenant |\n| 17 |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "filter", + "in": "query", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tenants.Filter" + } + } + } + } + ], + "operationId": "TenantController.findById" + }, + "delete": { + "x-controller-name": "TenantController", + "x-operation-name": "deleteById", + "tags": [ + "TenantController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "204": { + "description": "Tenant DELETE success" + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| DeleteTenant |\n| DeleteTenantUser |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + } + ], + "operationId": "TenantController.deleteById" + } + }, + "/tenants": { + "post": { + "x-controller-name": "TenantController", + "x-operation-name": "create", + "tags": [ + "TenantController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "Tenant model instance", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Tenant" + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| CreateTenant |\n| 16 |\n", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewTenant" + } + } + } + }, + "operationId": "TenantController.create" + }, + "patch": { + "x-controller-name": "TenantController", + "x-operation-name": "updateAll", + "tags": [ + "TenantController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "Tenant PATCH success count", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/loopback.Count" + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| UpdateTenant |\n| 18 |\n", + "parameters": [ + { + "name": "where", + "in": "query", + "content": { + "application/json": { + "schema": { + "type": "object", + "title": "tenants.WhereFilter", + "additionalProperties": true, + "x-typescript-type": "@loopback/repository#Where" + } + } + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantPartial" + } + } + } + }, + "operationId": "TenantController.updateAll" + }, + "get": { + "x-controller-name": "TenantController", + "x-operation-name": "find", + "tags": [ + "TenantController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "Array of Tenant model instances", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TenantWithRelations" + } + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| ViewTenant |\n| 17 |\n", + "parameters": [ + { + "name": "filter", + "in": "query", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/tenants.Filter1" + } + } + } + } + ], + "operationId": "TenantController.find" + } + }, + "/user/{id}/tenants": { + "get": { + "x-controller-name": "UserTenantController", + "x-operation-name": "find", + "tags": [ + "UserTenantController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "Array of Tenants to Which the User Belongs", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Tenant" + } + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| ViewAllTenantOfSelf |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "filter", + "in": "query", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + } + ], + "operationId": "UserTenantController.find" + } + }, + "/user-tenant-prefs/count": { + "get": { + "x-controller-name": "UserTenantPrefsController", + "x-operation-name": "count", + "tags": [ + "UserTenantPrefsController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "UserTenantPrefs model count", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/loopback.Count" + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| ViewUserTenantPreference |\n| 25 |\n", + "parameters": [ + { + "name": "where", + "in": "query", + "content": { + "application/json": { + "schema": { + "type": "object", + "title": "user_tenant_prefs.WhereFilter", + "additionalProperties": true, + "x-typescript-type": "@loopback/repository#Where" + } + } + } + } + ], + "operationId": "UserTenantPrefsController.count" + } + }, + "/user-tenant-prefs/{id}": { + "delete": { + "x-controller-name": "UserTenantPrefsController", + "x-operation-name": "deleteById", + "tags": [ + "UserTenantPrefsController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "204": { + "description": "No Content", + "content": { + "application/json": { + "schema": { + "description": "UserTenantPrefs DELETE success" + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| DeleteUserTenantPreference |\n| 30 |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + } + ], + "operationId": "UserTenantPrefsController.deleteById" + } + }, + "/user-tenant-prefs": { + "post": { + "x-controller-name": "UserTenantPrefsController", + "x-operation-name": "create", + "tags": [ + "UserTenantPrefsController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "UserTenantPrefs model instance", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserTenantPrefs" + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| CreateUserTenantPreference |\n| 29 |\n", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewUserTenantPrefs" + } + } + } + }, + "operationId": "UserTenantPrefsController.create" + }, + "get": { + "x-controller-name": "UserTenantPrefsController", + "x-operation-name": "find", + "tags": [ + "UserTenantPrefsController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "Array of UserTenantPrefs model instances", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserTenantPrefsWithRelations" + } + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| ViewUserTenantPreference |\n| 25 |\n", + "parameters": [ + { + "name": "filter", + "in": "query", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/user_tenant_prefs.Filter" + } + } + } + } + ], + "operationId": "UserTenantPrefsController.find" + } + }, + "/user-tenants/{id}/user-groups": { + "get": { + "x-controller-name": "UserTenantUserGroupController", + "x-operation-name": "find", + "tags": [ + "UserTenantUserGroupController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "Array of UserGroups of UserTenant", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserGroup" + } + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| ViewUserTenant |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "filter", + "in": "query", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + } + ], + "operationId": "UserTenantUserGroupController.find" + } + }, + "/user-tenants/{id}/user-level-permissions": { + "post": { + "x-controller-name": "UserTenantUserLevelPermissionController", + "x-operation-name": "create", + "tags": [ + "UserTenantUserLevelPermissionController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "UserLevelPermission model instance", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserLevelPermission" + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| CreateUserTenant |\n| CreateUserPermissions |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NewUserLevelPermissionInUserTenant" + } + } + }, + "x-parameter-index": 1 + }, + "operationId": "UserTenantUserLevelPermissionController.create" + }, + "patch": { + "x-controller-name": "UserTenantUserLevelPermissionController", + "x-operation-name": "patch", + "tags": [ + "UserTenantUserLevelPermissionController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "UserTenant.UserLevelPermission PATCH success count", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/loopback.Count" + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| UpdateUserTenant |\n| UpdateUserPermissions |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "where", + "in": "query", + "content": { + "application/json": { + "schema": { + "type": "object", + "title": "user_permissions.WhereFilter", + "additionalProperties": true, + "x-typescript-type": "@loopback/repository#Where" + } + } + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserLevelPermissionPartial" + } + } + }, + "x-parameter-index": 1 + }, + "operationId": "UserTenantUserLevelPermissionController.patch" + }, + "get": { + "x-controller-name": "UserTenantUserLevelPermissionController", + "x-operation-name": "find", + "tags": [ + "UserTenantUserLevelPermissionController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "Array of UserLevelPermissions of UserTenant", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserLevelPermission" + } + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| ViewUserTenant |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "filter", + "in": "query", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + } + ], + "operationId": "UserTenantUserLevelPermissionController.find" + }, + "delete": { + "x-controller-name": "UserTenantUserLevelPermissionController", + "x-operation-name": "delete", + "tags": [ + "UserTenantUserLevelPermissionController" + ], + "security": [ + { + "HTTPBearer": [] + } + ], + "responses": { + "200": { + "description": "UserTenant.UserLevelPermission DELETE success count", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/loopback.Count" + } + } + } + } + }, + "description": "\n\n| Permissions |\n| ------- |\n| DeleteUserTenant |\n", + "parameters": [ + { + "name": "id", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "where", + "in": "query", + "content": { + "application/json": { + "schema": { + "type": "object", + "title": "user_permissions.WhereFilter", + "additionalProperties": true, + "x-typescript-type": "@loopback/repository#Where" + } + } + } + } + ], + "operationId": "UserTenantUserLevelPermissionController.delete" + } + }, + "/": { + "get": { + "x-controller-name": "HomePageController", + "x-operation-name": "homePage", + "tags": [ + "HomePageController" + ], + "responses": { + "200": { + "description": "Home Page", + "content": { + "text/html": { + "schema": { + "type": "string" + } + } + } + } + }, + "description": "", + "operationId": "HomePageController.homePage" + } + } + }, + "components": { + "securitySchemes": { + "HTTPBearer": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT" + } + }, + "schemas": { + "Role": { + "title": "Role", + "type": "object", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "roleType": { + "type": "number", + "maximum": 15, + "minimum": 0 + }, + "description": { + "type": "string" + }, + "permissions": { + "type": "array", + "items": { + "type": "string" + } + }, + "allowedClients": { + "type": "array", + "items": { + "type": "string" + } + }, + "tenantId": { + "type": "string" + } + }, + "required": [ + "name", + "tenantId" + ], + "additionalProperties": false + }, + "NewRoleInTenant": { + "title": "NewRoleInTenant", + "type": "object", + "description": "(tsType: Omit, schemaOptions: { title: 'NewRoleInTenant', exclude: [ 'id', 'tenantId' ] })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "name": { + "type": "string" + }, + "roleType": { + "type": "number", + "maximum": 15, + "minimum": 0 + }, + "description": { + "type": "string" + }, + "permissions": { + "type": "array", + "items": { + "type": "string" + } + }, + "allowedClients": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "x-typescript-type": "Omit" + }, + "RolePartialExcluding_id-tenantId_": { + "title": "RolePartialExcluding_id-tenantId_", + "type": "object", + "description": "(tsType: Omit, 'id' | 'tenantId'>, schemaOptions: { partial: true, exclude: [ 'id', 'tenantId' ] })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "name": { + "type": "string" + }, + "roleType": { + "type": "number", + "maximum": 15, + "minimum": 0 + }, + "description": { + "type": "string" + }, + "permissions": { + "type": "array", + "items": { + "type": "string" + } + }, + "allowedClients": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false, + "x-typescript-type": "Omit, 'id' | 'tenantId'>" + }, + "Tenant": { + "title": "Tenant", + "type": "object", + "description": "signature for all tenants", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "status": { + "type": "number", + "description": "Tenant status - Active or Inactive", + "enum": [ + 1, + 0 + ], + "nullable": true + }, + "key": { + "type": "string" + }, + "website": { + "type": "string" + }, + "address": { + "type": "string" + }, + "city": { + "type": "string" + }, + "state": { + "type": "string" + }, + "zip": { + "type": "string" + }, + "country": { + "type": "string" + } + }, + "required": [ + "name", + "status" + ], + "additionalProperties": false + }, + "NewTenant": { + "title": "NewTenant", + "type": "object", + "description": "signature for all tenants (tsType: Omit, schemaOptions: { title: 'NewTenant', exclude: [ 'id' ] })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "name": { + "type": "string" + }, + "status": { + "type": "number", + "description": "Tenant status - Active or Inactive", + "enum": [ + 1, + 0 + ], + "nullable": true + }, + "key": { + "type": "string" + }, + "website": { + "type": "string" + }, + "address": { + "type": "string" + }, + "city": { + "type": "string" + }, + "state": { + "type": "string" + }, + "zip": { + "type": "string" + }, + "country": { + "type": "string" + } + }, + "required": [ + "name", + "status" + ], + "additionalProperties": false + }, + "GroupWithRelations": { + "title": "GroupWithRelations", + "type": "object", + "description": "(tsType: GroupWithRelations, schemaOptions: { includeRelations: true })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "photoUrl": { + "type": "string" + }, + "tenantId": { + "type": "string" + }, + "userGroups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserGroupWithRelations" + } + } + }, + "required": [ + "tenantId" + ], + "additionalProperties": false, + "x-typescript-type": "GroupWithRelations" + }, + "TenantConfigWithRelations": { + "title": "TenantConfigWithRelations", + "type": "object", + "description": "(tsType: TenantConfigWithRelations, schemaOptions: { includeRelations: true })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "configKey": { + "type": "string" + }, + "configValue": { + "type": "object" + }, + "tenantId": { + "type": "string" + }, + "tenant": { + "$ref": "#/components/schemas/TenantWithRelations" + }, + "foreignKey": {} + }, + "required": [ + "configKey", + "tenantId" + ], + "additionalProperties": false, + "x-typescript-type": "TenantConfigWithRelations" + }, + "UserCredentialsWithRelations": { + "title": "UserCredentialsWithRelations", + "type": "object", + "description": "(tsType: UserCredentialsWithRelations, schemaOptions: { includeRelations: true })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "authProvider": { + "type": "string" + }, + "authId": { + "type": "string" + }, + "authToken": { + "type": "string" + }, + "secretKey": { + "type": "string", + "description": "Secret for Authenticator app" + }, + "password": { + "type": "string" + }, + "userId": { + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/UserWithRelations" + }, + "foreignKey": {} + }, + "required": [ + "authProvider", + "userId" + ], + "additionalProperties": false, + "x-typescript-type": "UserCredentialsWithRelations" + }, + "UserWithRelations": { + "title": "UserWithRelations", + "type": "object", + "description": "This is signature for user model. (tsType: UserWithRelations, schemaOptions: { includeRelations: true })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "middleName": { + "type": "string" + }, + "username": { + "type": "string" + }, + "email": { + "type": "string" + }, + "designation": { + "type": "string" + }, + "phone": { + "type": "string", + "pattern": "^\\+?[1-9]\\d{1,14}$" + }, + "authClientIds": { + "type": "string" + }, + "lastLogin": { + "type": "string", + "format": "date-time" + }, + "photoUrl": { + "type": "string" + }, + "gender": { + "type": "string", + "description": "This field takes a single character as input in database.\n 'M' for male and 'F' for female.", + "enum": [ + "M", + "F", + "O" + ] + }, + "dob": { + "type": "string", + "format": "date-time" + }, + "defaultTenantId": { + "type": "string" + }, + "defaultTenant": { + "$ref": "#/components/schemas/TenantWithRelations" + }, + "foreignKey": {}, + "credentials": { + "$ref": "#/components/schemas/UserCredentialsWithRelations" + }, + "userTenants": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserTenantWithRelations" + } + } + }, + "required": [ + "firstName", + "username", + "email" + ], + "additionalProperties": false + }, + "UserViewWithRelations": { + "title": "UserViewWithRelations", + "type": "object", + "description": "User details view in DB (tsType: UserViewWithRelations, schemaOptions: { includeRelations: true })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "middleName": { + "type": "string" + }, + "username": { + "type": "string" + }, + "email": { + "type": "string" + }, + "designation": { + "type": "string" + }, + "phone": { + "type": "string" + }, + "authClientIds": { + "type": "string" + }, + "lastLogin": { + "type": "string" + }, + "photoUrl": { + "type": "string" + }, + "gender": { + "type": "string", + "description": "This field takes a single character as input in database.\n 'M' for male and 'F' for female.", + "enum": [ + "M", + "F", + "O" + ] + }, + "dob": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "defaultTenantId": { + "type": "string" + }, + "status": { + "type": "number", + "maximum": 11, + "minimum": 0 + }, + "tenantId": { + "type": "string" + }, + "roleId": { + "type": "string" + }, + "tenantName": { + "type": "string" + }, + "tenantKey": { + "type": "string" + }, + "roleName": { + "type": "string" + }, + "userTenantId": { + "type": "string" + } + }, + "required": [ + "firstName", + "username", + "email", + "defaultTenantId", + "tenantId", + "roleId", + "tenantName", + "userTenantId" + ], + "additionalProperties": false + }, + "RoleWithRelations": { + "title": "RoleWithRelations", + "type": "object", + "description": "(tsType: RoleWithRelations, schemaOptions: { includeRelations: true })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "roleType": { + "type": "number", + "maximum": 15, + "minimum": 0 + }, + "description": { + "type": "string" + }, + "permissions": { + "type": "array", + "items": { + "type": "string" + } + }, + "allowedClients": { + "type": "array", + "items": { + "type": "string" + } + }, + "tenantId": { + "type": "string" + }, + "userTenants": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserTenantWithRelations" + } + }, + "createdByUser": { + "$ref": "#/components/schemas/UserViewWithRelations" + }, + "foreignKey": {}, + "modifiedByUser": { + "$ref": "#/components/schemas/UserViewWithRelations" + } + }, + "required": [ + "name", + "tenantId" + ], + "additionalProperties": false, + "x-typescript-type": "RoleWithRelations" + }, + "UserLevelPermissionWithRelations": { + "title": "UserLevelPermissionWithRelations", + "type": "object", + "description": "(tsType: UserLevelPermissionWithRelations, schemaOptions: { includeRelations: true })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "permission": { + "type": "string" + }, + "allowed": { + "type": "boolean" + }, + "userTenantId": { + "type": "string" + }, + "userTenant": { + "$ref": "#/components/schemas/UserTenantWithRelations" + }, + "foreignKey": {} + }, + "required": [ + "permission", + "allowed", + "userTenantId" + ], + "additionalProperties": false, + "x-typescript-type": "UserLevelPermissionWithRelations" + }, + "UserGroupWithRelations": { + "title": "UserGroupWithRelations", + "type": "object", + "description": "(tsType: UserGroupWithRelations, schemaOptions: { includeRelations: true })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "groupId": { + "type": "string" + }, + "userTenantId": { + "type": "string" + }, + "group": { + "$ref": "#/components/schemas/GroupWithRelations" + }, + "foreignKey": {}, + "userTenant": { + "$ref": "#/components/schemas/UserTenantWithRelations" + } + }, + "required": [ + "groupId", + "userTenantId" + ], + "additionalProperties": false, + "x-typescript-type": "UserGroupWithRelations" + }, + "UserInvitationWithRelations": { + "title": "UserInvitationWithRelations", + "type": "object", + "description": "(tsType: UserInvitationWithRelations, schemaOptions: { includeRelations: true })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "expiresOn": { + "type": "string", + "format": "date-time" + }, + "token": { + "type": "string" + }, + "userTenantId": { + "type": "string" + }, + "userTenant": { + "$ref": "#/components/schemas/UserTenantWithRelations" + }, + "foreignKey": {} + }, + "required": [ + "userTenantId" + ], + "additionalProperties": false, + "x-typescript-type": "UserInvitationWithRelations" + }, + "UserTenantWithRelations": { + "title": "UserTenantWithRelations", + "type": "object", + "description": "(tsType: UserTenantWithRelations, schemaOptions: { includeRelations: true })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "locale": { + "type": "string" + }, + "status": { + "type": "number", + "maximum": 12, + "minimum": 0 + }, + "userId": { + "type": "string" + }, + "tenantId": { + "type": "string" + }, + "roleId": { + "type": "string" + }, + "user": { + "$ref": "#/components/schemas/UserWithRelations" + }, + "foreignKey": {}, + "tenant": { + "$ref": "#/components/schemas/TenantWithRelations" + }, + "role": { + "$ref": "#/components/schemas/RoleWithRelations" + }, + "userLevelPermissions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserLevelPermissionWithRelations" + } + }, + "userGroups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserGroupWithRelations" + } + }, + "userInvitations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserInvitationWithRelations" + } + } + }, + "required": [ + "userId", + "tenantId", + "roleId" + ], + "additionalProperties": false, + "x-typescript-type": "UserTenantWithRelations" + }, + "TenantWithRelations": { + "title": "TenantWithRelations", + "type": "object", + "description": "signature for all tenants (tsType: TenantWithRelations, schemaOptions: { includeRelations: true })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "status": { + "type": "number", + "description": "Tenant status - Active or Inactive", + "enum": [ + 1, + 0 + ], + "nullable": true + }, + "key": { + "type": "string" + }, + "website": { + "type": "string" + }, + "address": { + "type": "string" + }, + "city": { + "type": "string" + }, + "state": { + "type": "string" + }, + "zip": { + "type": "string" + }, + "country": { + "type": "string" + }, + "tenantConfigs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TenantConfigWithRelations" + } + }, + "userTenants": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserTenantWithRelations" + } + }, + "users": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserWithRelations" + } + }, + "roles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RoleWithRelations" + } + }, + "groups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GroupWithRelations" + } + } + }, + "required": [ + "name", + "status" + ], + "additionalProperties": false + }, + "TenantPartial": { + "title": "TenantPartial", + "type": "object", + "description": "signature for all tenants (tsType: Partial, schemaOptions: { partial: true })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "status": { + "type": "number", + "description": "Tenant status - Active or Inactive", + "enum": [ + 1, + 0 + ], + "nullable": true + }, + "key": { + "type": "string" + }, + "website": { + "type": "string" + }, + "address": { + "type": "string" + }, + "city": { + "type": "string" + }, + "state": { + "type": "string" + }, + "zip": { + "type": "string" + }, + "country": { + "type": "string" + } + }, + "additionalProperties": false + }, + "UserGroup": { + "title": "UserGroup", + "type": "object", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "groupId": { + "type": "string" + }, + "userTenantId": { + "type": "string" + } + }, + "required": [ + "groupId", + "userTenantId" + ], + "additionalProperties": false + }, + "NewUserGroupInGroup": { + "title": "NewUserGroupInGroup", + "type": "object", + "description": "(tsType: Omit, schemaOptions: { title: 'NewUserGroupInGroup', exclude: [ 'id', 'groupId' ] })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "userTenantId": { + "type": "string" + } + }, + "required": [ + "userTenantId" + ], + "additionalProperties": false, + "x-typescript-type": "Omit" + }, + "TenantConfig": { + "title": "TenantConfig", + "type": "object", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "configKey": { + "type": "string" + }, + "configValue": { + "type": "object" + }, + "tenantId": { + "type": "string" + } + }, + "required": [ + "configKey", + "tenantId" + ], + "additionalProperties": false + }, + "NewTenantConfigInTenant": { + "title": "NewTenantConfigInTenant", + "type": "object", + "description": "(tsType: Omit, schemaOptions: { title: 'NewTenantConfigInTenant', exclude: [ 'id', 'tenantId' ] })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "configKey": { + "type": "string" + }, + "configValue": { + "type": "object" + } + }, + "required": [ + "configKey" + ], + "additionalProperties": false, + "x-typescript-type": "Omit" + }, + "Group": { + "title": "Group", + "type": "object", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "photoUrl": { + "type": "string" + }, + "tenantId": { + "type": "string" + } + }, + "required": [ + "tenantId" + ], + "additionalProperties": false + }, + "NewGroupInTenant": { + "title": "NewGroupInTenant", + "type": "object", + "description": "(tsType: Omit, schemaOptions: { title: 'NewGroupInTenant', exclude: [ 'id', 'tenantId' ] })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "photoUrl": { + "type": "string" + } + }, + "additionalProperties": false, + "x-typescript-type": "Omit" + }, + "GroupPartial": { + "title": "GroupPartial", + "type": "object", + "description": "(tsType: Partial, schemaOptions: { partial: true })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "photoUrl": { + "type": "string" + }, + "tenantId": { + "type": "string" + } + }, + "additionalProperties": false, + "x-typescript-type": "Partial" + }, + "User": { + "title": "User", + "type": "object", + "description": "This is signature for user model.", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "middleName": { + "type": "string" + }, + "username": { + "type": "string" + }, + "email": { + "type": "string" + }, + "designation": { + "type": "string" + }, + "phone": { + "type": "string", + "pattern": "^\\+?[1-9]\\d{1,14}$" + }, + "authClientIds": { + "type": "string" + }, + "lastLogin": { + "type": "string", + "format": "date-time" + }, + "photoUrl": { + "type": "string" + }, + "gender": { + "type": "string", + "description": "This field takes a single character as input in database.\n 'M' for male and 'F' for female.", + "enum": [ + "M", + "F", + "O" + ] + }, + "dob": { + "type": "string", + "format": "date-time" + }, + "defaultTenantId": { + "type": "string" + } + }, + "required": [ + "firstName", + "username", + "email" + ], + "additionalProperties": false + }, + "NewUserInTenant": { + "title": "NewUserInTenant", + "type": "object", + "description": "This is signature for user model. (tsType: Omit, schemaOptions: { title: 'NewUserInTenant', exclude: [ 'id', 'defaultTenantId' ] })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "middleName": { + "type": "string" + }, + "username": { + "type": "string" + }, + "email": { + "type": "string" + }, + "designation": { + "type": "string" + }, + "phone": { + "type": "string", + "pattern": "^\\+?[1-9]\\d{1,14}$" + }, + "authClientIds": { + "type": "string" + }, + "lastLogin": { + "type": "string", + "format": "date-time" + }, + "photoUrl": { + "type": "string" + }, + "gender": { + "type": "string", + "description": "This field takes a single character as input in database.\n 'M' for male and 'F' for female.", + "enum": [ + "M", + "F", + "O" + ] + }, + "dob": { + "type": "string", + "format": "date-time" + }, + "roleId": { + "type": "string" + }, + "locale": { + "type": "string" + } + }, + "required": [ + "firstName", + "username", + "email", + "roleId" + ], + "additionalProperties": false + }, + "UserDto": { + "title": "UserDto", + "type": "object", + "description": "This is signature for user model.", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "middleName": { + "type": "string" + }, + "username": { + "type": "string" + }, + "email": { + "type": "string" + }, + "designation": { + "type": "string" + }, + "phone": { + "type": "string", + "pattern": "^\\+?[1-9]\\d{1,14}$" + }, + "authClientIds": { + "type": "string" + }, + "lastLogin": { + "type": "string", + "format": "date-time" + }, + "photoUrl": { + "type": "string" + }, + "gender": { + "type": "string", + "description": "This field takes a single character as input in database.\n 'M' for male and 'F' for female.", + "enum": [ + "M", + "F", + "O" + ] + }, + "dob": { + "type": "string", + "format": "date-time" + }, + "defaultTenantId": { + "type": "string" + }, + "roleId": { + "type": "string" + }, + "locale": { + "type": "string" + } + }, + "required": [ + "firstName", + "username", + "email", + "roleId" + ], + "additionalProperties": false + }, + "UserPartial": { + "title": "UserPartial", + "type": "object", + "description": "This is signature for user model. (tsType: Partial, schemaOptions: { partial: true })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "middleName": { + "type": "string" + }, + "username": { + "type": "string" + }, + "email": { + "type": "string" + }, + "designation": { + "type": "string" + }, + "phone": { + "type": "string", + "pattern": "^\\+?[1-9]\\d{1,14}$" + }, + "authClientIds": { + "type": "string" + }, + "lastLogin": { + "type": "string", + "format": "date-time" + }, + "photoUrl": { + "type": "string" + }, + "gender": { + "type": "string", + "description": "This field takes a single character as input in database.\n 'M' for male and 'F' for female.", + "enum": [ + "M", + "F", + "O" + ] + }, + "dob": { + "type": "string", + "format": "date-time" + }, + "defaultTenantId": { + "type": "string" + } + }, + "additionalProperties": false + }, + "UserTenantPrefs": { + "title": "UserTenantPrefs", + "type": "object", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "configKey": { + "type": "string" + }, + "configValue": { + "type": "object" + }, + "userTenantId": { + "type": "string" + } + }, + "required": [ + "configKey", + "configValue" + ], + "additionalProperties": false + }, + "NewUserTenantPrefs": { + "title": "NewUserTenantPrefs", + "type": "object", + "description": "(tsType: Omit, schemaOptions: { title: 'NewUserTenantPrefs', exclude: [ 'id', 'userTenantId' ] })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "configKey": { + "type": "string" + }, + "configValue": { + "type": "object" + } + }, + "required": [ + "configKey", + "configValue" + ], + "additionalProperties": false, + "x-typescript-type": "Omit" + }, + "UserTenantPrefsWithRelations": { + "title": "UserTenantPrefsWithRelations", + "type": "object", + "description": "(tsType: UserTenantPrefsWithRelations, schemaOptions: { includeRelations: true })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "configKey": { + "type": "string" + }, + "configValue": { + "type": "object" + }, + "userTenantId": { + "type": "string" + }, + "userTenant": { + "$ref": "#/components/schemas/UserTenantWithRelations" + }, + "foreignKey": {} + }, + "required": [ + "configKey", + "configValue" + ], + "additionalProperties": false, + "x-typescript-type": "UserTenantPrefsWithRelations" + }, + "UserLevelPermission": { + "title": "UserLevelPermission", + "type": "object", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "permission": { + "type": "string" + }, + "allowed": { + "type": "boolean" + }, + "userTenantId": { + "type": "string" + } + }, + "required": [ + "permission", + "allowed", + "userTenantId" + ], + "additionalProperties": false + }, + "NewUserLevelPermissionInUserTenant": { + "title": "NewUserLevelPermissionInUserTenant", + "type": "object", + "description": "(tsType: @loopback/repository-json-schema#Optional, 'userTenantId'>, schemaOptions: { title: 'NewUserLevelPermissionInUserTenant', exclude: [ 'id' ], optional: [ 'userTenantId' ] })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "permission": { + "type": "string" + }, + "allowed": { + "type": "boolean" + }, + "userTenantId": { + "type": "string" + } + }, + "required": [ + "permission", + "allowed" + ], + "additionalProperties": false, + "x-typescript-type": "@loopback/repository-json-schema#Optional, 'userTenantId'>" + }, + "UserLevelPermissionPartial": { + "title": "UserLevelPermissionPartial", + "type": "object", + "description": "(tsType: Partial, schemaOptions: { partial: true })", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deletedBy": { + "type": "string", + "nullable": true + }, + "createdOn": { + "type": "string", + "format": "date-time" + }, + "modifiedOn": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string" + }, + "modifiedBy": { + "type": "string" + }, + "id": { + "type": "string" + }, + "permission": { + "type": "string" + }, + "allowed": { + "type": "boolean" + }, + "userTenantId": { + "type": "string" + } + }, + "additionalProperties": false, + "x-typescript-type": "Partial" + }, + "PingResponse": { + "type": "object", + "title": "PingResponse", + "properties": { + "greeting": { + "type": "string" + }, + "date": { + "type": "string" + }, + "url": { + "type": "string" + }, + "headers": { + "type": "object", + "properties": { + "Content-Type": { + "type": "string" + } + }, + "additionalProperties": true + } + } + }, + "loopback.Count": { + "type": "object", + "title": "loopback.Count", + "x-typescript-type": "@loopback/repository#Count", + "properties": { + "count": { + "type": "number" + } + } + }, + "tenants.ScopeFilter": { + "type": "object", + "properties": { + "offset": { + "type": "integer", + "minimum": 0 + }, + "limit": { + "type": "integer", + "minimum": 1, + "example": 100 + }, + "skip": { + "type": "integer", + "minimum": 0 + }, + "order": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "where": { + "type": "object", + "additionalProperties": true + }, + "fields": { + "oneOf": [ + { + "type": "object", + "properties": {}, + "additionalProperties": true + }, + { + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true + } + ] + }, + "include": { + "type": "array", + "items": { + "type": "object", + "properties": {}, + "additionalProperties": true + } + } + }, + "additionalProperties": false, + "title": "tenants.ScopeFilter" + }, + "tenants.IncludeFilter.Items": { + "title": "tenants.IncludeFilter.Items", + "type": "object", + "properties": { + "relation": { + "type": "string", + "enum": [ + "tenantConfigs", + "userTenants", + "users", + "roles", + "groups" + ] + }, + "scope": { + "$ref": "#/components/schemas/tenants.ScopeFilter" + } + } + }, + "tenants.Filter": { + "type": "object", + "title": "tenants.Filter", + "properties": { + "offset": { + "type": "integer", + "minimum": 0 + }, + "limit": { + "type": "integer", + "minimum": 1, + "example": 100 + }, + "skip": { + "type": "integer", + "minimum": 0 + }, + "order": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "fields": { + "oneOf": [ + { + "type": "object", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "boolean" + }, + "deletedBy": { + "type": "boolean" + }, + "createdOn": { + "type": "boolean" + }, + "modifiedOn": { + "type": "boolean" + }, + "createdBy": { + "type": "boolean" + }, + "modifiedBy": { + "type": "boolean" + }, + "id": { + "type": "boolean" + }, + "name": { + "type": "boolean" + }, + "status": { + "type": "boolean" + }, + "key": { + "type": "boolean" + }, + "website": { + "type": "boolean" + }, + "address": { + "type": "boolean" + }, + "city": { + "type": "boolean" + }, + "state": { + "type": "boolean" + }, + "zip": { + "type": "boolean" + }, + "country": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "deleted", + "deletedOn", + "deletedBy", + "createdOn", + "modifiedOn", + "createdBy", + "modifiedBy", + "id", + "name", + "status", + "key", + "website", + "address", + "city", + "state", + "zip", + "country" + ], + "example": "deleted" + }, + "uniqueItems": true + } + ], + "title": "tenants.Fields" + }, + "include": { + "title": "tenants.IncludeFilter", + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/tenants.IncludeFilter.Items" + }, + { + "type": "string" + } + ] + } + } + }, + "additionalProperties": false, + "x-typescript-type": "@loopback/repository#Filter" + }, + "tenants.Filter1": { + "type": "object", + "title": "tenants.Filter", + "properties": { + "offset": { + "type": "integer", + "minimum": 0 + }, + "limit": { + "type": "integer", + "minimum": 1, + "example": 100 + }, + "skip": { + "type": "integer", + "minimum": 0 + }, + "order": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "where": { + "title": "tenants.WhereFilter", + "type": "object", + "additionalProperties": true + }, + "fields": { + "oneOf": [ + { + "type": "object", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "boolean" + }, + "deletedBy": { + "type": "boolean" + }, + "createdOn": { + "type": "boolean" + }, + "modifiedOn": { + "type": "boolean" + }, + "createdBy": { + "type": "boolean" + }, + "modifiedBy": { + "type": "boolean" + }, + "id": { + "type": "boolean" + }, + "name": { + "type": "boolean" + }, + "status": { + "type": "boolean" + }, + "key": { + "type": "boolean" + }, + "website": { + "type": "boolean" + }, + "address": { + "type": "boolean" + }, + "city": { + "type": "boolean" + }, + "state": { + "type": "boolean" + }, + "zip": { + "type": "boolean" + }, + "country": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "deleted", + "deletedOn", + "deletedBy", + "createdOn", + "modifiedOn", + "createdBy", + "modifiedBy", + "id", + "name", + "status", + "key", + "website", + "address", + "city", + "state", + "zip", + "country" + ], + "example": "deleted" + }, + "uniqueItems": true + } + ], + "title": "tenants.Fields" + }, + "include": { + "title": "tenants.IncludeFilter", + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/tenants.IncludeFilter.Items" + }, + { + "type": "string" + } + ] + } + } + }, + "additionalProperties": false, + "x-typescript-type": "@loopback/repository#Filter" + }, + "user_tenant_prefs.ScopeFilter": { + "type": "object", + "properties": { + "offset": { + "type": "integer", + "minimum": 0 + }, + "limit": { + "type": "integer", + "minimum": 1, + "example": 100 + }, + "skip": { + "type": "integer", + "minimum": 0 + }, + "order": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "where": { + "type": "object", + "additionalProperties": true + }, + "fields": { + "oneOf": [ + { + "type": "object", + "properties": {}, + "additionalProperties": true + }, + { + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true + } + ] + }, + "include": { + "type": "array", + "items": { + "type": "object", + "properties": {}, + "additionalProperties": true + } + } + }, + "additionalProperties": false, + "title": "user_tenant_prefs.ScopeFilter" + }, + "user_tenant_prefs.IncludeFilter.Items": { + "title": "user_tenant_prefs.IncludeFilter.Items", + "type": "object", + "properties": { + "relation": { + "type": "string", + "enum": [ + "userTenant" + ] + }, + "scope": { + "$ref": "#/components/schemas/user_tenant_prefs.ScopeFilter" + } + } + }, + "user_tenant_prefs.Filter": { + "type": "object", + "title": "user_tenant_prefs.Filter", + "properties": { + "offset": { + "type": "integer", + "minimum": 0 + }, + "limit": { + "type": "integer", + "minimum": 1, + "example": 100 + }, + "skip": { + "type": "integer", + "minimum": 0 + }, + "order": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "where": { + "title": "user_tenant_prefs.WhereFilter", + "type": "object", + "additionalProperties": true + }, + "fields": { + "oneOf": [ + { + "type": "object", + "properties": { + "deleted": { + "type": "boolean" + }, + "deletedOn": { + "type": "boolean" + }, + "deletedBy": { + "type": "boolean" + }, + "createdOn": { + "type": "boolean" + }, + "modifiedOn": { + "type": "boolean" + }, + "createdBy": { + "type": "boolean" + }, + "modifiedBy": { + "type": "boolean" + }, + "id": { + "type": "boolean" + }, + "configKey": { + "type": "boolean" + }, + "configValue": { + "type": "boolean" + }, + "userTenantId": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "deleted", + "deletedOn", + "deletedBy", + "createdOn", + "modifiedOn", + "createdBy", + "modifiedBy", + "id", + "configKey", + "configValue", + "userTenantId" + ], + "example": "deleted" + }, + "uniqueItems": true + } + ], + "title": "user_tenant_prefs.Fields" + }, + "include": { + "title": "user_tenant_prefs.IncludeFilter", + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/user_tenant_prefs.IncludeFilter.Items" + }, + { + "type": "string" + } + ] + } + } + }, + "additionalProperties": false, + "x-typescript-type": "@loopback/repository#Filter" + } + } + }, + "servers": [ + { + "url": "/" + } + ] +} \ No newline at end of file