diff --git a/package-lock.json b/package-lock.json index 8293247..4146cd7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", "@dadosfera/dadosfera-logs": "^1.0.0-beta.4", - "@dadosfera/protospack-v2": "3.18.11", + "@dadosfera/protospack-v2": "3.18.18", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7", @@ -1726,9 +1726,9 @@ } }, "node_modules/@dadosfera/protospack-v2": { - "version": "3.18.11", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.18.11.tgz", - "integrity": "sha512-8/+RLEM6qheWIQf0hlgE3Rfu9y2vmoze0LvJ/imRkg2tObO+HRxxpZuGKaY+naH8maUawyOX8xO4lpmfotjOEw==", + "version": "3.18.18", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.18.18.tgz", + "integrity": "sha512-4KiuMUDMZu8ouic0RBBuM7Ky9wfczeS4GKLRyD29GV371m/NOo+1ujrcLysc8OuevPdXmaqzCgE6WWi6SIt9sQ==", "dependencies": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", @@ -12306,9 +12306,9 @@ } }, "@dadosfera/protospack-v2": { - "version": "3.18.11", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.18.11.tgz", - "integrity": "sha512-8/+RLEM6qheWIQf0hlgE3Rfu9y2vmoze0LvJ/imRkg2tObO+HRxxpZuGKaY+naH8maUawyOX8xO4lpmfotjOEw==", + "version": "3.18.18", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.18.18.tgz", + "integrity": "sha512-4KiuMUDMZu8ouic0RBBuM7Ky9wfczeS4GKLRyD29GV371m/NOo+1ujrcLysc8OuevPdXmaqzCgE6WWi6SIt9sQ==", "requires": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", diff --git a/package.json b/package.json index 2f6ae93..7390508 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ }, "scripts": { "preinstall": "aws codeartifact login --tool npm --namespace @dadosfera --repository dadosfera-npm --domain dadosfera --domain-owner 611330257153 --region us-east-1", + "proto-update": "npm i @dadosfera/protospack-v2@latest --save-exact", "prebuild": "rimraf dist", "build": "nest build", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", @@ -27,7 +28,7 @@ "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", "@dadosfera/dadosfera-logs": "^1.0.0-beta.4", - "@dadosfera/protospack-v2": "3.18.11", + "@dadosfera/protospack-v2": "3.18.18", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7", diff --git a/src/authentication/permissions.enum.ts b/src/authentication/permissions.enum.ts index 5bd410c..010eff5 100644 --- a/src/authentication/permissions.enum.ts +++ b/src/authentication/permissions.enum.ts @@ -132,7 +132,7 @@ export const PERMISSIONS_GROUPS = { name: { 'pt-br': 'Excluir Fonte', 'en-us': 'Remove Source', - 'es-s': 'Eliminar Source', + 'es-es': 'Eliminar Source', }, }, UPDATE: { diff --git a/src/modules/catalog/catalog.controller.ts b/src/modules/catalog/catalog.controller.ts index c684d4c..33f6732 100644 --- a/src/modules/catalog/catalog.controller.ts +++ b/src/modules/catalog/catalog.controller.ts @@ -2,14 +2,15 @@ import { Body, Controller, Delete, - ForbiddenException, Get, + Headers, HttpException, Inject, Param, Post, Put, Query, + UnsupportedMediaTypeException, } from '@nestjs/common'; import { ApiTags } from '@nestjs/swagger'; import { @@ -21,6 +22,16 @@ import { CatalogService } from './catalog.service'; import { DadosferaLogger } from '@dadosfera/dadosfera-logs'; import { PackTheMetadata } from 'src/utils/ PackTheMetadata'; import { RequestUser, User } from 'src/authentication/user.decorator'; +import { + ICatalogAllResponse, + IColumnsMetadataResponse, + IDeleteComment, + IDocsResponse, + IMakeAComment, + IOneDataAsset, + IPreviewResponse, + IUpdateDataRequest, +} from './dtos'; @ApiTags('Catalog') @Controller('catalog') @@ -56,54 +67,15 @@ export class CatalogController { this.logger = dadosferaLogger.logger; } - @Put('manage_permissions/:id') - async manageDataAssetPermissions( - @Param('id') id: string, + @Get() + async catalogAll( @User() user: RequestUser, - @Body() body, - ) { - const { customer_id, customer_name, user_id, username } = user; - const metadata = PackTheMetadata({ - customer_id, - customer_name, - user_id, - username, - }); - const response = await this.catalogService.managePermissions( - { ...body, id }, - metadata, - ); - - return { data_asset: JSON.parse(response.data_asset) }; - } - - @Put('revoke_permissions/:id') - async revokeDataAssetPermissions( - @Param('id') id: string, - @User() user: RequestUser, - @Body() body, - ) { - const { customer_id, customer_name, user_id, username } = user; - const metadata = PackTheMetadata({ - customer_id, - customer_name, - user_id, - username, - }); - const response = await this.catalogService.revokePermissions( - { ...body, id }, - metadata, - ); - - return { message: response.message }; - } - - @Get('all') - async catalogAll(@User() user: RequestUser, @Body() body, @Query() params) { + @Query() query, + ): Promise { const { user_id, customer_name, customer_id, username, permissions } = user; - this.logger.info(`/catalog - ON CATALOG ALL ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, + this.logger.info(`/catalog - Catalog all data assets`, { + user_id, + customer_name, }); const is_data_manager = permissions.includes( @@ -122,434 +94,12 @@ export class CatalogController { }); const res = await this.catalogService.getAllOpenSearchDataAssets( - params, + query, metadata, customer_id, ); - return res.data_assets; - } - - @Get('data_apps') - async dataAppsAll(@Body() body) { - this.logger.info(`/catalog - ON FIND ALL DATA APPS ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, - }); - - const res = await this.catalogService.dataAppsAll(body); - - return res; - } - - @Delete('data_apps/:id') - async dataAppsOne(@Param() params, @Body() body) { - this.logger.info(`/catalog - ON FIND ONE DATA APP ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, - }); - const { id } = params; - - const res = await this.catalogService.dataAppsOne(id, body); - - return res; - } - - @Get('dashboard-metabase') - async getAllDashboardMetabase(@Body() body) { - this.logger.info(`/catalog - ON GET ALL DASHBOARDS METABASE ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, - }); - - const res = await this.catalogService.getAllDashboardMetabase(body); - - return res; - } - - @Get('dashboard-metabase/:id') - async getOneDashboardMetabase( - @Body() body, - @Param() params, - @User() user: RequestUser, - ) { - const { id } = params; - this.logger.info(`/catalog - ON GET ONE DASHBOARD METABASE ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, - }); - - const { username, user_id, customer_id, customer_name, permissions } = user; - const is_data_manager = permissions.includes( - PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER.seqid, - ); - let has_permission = false; - const metadata = PackTheMetadata({ - username, - user_id, - customer_id, - customer_name, - }); - - const user_roles = await this.catalogService.getUserRolesIds(user_id); - - const res = await this.catalogService.getOneDashboardMetabase({ - id, - body, - metadata, - customer_id, - user_id: undefined, - }); - - const dashboard = res.dashboard; - - if (dashboard.owner === username) has_permission = true; - - for (const role of user_roles) { - if (dashboard.p_roles.includes(role)) has_permission = true; - } - - if (dashboard.p_users.includes(user_id)) has_permission = true; - - if (is_data_manager || has_permission) { - delete dashboard.p_roles; - delete dashboard.p_users; - return res; - } - - throw new HttpException( - 'You do not have permission to access this data asset.', - 403, - ); - } - - @Get('dashboard-metabase/rls/:id') - async getOneDashboardMetabaseRls( - @Body() body, - @Param() params, - @User() user: RequestUser, - ) { - const { username, user_id, customer_id, customer_name, permissions } = user; - const { id } = params; - this.logger.info(`/catalog - ON GET ONE DASHBOARD METABASE ROUTE`, { - username, - customer_name, - }); - - const is_data_manager = permissions.includes( - PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER.seqid, - ); - let has_permission = false; - const metadata = PackTheMetadata({ - username, - user_id, - customer_id, - customer_name, - }); - - const user_roles = await this.catalogService.getUserRolesIds(user_id); - - const res = await this.catalogService.getOneDashboardMetabase({ - id, - body, - metadata, - customer_id, - user_id, - }); - - const dashboard = res.dashboard; - - if (dashboard.owner === username) has_permission = true; - - for (const role of user_roles) { - if (dashboard.p_roles.includes(role)) has_permission = true; - } - - if (dashboard.p_users.includes(user_id)) has_permission = true; - - if (is_data_manager || has_permission) { - delete dashboard.p_roles; - delete dashboard.p_users; - return res; - } - - throw new HttpException( - 'You do not have permission to access this data asset.', - 403, - ); - } - - @Get('table-metadata') - async getAllTableMetadata( - @Body() body, - @Query() query, - @User() user: RequestUser, - ) { - this.logger.info(`/catalog - ON GET ALL TABLES METADATA ROUTE`, { - user: user.user_id, - customer: user.customer_name, - }); - const { user_id, customer_name, customer_id, permissions, username } = user; - const is_data_manager = permissions.includes( - PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER.seqid, - ); - let has_permission = false; - const metadata = PackTheMetadata({ - user_id, - customer_id, - customer_name, - }); - - if (!query) { - const res = await this.catalogService.getAllTableMetadata(body); - return res; - } else { - const user_roles = await this.catalogService.getUserRolesIds(user_id); - const res = await this.catalogService.getOneTableMetadata( - body, - query, - metadata, - customer_id, - ); - const table = res[0]; - - if (table.owner === username) has_permission = true; - - for (const role of user_roles) { - if (table.p_roles.includes(role)) has_permission = true; - } - - if (table.p_users.includes(user_id)) has_permission = true; - - if (is_data_manager || has_permission) { - delete table.p_roles; - delete table.p_users; - return res; - } - - throw new ForbiddenException( - 'You do not have permission to access this data asset.', - ); - } - } - - @Delete('table-metadata/:id') - async deleteOneTableMetadata(@Param() params, @Body() body) { - const { id } = params; - this.logger.info(`/catalog - ON DELETE ONE TABLE METADATA ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, - }); - - const res = await this.catalogService.deleteOneTableMetadata(id, body); - - return res; - } - - @Get('column-metadata') - async getOneColumnMetadata(@Body() body, @Query() params) { - this.logger.info(`/catalog - ON GET ONE COLUMN METADATA ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, - }); - - const res = await this.catalogService.getOneColumnMetadata(body, params); - - return res; - } - - @Delete('column-metadata/:id') - async deleteOneColumnMetadata(@Param() params, @Body() body) { - this.logger.info(`/catalog - ON DELETE ONE COLUMN METADATA ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, - }); - const { id } = params; - - const res = await this.catalogService.deleteOneColumnMetadata(id, body); - - return res; - } - - @Get('data-preview') - async getOneDataPreview(@Body() body, @Query() params) { - this.logger.info(`/catalog - ON GET ONE DATAPREVIEW ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, - }); - - const res = await this.catalogService.getOneDataPreview(body, params); - - return res; - } - - @Get('data-status') - async getDataStatus(@Body() body) { - this.logger.info(`/catalog - ON GET DATA STATUS ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, - }); - - const res = await this.catalogService.getDataStatus(body); - - return res; - } - - @Get('data-status') - async createDataStatus(@Body() body) { - this.logger.info(`/catalog - ON CREATE DATA STATUS ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, - }); - - const res = await this.catalogService.createDataStatus(body); - - return res; - } - - @Get('data-description') - async getDataDescription(@Body() body) { - this.logger.info(`/catalog - ON GET DATA DESCRIPTION ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, - }); - - const res = await this.catalogService.getDataDescription(body); - - return res; - } - - @Post('data-description') - async createDataDescription(@Body() body, @User() user: RequestUser) { - this.logger.info(`/catalog - ON CREATE DATA DESCRIPTION ROUTE`, { - user: user.user_id, - customer: user.customer_name, - }); - - const { user_id, customer_name, customer_id } = user; - const metadata = PackTheMetadata({ - user_id, - customer_id, - customer_name, - }); - return await this.catalogService.createDataDescription(body, metadata); - } - - @Get('data-docs') - async getDataDocs(@Body() body) { - this.logger.info(`/catalog - ON GET DATA DOCS ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, - }); - - const res = await this.catalogService.getDataDocs(body); - - return res; - } - - @Post('data-docs') - async createDataDocs(@Body() body) { - this.logger.info(`/catalog - ON CREATE DATA DOCS ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, - }); - - const res = await this.catalogService.createDataDocs(body); - - return res; - } - - @Get('data-rating') - async getDataRating(@Body() body) { - this.logger.info(`/catalog - ON GET DATA RATING ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, - }); - - const res = await this.catalogService.getDataRating(body); - - return res; - } - - @Post('data-rating') - async createDataRating(@Body() body) { - this.logger.info(`/catalog - ON GET DATA RATING ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, - }); - - const res = await this.catalogService.createDataRating(body); - - return res; - } - - @Get('summary-rating/:id') - async getSummaryRating() { - this.logger.info(`/catalog - ON GET SUMMARY RATING ROUTE`); - //const { id } = params; - - // - - //const res = await this.catalogService.getSummaryRating(id, body); - - return { - avg_rating: 0, - rating_count: 0, - }; - } - - @Get('data-comment') - async getDataComment(@Body() body) { - this.logger.info(`/catalog - ON GET DATA COMMENT ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, - }); - - const res = await this.catalogService.getDataComment(body); - - return res; - } - - @Post('data-comment') - async createDataComment(@Body() body) { - this.logger.info(`/catalog - ON GET DATA COMMENT ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, - }); - - const res = await this.catalogService.createDataComment(body); - - return res; - } - - @Get('data-review') - async getDataReview(@Body() body, @Query() params) { - this.logger.info(`/catalog - ON GET DATA REVIEW ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, - }); - - const res = await this.catalogService.getDataReview(body, params); - - return res; - } - - @Post('tags') - async createTags(@Body() body, @User() user: RequestUser) { - this.logger.info(`/catalog - ON CREATE TAG ROUTE`, { - user: user.user_id, - customer: user.customer_name, - }); - const { user_id, customer_name, customer_id } = user; - const metadata = PackTheMetadata({ - user_id, - customer_id, - customer_name, - }); - - const res = await this.catalogService.createTags(body, metadata); - - return res.data_assets; + return { ...res }; } @Get('tags') @@ -571,89 +121,379 @@ export class CatalogController { return res; } - @Delete('tags/:id') - async deleteTags(@Param() params, @Body() body) { - this.logger.info(`/catalog - ON DELETE TAG ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, + @Get('data-asset/:id') + async getDataAsset( + @User() user: RequestUser, + @Headers() headers, + @Param('id') id, + ) { + const { username, user_id, customer_id, customer_name, permissions } = user; + const [data_asset_type, data_asset_id] = id.split('-'); + + this.logger.info(`/catalog - ON GET ONE DASHBOARD METABASE ROUTE`, { + username, + customer_name, }); - const { id } = params; - body.data_asset_id = id; - const { user_id, customer, customer_id } = body.info; + + const is_data_manager = permissions.includes( + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER.seqid, + ); + let has_permission = false; const metadata = PackTheMetadata({ + username, + user_id: undefined, + customer_id, + customer_name, + }); + + const user_roles = await this.catalogService.getUserRolesIds(user_id); + + const { data_asset } = await this.catalogService.getOneDataAsset({ + customer_id, + data_asset_id, + data_asset_type, + metadata, + }); + + if (data_asset?.owner === username) has_permission = true; + + for (const role of user_roles) { + if (data_asset.p_roles.includes(role)) has_permission = true; + } + + if (data_asset.p_users.includes(user_id)) has_permission = true; + + if (is_data_manager || has_permission) { + delete data_asset.p_roles; + delete data_asset.p_users; + return { data_asset }; + } + + throw new HttpException( + 'You do not have permission to access this data asset.', + 403, + ); + } + + @Get('data-asset/rls/:id') + async getDataAssetRls( + @User() user: RequestUser, + @Headers() headers, + @Param('id') id, + ) { + const { username, user_id, customer_id, customer_name, permissions } = user; + const [data_asset_type, data_asset_id] = id.split('-'); + + this.logger.info(`/catalog - ON GET ONE DASHBOARD METABASE ROUTE`, { + username, + customer_name, + }); + + const is_data_manager = permissions.includes( + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER.seqid, + ); + let has_permission = false; + const metadata = PackTheMetadata({ + username, user_id, customer_id, - customer_name: customer, - }); - const res = await this.catalogService.deleteTags(body, metadata); - - return res; - } - - @Post('table-tags') - async createTableTags(@Body() body) { - this.logger.info(`/catalog - ON CREATE TABLE TAG ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, + customer_name, }); - const res = await this.catalogService.createTableTags(body); + const user_roles = await this.catalogService.getUserRolesIds(user_id); - return res; - } - - @Get('table-tags/:data_asset_id') - async getAllTableTags(@Body() body, @Param() params) { - this.logger.info(`/catalog - ON GET ALL TABLE TAGS ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, - }); - const { user_id, customer, customer_id } = body.info; - const metadata = PackTheMetadata({ - user_id, + const { data_asset } = await this.catalogService.getOneDataAsset({ customer_id, - customer_name: customer, + data_asset_id, + data_asset_type, + metadata, + }); + + if (data_asset?.owner === username) has_permission = true; + + for (const role of user_roles) { + if (data_asset.p_roles.includes(role)) has_permission = true; + } + + if (data_asset.p_users.includes(user_id)) has_permission = true; + + if (is_data_manager || has_permission) { + delete data_asset.p_roles; + delete data_asset.p_users; + return { data_asset }; + } + + throw new HttpException( + 'You do not have permission to access this data asset.', + 403, + ); + } + + @Get('data-asset/:id/columns-metadata') + async getDataAssetColumnsMetadata( + @User() user: RequestUser, + @Headers('Dadosfera-Lang') language, + @Param('id') id, + ): Promise { + const { customer_name, customer_id, user_id, username } = user; + const data_asset_type = id.split('-')[0]; + + const supported_data_assets = ['dataset']; + + if (!supported_data_assets.includes(data_asset_type)) { + throw new UnsupportedMediaTypeException( + `${data_asset_type} does not have a preview function for the time being.`, + ); + } + + this.logger.info(`/catalog - ON GET DATA DOCS ROUTE`, { + user_id, + customer_name, + }); + + const metadata = PackTheMetadata({ + customer_name, + customer_id, + user_id, + username, + language, + }); + + const columns_metadata = + await this.catalogService.getDatasetColumnsMetadata(id, metadata); + + return { columns_metadata }; + } + + @Get('data-asset/:id/preview') + async getDataAssetPreview( + @User() user: RequestUser, + @Headers('Dadosfera-lang') language, + @Param('id') id, + ): Promise { + const { customer_name, customer_id, user_id, username } = user; + const data_asset_type = id.split('-')[0]; + + const supported_data_assets = ['dataset']; + + if (!supported_data_assets.includes(data_asset_type)) { + throw new UnsupportedMediaTypeException( + `${data_asset_type} does not have a preview function for the time being.`, + ); + } + + this.logger.info(`/catalog - ON GET DATA DOCS ROUTE`, { + user_id, + customer_name, + }); + + const metadata = PackTheMetadata({ + customer_name, + customer_id, + user_id, + username, + language, + }); + + const preview = await this.catalogService.getDatasetPreview(id, metadata); + + return { preview }; + } + + @Get('data-asset/:id/docs') + async getDataAssetDocs( + @User() user: RequestUser, + @Headers('Dadosfera-Lang') language, + @Param('id') id, + ): Promise { + const { customer_name, customer_id, user_id, username } = user; + const data_asset_type = id.split('-')[0]; + + const supported_data_assets = ['dataset']; + + if (!supported_data_assets.includes(data_asset_type)) { + throw new UnsupportedMediaTypeException( + `${data_asset_type} does not have a documentation function for the time being.`, + ); + } + + this.logger.info(`/catalog - ON GET DATA DOCS ROUTE`, { + user_id, + customer_name, + }); + + const metadata = PackTheMetadata({ + customer_name, + customer_id, + user_id, + username, + language, + }); + + const docs = await this.catalogService.getDataDocs(id, metadata); + + return { docs }; + } + + @Put('data-asset/:id') + async updateDataAsset( + @User() user: RequestUser, + @Headers('Dadosfera-Lang') language, + @Param('id') id, + @Body() body: IUpdateDataRequest, + ): Promise { + const { customer_id, customer_name, user_id, username } = user; + const metadata = PackTheMetadata({ + customer_id, + customer_name, + user_id, + username, + language, + }); + + const result = await this.catalogService.updateOneDataAsset({ + body, + data_asset_id: id, + customer_id, + metadata, + }); + + delete result.data_asset.p_roles; + delete result.data_asset.p_users; + + return result; + } + + @Post('data-asset/:id/docs') + async manageDataAssetDocs( + @User() user: RequestUser, + @Headers() headers, + @Param('id') data_asset_id, + @Body('docs') docs: string, + ) { + const { user_id, customer_name } = user; + const [data_asset_type, id] = data_asset_id.split('-'); + + this.logger.info(`/catalog - ON GET DATA DOCS ROUTE`, { + user_id, + customer_name, + }); + + const res = await this.catalogService.createDataDocs({ + table_id: id, + docs, + info: { + customer: customer_name, + }, }); - const res = await this.catalogService.findAllTableTags(params, metadata); return res; } - @Delete('table-tags/:id') - async deleteTableTags(@Param() params, @Body() body) { - this.logger.info(`/catalog - ON CREATE TABLE TAGS ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, + @Put('data-asset/:id/manage-permissions') + async manageDataAssetPermissions( + @Param('id') id: string, + @User() user: RequestUser, + @Body() body, + ) { + const { customer_id, customer_name, user_id, username } = user; + const metadata = PackTheMetadata({ + customer_id, + customer_name, + user_id, + username, }); - const { id } = params; + const response = await this.catalogService.managePermissions( + { ...body, id }, + metadata, + ); - const res = await this.catalogService.deleteTableTags(id, body); - - return res; + return { data_asset: JSON.parse(response.data_asset) }; } - @Get('table-rules') - async getTableRules(@Body() body) { - this.logger.info(`/catalog - ON GET TABLE RULES ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, + @Put('data-asset/:id/revoke-permissions') + async revokeDataAssetPermissions( + @Param('id') id: string, + @User() user: RequestUser, + @Body() body, + ) { + const { customer_id, customer_name, user_id, username } = user; + const metadata = PackTheMetadata({ + customer_id, + customer_name, + user_id, + username, }); + const response = await this.catalogService.revokePermissions( + { ...body, id }, + metadata, + ); - const res = await this.catalogService.getTableRules(body); - - return res; + return { message: response.message }; } - @Delete('table-rules/:id') - async deleteTableRules(@Param() params, @Body() body) { - this.logger.info(`/catalog - ON DELETE TABLE RULES ROUTE`, { - user: body.info.user_id, - customer: body.info.customer, + @Post('data-asset/:id/comment') + async commentOnDataAsset( + @Param('id') id: string, + @User() user: RequestUser, + @Body() body: IMakeAComment, + ) { + const { message } = body; + const { customer_id, customer_name, user_id, username } = user; + const metadata = PackTheMetadata({ + customer_id, + customer_name, + user_id, + username, }); - const { id } = params; + const response = await this.catalogService.commentOnDataAsset( + { data_asset_id: id, username, message }, + metadata, + ); - const res = await this.catalogService.deleteTableRules(id, body); + return response; + } - return res; + @Delete('data-asset/:id') + async deleteDataAsset( + @Param('id') data_asset_id: string, + @User() user: RequestUser, + ) { + const { customer_id, customer_name, user_id, username } = user; + const metadata = PackTheMetadata({ + customer_id, + customer_name, + user_id, + username, + }); + + const [type, id] = data_asset_id.split('-'); + const response = await this.catalogService.deleteDataAsset( + { id, type }, + metadata, + ); + + return response; + } + + @Delete('data-asset/:id/comment') + async deleteComment( + @Param('id') id: string, + @User() user: RequestUser, + @Body() body: IDeleteComment, + ) { + const { customer_id, customer_name, user_id, username } = user; + const metadata = PackTheMetadata({ + customer_id, + customer_name, + user_id, + username, + }); + const response = await this.catalogService.deleteComment( + { data_asset_id: id, comment: body.comment }, + metadata, + ); + + return response; } } diff --git a/src/modules/catalog/catalog.service.ts b/src/modules/catalog/catalog.service.ts index a486bbc..f2d2426 100644 --- a/src/modules/catalog/catalog.service.ts +++ b/src/modules/catalog/catalog.service.ts @@ -1,8 +1,10 @@ import DadosferaLogger from '@dadosfera/dadosfera-logs/dist'; -import { ReadService } from '@dadosfera/protospack-v2/dist/lib/Catalog'; -import { ProtoServices } from '@dadosfera/protospack-v2/dist/lib/Catalog'; -import { Messages } from '@dadosfera/protospack-v2/dist/lib/Catalog'; -import { WriteService } from '@dadosfera/protospack-v2/dist/lib/Catalog'; +import { + WriteService, + ReadService, + ProtoServices, + Messages, +} from '@dadosfera/protospack-v2/dist/lib/Catalog'; import { HttpException, HttpStatus, @@ -15,6 +17,7 @@ import { lastValueFrom } from 'rxjs'; import { CatalogClientConfiguration } from './catalog-client'; import { UsersService } from '../users/users.service'; import { RolesService } from '../roles/roles.service'; +import { Metadata } from '@grpc/grpc-js'; class CatalogService implements OnModuleInit { catalogReadService: ReadService.CatalogReadServices; @@ -81,34 +84,43 @@ class CatalogService implements OnModuleInit { }); } - async catalogAll(body) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.get(`${nimbusUrl}/api/catalog/all/`); + async commentOnDataAsset(data: Messages.MakeACommentRequest, metadata) { + this.logger.info('CatalogService - Manage Data assets permissions'); - return data; + return lastValueFrom( + this.catalogWriteService.MakeAComment(data, metadata), + ).catch((err) => { + throw new HttpException( + err.details, + err.code === 6 ? HttpStatus.CONFLICT : 404, + ); + }); } - async dataAppsAll(body) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.get(`${nimbusUrl}/api/catalog/data_apps/`); - return data; + async deleteComment(data: Messages.UpdateACommentRequest, metadata) { + this.logger.info('CatalogService - Manage Data assets permissions'); + + return lastValueFrom( + this.catalogWriteService.UpdateAComment(data, metadata), + ).catch((err) => { + throw new HttpException( + err.details, + err.code === 6 ? HttpStatus.CONFLICT : 404, + ); + }); } - async dataAppsOne(id, body) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.get( - `${nimbusUrl}/api/catalog/data_apps/${id}/`, - ); + async deleteDataAsset(data: Messages.DeleteDataAssetRequest, metadata) { + this.logger.info('CatalogService - Manage Data assets permissions'); - return data; - } - - async getAllDashboardMetabase(body) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.get( - `${nimbusUrl}/api/catalog/dashboard-metabase/`, - ); - return data; + return lastValueFrom( + this.catalogWriteService.DeleteDataAsset(data, metadata), + ).catch((err) => { + throw new HttpException( + err.details, + err.code === 6 ? HttpStatus.CONFLICT : 404, + ); + }); } async getUserRolesIds(userId: string) { @@ -145,15 +157,23 @@ class CatalogService implements OnModuleInit { return [customer_users, customer_roles]; } - async getAllOpenSearchDataAssets( - data: Messages.GetAllDataAssetsRequest, - metadata, - customer_id, - ) { + async getAllOpenSearchDataAssets(query, metadata, customer_id) { this.logger.info('CatalogService - getAllOpenSearchDashboard'); - const response = await lastValueFrom( - this.catalogReadService.GetAllDataAssets(data, metadata), + const { search, page, size, sort_by, order, ...filters } = query; + + const { data_assets, total } = await lastValueFrom( + this.catalogReadService.GetAllDataAssets( + { + search, + page, + size, + sort_by, + order, + filters: JSON.stringify(filters), + }, + metadata, + ), ).catch((err) => { throw new HttpException( err.details, @@ -161,12 +181,12 @@ class CatalogService implements OnModuleInit { ); }); - const data_assets = JSON.parse(response.data_assets); + const result = JSON.parse(data_assets); const [customer_users, customer_roles] = await this.getUsernamesAndRolesByCustomerId(customer_id); - for (const asset of data_assets.tables) { + for (const asset of result.data_assets) { const condition = asset.owner && !asset.owner.includes('@') ? true : false; const result = condition @@ -198,50 +218,18 @@ class CatalogService implements OnModuleInit { }); } - for (const asset of data_assets.dashboards) { - const condition = - asset.owner && !asset.owner.includes('@') ? true : false; - const result = condition - ? await this.userService.findOneById(asset.owner).catch(() => null) - : null; - - const owner = result !== null ? result.user.username : null; - - const roles = []; - const users = []; - - for (const role of customer_roles) { - for (const role_id of asset.roles) { - if (role.id === role_id) roles.push(role); - } - } - - for (const user of customer_users) { - for (const user_id of asset.users) { - if (user.id === user_id) users.push(user); - } - } - - Object.assign(asset, { - ...asset, - owner, - roles, - users, - }); - } - - return { data_assets }; + return { data_assets: result.data_assets, total }; } - async getOneDashboardMetabase({ id, body, metadata, customer_id, user_id }) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.get( - `${nimbusUrl}/api/catalog/dashboard-metabase/${id}?user_id=${user_id}`, - ); - + async getOneDataAsset({ + data_asset_id, + data_asset_type, + customer_id, + metadata, + }) { const { data_asset } = await lastValueFrom( this.catalogReadService.GetOneDataAsset( - { id, type: 'dashboard' }, + { id: data_asset_id, type: data_asset_type }, metadata, ), ); @@ -273,9 +261,7 @@ class CatalogService implements OnModuleInit { } } - Object.assign(data.dashboard, { - tags: opensearchTable.tags, - description: opensearchTable.description || null, + Object.assign(opensearchTable, { p_roles: opensearchTable.roles, p_users: opensearchTable.users, roles, @@ -283,163 +269,94 @@ class CatalogService implements OnModuleInit { owner, }); - return data; + return { data_asset: opensearchTable }; } - async getAllTableMetadata(body) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.get( - `${nimbusUrl}/api/catalog/table-metadata/`, - ); - return data; - } - - async getOneTableMetadata(body, params, metadata, customer_id) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.get( - `${nimbusUrl}/api/catalog/table-metadata/`, - { params: params }, - ); - if (data?.length === 1) { - const { data_asset } = await lastValueFrom( - this.catalogReadService.GetOneDataAsset( - { id: data[0].id, type: 'dataset' }, - metadata, - ), - ); - const opensearchTable = JSON.parse(data_asset); - const result = opensearchTable.owner - ? await this.userService - .findOneById(opensearchTable.owner) - .catch(() => null) - : null; - - const owner = result !== null ? result.user.username : null; - - const [customer_users, customer_roles] = - await this.getUsernamesAndRolesByCustomerId(customer_id); - - const users = []; - const roles = []; - - for (const role of customer_roles) { - for (const role_id of opensearchTable.roles) { - if (role.id === role_id) roles.push(role); - } - } - - for (const user of customer_users) { - for (const user_id of opensearchTable.users) { - if (user.id === user_id) users.push(user); - } - } - - return [ - { - ...data[0], - tags: opensearchTable.tags, - table_description: opensearchTable.description, - p_roles: opensearchTable.roles, - p_users: opensearchTable.users, - users, - roles, - owner, - }, - ]; - } - return data; - } - - async deleteOneTableMetadata(id, body) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.delete( - `${nimbusUrl}/api/catalog/table-metadata/${id}`, - ); - return data; - } - - async getOneColumnMetadata(body, params) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.get( - `${nimbusUrl}/api/catalog/column-metadata/`, - { params: params }, - ); - return data; - } - - async deleteOneColumnMetadata(id, body) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.delete( - `${nimbusUrl}/api/catalog/column-metadata/${id}/`, - ); - return data; - } - - async getOneDataPreview(body, params) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.get(`${nimbusUrl}/api/catalog/data-preview/`, { - params: params, - }); - return data; - } - - async getDataStatus(body) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.get(`${nimbusUrl}/api/catalog/data-status/`); - return data; - } - - async createDataStatus(body) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.post( - `${nimbusUrl}/api/catalog/data-status/`, - body, - ); - return data; - } - - async getDataDescription(body) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.get( - `${nimbusUrl}/api/catalog/data-description/`, - ); - return data; - } - - async createDataDescription(body, metadata) { - await lastValueFrom( + async updateOneDataAsset({ data_asset_id, customer_id, body, metadata }) { + const { data_asset } = await lastValueFrom( this.catalogWriteService.UpdateDataAsset( - { - id: `dataset-${body.table_id}`, - description: body.description, - tags: undefined, - }, + { id: data_asset_id, ...body }, metadata, ), ); - // { - // description: 'descrição nova'; - // id: 5; - // table_id: 4; - // } - // const nimbusUrl = this._getNimbusUrl(body); - // const { data } = await axios.post( - // `${nimbusUrl}/api/catalog/data-description/`, - // body, - // ); - // {"id":5,"description":"descrição nova","updated_at":"2022-09-28T14:35:15.618750Z","table_id":4} - return { - id: 0, - description: body.description, - updated_at: new Date().toISOString(), - table_id: body.table_id, - }; + + const opensearchTable = JSON.parse(data_asset); + + const result = opensearchTable.owner + ? await this.userService + .findOneById(opensearchTable.owner) + .catch(() => null) + : null; + + const owner = result !== null ? result.user.username : null; + + const [customer_users, customer_roles] = + await this.getUsernamesAndRolesByCustomerId(customer_id); + + const users = []; + const roles = []; + + for (const role of customer_roles) { + for (const role_id of opensearchTable.roles) { + if (role.id === role_id) roles.push(role); + } + } + + for (const user of customer_users) { + for (const user_id of opensearchTable.users) { + if (user.id === user_id) users.push(user); + } + } + + Object.assign(opensearchTable, { + p_roles: opensearchTable.roles, + p_users: opensearchTable.users, + roles, + users, + owner, + }); + + return { data_asset: opensearchTable }; } - async getDataDocs(body) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.get(`${nimbusUrl}/api/catalog/data-docs/`); - return data; + async getDataDocs(data_asset_id: string, metadata: Metadata) { + const [data_asset_type, id] = data_asset_id.split('-'); + + const { documentation } = await lastValueFrom( + this.catalogReadService.GetDatasetDoc( + { id, type: data_asset_type }, + metadata, + ), + ); + console.log(documentation); + const docs = JSON.parse(documentation); + return docs; + } + + async getDatasetPreview(data_asset_id: string, metadata: Metadata) { + const [data_asset_type, id] = data_asset_id.split('-'); + + const { preview } = await lastValueFrom( + this.catalogReadService.GetDatasetPreview( + { id, type: data_asset_type }, + metadata, + ), + ); + const result = JSON.parse(preview); + return result; + } + + async getDatasetColumnsMetadata(data_asset_id: string, metadata: Metadata) { + const [data_asset_type, id] = data_asset_id.split('-'); + + const { columns_metadata } = await lastValueFrom( + this.catalogReadService.GetDatasetColumnsMetadata( + { id, type: data_asset_type }, + metadata, + ), + ); + const result = JSON.parse(columns_metadata); + return result; } async createDataDocs(body) { @@ -451,70 +368,6 @@ class CatalogService implements OnModuleInit { return data; } - async getDataRating(body) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.get(`${nimbusUrl}/api/catalog/data-rating/`); - return data; - } - - async createDataRating(body) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.post( - `${nimbusUrl}/api/catalog/data-rating/`, - body, - ); - return data; - } - - async getSummaryRating(id, body) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.get( - `${nimbusUrl}/api/catalog/summary-rating/${id}`, - ); - return data; - } - - async getDataComment(body) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.get(`${nimbusUrl}/api/catalog/data-comment/`); - return data; - } - - async createDataComment(body) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.post( - `${nimbusUrl}/api/catalog/data-comment/`, - body, - ); - return data; - } - - async getDataReview(body, params) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.get(`${nimbusUrl}/api/catalog/data-review/`, { - params: params, - }); - return data; - } - - async createTags(data: Messages.TagTableRequest, metadata) { - this.logger.info('CatalogService - createTags'); - - const response = await lastValueFrom( - this.catalogWriteService.TagTable(data, metadata), - ) - .then((res) => { - this.logger.info('Done'); - return res; - }) - .catch((err) => { - this.logger.error(err.message); - throw new Error(err); - }); - - return { data_assets: response }; - } - async findAllTags(data, metadata) { this.logger.info('CatalogService - findAllCustomerTags'); @@ -532,76 +385,6 @@ class CatalogService implements OnModuleInit { return response; } - - async findAllTableTags(data, metadata) { - this.logger.info('CatalogService - findAllTableTags'); - - const response = await lastValueFrom( - this.catalogReadService.GetTableTags(data, metadata), - ) - .then((res) => { - this.logger.info('Done'); - return res; - }) - .catch((err) => { - this.logger.error(err.message); - throw new Error(err); - }); - - return response; - } - - async deleteTags(data, metadata) { - this.logger.info('CatalogService - deleteTags'); - - const response = await lastValueFrom( - this.catalogWriteService.UntagTable(data, metadata), - ) - .then((res) => { - this.logger.info('Done'); - return res; - }) - .catch((err) => { - this.logger.error(err.message); - throw new Error(err); - }); - - return response; - } - - async createTableTags(body) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.post( - `${nimbusUrl}/api/catalog/table-tags/`, - body, - ); - return data; - } - - async deleteTableTags(id, body) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.delete( - `${nimbusUrl}/api/catalog/table-tags/${id}`, - ); - return data; - } - - async getTableRules(body) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.get( - `${nimbusUrl}/api/catalog/table-rules/`, - body, - ); - return data; - } - - async deleteTableRules(id, body) { - const nimbusUrl = this._getNimbusUrl(body); - const { data } = await axios.delete( - `${nimbusUrl}/api/catalog/table-rules/${id}`, - ); - return data; - } } export { CatalogService }; diff --git a/src/modules/catalog/dtos/index.ts b/src/modules/catalog/dtos/index.ts new file mode 100644 index 0000000..4d2f921 --- /dev/null +++ b/src/modules/catalog/dtos/index.ts @@ -0,0 +1,203 @@ +import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; + +export class IRole { + @ApiProperty() + name: string; + @ApiProperty() + id: string; +} + +export class IUser { + @ApiProperty() + username: string; + @ApiProperty() + id: string; +} + +export class IComment { + @ApiProperty() + id: number; + @ApiProperty() + message: string; + @ApiProperty() + created_at: string; + @ApiProperty() + username: string; +} + +export class IDataAsset { + @ApiProperty() + id: number; + @ApiPropertyOptional() + database_name?: string; + @ApiPropertyOptional() + table_name?: string; + @ApiPropertyOptional() + num_columns?: number; + @ApiPropertyOptional() + location?: string; + @ApiPropertyOptional() + created_time?: string; + @ApiPropertyOptional() + table_type?: string; + @ApiPropertyOptional() + size_in_bytes?: number; + @ApiPropertyOptional() + num_files?: number; + @ApiPropertyOptional() + data_encrypted?: string; + @ApiPropertyOptional() + num_rows?: number; + @ApiPropertyOptional() + display_name?: string; + @ApiProperty() + pipeline_id: string; + @ApiProperty() + user_id: string; + @ApiProperty() + description: string; + @ApiProperty() + data_asset_type: string; + @ApiProperty() + tags: string[]; + @ApiProperty() + owner: string; + @ApiProperty({ type: [IRole] }) + roles: IRole[]; + @ApiProperty({ type: [IUser] }) + users: IUser[]; + @ApiPropertyOptional() + dashboard_id?: number; + @ApiPropertyOptional() + name?: string; + @ApiPropertyOptional() + parameters?: string[]; + @ApiPropertyOptional() + embedding_params?: object; + @ApiPropertyOptional() + created_at?: string; + @ApiPropertyOptional() + updated_at?: string; + @ApiProperty({ type: [IComment] }) + comments: IComment[]; +} + +export class IOneDataAsset { + @ApiProperty() + data_asset: IDataAsset; +} + +export class IMakeAComment { + @ApiProperty() + message: string; +} + +export class IDeleteComment { + @ApiProperty() + comment: IComment; +} + +export class ICatalogAllResponse { + @ApiProperty({ type: [IDataAsset] }) + data_assets: IDataAsset[]; + @ApiProperty() + total: number; +} + +export class IData { + @ApiProperty() + var: number; + @ApiProperty() + date: string; + @ApiProperty() + last: number; + @ApiProperty() + maximum: number; + @ApiProperty() + minimum: number; + @ApiProperty() + day_opening: number; +} + +export class IUpdateDataRequest { + @ApiProperty() + name: string; + @ApiProperty() + description: string; + @ApiProperty() + tags: string[]; +} + +export class IPreview { + @ApiProperty() + id: string; + @ApiProperty() + database_name: string; + @ApiProperty() + table_name: string; + @ApiProperty({ type: [IData] }) + data: IData[]; +} + +export class IDocs { + @ApiProperty() + id: string; + @ApiProperty() + docs: string; + @ApiProperty() + updated_at: string; + @ApiProperty() + table_id: string; +} + +export class IColumnMetadata { + @ApiProperty() + id: string; + @ApiProperty() + table_name: string; + @ApiProperty() + column_name: string; + @ApiProperty() + data_type: string; + @ApiProperty() + missing_count: string; + @ApiProperty() + min: string; + @ApiProperty() + max: string; + @ApiProperty() + count: string; + @ApiProperty() + histogram: string; + @ApiProperty() + mean: string; + @ApiProperty() + median: string; + @ApiProperty() + missing_rate: string; + @ApiProperty() + stddev: string; + @ApiProperty() + unique_count: string; + @ApiProperty() + unique_rate: string; + @ApiProperty() + analyzer_rules: string[]; + @ApiProperty() + version: string; +} + +export class IPreviewResponse { + @ApiProperty() + preview: IPreview; +} + +export class IDocsResponse { + @ApiProperty() + docs: IDocs; +} + +export class IColumnsMetadataResponse { + @ApiProperty({ type: [IColumnMetadata] }) + columns_metadata: IColumnMetadata[]; +} diff --git a/src/modules/oauth/oauth.controller.ts b/src/modules/oauth/oauth.controller.ts index 3ed6297..6ad2da7 100644 --- a/src/modules/oauth/oauth.controller.ts +++ b/src/modules/oauth/oauth.controller.ts @@ -17,13 +17,13 @@ export class OauthController { switch (process.env.ENV) { case 'dev': case 'stg': - this.redirectUrl = `https://app.${process.env.ENV}.dadosfera.ai/coletix/auth-callback`; + this.redirectUrl = `https://app.${process.env.ENV}.dadosfera.ai/collect/auth-callback`; break; case 'prd': - this.redirectUrl = `https://app.dadosfera.ai/coletix/auth-callback`; + this.redirectUrl = `https://app.dadosfera.ai/collect/auth-callback`; break; default: - this.redirectUrl = `http://localhost:4200/coletix/auth-callback`; + this.redirectUrl = `http://localhost:4200/collect/auth-callback`; } } @Get('hubspot') diff --git a/src/modules/pipelines/client.service.ts b/src/modules/pipelines/client.service.ts index 33bfdf7..aa12cbf 100644 --- a/src/modules/pipelines/client.service.ts +++ b/src/modules/pipelines/client.service.ts @@ -1,21 +1,9 @@ -import { - BadRequestException, - ConflictException, - Inject, - InternalServerErrorException, - OnModuleInit, -} from '@nestjs/common'; -import { ClientGrpc, Payload } from '@nestjs/microservices'; +import { ConflictException, Inject, OnModuleInit } from '@nestjs/common'; +import { ClientGrpc } from '@nestjs/microservices'; import { PipelineServicesNames, PipelinesServiceInterface } from 'protospack'; import { lastValueFrom } from 'rxjs'; -import { objectSnakeToCamel } from 'src/utils/CaseConverter'; -import { - ICreatePipelineDto, - IGetPipelineLogsRequest, - IIdRequest, - IUpdatePipelineRequest, -} from './interfaces'; +import { IIdRequest } from './interfaces'; import { DadosferaLogger } from '@dadosfera/dadosfera-logs'; import { PipelinesClientConfiguration } from './pipelines-client'; @@ -39,91 +27,6 @@ export class PipelinesClientService implements OnModuleInit { ); } - async create(@Payload() createPipelineDto: ICreatePipelineDto) { - this.logger.info('PipelinesClientService - Create'); - const createPipelineResponse = await lastValueFrom( - this.pipelineService.Create(objectSnakeToCamel(createPipelineDto)), - ).catch((error: { details: string }) => { - if (error.details.includes('INVALID_REQUEST')) { - const [, message] = error.details.split('|'); - throw new BadRequestException(message); - } - throw new InternalServerErrorException(error.details); - }); - this.logger.info('Done'); - - return createPipelineResponse; - } - - async findAll(data) { - this.logger.info('PipelinesClientService - FindAll'); - const findAllPipelineResponse = await lastValueFrom( - this.pipelineService.FindAll(data), - ).catch((err) => { - this.logger.error(err.message); - throw new Error(err); - }); - this.logger.info('Done'); - - return findAllPipelineResponse; - } - - async findOne(data: IIdRequest) { - this.logger.info('PipelinesClientService - FindOne'); - - const findOnePipelineResponse = await lastValueFrom( - this.pipelineService.FindOne(data), - ).catch((err) => { - this.logger.error(err.message); - throw new Error(err); - }); - this.logger.info('Done'); - - return findOnePipelineResponse; - } - - async update(UpdatePipelineRequest: IUpdatePipelineRequest) { - this.logger.info('PipelinesClientService - Update'); - - const updatePipelineResponse = await lastValueFrom( - this.pipelineService.Update(UpdatePipelineRequest), - ).catch((err) => { - this.logger.error(err.message); - throw new Error(err); - }); - this.logger.info('Done'); - - return updatePipelineResponse; - } - - async remove(data: IIdRequest) { - this.logger.info('PipelinesClientService - Remove'); - - const removePipelineResponse = await lastValueFrom( - this.pipelineService.remove(data), - ).catch((err) => { - this.logger.error(err.message); - throw new Error(err); - }); - this.logger.info('Done'); - - return removePipelineResponse; - } - - async getPipelineLogsMessages(data: IGetPipelineLogsRequest) { - this.logger.info('PipelinesClientService - GetPipelineLogsMessages'); - - const logsPipelineResponse = await lastValueFrom( - this.pipelineService.getPipelineLogs(data), - ).catch((err) => { - this.logger.error(err.message); - throw new Error(err); - }); - this.logger.info('Done'); - - return logsPipelineResponse; - } - async getPipelineStatus(data) { this.logger.info('PipelinesClientService - GetPipelineStatus'); diff --git a/src/modules/pipelines/pipelines.controller.ts b/src/modules/pipelines/pipelines.controller.ts index 94b5ff7..776cd65 100644 --- a/src/modules/pipelines/pipelines.controller.ts +++ b/src/modules/pipelines/pipelines.controller.ts @@ -1,12 +1,4 @@ -import { - Body, - Controller, - Get, - Inject, - Param, - Post, - Put, -} from '@nestjs/common'; +import { Body, Controller, Get, Inject, Param, Post } from '@nestjs/common'; import { ApiTags } from '@nestjs/swagger'; import { AuthenticateCondition, @@ -15,7 +7,6 @@ import { import { PERMISSIONS_GROUPS } from '../../authentication/permissions.enum'; import { PipelinesService } from './pipelines.service'; import { DadosferaLogger } from '@dadosfera/dadosfera-logs'; -import { RequestUser, User } from 'src/authentication/user.decorator'; @ApiTags('Pipelines') @Controller('pipelines') @@ -85,74 +76,4 @@ export class PipelinesController { return response; } - - @Get(':id/:details') - async getPipelineLogs(@Param() params) { - const { id, details } = params; - this.logger.info( - process.env.DEV_URL + `/pipeline/${id} - ON GET PIPELINE LOGS ROUTE`, - {}, - ); - - const response = await this.pipelineService.getPipelineLogsMessages( - id, - details, - ); - - return response; - } - - @Post() - async create(@Body() createPipelineDto) { - this.logger.info(process.env.DEV_URL + `/pipelines ON CREATE ROUTE`); - - const response = await this.pipelineService.create(createPipelineDto); - - return response; - } - - @Get() - async findAll(@User() user: RequestUser) { - this.logger.info(process.env.DEV_URL + `/pipeline ON Find All ROUTE`, { - user: user.user_id, - customer: user.customer_id, - }); - - const { customer_id, user_id, customer_name } = user; - - const response = await this.pipelineService.findAll({ - customer_name, - customer_id, - user_id, - }); - - return response; - } - - @Get('/:id') - async findOne(@Body() data, @Param() params) { - const { id } = params; - this.logger.info(process.env.DEV_URL + `/pipeline/${id} ON Find One ROUTE`); - - const response = await this.pipelineService.findOne({ id, ...data }); - - return response; - } - - @Put(':id') - async update(@Body() updatePipelineDto, @Param() params) { - const { id } = params; - const { info } = updatePipelineDto; - delete updatePipelineDto.info; - - this.logger.info(process.env.DEV_URL + `/pipeline/${id} ON UPDATE ROUTE`); - - const response = await this.pipelineService.update( - id, - updatePipelineDto, - info, - ); - - return response; - } } diff --git a/src/modules/pipelines/pipelines.service.ts b/src/modules/pipelines/pipelines.service.ts index e52704c..afc8103 100644 --- a/src/modules/pipelines/pipelines.service.ts +++ b/src/modules/pipelines/pipelines.service.ts @@ -1,6 +1,4 @@ import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; -import { DecodeGrpcStruct } from 'protospack'; -import { Info } from 'protospack/dist/lib/interfaces'; import { PipelinesClientService } from './client.service'; import { IIdRequest } from './interfaces'; import { objectCamelToSnake } from 'src/utils/CaseConverter'; @@ -9,81 +7,6 @@ import { objectCamelToSnake } from 'src/utils/CaseConverter'; export class PipelinesService { constructor(private pipelineClient: PipelinesClientService) {} - adjustPayload(payload) { - if (payload.input?.input_generic) { - payload.input = DecodeGrpcStruct(payload.input?.input_generic); - } else { - payload.input = payload.input?.input_s3 || payload.input?.input_jdbc; - } - } - - async create(createPipelineDto) { - const createPipelineResponse = await this.pipelineClient.create( - createPipelineDto, - ); - - const pipeline = objectCamelToSnake(createPipelineResponse); - this.adjustPayload(pipeline.pipeline); - - return pipeline; - } - - async findOne(data: IIdRequest) { - try { - const findOnePipelineResponse = await this.pipelineClient.findOne(data); - - const pipeline = objectCamelToSnake(findOnePipelineResponse); - this.adjustPayload(pipeline.pipeline); - - return pipeline; - } catch (err) { - throw new HttpException(err.message, HttpStatus.NOT_FOUND); - } - } - - async findAll(data) { - try { - const { pipelines } = await this.pipelineClient.findAll({ - info: data, - }); - if (pipelines) - pipelines.forEach((pipeline) => { - this.adjustPayload(pipeline); - }); - return { pipelines: pipelines || [] }; - } catch (err) { - throw new HttpException(err.message, HttpStatus.NOT_FOUND); - } - } - - async update(id: string, data, info: Info) { - try { - const updatePipelineResponse = await this.pipelineClient.update({ - id, - info, - ...data, - }); - - const pipeline = objectCamelToSnake(updatePipelineResponse); - this.adjustPayload(pipeline); - - return pipeline; - } catch (err) { - throw new HttpException(err.message, HttpStatus.NOT_FOUND); - } - } - - async getPipelineLogsMessages(id: string, details: string) { - try { - const pipelineLogsResponse = - await this.pipelineClient.getPipelineLogsMessages({ id, details }); - - return objectCamelToSnake(pipelineLogsResponse); - } catch (err) { - throw new HttpException(err.message, HttpStatus.NOT_FOUND); - } - } - async getPipelineStatus(data: IIdRequest) { try { const pipelineStatusResponse = diff --git a/src/modules/pipelinesV2/pipelines.service.ts b/src/modules/pipelinesV2/pipelines.service.ts index cdaac50..4cb0ff1 100644 --- a/src/modules/pipelinesV2/pipelines.service.ts +++ b/src/modules/pipelinesV2/pipelines.service.ts @@ -1,5 +1,6 @@ import { BadRequestException, + HttpException, Inject, InternalServerErrorException, OnModuleInit, diff --git a/swagger.txt b/swagger.txt index 024d311..67f8912 100644 --- a/swagger.txt +++ b/swagger.txt @@ -1 +1 @@ -"{\"openapi\":\"3.0.0\",\"paths\":{\"/connectors\":{\"post\":{\"operationId\":\"ConnectorController_uploadConnector\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"multipart/form-data\":{\"schema\":{\"$ref\":\"#/components/schemas/CreateConnectorDto\"}}}},\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"connectors\"],\"security\":[{\"bearer\":[]}]},\"get\":{\"operationId\":\"ConnectorController_getAllConnectors\",\"parameters\":[{\"name\":\"search\",\"required\":true,\"in\":\"query\",\"schema\":{\"type\":\"string\"}},{\"name\":\"language\",\"required\":true,\"in\":\"query\",\"schema\":{\"type\":\"string\"}},{\"name\":\"size\",\"required\":true,\"in\":\"query\",\"schema\":{\"type\":\"string\"}},{\"name\":\"page\",\"required\":true,\"in\":\"query\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"connectors\"],\"security\":[{\"bearer\":[]}]}},\"/connectors/uploads\":{\"post\":{\"operationId\":\"ConnectorController_uploadFile\",\"parameters\":[],\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}}}}}},\"tags\":[\"connectors\"],\"security\":[{\"bearer\":[]}]}},\"/connectors/multiple-connectors-upload\":{\"post\":{\"operationId\":\"ConnectorController_uploadConnectorsFile\",\"parameters\":[],\"responses\":{\"201\":{\"description\":\"\"}},\"tags\":[\"connectors\"],\"security\":[{\"bearer\":[]}]}},\"/connectors/tags\":{\"get\":{\"operationId\":\"ConnectorController_getConnectorsTags\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"connectors\"],\"security\":[{\"bearer\":[]}]}},\"/connectors/{plugin}\":{\"get\":{\"operationId\":\"ConnectorController_getConnector\",\"parameters\":[{\"name\":\"plugin\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}},{\"name\":\"version\",\"required\":true,\"in\":\"query\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"connectors\"],\"security\":[{\"bearer\":[]}]},\"put\":{\"operationId\":\"ConnectorController_updateConnector\",\"parameters\":[{\"name\":\"plugin\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"multipart/form-data\":{\"schema\":{\"$ref\":\"#/components/schemas/UpdateDto\"}}}},\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"connectors\"],\"security\":[{\"bearer\":[]}]},\"delete\":{\"operationId\":\"ConnectorController_deleteConnector\",\"parameters\":[{\"name\":\"plugin\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/DeleteConnectorDto\"}}}},\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"connectors\"],\"security\":[{\"bearer\":[]}]}},\"/connectors/{plugin}/details\":{\"get\":{\"operationId\":\"ConnectorController_getConnectorDetails\",\"parameters\":[{\"name\":\"plugin\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}},{\"name\":\"version\",\"required\":true,\"in\":\"query\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"connectors\"],\"security\":[{\"bearer\":[]}]}},\"/connectors/{plugin}/add-tag\":{\"put\":{\"operationId\":\"ConnectorController_addTagOnConnector\",\"parameters\":[{\"name\":\"plugin\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AddTagDto\"}}}},\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"connectors\"],\"security\":[{\"bearer\":[]}]}},\"/connectors/{plugin}/remove-tag\":{\"put\":{\"operationId\":\"ConnectorController_removeTagOnConnector\",\"parameters\":[{\"name\":\"plugin\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RemoveTagDto\"}}}},\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"connectors\"],\"security\":[{\"bearer\":[]}]}},\"/auth/sso/snowflake\":{\"post\":{\"operationId\":\"AuthController_snowflakeSignIn\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Auth\"]}},\"/auth/sign-in\":{\"post\":{\"operationId\":\"AuthController_signIn\",\"parameters\":[{\"name\":\"Dadosfera-Lang\",\"required\":true,\"in\":\"header\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Auth\"]}},\"/auth/refresh-access-token\":{\"post\":{\"operationId\":\"AuthController_refreshAccessToken\",\"parameters\":[{\"name\":\"Dadosfera-Lang\",\"required\":true,\"in\":\"header\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Auth\"]}},\"/auth/change-password\":{\"post\":{\"operationId\":\"AuthController_changePassword\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Auth\"]}},\"/auth/reset-password\":{\"post\":{\"operationId\":\"AuthController_resetPassword\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Auth\"]}},\"/auth/verify-reset-password-code\":{\"post\":{\"operationId\":\"AuthController_verifyResetPasswordCode\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Auth\"]}},\"/auth/confirm-reset-password\":{\"post\":{\"operationId\":\"AuthController_confirmResetPassword\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Auth\"]}},\"/auth/enable-totp\":{\"post\":{\"operationId\":\"AuthController_enableTotpMFA\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Auth\"]}},\"/auth/disable-totp\":{\"post\":{\"operationId\":\"AuthController_disableTotpMFA\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Auth\"]}},\"/auth/dismiss-totp\":{\"post\":{\"operationId\":\"AuthController_dismissTotpMFA\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Auth\"]}},\"/auth/verify-totp\":{\"post\":{\"operationId\":\"AuthController_verifyTotp\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Auth\"]}},\"/permissions\":{\"get\":{\"operationId\":\"PermissionsController_getPublicPermissions\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/GetPublicPermissionsRes\"}}}}},\"tags\":[\"Permissions\"]}},\"/terms-of-use/token\":{\"get\":{\"operationId\":\"TermsOfUseController_getToken\",\"parameters\":[{\"name\":\"Dadosfera-Lang\",\"required\":true,\"in\":\"header\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"TermsOfUse\"]}},\"/terms-of-use/accept\":{\"post\":{\"operationId\":\"TermsOfUseController_accept\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"TermsOfUse\"]}},\"/connections/connections-migration\":{\"get\":{\"operationId\":\"ConnectionController_synchronizeConnections\",\"parameters\":[{\"name\":\"apply\",\"required\":true,\"in\":\"query\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"connections\"],\"security\":[{\"bearer\":[]}]}},\"/connections\":{\"post\":{\"operationId\":\"ConnectionController_createConnection\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/CreateConnectionDto\"}}}},\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionRes\"}}}}},\"tags\":[\"connections\"],\"security\":[{\"bearer\":[]}]},\"get\":{\"operationId\":\"ConnectionController_getAllConnections\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionsRes\"}}}}},\"tags\":[\"connections\"],\"security\":[{\"bearer\":[]}]}},\"/connections/{id}\":{\"put\":{\"operationId\":\"ConnectionController_updateConnection\",\"parameters\":[{\"name\":\"Dadosfera-Lang\",\"required\":true,\"in\":\"header\",\"schema\":{\"type\":\"string\"}},{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/UpdateConnectionDto\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionRes\"}}}}},\"tags\":[\"connections\"],\"security\":[{\"bearer\":[]}]},\"delete\":{\"operationId\":\"ConnectionController_deleteConnection\",\"parameters\":[{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionRes\"}}}}},\"tags\":[\"connections\"],\"security\":[{\"bearer\":[]}]},\"get\":{\"operationId\":\"ConnectionController_getConnectionDetails\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionDetailsRes\"}}}}},\"tags\":[\"connections\"],\"security\":[{\"bearer\":[]}]}},\"/users\":{\"get\":{\"operationId\":\"UsersController_getAllUsersByCustomerId\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"List of users of a customer\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/GetAllUsersByCustomerIdRes\"}}}}},\"tags\":[\"Users\"]},\"post\":{\"operationId\":\"UsersController_createUser\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/CreateUserReq\"}}}},\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/CreateUserRes\"}}}}},\"tags\":[\"Users\"]}},\"/users/hierarchies\":{\"get\":{\"operationId\":\"UsersController_getAllHierarchies\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/GetAllHierarchiesRes\"}}}}},\"tags\":[\"Users\"]}},\"/users/departments\":{\"get\":{\"operationId\":\"UsersController_getAllDepartments\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/GetAllDepartmentsRes\"}}}}},\"tags\":[\"Users\"]}},\"/users/jobTitles\":{\"get\":{\"operationId\":\"UsersController_getAllJobTitles\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/GetAllDepartmentsRes\"}}}}},\"tags\":[\"Users\"]}},\"/users/{id}\":{\"get\":{\"operationId\":\"UsersController_findOneById\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}},{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IUserByCustomer\"}}}}},\"tags\":[\"Users\"]},\"delete\":{\"operationId\":\"UsersController_deleteUser\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}},{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/DeleteUserRes\"}}}}},\"tags\":[\"Users\"]},\"patch\":{\"operationId\":\"UsersController_updateUser\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}},{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/UpdateUserReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/UpdateUserRes\"}}}}},\"tags\":[\"Users\"]}},\"/users/batch\":{\"post\":{\"operationId\":\"UsersController_batchCreateUser\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BatchCreateUserReq\"}}}},\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BatchCreateUserRes\"}}}}},\"tags\":[\"Users\"]}},\"/users/{id}/resend-invite\":{\"post\":{\"operationId\":\"UsersController_resendInvite\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}},{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Users\"]}},\"/users/role\":{\"delete\":{\"operationId\":\"UsersController_unassignRoleToUser\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}},{\"name\":\"userId\",\"required\":true,\"in\":\"query\",\"schema\":{\"type\":\"string\"}},{\"name\":\"roleId\",\"required\":true,\"in\":\"query\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Users\"]},\"put\":{\"operationId\":\"UsersController_assignRoleToUser\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AssignRoleToUserReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Users\"]}},\"/users/roles\":{\"patch\":{\"operationId\":\"UsersController_setUserRoles\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/SetUserRolesReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/SetUserRolesRes\"}}}}},\"tags\":[\"Users\"]}},\"/users/synchronize/{id}\":{\"post\":{\"operationId\":\"UsersController_synchronizeUser\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}},{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/UpdateUserRes\"}}}},\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Users\"]}},\"/roles\":{\"get\":{\"operationId\":\"RolesController_searchRoles\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}},{\"name\":\"permissionId\",\"required\":false,\"in\":\"query\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},{\"name\":\"getUsers\",\"required\":false,\"in\":\"query\",\"schema\":{\"enum\":[\"true\",\"false\"],\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/GetRolesByCustomerRes\"}}}}},\"tags\":[\"Roles\"]},\"post\":{\"operationId\":\"RolesController_createRole\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/CreateRoleReq\"}}}},\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/CreateRoleRes\"}}}}},\"tags\":[\"Roles\"]}},\"/roles/permissions\":{\"put\":{\"operationId\":\"RolesController_grantPermissionsToRole\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/GrantPermissionsToRoleReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/GrantPermissionsToRoleRes\"}}}}},\"tags\":[\"Roles\"]},\"delete\":{\"operationId\":\"RolesController_revokePermissionsFromRole\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RevokePermissionsFromRoleReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RevokePermissionsFromRoleRes\"}}}}},\"tags\":[\"Roles\"]},\"patch\":{\"operationId\":\"RolesController_setRolePermissions\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/SetRolePermissionsReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/SetRolePermissionsRes\"}}}}},\"tags\":[\"Roles\"]}},\"/roles/users\":{\"patch\":{\"operationId\":\"RolesController_setRoleUsers\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/SetRoleUsersReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/SetRoleUsersRes\"}}}}},\"tags\":[\"Roles\"]}},\"/roles/{id}\":{\"get\":{\"operationId\":\"RolesController_getRoleById\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}},{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RoleDto\"}}}}},\"tags\":[\"Roles\"]},\"delete\":{\"operationId\":\"RolesController_deleteRole\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}},{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Roles\"]},\"patch\":{\"operationId\":\"RolesController_updateRole\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}},{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/UpdateRoleReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/UpdateRoleRes\"}}}}},\"tags\":[\"Roles\"]}},\"/network-config\":{\"get\":{\"operationId\":\"NetworkConfigController_findAllNetworkConfigs\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/FindAllNetworkConfigsRes\"}}}}},\"tags\":[\"Network Config\"]},\"post\":{\"operationId\":\"NetworkConfigController_createNetworkConfigs\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"multipart/form-data\":{\"schema\":{\"$ref\":\"#/components/schemas/CreateNetworkConfigReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/CreateNetworkConfigRes\"}}}},\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/CreateNetworkConfigRes\"}}}}},\"tags\":[\"Network Config\"]}},\"/network-config/{id}\":{\"get\":{\"operationId\":\"NetworkConfigController_findNetworkConfigById\",\"parameters\":[{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/FindAllNetworkConfigsRes\"}}}}},\"tags\":[\"Network Config\"]}},\"/network-config/{id}/details\":{\"get\":{\"operationId\":\"NetworkConfigController_findNetworkConfigByIdDetails\",\"parameters\":[{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/FindAllNetworkConfigsRes\"}}}}},\"tags\":[\"Network Config\"]}},\"/connection-test/ping\":{\"post\":{\"operationId\":\"ConnectionTestController_connectionTestPing\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionTestPingReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionTestPingRes\"}}}}},\"tags\":[\"Connection Test\"]}},\"/connection-test/credentials\":{\"post\":{\"operationId\":\"ConnectionTestController_connectionTestCredentials\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionTestCredentialsReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionTestCredentialsRes\"}}}}},\"tags\":[\"Connection Test\"]}},\"/connection-test/schemas\":{\"post\":{\"operationId\":\"ConnectionTestController_connectionTestListSchemas\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionTestListSchemasReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionTestListSchemasRes\"}}}}},\"tags\":[\"Connection Test\"]}},\"/connection-test/tables\":{\"post\":{\"operationId\":\"ConnectionTestController_connectionTestListTables\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionTestListTablesReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionTestListTablesRes\"}}}}},\"tags\":[\"Connection Test\"]}},\"/connection-test/table-metadata\":{\"post\":{\"operationId\":\"ConnectionTestController_getTableMetadata\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/GetTableMetadataReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/GetTableMetadataRes\"}}}}},\"tags\":[\"Connection Test\"]}},\"/pipelines/start/{id}\":{\"post\":{\"operationId\":\"PipelinesController_activate\",\"parameters\":[],\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Pipelines\"]}},\"/pipelines/{id}/status\":{\"get\":{\"operationId\":\"PipelinesController_getPipelineStatus\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Pipelines\"]}},\"/pipelines/{id}/{details}\":{\"get\":{\"operationId\":\"PipelinesController_getPipelineLogs\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Pipelines\"]}},\"/pipelines\":{\"post\":{\"operationId\":\"PipelinesController_create\",\"parameters\":[],\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Pipelines\"]},\"get\":{\"operationId\":\"PipelinesController_findAll\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"Pipelines\"]}},\"/pipelines/{id}\":{\"get\":{\"operationId\":\"PipelinesController_findOne\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Pipelines\"]},\"put\":{\"operationId\":\"PipelinesController_update\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Pipelines\"]}},\"/pipelinesV2\":{\"post\":{\"operationId\":\"PipelinesController_create\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ICreatePipelineV2Req\"}}}},\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IPipelineV2\"}}}}},\"tags\":[\"PipelinesV2\"]},\"get\":{\"operationId\":\"PipelinesController_findAll\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"PipelinesV2\"]}},\"/pipelinesV2/{id}/config\":{\"get\":{\"operationId\":\"PipelinesController_getPipelineproperties\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"PipelinesV2\"]}},\"/pipelinesV2/{id}\":{\"get\":{\"operationId\":\"PipelinesController_findOne\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"PipelinesV2\"]},\"put\":{\"operationId\":\"PipelinesController_update\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"PipelinesV2\"]},\"delete\":{\"operationId\":\"PipelinesController_delete\",\"parameters\":[],\"responses\":{\"204\":{\"description\":\"\"}},\"tags\":[\"PipelinesV2\"]}},\"/inputs/available-entities/{plugin}\":{\"get\":{\"operationId\":\"InputsController_getAvailableEntities\",\"parameters\":[{\"name\":\"plugin\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/GetAvailableEntitiesRes\"}}}}},\"tags\":[\"inputs\"]}},\"/inputs/test-connection\":{\"post\":{\"operationId\":\"InputsController_testConnection\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TestConnectionReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TestConnectionRes\"}}}},\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"inputs\"]}},\"/inputs/test-connection/get-columns\":{\"post\":{\"operationId\":\"InputsController_getColumns\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TestConnectionGetColumnsReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TestConnectionGetColumnsRes\"}}}},\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"inputs\"]}},\"/inputs\":{\"post\":{\"operationId\":\"InputsController_create\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/CreateInputReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Input\"}}}},\"201\":{\"description\":\"\"}},\"tags\":[\"inputs\"]},\"get\":{\"operationId\":\"InputsController_findAll\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"inputs\"]}},\"/inputs/{id}\":{\"get\":{\"operationId\":\"InputsController_findOne\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"inputs\"]},\"patch\":{\"operationId\":\"InputsController_update\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"inputs\"]},\"delete\":{\"operationId\":\"InputsController_delete\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"inputs\"]}},\"/transformations\":{\"post\":{\"operationId\":\"TransformationsController_create\",\"parameters\":[],\"responses\":{\"201\":{\"description\":\"\"}},\"tags\":[\"Transformations\"]},\"get\":{\"operationId\":\"TransformationsController_findAll\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"Transformations\"]}},\"/transformations/{id}\":{\"get\":{\"operationId\":\"TransformationsController_findOne\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Transformations\"]},\"put\":{\"operationId\":\"TransformationsController_update\",\"parameters\":[{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Transformations\"]},\"delete\":{\"operationId\":\"TransformationsController_delete\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Transformations\"]}},\"/health\":{\"get\":{\"operationId\":\"HealthController_check\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"Health\"]}},\"/catalog/manage_permissions/{id}\":{\"put\":{\"operationId\":\"CatalogController_manageDataAssetPermissions\",\"parameters\":[{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"Catalog\"]}},\"/catalog/revoke_permissions/{id}\":{\"put\":{\"operationId\":\"CatalogController_revokeDataAssetPermissions\",\"parameters\":[{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"Catalog\"]}},\"/catalog/all\":{\"get\":{\"operationId\":\"CatalogController_catalogAll\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/data_apps\":{\"get\":{\"operationId\":\"CatalogController_dataAppsAll\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/data_apps/{id}\":{\"delete\":{\"operationId\":\"CatalogController_dataAppsOne\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/dashboard-metabase\":{\"get\":{\"operationId\":\"CatalogController_getAllDashboardMetabase\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/dashboard-metabase/{id}\":{\"get\":{\"operationId\":\"CatalogController_getOneDashboardMetabase\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/dashboard-metabase/rls/{id}\":{\"get\":{\"operationId\":\"CatalogController_getOneDashboardMetabaseRls\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/table-metadata\":{\"get\":{\"operationId\":\"CatalogController_getAllTableMetadata\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/table-metadata/{id}\":{\"delete\":{\"operationId\":\"CatalogController_deleteOneTableMetadata\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/column-metadata\":{\"get\":{\"operationId\":\"CatalogController_getOneColumnMetadata\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/column-metadata/{id}\":{\"delete\":{\"operationId\":\"CatalogController_deleteOneColumnMetadata\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/data-preview\":{\"get\":{\"operationId\":\"CatalogController_getOneDataPreview\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/data-status\":{\"get\":{\"operationId\":\"CatalogController_createDataStatus\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/data-description\":{\"get\":{\"operationId\":\"CatalogController_getDataDescription\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]},\"post\":{\"operationId\":\"CatalogController_createDataDescription\",\"parameters\":[],\"responses\":{\"201\":{\"description\":\"\"}},\"tags\":[\"Catalog\"]}},\"/catalog/data-docs\":{\"get\":{\"operationId\":\"CatalogController_getDataDocs\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]},\"post\":{\"operationId\":\"CatalogController_createDataDocs\",\"parameters\":[],\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/data-rating\":{\"get\":{\"operationId\":\"CatalogController_getDataRating\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]},\"post\":{\"operationId\":\"CatalogController_createDataRating\",\"parameters\":[],\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/summary-rating/{id}\":{\"get\":{\"operationId\":\"CatalogController_getSummaryRating\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"Catalog\"]}},\"/catalog/data-comment\":{\"get\":{\"operationId\":\"CatalogController_getDataComment\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]},\"post\":{\"operationId\":\"CatalogController_createDataComment\",\"parameters\":[],\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/data-review\":{\"get\":{\"operationId\":\"CatalogController_getDataReview\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/tags\":{\"post\":{\"operationId\":\"CatalogController_createTags\",\"parameters\":[],\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]},\"get\":{\"operationId\":\"CatalogController_findAllTags\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/tags/{id}\":{\"delete\":{\"operationId\":\"CatalogController_deleteTags\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/table-tags\":{\"post\":{\"operationId\":\"CatalogController_createTableTags\",\"parameters\":[],\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/table-tags/{data_asset_id}\":{\"get\":{\"operationId\":\"CatalogController_getAllTableTags\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/table-tags/{id}\":{\"delete\":{\"operationId\":\"CatalogController_deleteTableTags\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/table-rules\":{\"get\":{\"operationId\":\"CatalogController_getTableRules\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/table-rules/{id}\":{\"delete\":{\"operationId\":\"CatalogController_deleteTableRules\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/oauth/hubspot\":{\"get\":{\"operationId\":\"OauthController_oauthHubspot\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"boolean\"}}}}},\"tags\":[\"oauth\"]}},\"/oauth/hubspot/callback\":{\"get\":{\"operationId\":\"OauthController_oauthHubspotCallback\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"oauth\"]}},\"/oauth/googleads\":{\"get\":{\"operationId\":\"OauthController_oauthGoogleAds\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"boolean\"}}}}},\"tags\":[\"oauth\"]}},\"/oauth/googleads/callback\":{\"get\":{\"operationId\":\"OauthController_oauthGoogleAdsCallback\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"oauth\"]}},\"/oauth/google-sheets\":{\"get\":{\"operationId\":\"OauthController_oauthGoogleSheets\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"boolean\"}}}}},\"tags\":[\"oauth\"]}},\"/oauth/google-sheets/callback\":{\"get\":{\"operationId\":\"OauthController_oauthGoogleSheetsCallback\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"oauth\"]}},\"/oauth/facebook\":{\"get\":{\"operationId\":\"OauthController_oauthFacebook\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"boolean\"}}}}},\"tags\":[\"oauth\"]}},\"/oauth/facebook/callback\":{\"get\":{\"operationId\":\"OauthController_oauthFacebookCallback\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"oauth\"]}},\"/oauth/mailchimp\":{\"get\":{\"operationId\":\"OauthController_oauthMailchimp\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"boolean\"}}}}},\"tags\":[\"oauth\"]}},\"/oauth/mailchimp/callback\":{\"get\":{\"operationId\":\"OauthController_oauthMailchimpCallback\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"oauth\"]}},\"/oauth/salesforce\":{\"get\":{\"operationId\":\"OauthController_oauthSalesforce\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"boolean\"}}}}},\"tags\":[\"oauth\"]}},\"/oauth/salesforce/callback\":{\"get\":{\"operationId\":\"OauthController_oauthSalesforceCallback\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"oauth\"]}},\"/productboard/notes\":{\"post\":{\"operationId\":\"ProductboardController_sendNote\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/INote\"}}}},\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Productboard\"]}}},\"info\":{\"title\":\"Maestro\",\"description\":\"Documentation for Maestro gateway\",\"version\":\"25.10.2022 - 16:20\",\"contact\":{}},\"tags\":[],\"servers\":[],\"components\":{\"securitySchemes\":{\"bearer\":{\"scheme\":\"bearer\",\"bearerFormat\":\"JWT\",\"type\":\"http\"}},\"schemas\":{\"CreateConnectorDto\":{\"type\":\"object\",\"properties\":{\"file\":{\"type\":\"string\",\"format\":\"binary\"},\"connector\":{\"type\":\"string\"}},\"required\":[\"file\",\"connector\"]},\"UpdateDto\":{\"type\":\"object\",\"properties\":{\"file\":{\"type\":\"string\",\"format\":\"binary\"},\"version\":{\"type\":\"string\"},\"category\":{\"type\":\"string\"},\"plugin\":{\"type\":\"string\"},\"image\":{\"type\":\"string\"},\"docs\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"options\":{\"type\":\"object\",\"description\":\"skip_select_entities: boolean skip_select_columns: boolean;\"},\"connection_controls\":{\"type\":\"array\",\"items\":{\"properties\":{}}}},\"required\":[\"version\"]},\"AddTagDto\":{\"type\":\"object\",\"properties\":{\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"tags\"]},\"RemoveTagDto\":{\"type\":\"object\",\"properties\":{\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"tags\"]},\"DeleteConnectorDto\":{\"type\":\"object\",\"properties\":{\"version\":{\"type\":\"string\"}},\"required\":[\"version\"]},\"PermissionGroupPermission\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"id\":{\"type\":\"number\"}},\"required\":[\"name\",\"id\"]},\"PermissionGroup\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\"},\"permissions\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PermissionGroupPermission\"}}},\"required\":[\"title\",\"permissions\"]},\"GetPublicPermissionsRes\":{\"type\":\"object\",\"properties\":{\"permissionGroups\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PermissionGroup\"}}},\"required\":[\"permissionGroups\"]},\"CreateConnectionDto\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"network_config_id\":{\"type\":\"string\"},\"properties\":{\"type\":\"object\"},\"connector_id\":{\"type\":\"string\"},\"connector_name\":{\"type\":\"string\"},\"plugin\":{\"type\":\"string\"},\"image_url\":{\"type\":\"string\"}},\"required\":[\"name\",\"description\",\"type\",\"properties\",\"connector_id\",\"connector_name\",\"plugin\",\"image_url\"]},\"ConnectionToCatalogDto\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"network_config_id\":{\"type\":\"string\"},\"connector_id\":{\"type\":\"string\"},\"connector_name\":{\"type\":\"string\"},\"plugin\":{\"type\":\"string\"},\"image_url\":{\"type\":\"string\"}},\"required\":[\"name\",\"description\",\"type\",\"connector_id\",\"connector_name\",\"plugin\",\"image_url\"]},\"ConnectionRes\":{\"type\":\"object\",\"properties\":{\"connection\":{\"$ref\":\"#/components/schemas/ConnectionToCatalogDto\"},\"message\":{\"type\":\"string\"}},\"required\":[\"connection\",\"message\"]},\"UpdateConnectionDto\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"network_config_id\":{\"type\":\"string\"},\"properties\":{\"type\":\"object\"}},\"required\":[\"name\",\"description\",\"properties\"]},\"ConnectionsRes\":{\"type\":\"object\",\"properties\":{\"connections\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/ConnectionToCatalogDto\"}},\"message\":{\"type\":\"string\"}},\"required\":[\"connections\",\"message\"]},\"ConnectionDto\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"customer_id\":{\"type\":\"string\"},\"customer_name\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"updated_at\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\"},\"pipelines\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"network_config_id\":{\"type\":\"string\"},\"properties\":{\"type\":\"object\"},\"connector_id\":{\"type\":\"string\"},\"connector_name\":{\"type\":\"string\"},\"plugin\":{\"type\":\"string\"},\"image_url\":{\"type\":\"string\"}},\"required\":[\"id\",\"customer_id\",\"customer_name\",\"user_id\",\"updated_at\",\"created_at\",\"pipelines\",\"name\",\"description\",\"type\",\"properties\",\"connector_id\",\"connector_name\",\"plugin\",\"image_url\"]},\"ConnectionDetailsRes\":{\"type\":\"object\",\"properties\":{\"connection\":{\"$ref\":\"#/components/schemas/ConnectionDto\"},\"message\":{\"type\":\"string\"}},\"required\":[\"connection\",\"message\"]},\"PermissionDto\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"number\"},\"seqid\":{\"type\":\"number\"},\"name\":{\"type\":\"string\"},\"claim\":{\"type\":\"string\"},\"createdAt\":{\"type\":\"string\"},\"updatedAt\":{\"type\":\"string\"}},\"required\":[\"id\",\"seqid\",\"name\",\"claim\",\"createdAt\",\"updatedAt\"]},\"Customer\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"domain\":{\"type\":\"string\"},\"tier\":{\"type\":\"string\"},\"info\":{\"type\":\"string\"},\"createdAt\":{\"type\":\"string\"},\"updatedAt\":{\"type\":\"string\"}},\"required\":[\"id\",\"name\",\"domain\",\"tier\",\"info\",\"createdAt\",\"updatedAt\"]},\"UserRole\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"permissions\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PermissionDto\"}},\"createdAt\":{\"type\":\"string\"},\"updatedAt\":{\"type\":\"string\"},\"isPublic\":{\"type\":\"boolean\"},\"customer\":{\"$ref\":\"#/components/schemas/Customer\"},\"usage\":{\"type\":\"string\"}},\"required\":[\"id\",\"name\",\"description\",\"createdAt\",\"updatedAt\",\"isPublic\",\"customer\",\"usage\"]},\"IUserByCustomer\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"roles\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/UserRole\"}},\"jobTitle\":{\"type\":\"string\"},\"department\":{\"type\":\"string\"},\"hierarchy\":{\"type\":\"string\"},\"mfaStatus\":{\"type\":\"string\"},\"createdAt\":{\"type\":\"string\"},\"updatedAt\":{\"type\":\"string\"},\"status\":{\"type\":\"string\"},\"lastLogin\":{\"type\":\"string\"},\"permissions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"id\",\"name\",\"email\",\"roles\",\"jobTitle\",\"department\",\"hierarchy\",\"mfaStatus\",\"createdAt\",\"updatedAt\",\"status\"]},\"GetAllUsersByCustomerIdRes\":{\"type\":\"object\",\"properties\":{\"users\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/IUserByCustomer\"}},\"departments\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"jobTitles\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"users\",\"departments\",\"jobTitles\"]},\"Hierarchy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"}},\"required\":[\"id\",\"name\"]},\"GetAllHierarchiesRes\":{\"type\":\"object\",\"properties\":{\"hierarchies\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Hierarchy\"}}},\"required\":[\"hierarchies\"]},\"GetAllDepartmentsRes\":{\"type\":\"object\",\"properties\":{\"departments\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"departments\"]},\"CreateUserReq\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"roleNames\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"jobTitle\":{\"type\":\"string\"},\"department\":{\"type\":\"string\"},\"hierarchy\":{\"type\":\"string\"}},\"required\":[\"email\"]},\"User\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"roles\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/UserRole\"}},\"jobTitle\":{\"type\":\"string\"},\"department\":{\"type\":\"string\"},\"hierarchy\":{\"type\":\"string\"},\"customer\":{\"$ref\":\"#/components/schemas/Customer\"},\"mfaStatus\":{\"type\":\"string\"},\"createdAt\":{\"type\":\"string\"},\"updatedAt\":{\"type\":\"string\"},\"status\":{\"type\":\"string\"},\"lastLogin\":{\"type\":\"string\"}},\"required\":[\"id\",\"name\",\"email\",\"roles\",\"jobTitle\",\"department\",\"hierarchy\",\"mfaStatus\",\"createdAt\",\"updatedAt\",\"status\"]},\"CreateUserRes\":{\"type\":\"object\",\"properties\":{\"user\":{\"$ref\":\"#/components/schemas/User\"}},\"required\":[\"user\"]},\"BatchCreateUserReq\":{\"type\":\"object\",\"properties\":{\"users\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/CreateUserReq\"}}},\"required\":[\"users\"]},\"ErrorUsers\":{\"type\":\"object\",\"properties\":{\"user\":{\"$ref\":\"#/components/schemas/CreateUserReq\"},\"error\":{\"type\":\"string\"}},\"required\":[\"user\",\"error\"]},\"BatchCreateUserRes\":{\"type\":\"object\",\"properties\":{\"usersCreated\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/User\"}},\"errorUsers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/ErrorUsers\"}}},\"required\":[\"usersCreated\",\"errorUsers\"]},\"DeleteUserRes\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"}},\"required\":[\"id\"]},\"SetUserRolesReq\":{\"type\":\"object\",\"properties\":{\"userId\":{\"type\":\"string\"},\"roleNames\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"userId\",\"roleNames\"]},\"SetUserRolesRes\":{\"type\":\"object\",\"properties\":{\"user\":{\"$ref\":\"#/components/schemas/IUserByCustomer\"}},\"required\":[\"user\"]},\"AssignRoleToUserReq\":{\"type\":\"object\",\"properties\":{\"userId\":{\"type\":\"string\"},\"roleId\":{\"type\":\"string\"}},\"required\":[\"userId\",\"roleId\"]},\"UpdateUserReq\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"jobTitle\":{\"type\":\"string\"},\"department\":{\"type\":\"string\"},\"hierarchy\":{\"type\":\"string\"},\"roleNames\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"UpdateUserRes\":{\"type\":\"object\",\"properties\":{\"user\":{\"$ref\":\"#/components/schemas/IUserByCustomer\"}},\"required\":[\"user\"]},\"UserNoRolesAndCustomer\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"jobTitle\":{\"type\":\"string\"},\"department\":{\"type\":\"string\"},\"hierarchy\":{\"type\":\"string\"},\"mfaStatus\":{\"type\":\"string\"},\"createdAt\":{\"type\":\"string\"},\"updatedAt\":{\"type\":\"string\"},\"status\":{\"type\":\"string\"},\"lastLogin\":{\"type\":\"string\"}},\"required\":[\"id\",\"name\",\"email\",\"jobTitle\",\"department\",\"hierarchy\",\"mfaStatus\",\"createdAt\",\"updatedAt\",\"status\"]},\"RoleDto\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"permissions\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PermissionDto\"}},\"users\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/UserNoRolesAndCustomer\"}},\"createdAt\":{\"type\":\"string\"},\"updatedAt\":{\"type\":\"string\"},\"isPublic\":{\"type\":\"boolean\"},\"customer\":{\"$ref\":\"#/components/schemas/Customer\"},\"usage\":{\"type\":\"string\"}},\"required\":[\"id\",\"name\",\"description\",\"createdAt\",\"updatedAt\",\"isPublic\",\"customer\",\"usage\"]},\"GetRolesByCustomerRes\":{\"type\":\"object\",\"properties\":{\"roles\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/RoleDto\"}}},\"required\":[\"roles\"]},\"CreateRoleReq\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"permissionIds\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"userIds\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"description\":{\"type\":\"string\"}},\"required\":[\"name\",\"permissionIds\",\"description\"]},\"CustomerRole\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"permissions\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PermissionDto\"}},\"users\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/UserNoRolesAndCustomer\"}},\"createdAt\":{\"type\":\"string\"},\"updatedAt\":{\"type\":\"string\"},\"isPublic\":{\"type\":\"boolean\"},\"usage\":{\"type\":\"string\"}},\"required\":[\"id\",\"name\",\"description\",\"createdAt\",\"updatedAt\",\"isPublic\",\"usage\"]},\"CreateRoleRes\":{\"type\":\"object\",\"properties\":{\"role\":{\"$ref\":\"#/components/schemas/CustomerRole\"}},\"required\":[\"role\"]},\"GrantPermissionsToRoleReq\":{\"type\":\"object\",\"properties\":{\"roleId\":{\"type\":\"string\"},\"permissionIds\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"roleId\",\"permissionIds\"]},\"GrantPermissionsToRoleRes\":{\"type\":\"object\",\"properties\":{\"role\":{\"$ref\":\"#/components/schemas/RoleDto\"}},\"required\":[\"role\"]},\"RevokePermissionsFromRoleReq\":{\"type\":\"object\",\"properties\":{\"roleId\":{\"type\":\"string\"},\"permissionIds\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"roleId\",\"permissionIds\"]},\"RevokePermissionsFromRoleRes\":{\"type\":\"object\",\"properties\":{\"role\":{\"$ref\":\"#/components/schemas/RoleDto\"}},\"required\":[\"role\"]},\"SetRolePermissionsReq\":{\"type\":\"object\",\"properties\":{\"roleId\":{\"type\":\"string\"},\"permissionIds\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"roleId\",\"permissionIds\"]},\"SetRolePermissionsRes\":{\"type\":\"object\",\"properties\":{\"role\":{\"$ref\":\"#/components/schemas/RoleDto\"}},\"required\":[\"role\"]},\"SetRoleUsersReq\":{\"type\":\"object\",\"properties\":{\"roleId\":{\"type\":\"string\"},\"userIds\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"roleId\",\"userIds\"]},\"SetRoleUsersRes\":{\"type\":\"object\",\"properties\":{\"role\":{\"$ref\":\"#/components/schemas/RoleDto\"}},\"required\":[\"role\"]},\"UpdateRoleReq\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"}}},\"UpdateRoleRes\":{\"type\":\"object\",\"properties\":{\"role\":{\"$ref\":\"#/components/schemas/RoleDto\"}},\"required\":[\"role\"]},\"NetworkConfigToCatalogDto\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"customer_id\":{\"type\":\"string\"},\"plugin\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\"},\"updated_at\":{\"type\":\"string\"},\"network_type_id\":{\"type\":\"string\"},\"network_type_name\":{\"type\":\"string\"}},\"required\":[\"id\",\"customer_id\",\"plugin\",\"type\",\"name\",\"description\",\"created_at\",\"updated_at\",\"network_type_id\",\"network_type_name\"]},\"FindAllNetworkConfigsRes\":{\"type\":\"object\",\"properties\":{\"network_configs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/NetworkConfigToCatalogDto\"}},\"message\":{\"type\":\"string\"}},\"required\":[\"network_configs\",\"message\"]},\"CreateNetworkConfigReq\":{\"type\":\"object\",\"properties\":{\"network_type_id\":{\"type\":\"string\"},\"network_type_name\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"ovpn_file\":{\"type\":\"string\",\"format\":\"binary\"}},\"required\":[\"network_type_id\",\"network_type_name\",\"name\",\"description\",\"ovpn_file\"]},\"CreateNetworkConfigRes\":{\"type\":\"object\",\"properties\":{\"network_config\":{\"$ref\":\"#/components/schemas/NetworkConfigToCatalogDto\"}},\"required\":[\"network_config\"]},\"ConnectionTestPingReq\":{\"type\":\"object\",\"properties\":{\"plugin\":{\"type\":\"string\"},\"host\":{\"type\":\"string\"},\"port\":{\"type\":\"number\"},\"network_config_id\":{\"type\":\"string\"},\"connection_id\":{\"type\":\"string\"}}},\"ConnectionTestPingRes\":{\"type\":\"object\",\"properties\":{\"operation_result\":{\"type\":\"boolean\"}},\"required\":[\"operation_result\"]},\"ConnectionTestCredentialsProperties\":{\"type\":\"object\",\"properties\":{\"host\":{\"type\":\"string\"},\"port\":{\"type\":\"string\"},\"username\":{\"type\":\"string\"},\"password\":{\"type\":\"string\"},\"database\":{\"type\":\"string\"}},\"required\":[\"host\",\"port\",\"username\",\"password\",\"database\"]},\"ConnectionTestCredentialsReq\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"network_config_id\":{\"type\":\"string\"},\"connector_id\":{\"type\":\"string\"},\"connector_name\":{\"type\":\"string\"},\"plugin\":{\"type\":\"string\"},\"image_url\":{\"type\":\"string\"},\"properties\":{\"$ref\":\"#/components/schemas/ConnectionTestCredentialsProperties\"},\"connection_id\":{\"type\":\"string\"}},\"required\":[\"name\",\"description\",\"type\",\"connector_id\",\"connector_name\",\"plugin\",\"image_url\",\"properties\"]},\"ConnectionTestCredentialsRes\":{\"type\":\"object\",\"properties\":{\"operation_result\":{\"type\":\"boolean\"},\"connection_id\":{\"type\":\"string\"}},\"required\":[\"operation_result\",\"connection_id\"]},\"ConnectionTestListSchemasReq\":{\"type\":\"object\",\"properties\":{\"plugin\":{\"type\":\"string\"},\"connection_id\":{\"type\":\"string\"}},\"required\":[\"plugin\",\"connection_id\"]},\"ConnectionTestListSchemasRes\":{\"type\":\"object\",\"properties\":{\"operation_result\":{\"type\":\"boolean\"},\"schema_list\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"operation_result\",\"schema_list\"]},\"ConnectionTestListTablesReq\":{\"type\":\"object\",\"properties\":{\"plugin\":{\"type\":\"string\"},\"connection_id\":{\"type\":\"string\"},\"schema\":{\"type\":\"string\"}},\"required\":[\"plugin\",\"connection_id\",\"schema\"]},\"ConnectionTestListTablesRes\":{\"type\":\"object\",\"properties\":{\"operation_result\":{\"type\":\"boolean\"},\"table_list\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"operation_result\",\"table_list\"]},\"GetTableMetadataReq\":{\"type\":\"object\",\"properties\":{\"connection_id\":{\"type\":\"string\"},\"plugin\":{\"type\":\"string\"},\"schema\":{\"type\":\"string\"},\"table_list\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"connection_id\",\"plugin\",\"schema\",\"table_list\"]},\"ColumnDto\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"}},\"required\":[\"name\",\"type\"]},\"TableMetadataDto\":{\"type\":\"object\",\"properties\":{\"table_name\":{\"type\":\"string\"},\"columns\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/ColumnDto\"}},\"references\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/ColumnDto\"}}},\"required\":[\"table_name\",\"columns\",\"references\"]},\"GetTableMetadataRes\":{\"type\":\"object\",\"properties\":{\"operation_result\":{\"type\":\"boolean\"},\"tables_metadata\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/TableMetadataDto\"}}},\"required\":[\"operation_result\",\"tables_metadata\"]},\"ICreatePipelineV2Req\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"connection_id\":{\"type\":\"string\"},\"cron\":{\"type\":\"string\"},\"input_id\":{\"type\":\"string\"},\"transformations_ids\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"properties\":{\"type\":\"object\"},\"connector_name\":{\"type\":\"string\"},\"connector_plugin\":{\"type\":\"string\"},\"connector_version\":{\"type\":\"string\"},\"image_url\":{\"type\":\"string\"}},\"required\":[\"name\",\"description\",\"connection_id\",\"cron\",\"connector_name\",\"connector_plugin\",\"connector_version\",\"image_url\"]},\"IPipelineV2\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"connection_id\":{\"type\":\"string\"},\"cron\":{\"type\":\"string\"},\"input_id\":{\"type\":\"string\"},\"transformations_ids\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"properties\":{\"type\":\"object\"},\"connector_name\":{\"type\":\"string\"},\"connector_plugin\":{\"type\":\"string\"},\"connector_version\":{\"type\":\"string\"},\"image_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\"},\"updated_at\":{\"type\":\"string\"}},\"required\":[\"id\",\"name\",\"description\",\"connection_id\",\"cron\",\"connector_name\",\"connector_plugin\",\"connector_version\",\"image_url\",\"created_at\",\"updated_at\"]},\"GetAvailableEntitiesRes\":{\"type\":\"object\",\"properties\":{\"entities\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"entities\"]},\"CredentialsJdbc\":{\"type\":\"object\",\"properties\":{\"jdbc_user\":{\"type\":\"string\"},\"jdbc_password\":{\"type\":\"string\"},\"database\":{\"type\":\"string\"},\"endpoint\":{\"type\":\"string\"},\"port\":{\"type\":\"string\"},\"engine\":{\"type\":\"string\"},\"schema\":{\"type\":\"string\"}}},\"TestConnectionReq\":{\"type\":\"object\",\"properties\":{\"plugin\":{\"type\":\"string\"},\"credentials\":{\"$ref\":\"#/components/schemas/CredentialsJdbc\"},\"info\":{\"type\":\"object\"}},\"required\":[\"plugin\",\"credentials\"]},\"TestConnectionRes\":{\"type\":\"object\",\"properties\":{\"connection_state\":{\"type\":\"boolean\"},\"total_entities\":{\"type\":\"number\"},\"database_tables\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"connection_state\",\"total_entities\",\"database_tables\"]},\"TestConnectionGetColumnsReq\":{\"type\":\"object\",\"properties\":{\"plugin\":{\"type\":\"string\"},\"tables\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"credentials\":{\"$ref\":\"#/components/schemas/CredentialsJdbc\"},\"id\":{\"type\":\"string\"},\"info\":{\"type\":\"object\"}},\"required\":[\"plugin\",\"tables\"]},\"TableColumns\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"columns\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"references\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"name\",\"columns\",\"references\"]},\"TestConnectionGetColumnsRes\":{\"type\":\"object\",\"properties\":{\"tables\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/TableColumns\"}}},\"required\":[\"tables\"]},\"FileFormatParams\":{\"type\":\"object\",\"properties\":{\"sep\":{\"type\":\"string\"},\"header\":{\"type\":\"boolean\"},\"encoding\":{\"type\":\"string\"}},\"required\":[\"sep\",\"header\",\"encoding\"]},\"GoogleAnalyticsClientSecrets\":{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\"},\"project_id\":{\"type\":\"string\"},\"private_key_id\":{\"type\":\"string\"},\"private_key\":{\"type\":\"string\"},\"client_email\":{\"type\":\"string\"},\"client_id\":{\"type\":\"string\"},\"auth_uri\":{\"type\":\"string\"},\"token_uri\":{\"type\":\"string\"},\"auth_provider_x509_cert_url\":{\"type\":\"string\"},\"client_x509_cert_url\":{\"type\":\"string\"}},\"required\":[\"type\",\"project_id\",\"private_key_id\",\"private_key\",\"client_email\",\"client_id\",\"auth_uri\",\"token_uri\",\"auth_provider_x509_cert_url\",\"client_x509_cert_url\"]},\"Credentials\":{\"type\":\"object\",\"properties\":{\"jdbc_user\":{\"type\":\"string\"},\"jdbc_password\":{\"type\":\"string\"},\"database\":{\"type\":\"string\"},\"endpoint\":{\"type\":\"string\"},\"port\":{\"type\":\"string\"},\"engine\":{\"type\":\"string\"},\"schema\":{\"type\":\"string\"},\"connection_type\":{\"type\":\"string\"},\"client_aws_access_key_id\":{\"type\":\"string\"},\"client_aws_secret_access_key\":{\"type\":\"string\"},\"client_bucket\":{\"type\":\"string\"},\"file_to_extract\":{\"type\":\"string\"},\"file_format_params\":{\"$ref\":\"#/components/schemas/FileFormatParams\"},\"view_id\":{\"type\":\"string\"},\"client_secrets\":{\"$ref\":\"#/components/schemas/GoogleAnalyticsClientSecrets\"},\"start_date\":{\"type\":\"string\"},\"end_date\":{\"type\":\"string\"},\"oauth_code\":{\"type\":\"string\"}},\"required\":[\"connection_type\"]},\"OauthObject\":{\"type\":\"object\",\"properties\":{\"get_tokens_url\":{\"type\":\"string\"},\"get_tokens_url_params\":{\"type\":\"string\"},\"get_tokens_set_response\":{\"type\":\"object\"},\"content_type\":{\"type\":\"string\"}}},\"InputOptions\":{\"type\":\"object\",\"properties\":{\"oauth\":{\"$ref\":\"#/components/schemas/OauthObject\"},\"skip_select_columns\":{\"type\":\"boolean\"},\"skip_select_entities\":{\"type\":\"boolean\"},\"skip_transformation\":{\"type\":\"boolean\"}}},\"AuthParameters\":{\"type\":\"object\",\"properties\":{\"aws_access_key_id\":{\"type\":\"string\"},\"aws_secret_access_key\":{\"type\":\"string\"}},\"required\":[\"aws_access_key_id\",\"aws_secret_access_key\"]},\"CreateInputReq\":{\"type\":\"object\",\"properties\":{\"tables\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/TableColumns\"}},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"plugin\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"category\":{\"type\":\"string\",\"deprecated\":true},\"credentials\":{\"deprecated\":true,\"allOf\":[{\"$ref\":\"#/components/schemas/Credentials\"}]},\"options\":{\"deprecated\":true,\"allOf\":[{\"$ref\":\"#/components/schemas/InputOptions\"}]},\"info\":{\"type\":\"object\",\"deprecated\":true},\"cron\":{\"type\":\"string\",\"deprecated\":true},\"source_bucket\":{\"type\":\"string\",\"deprecated\":true},\"source_prefix\":{\"type\":\"string\",\"deprecated\":true},\"auth_parameters\":{\"deprecated\":true,\"allOf\":[{\"$ref\":\"#/components/schemas/AuthParameters\"}]},\"file_format_params\":{\"deprecated\":true,\"allOf\":[{\"$ref\":\"#/components/schemas/FileFormatParams\"}]}},\"required\":[\"tables\",\"name\",\"description\",\"plugin\"]},\"Input\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"tables\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/TableColumns\"}},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"plugin\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\"},\"updated_at\":{\"type\":\"string\"},\"category\":{\"type\":\"string\",\"deprecated\":true},\"credentials\":{\"deprecated\":true,\"allOf\":[{\"$ref\":\"#/components/schemas/Credentials\"}]},\"options\":{\"deprecated\":true,\"allOf\":[{\"$ref\":\"#/components/schemas/InputOptions\"}]},\"info\":{\"type\":\"object\",\"deprecated\":true},\"cron\":{\"type\":\"string\",\"deprecated\":true},\"source_bucket\":{\"type\":\"string\",\"deprecated\":true},\"source_prefix\":{\"type\":\"string\",\"deprecated\":true},\"auth_parameters\":{\"deprecated\":true,\"allOf\":[{\"$ref\":\"#/components/schemas/AuthParameters\"}]},\"file_format_params\":{\"deprecated\":true,\"allOf\":[{\"$ref\":\"#/components/schemas/FileFormatParams\"}]}},\"required\":[\"id\",\"tables\",\"name\",\"description\",\"plugin\",\"created_at\",\"updated_at\"]},\"INote\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\"},\"content\":{\"type\":\"string\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"title\",\"content\",\"tags\"]}}}}" \ No newline at end of file +"{\"openapi\":\"3.0.0\",\"paths\":{\"/connectors\":{\"post\":{\"operationId\":\"ConnectorController_uploadConnector\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"multipart/form-data\":{\"schema\":{\"$ref\":\"#/components/schemas/CreateConnectorDto\"}}}},\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"connectors\"],\"security\":[{\"bearer\":[]}]},\"get\":{\"operationId\":\"ConnectorController_getAllConnectors\",\"parameters\":[{\"name\":\"search\",\"required\":true,\"in\":\"query\",\"schema\":{\"type\":\"string\"}},{\"name\":\"language\",\"required\":true,\"in\":\"query\",\"schema\":{\"type\":\"string\"}},{\"name\":\"size\",\"required\":true,\"in\":\"query\",\"schema\":{\"type\":\"string\"}},{\"name\":\"page\",\"required\":true,\"in\":\"query\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"connectors\"],\"security\":[{\"bearer\":[]}]}},\"/connectors/uploads\":{\"post\":{\"operationId\":\"ConnectorController_uploadFile\",\"parameters\":[],\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}}}}}},\"tags\":[\"connectors\"],\"security\":[{\"bearer\":[]}]}},\"/connectors/multiple-connectors-upload\":{\"post\":{\"operationId\":\"ConnectorController_uploadConnectorsFile\",\"parameters\":[],\"responses\":{\"201\":{\"description\":\"\"}},\"tags\":[\"connectors\"],\"security\":[{\"bearer\":[]}]}},\"/connectors/tags\":{\"get\":{\"operationId\":\"ConnectorController_getConnectorsTags\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"connectors\"],\"security\":[{\"bearer\":[]}]}},\"/connectors/{plugin}\":{\"get\":{\"operationId\":\"ConnectorController_getConnector\",\"parameters\":[{\"name\":\"plugin\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}},{\"name\":\"version\",\"required\":true,\"in\":\"query\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"connectors\"],\"security\":[{\"bearer\":[]}]},\"put\":{\"operationId\":\"ConnectorController_updateConnector\",\"parameters\":[{\"name\":\"plugin\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"multipart/form-data\":{\"schema\":{\"$ref\":\"#/components/schemas/UpdateDto\"}}}},\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"connectors\"],\"security\":[{\"bearer\":[]}]},\"delete\":{\"operationId\":\"ConnectorController_deleteConnector\",\"parameters\":[{\"name\":\"plugin\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/DeleteConnectorDto\"}}}},\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"connectors\"],\"security\":[{\"bearer\":[]}]}},\"/connectors/{plugin}/details\":{\"get\":{\"operationId\":\"ConnectorController_getConnectorDetails\",\"parameters\":[{\"name\":\"plugin\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}},{\"name\":\"version\",\"required\":true,\"in\":\"query\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"connectors\"],\"security\":[{\"bearer\":[]}]}},\"/connectors/{plugin}/add-tag\":{\"put\":{\"operationId\":\"ConnectorController_addTagOnConnector\",\"parameters\":[{\"name\":\"plugin\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AddTagDto\"}}}},\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"connectors\"],\"security\":[{\"bearer\":[]}]}},\"/connectors/{plugin}/remove-tag\":{\"put\":{\"operationId\":\"ConnectorController_removeTagOnConnector\",\"parameters\":[{\"name\":\"plugin\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RemoveTagDto\"}}}},\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"connectors\"],\"security\":[{\"bearer\":[]}]}},\"/auth/sso/snowflake\":{\"post\":{\"operationId\":\"AuthController_snowflakeSignIn\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Auth\"]}},\"/auth/sign-in\":{\"post\":{\"operationId\":\"AuthController_signIn\",\"parameters\":[{\"name\":\"Dadosfera-Lang\",\"required\":true,\"in\":\"header\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Auth\"]}},\"/auth/refresh-access-token\":{\"post\":{\"operationId\":\"AuthController_refreshAccessToken\",\"parameters\":[{\"name\":\"Dadosfera-Lang\",\"required\":true,\"in\":\"header\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Auth\"]}},\"/auth/change-password\":{\"post\":{\"operationId\":\"AuthController_changePassword\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Auth\"]}},\"/auth/reset-password\":{\"post\":{\"operationId\":\"AuthController_resetPassword\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Auth\"]}},\"/auth/verify-reset-password-code\":{\"post\":{\"operationId\":\"AuthController_verifyResetPasswordCode\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Auth\"]}},\"/auth/confirm-reset-password\":{\"post\":{\"operationId\":\"AuthController_confirmResetPassword\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Auth\"]}},\"/auth/enable-totp\":{\"post\":{\"operationId\":\"AuthController_enableTotpMFA\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Auth\"]}},\"/auth/disable-totp\":{\"post\":{\"operationId\":\"AuthController_disableTotpMFA\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Auth\"]}},\"/auth/dismiss-totp\":{\"post\":{\"operationId\":\"AuthController_dismissTotpMFA\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Auth\"]}},\"/auth/verify-totp\":{\"post\":{\"operationId\":\"AuthController_verifyTotp\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Auth\"]}},\"/permissions\":{\"get\":{\"operationId\":\"PermissionsController_getPublicPermissions\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/GetPublicPermissionsRes\"}}}}},\"tags\":[\"Permissions\"]}},\"/terms-of-use/token\":{\"get\":{\"operationId\":\"TermsOfUseController_getToken\",\"parameters\":[{\"name\":\"Dadosfera-Lang\",\"required\":true,\"in\":\"header\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"TermsOfUse\"]}},\"/terms-of-use/accept\":{\"post\":{\"operationId\":\"TermsOfUseController_accept\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"TermsOfUse\"]}},\"/connections/connections-migration\":{\"get\":{\"operationId\":\"ConnectionController_synchronizeConnections\",\"parameters\":[{\"name\":\"apply\",\"required\":true,\"in\":\"query\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"connections\"],\"security\":[{\"bearer\":[]}]}},\"/connections\":{\"post\":{\"operationId\":\"ConnectionController_createConnection\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/CreateConnectionDto\"}}}},\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionRes\"}}}}},\"tags\":[\"connections\"],\"security\":[{\"bearer\":[]}]},\"get\":{\"operationId\":\"ConnectionController_getAllConnections\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionsRes\"}}}}},\"tags\":[\"connections\"],\"security\":[{\"bearer\":[]}]}},\"/connections/{id}\":{\"put\":{\"operationId\":\"ConnectionController_updateConnection\",\"parameters\":[{\"name\":\"Dadosfera-Lang\",\"required\":true,\"in\":\"header\",\"schema\":{\"type\":\"string\"}},{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/UpdateConnectionDto\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionRes\"}}}}},\"tags\":[\"connections\"],\"security\":[{\"bearer\":[]}]},\"delete\":{\"operationId\":\"ConnectionController_deleteConnection\",\"parameters\":[{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionRes\"}}}}},\"tags\":[\"connections\"],\"security\":[{\"bearer\":[]}]},\"get\":{\"operationId\":\"ConnectionController_getConnectionDetails\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionDetailsRes\"}}}}},\"tags\":[\"connections\"],\"security\":[{\"bearer\":[]}]}},\"/users\":{\"get\":{\"operationId\":\"UsersController_getAllUsersByCustomerId\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"List of users of a customer\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/GetAllUsersByCustomerIdRes\"}}}}},\"tags\":[\"Users\"]},\"post\":{\"operationId\":\"UsersController_createUser\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/CreateUserReq\"}}}},\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/CreateUserRes\"}}}}},\"tags\":[\"Users\"]}},\"/users/hierarchies\":{\"get\":{\"operationId\":\"UsersController_getAllHierarchies\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/GetAllHierarchiesRes\"}}}}},\"tags\":[\"Users\"]}},\"/users/departments\":{\"get\":{\"operationId\":\"UsersController_getAllDepartments\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/GetAllDepartmentsRes\"}}}}},\"tags\":[\"Users\"]}},\"/users/jobTitles\":{\"get\":{\"operationId\":\"UsersController_getAllJobTitles\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/GetAllDepartmentsRes\"}}}}},\"tags\":[\"Users\"]}},\"/users/{id}\":{\"get\":{\"operationId\":\"UsersController_findOneById\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}},{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IUserByCustomer\"}}}}},\"tags\":[\"Users\"]},\"delete\":{\"operationId\":\"UsersController_deleteUser\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}},{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/DeleteUserRes\"}}}}},\"tags\":[\"Users\"]},\"patch\":{\"operationId\":\"UsersController_updateUser\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}},{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/UpdateUserReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/UpdateUserRes\"}}}}},\"tags\":[\"Users\"]}},\"/users/batch\":{\"post\":{\"operationId\":\"UsersController_batchCreateUser\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BatchCreateUserReq\"}}}},\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BatchCreateUserRes\"}}}}},\"tags\":[\"Users\"]}},\"/users/{id}/resend-invite\":{\"post\":{\"operationId\":\"UsersController_resendInvite\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}},{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Users\"]}},\"/users/role\":{\"delete\":{\"operationId\":\"UsersController_unassignRoleToUser\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}},{\"name\":\"userId\",\"required\":true,\"in\":\"query\",\"schema\":{\"type\":\"string\"}},{\"name\":\"roleId\",\"required\":true,\"in\":\"query\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Users\"]},\"put\":{\"operationId\":\"UsersController_assignRoleToUser\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AssignRoleToUserReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Users\"]}},\"/users/roles\":{\"patch\":{\"operationId\":\"UsersController_setUserRoles\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/SetUserRolesReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/SetUserRolesRes\"}}}}},\"tags\":[\"Users\"]}},\"/users/synchronize/{id}\":{\"post\":{\"operationId\":\"UsersController_synchronizeUser\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}},{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/UpdateUserRes\"}}}},\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Users\"]}},\"/roles\":{\"get\":{\"operationId\":\"RolesController_searchRoles\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}},{\"name\":\"permissionId\",\"required\":false,\"in\":\"query\",\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},{\"name\":\"getUsers\",\"required\":false,\"in\":\"query\",\"schema\":{\"enum\":[\"true\",\"false\"],\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/GetRolesByCustomerRes\"}}}}},\"tags\":[\"Roles\"]},\"post\":{\"operationId\":\"RolesController_createRole\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/CreateRoleReq\"}}}},\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/CreateRoleRes\"}}}}},\"tags\":[\"Roles\"]}},\"/roles/permissions\":{\"put\":{\"operationId\":\"RolesController_grantPermissionsToRole\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/GrantPermissionsToRoleReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/GrantPermissionsToRoleRes\"}}}}},\"tags\":[\"Roles\"]},\"delete\":{\"operationId\":\"RolesController_revokePermissionsFromRole\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RevokePermissionsFromRoleReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RevokePermissionsFromRoleRes\"}}}}},\"tags\":[\"Roles\"]},\"patch\":{\"operationId\":\"RolesController_setRolePermissions\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/SetRolePermissionsReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/SetRolePermissionsRes\"}}}}},\"tags\":[\"Roles\"]}},\"/roles/users\":{\"patch\":{\"operationId\":\"RolesController_setRoleUsers\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/SetRoleUsersReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/SetRoleUsersRes\"}}}}},\"tags\":[\"Roles\"]}},\"/roles/{id}\":{\"get\":{\"operationId\":\"RolesController_getRoleById\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}},{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RoleDto\"}}}}},\"tags\":[\"Roles\"]},\"delete\":{\"operationId\":\"RolesController_deleteRole\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}},{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Roles\"]},\"patch\":{\"operationId\":\"RolesController_updateRole\",\"parameters\":[{\"name\":\"dadosfera-lang\",\"in\":\"header\",\"description\":\"Defaults to pt-br\",\"required\":false,\"schema\":{\"enum\":[\"pt-br\",\"en-us\"],\"type\":\"string\"}},{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/UpdateRoleReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/UpdateRoleRes\"}}}}},\"tags\":[\"Roles\"]}},\"/network-config\":{\"get\":{\"operationId\":\"NetworkConfigController_findAllNetworkConfigs\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/FindAllNetworkConfigsRes\"}}}}},\"tags\":[\"Network Config\"]},\"post\":{\"operationId\":\"NetworkConfigController_createNetworkConfigs\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"multipart/form-data\":{\"schema\":{\"$ref\":\"#/components/schemas/CreateNetworkConfigReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/CreateNetworkConfigRes\"}}}},\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/CreateNetworkConfigRes\"}}}}},\"tags\":[\"Network Config\"]}},\"/network-config/{id}\":{\"get\":{\"operationId\":\"NetworkConfigController_findNetworkConfigById\",\"parameters\":[{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/FindAllNetworkConfigsRes\"}}}}},\"tags\":[\"Network Config\"]}},\"/network-config/{id}/details\":{\"get\":{\"operationId\":\"NetworkConfigController_findNetworkConfigByIdDetails\",\"parameters\":[{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/FindAllNetworkConfigsRes\"}}}}},\"tags\":[\"Network Config\"]}},\"/connection-test/ping\":{\"post\":{\"operationId\":\"ConnectionTestController_connectionTestPing\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionTestPingReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionTestPingRes\"}}}}},\"tags\":[\"Connection Test\"]}},\"/connection-test/credentials\":{\"post\":{\"operationId\":\"ConnectionTestController_connectionTestCredentials\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionTestCredentialsReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionTestCredentialsRes\"}}}}},\"tags\":[\"Connection Test\"]}},\"/connection-test/schemas\":{\"post\":{\"operationId\":\"ConnectionTestController_connectionTestListSchemas\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionTestListSchemasReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionTestListSchemasRes\"}}}}},\"tags\":[\"Connection Test\"]}},\"/connection-test/tables\":{\"post\":{\"operationId\":\"ConnectionTestController_connectionTestListTables\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionTestListTablesReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ConnectionTestListTablesRes\"}}}}},\"tags\":[\"Connection Test\"]}},\"/connection-test/table-metadata\":{\"post\":{\"operationId\":\"ConnectionTestController_getTableMetadata\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/GetTableMetadataReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/GetTableMetadataRes\"}}}}},\"tags\":[\"Connection Test\"]}},\"/pipelines/start/{id}\":{\"post\":{\"operationId\":\"PipelinesController_activate\",\"parameters\":[],\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Pipelines\"]}},\"/pipelines/{id}/status\":{\"get\":{\"operationId\":\"PipelinesController_getPipelineStatus\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Pipelines\"]}},\"/pipelinesV2\":{\"post\":{\"operationId\":\"PipelinesController_create\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ICreatePipelineV2Req\"}}}},\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IPipelineV2\"}}}}},\"tags\":[\"PipelinesV2\"]},\"get\":{\"operationId\":\"PipelinesController_findAll\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"PipelinesV2\"]}},\"/pipelinesV2/{id}/config\":{\"get\":{\"operationId\":\"PipelinesController_getPipelineproperties\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"PipelinesV2\"]}},\"/pipelinesV2/{id}\":{\"get\":{\"operationId\":\"PipelinesController_findOne\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"PipelinesV2\"]},\"put\":{\"operationId\":\"PipelinesController_update\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"PipelinesV2\"]},\"delete\":{\"operationId\":\"PipelinesController_delete\",\"parameters\":[],\"responses\":{\"204\":{\"description\":\"\"}},\"tags\":[\"PipelinesV2\"]}},\"/inputs/available-entities/{plugin}\":{\"get\":{\"operationId\":\"InputsController_getAvailableEntities\",\"parameters\":[{\"name\":\"plugin\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/GetAvailableEntitiesRes\"}}}}},\"tags\":[\"inputs\"]}},\"/inputs/test-connection\":{\"post\":{\"operationId\":\"InputsController_testConnection\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TestConnectionReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TestConnectionRes\"}}}},\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"inputs\"]}},\"/inputs/test-connection/get-columns\":{\"post\":{\"operationId\":\"InputsController_getColumns\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TestConnectionGetColumnsReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TestConnectionGetColumnsRes\"}}}},\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"inputs\"]}},\"/inputs\":{\"post\":{\"operationId\":\"InputsController_create\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/CreateInputReq\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Input\"}}}},\"201\":{\"description\":\"\"}},\"tags\":[\"inputs\"]},\"get\":{\"operationId\":\"InputsController_findAll\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"inputs\"]}},\"/inputs/{id}\":{\"get\":{\"operationId\":\"InputsController_findOne\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"inputs\"]},\"patch\":{\"operationId\":\"InputsController_update\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"inputs\"]},\"delete\":{\"operationId\":\"InputsController_delete\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"inputs\"]}},\"/transformations\":{\"post\":{\"operationId\":\"TransformationsController_create\",\"parameters\":[],\"responses\":{\"201\":{\"description\":\"\"}},\"tags\":[\"Transformations\"]},\"get\":{\"operationId\":\"TransformationsController_findAll\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"Transformations\"]}},\"/transformations/{id}\":{\"get\":{\"operationId\":\"TransformationsController_findOne\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Transformations\"]},\"put\":{\"operationId\":\"TransformationsController_update\",\"parameters\":[{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Transformations\"]},\"delete\":{\"operationId\":\"TransformationsController_delete\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Transformations\"]}},\"/health\":{\"get\":{\"operationId\":\"HealthController_check\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"Health\"]}},\"/catalog\":{\"get\":{\"operationId\":\"CatalogController_catalogAll\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ICatalogAllResponse\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/tags\":{\"get\":{\"operationId\":\"CatalogController_findAllTags\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/data-asset/{id}\":{\"get\":{\"operationId\":\"CatalogController_getDataAsset\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"Catalog\"]},\"put\":{\"operationId\":\"CatalogController_updateDataAsset\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IUpdateDataRequest\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IOneDataAsset\"}}}}},\"tags\":[\"Catalog\"]},\"delete\":{\"operationId\":\"CatalogController_deleteDataAsset\",\"parameters\":[{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/data-asset/rls/{id}\":{\"get\":{\"operationId\":\"CatalogController_getDataAssetRls\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"Catalog\"]}},\"/catalog/data-asset/{id}/columns-metadata\":{\"get\":{\"operationId\":\"CatalogController_getDataAssetColumnsMetadata\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IColumnsMetadataResponse\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/data-asset/{id}/preview\":{\"get\":{\"operationId\":\"CatalogController_getDataAssetPreview\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IPreviewResponse\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/data-asset/{id}/docs\":{\"get\":{\"operationId\":\"CatalogController_getDataAssetDocs\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IDocsResponse\"}}}}},\"tags\":[\"Catalog\"]},\"post\":{\"operationId\":\"CatalogController_manageDataAssetDocs\",\"parameters\":[],\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/catalog/data-asset/{id}/manage-permissions\":{\"put\":{\"operationId\":\"CatalogController_manageDataAssetPermissions\",\"parameters\":[{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"Catalog\"]}},\"/catalog/data-asset/{id}/revoke-permissions\":{\"put\":{\"operationId\":\"CatalogController_revokeDataAssetPermissions\",\"parameters\":[{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"Catalog\"]}},\"/catalog/data-asset/{id}/comment\":{\"post\":{\"operationId\":\"CatalogController_commentOnDataAsset\",\"parameters\":[{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IMakeAComment\"}}}},\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]},\"delete\":{\"operationId\":\"CatalogController_deleteComment\",\"parameters\":[{\"name\":\"id\",\"required\":true,\"in\":\"path\",\"schema\":{\"type\":\"string\"}}],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/IDeleteComment\"}}}},\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Catalog\"]}},\"/oauth/hubspot\":{\"get\":{\"operationId\":\"OauthController_oauthHubspot\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"boolean\"}}}}},\"tags\":[\"oauth\"]}},\"/oauth/hubspot/callback\":{\"get\":{\"operationId\":\"OauthController_oauthHubspotCallback\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"oauth\"]}},\"/oauth/googleads\":{\"get\":{\"operationId\":\"OauthController_oauthGoogleAds\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"boolean\"}}}}},\"tags\":[\"oauth\"]}},\"/oauth/googleads/callback\":{\"get\":{\"operationId\":\"OauthController_oauthGoogleAdsCallback\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"oauth\"]}},\"/oauth/google-sheets\":{\"get\":{\"operationId\":\"OauthController_oauthGoogleSheets\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"boolean\"}}}}},\"tags\":[\"oauth\"]}},\"/oauth/google-sheets/callback\":{\"get\":{\"operationId\":\"OauthController_oauthGoogleSheetsCallback\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"oauth\"]}},\"/oauth/facebook\":{\"get\":{\"operationId\":\"OauthController_oauthFacebook\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"boolean\"}}}}},\"tags\":[\"oauth\"]}},\"/oauth/facebook/callback\":{\"get\":{\"operationId\":\"OauthController_oauthFacebookCallback\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"oauth\"]}},\"/oauth/mailchimp\":{\"get\":{\"operationId\":\"OauthController_oauthMailchimp\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"boolean\"}}}}},\"tags\":[\"oauth\"]}},\"/oauth/mailchimp/callback\":{\"get\":{\"operationId\":\"OauthController_oauthMailchimpCallback\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"oauth\"]}},\"/oauth/salesforce\":{\"get\":{\"operationId\":\"OauthController_oauthSalesforce\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"boolean\"}}}}},\"tags\":[\"oauth\"]}},\"/oauth/salesforce/callback\":{\"get\":{\"operationId\":\"OauthController_oauthSalesforceCallback\",\"parameters\":[],\"responses\":{\"200\":{\"description\":\"\"}},\"tags\":[\"oauth\"]}},\"/productboard/notes\":{\"post\":{\"operationId\":\"ProductboardController_sendNote\",\"parameters\":[],\"requestBody\":{\"required\":true,\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/INote\"}}}},\"responses\":{\"201\":{\"description\":\"\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\"}}}}},\"tags\":[\"Productboard\"]}}},\"info\":{\"title\":\"Maestro\",\"description\":\"Documentation for Maestro gateway\",\"version\":\"31.10.2022 - 15:37\",\"contact\":{}},\"tags\":[],\"servers\":[],\"components\":{\"securitySchemes\":{\"bearer\":{\"scheme\":\"bearer\",\"bearerFormat\":\"JWT\",\"type\":\"http\"}},\"schemas\":{\"CreateConnectorDto\":{\"type\":\"object\",\"properties\":{\"file\":{\"type\":\"string\",\"format\":\"binary\"},\"connector\":{\"type\":\"string\"}},\"required\":[\"file\",\"connector\"]},\"UpdateDto\":{\"type\":\"object\",\"properties\":{\"file\":{\"type\":\"string\",\"format\":\"binary\"},\"version\":{\"type\":\"string\"},\"category\":{\"type\":\"string\"},\"plugin\":{\"type\":\"string\"},\"image\":{\"type\":\"string\"},\"docs\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"options\":{\"type\":\"object\",\"description\":\"skip_select_entities: boolean skip_select_columns: boolean;\"},\"connection_controls\":{\"type\":\"array\",\"items\":{\"properties\":{}}}},\"required\":[\"version\"]},\"AddTagDto\":{\"type\":\"object\",\"properties\":{\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"tags\"]},\"RemoveTagDto\":{\"type\":\"object\",\"properties\":{\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"tags\"]},\"DeleteConnectorDto\":{\"type\":\"object\",\"properties\":{\"version\":{\"type\":\"string\"}},\"required\":[\"version\"]},\"PermissionGroupPermission\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"id\":{\"type\":\"number\"}},\"required\":[\"name\",\"id\"]},\"PermissionGroup\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\"},\"permissions\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PermissionGroupPermission\"}}},\"required\":[\"title\",\"permissions\"]},\"GetPublicPermissionsRes\":{\"type\":\"object\",\"properties\":{\"permissionGroups\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PermissionGroup\"}}},\"required\":[\"permissionGroups\"]},\"CreateConnectionDto\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"network_config_id\":{\"type\":\"string\"},\"properties\":{\"type\":\"object\"},\"connector_id\":{\"type\":\"string\"},\"connector_name\":{\"type\":\"string\"},\"plugin\":{\"type\":\"string\"},\"image_url\":{\"type\":\"string\"}},\"required\":[\"name\",\"description\",\"type\",\"properties\",\"connector_id\",\"connector_name\",\"plugin\",\"image_url\"]},\"ConnectionToCatalogDto\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"network_config_id\":{\"type\":\"string\"},\"connector_id\":{\"type\":\"string\"},\"connector_name\":{\"type\":\"string\"},\"plugin\":{\"type\":\"string\"},\"image_url\":{\"type\":\"string\"}},\"required\":[\"name\",\"description\",\"type\",\"connector_id\",\"connector_name\",\"plugin\",\"image_url\"]},\"ConnectionRes\":{\"type\":\"object\",\"properties\":{\"connection\":{\"$ref\":\"#/components/schemas/ConnectionToCatalogDto\"},\"message\":{\"type\":\"string\"}},\"required\":[\"connection\",\"message\"]},\"UpdateConnectionDto\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"network_config_id\":{\"type\":\"string\"},\"properties\":{\"type\":\"object\"}},\"required\":[\"name\",\"description\",\"properties\"]},\"ConnectionsRes\":{\"type\":\"object\",\"properties\":{\"connections\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/ConnectionToCatalogDto\"}},\"message\":{\"type\":\"string\"}},\"required\":[\"connections\",\"message\"]},\"ConnectionDto\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"customer_id\":{\"type\":\"string\"},\"customer_name\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"updated_at\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\"},\"pipelines\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"network_config_id\":{\"type\":\"string\"},\"properties\":{\"type\":\"object\"},\"connector_id\":{\"type\":\"string\"},\"connector_name\":{\"type\":\"string\"},\"plugin\":{\"type\":\"string\"},\"image_url\":{\"type\":\"string\"}},\"required\":[\"id\",\"customer_id\",\"customer_name\",\"user_id\",\"updated_at\",\"created_at\",\"pipelines\",\"name\",\"description\",\"type\",\"properties\",\"connector_id\",\"connector_name\",\"plugin\",\"image_url\"]},\"ConnectionDetailsRes\":{\"type\":\"object\",\"properties\":{\"connection\":{\"$ref\":\"#/components/schemas/ConnectionDto\"},\"message\":{\"type\":\"string\"}},\"required\":[\"connection\",\"message\"]},\"PermissionDto\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"number\"},\"seqid\":{\"type\":\"number\"},\"name\":{\"type\":\"string\"},\"claim\":{\"type\":\"string\"},\"createdAt\":{\"type\":\"string\"},\"updatedAt\":{\"type\":\"string\"}},\"required\":[\"id\",\"seqid\",\"name\",\"claim\",\"createdAt\",\"updatedAt\"]},\"Customer\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"domain\":{\"type\":\"string\"},\"tier\":{\"type\":\"string\"},\"info\":{\"type\":\"string\"},\"createdAt\":{\"type\":\"string\"},\"updatedAt\":{\"type\":\"string\"}},\"required\":[\"id\",\"name\",\"domain\",\"tier\",\"info\",\"createdAt\",\"updatedAt\"]},\"UserRole\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"permissions\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PermissionDto\"}},\"createdAt\":{\"type\":\"string\"},\"updatedAt\":{\"type\":\"string\"},\"isPublic\":{\"type\":\"boolean\"},\"customer\":{\"$ref\":\"#/components/schemas/Customer\"},\"usage\":{\"type\":\"string\"}},\"required\":[\"id\",\"name\",\"description\",\"createdAt\",\"updatedAt\",\"isPublic\",\"customer\",\"usage\"]},\"IUserByCustomer\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"roles\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/UserRole\"}},\"jobTitle\":{\"type\":\"string\"},\"department\":{\"type\":\"string\"},\"hierarchy\":{\"type\":\"string\"},\"mfaStatus\":{\"type\":\"string\"},\"createdAt\":{\"type\":\"string\"},\"updatedAt\":{\"type\":\"string\"},\"status\":{\"type\":\"string\"},\"lastLogin\":{\"type\":\"string\"},\"permissions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"id\",\"name\",\"email\",\"roles\",\"jobTitle\",\"department\",\"hierarchy\",\"mfaStatus\",\"createdAt\",\"updatedAt\",\"status\"]},\"GetAllUsersByCustomerIdRes\":{\"type\":\"object\",\"properties\":{\"users\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/IUserByCustomer\"}},\"departments\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"jobTitles\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"users\",\"departments\",\"jobTitles\"]},\"Hierarchy\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"}},\"required\":[\"id\",\"name\"]},\"GetAllHierarchiesRes\":{\"type\":\"object\",\"properties\":{\"hierarchies\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Hierarchy\"}}},\"required\":[\"hierarchies\"]},\"GetAllDepartmentsRes\":{\"type\":\"object\",\"properties\":{\"departments\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"departments\"]},\"CreateUserReq\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"roleNames\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"jobTitle\":{\"type\":\"string\"},\"department\":{\"type\":\"string\"},\"hierarchy\":{\"type\":\"string\"}},\"required\":[\"email\"]},\"User\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"roles\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/UserRole\"}},\"jobTitle\":{\"type\":\"string\"},\"department\":{\"type\":\"string\"},\"hierarchy\":{\"type\":\"string\"},\"customer\":{\"$ref\":\"#/components/schemas/Customer\"},\"mfaStatus\":{\"type\":\"string\"},\"createdAt\":{\"type\":\"string\"},\"updatedAt\":{\"type\":\"string\"},\"status\":{\"type\":\"string\"},\"lastLogin\":{\"type\":\"string\"}},\"required\":[\"id\",\"name\",\"email\",\"roles\",\"jobTitle\",\"department\",\"hierarchy\",\"mfaStatus\",\"createdAt\",\"updatedAt\",\"status\"]},\"CreateUserRes\":{\"type\":\"object\",\"properties\":{\"user\":{\"$ref\":\"#/components/schemas/User\"}},\"required\":[\"user\"]},\"BatchCreateUserReq\":{\"type\":\"object\",\"properties\":{\"users\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/CreateUserReq\"}}},\"required\":[\"users\"]},\"ErrorUsers\":{\"type\":\"object\",\"properties\":{\"user\":{\"$ref\":\"#/components/schemas/CreateUserReq\"},\"error\":{\"type\":\"string\"}},\"required\":[\"user\",\"error\"]},\"BatchCreateUserRes\":{\"type\":\"object\",\"properties\":{\"usersCreated\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/User\"}},\"errorUsers\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/ErrorUsers\"}}},\"required\":[\"usersCreated\",\"errorUsers\"]},\"DeleteUserRes\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"}},\"required\":[\"id\"]},\"SetUserRolesReq\":{\"type\":\"object\",\"properties\":{\"userId\":{\"type\":\"string\"},\"roleNames\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"userId\",\"roleNames\"]},\"SetUserRolesRes\":{\"type\":\"object\",\"properties\":{\"user\":{\"$ref\":\"#/components/schemas/IUserByCustomer\"}},\"required\":[\"user\"]},\"AssignRoleToUserReq\":{\"type\":\"object\",\"properties\":{\"userId\":{\"type\":\"string\"},\"roleId\":{\"type\":\"string\"}},\"required\":[\"userId\",\"roleId\"]},\"UpdateUserReq\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"jobTitle\":{\"type\":\"string\"},\"department\":{\"type\":\"string\"},\"hierarchy\":{\"type\":\"string\"},\"roleNames\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"UpdateUserRes\":{\"type\":\"object\",\"properties\":{\"user\":{\"$ref\":\"#/components/schemas/IUserByCustomer\"}},\"required\":[\"user\"]},\"UserNoRolesAndCustomer\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"jobTitle\":{\"type\":\"string\"},\"department\":{\"type\":\"string\"},\"hierarchy\":{\"type\":\"string\"},\"mfaStatus\":{\"type\":\"string\"},\"createdAt\":{\"type\":\"string\"},\"updatedAt\":{\"type\":\"string\"},\"status\":{\"type\":\"string\"},\"lastLogin\":{\"type\":\"string\"}},\"required\":[\"id\",\"name\",\"email\",\"jobTitle\",\"department\",\"hierarchy\",\"mfaStatus\",\"createdAt\",\"updatedAt\",\"status\"]},\"RoleDto\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"permissions\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PermissionDto\"}},\"users\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/UserNoRolesAndCustomer\"}},\"createdAt\":{\"type\":\"string\"},\"updatedAt\":{\"type\":\"string\"},\"isPublic\":{\"type\":\"boolean\"},\"customer\":{\"$ref\":\"#/components/schemas/Customer\"},\"usage\":{\"type\":\"string\"}},\"required\":[\"id\",\"name\",\"description\",\"createdAt\",\"updatedAt\",\"isPublic\",\"customer\",\"usage\"]},\"GetRolesByCustomerRes\":{\"type\":\"object\",\"properties\":{\"roles\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/RoleDto\"}}},\"required\":[\"roles\"]},\"CreateRoleReq\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"permissionIds\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"userIds\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"description\":{\"type\":\"string\"}},\"required\":[\"name\",\"permissionIds\",\"description\"]},\"CustomerRole\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"permissions\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PermissionDto\"}},\"users\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/UserNoRolesAndCustomer\"}},\"createdAt\":{\"type\":\"string\"},\"updatedAt\":{\"type\":\"string\"},\"isPublic\":{\"type\":\"boolean\"},\"usage\":{\"type\":\"string\"}},\"required\":[\"id\",\"name\",\"description\",\"createdAt\",\"updatedAt\",\"isPublic\",\"usage\"]},\"CreateRoleRes\":{\"type\":\"object\",\"properties\":{\"role\":{\"$ref\":\"#/components/schemas/CustomerRole\"}},\"required\":[\"role\"]},\"GrantPermissionsToRoleReq\":{\"type\":\"object\",\"properties\":{\"roleId\":{\"type\":\"string\"},\"permissionIds\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"roleId\",\"permissionIds\"]},\"GrantPermissionsToRoleRes\":{\"type\":\"object\",\"properties\":{\"role\":{\"$ref\":\"#/components/schemas/RoleDto\"}},\"required\":[\"role\"]},\"RevokePermissionsFromRoleReq\":{\"type\":\"object\",\"properties\":{\"roleId\":{\"type\":\"string\"},\"permissionIds\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"roleId\",\"permissionIds\"]},\"RevokePermissionsFromRoleRes\":{\"type\":\"object\",\"properties\":{\"role\":{\"$ref\":\"#/components/schemas/RoleDto\"}},\"required\":[\"role\"]},\"SetRolePermissionsReq\":{\"type\":\"object\",\"properties\":{\"roleId\":{\"type\":\"string\"},\"permissionIds\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"roleId\",\"permissionIds\"]},\"SetRolePermissionsRes\":{\"type\":\"object\",\"properties\":{\"role\":{\"$ref\":\"#/components/schemas/RoleDto\"}},\"required\":[\"role\"]},\"SetRoleUsersReq\":{\"type\":\"object\",\"properties\":{\"roleId\":{\"type\":\"string\"},\"userIds\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"roleId\",\"userIds\"]},\"SetRoleUsersRes\":{\"type\":\"object\",\"properties\":{\"role\":{\"$ref\":\"#/components/schemas/RoleDto\"}},\"required\":[\"role\"]},\"UpdateRoleReq\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"}}},\"UpdateRoleRes\":{\"type\":\"object\",\"properties\":{\"role\":{\"$ref\":\"#/components/schemas/RoleDto\"}},\"required\":[\"role\"]},\"NetworkConfigToCatalogDto\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"customer_id\":{\"type\":\"string\"},\"plugin\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\"},\"updated_at\":{\"type\":\"string\"},\"network_type_id\":{\"type\":\"string\"},\"network_type_name\":{\"type\":\"string\"}},\"required\":[\"id\",\"customer_id\",\"plugin\",\"type\",\"name\",\"description\",\"created_at\",\"updated_at\",\"network_type_id\",\"network_type_name\"]},\"FindAllNetworkConfigsRes\":{\"type\":\"object\",\"properties\":{\"network_configs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/NetworkConfigToCatalogDto\"}},\"message\":{\"type\":\"string\"}},\"required\":[\"network_configs\",\"message\"]},\"CreateNetworkConfigReq\":{\"type\":\"object\",\"properties\":{\"network_type_id\":{\"type\":\"string\"},\"network_type_name\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"ovpn_file\":{\"type\":\"string\",\"format\":\"binary\"}},\"required\":[\"network_type_id\",\"network_type_name\",\"name\",\"description\",\"ovpn_file\"]},\"CreateNetworkConfigRes\":{\"type\":\"object\",\"properties\":{\"network_config\":{\"$ref\":\"#/components/schemas/NetworkConfigToCatalogDto\"}},\"required\":[\"network_config\"]},\"ConnectionTestPingReq\":{\"type\":\"object\",\"properties\":{\"plugin\":{\"type\":\"string\"},\"host\":{\"type\":\"string\"},\"port\":{\"type\":\"number\"},\"network_config_id\":{\"type\":\"string\"},\"connection_id\":{\"type\":\"string\"}}},\"ConnectionTestPingRes\":{\"type\":\"object\",\"properties\":{\"operation_result\":{\"type\":\"boolean\"}},\"required\":[\"operation_result\"]},\"ConnectionTestCredentialsProperties\":{\"type\":\"object\",\"properties\":{\"host\":{\"type\":\"string\"},\"port\":{\"type\":\"string\"},\"username\":{\"type\":\"string\"},\"password\":{\"type\":\"string\"},\"database\":{\"type\":\"string\"}},\"required\":[\"host\",\"port\",\"username\",\"password\",\"database\"]},\"ConnectionTestCredentialsReq\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"network_config_id\":{\"type\":\"string\"},\"connector_id\":{\"type\":\"string\"},\"connector_name\":{\"type\":\"string\"},\"plugin\":{\"type\":\"string\"},\"image_url\":{\"type\":\"string\"},\"properties\":{\"$ref\":\"#/components/schemas/ConnectionTestCredentialsProperties\"},\"connection_id\":{\"type\":\"string\"}},\"required\":[\"name\",\"description\",\"type\",\"connector_id\",\"connector_name\",\"plugin\",\"image_url\",\"properties\"]},\"ConnectionTestCredentialsRes\":{\"type\":\"object\",\"properties\":{\"operation_result\":{\"type\":\"boolean\"},\"connection_id\":{\"type\":\"string\"}},\"required\":[\"operation_result\",\"connection_id\"]},\"ConnectionTestListSchemasReq\":{\"type\":\"object\",\"properties\":{\"plugin\":{\"type\":\"string\"},\"connection_id\":{\"type\":\"string\"}},\"required\":[\"plugin\",\"connection_id\"]},\"ConnectionTestListSchemasRes\":{\"type\":\"object\",\"properties\":{\"operation_result\":{\"type\":\"boolean\"},\"schema_list\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"operation_result\",\"schema_list\"]},\"ConnectionTestListTablesReq\":{\"type\":\"object\",\"properties\":{\"plugin\":{\"type\":\"string\"},\"connection_id\":{\"type\":\"string\"},\"schema\":{\"type\":\"string\"}},\"required\":[\"plugin\",\"connection_id\",\"schema\"]},\"ConnectionTestListTablesRes\":{\"type\":\"object\",\"properties\":{\"operation_result\":{\"type\":\"boolean\"},\"table_list\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"operation_result\",\"table_list\"]},\"GetTableMetadataReq\":{\"type\":\"object\",\"properties\":{\"connection_id\":{\"type\":\"string\"},\"plugin\":{\"type\":\"string\"},\"schema\":{\"type\":\"string\"},\"table_list\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"connection_id\",\"plugin\",\"schema\",\"table_list\"]},\"ColumnDto\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"}},\"required\":[\"name\",\"type\"]},\"TableMetadataDto\":{\"type\":\"object\",\"properties\":{\"table_name\":{\"type\":\"string\"},\"columns\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/ColumnDto\"}},\"references\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/ColumnDto\"}}},\"required\":[\"table_name\",\"columns\",\"references\"]},\"GetTableMetadataRes\":{\"type\":\"object\",\"properties\":{\"operation_result\":{\"type\":\"boolean\"},\"tables_metadata\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/TableMetadataDto\"}}},\"required\":[\"operation_result\",\"tables_metadata\"]},\"ICreatePipelineV2Req\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"connection_id\":{\"type\":\"string\"},\"cron\":{\"type\":\"string\"},\"input_id\":{\"type\":\"string\"},\"transformations_ids\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"properties\":{\"type\":\"object\"},\"connector_name\":{\"type\":\"string\"},\"connector_plugin\":{\"type\":\"string\"},\"connector_version\":{\"type\":\"string\"},\"image_url\":{\"type\":\"string\"}},\"required\":[\"name\",\"description\",\"connection_id\",\"cron\",\"connector_name\",\"connector_plugin\",\"connector_version\",\"image_url\"]},\"IPipelineV2\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"connection_id\":{\"type\":\"string\"},\"cron\":{\"type\":\"string\"},\"input_id\":{\"type\":\"string\"},\"transformations_ids\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"properties\":{\"type\":\"object\"},\"connector_name\":{\"type\":\"string\"},\"connector_plugin\":{\"type\":\"string\"},\"connector_version\":{\"type\":\"string\"},\"image_url\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\"},\"updated_at\":{\"type\":\"string\"}},\"required\":[\"id\",\"name\",\"description\",\"connection_id\",\"cron\",\"connector_name\",\"connector_plugin\",\"connector_version\",\"image_url\",\"created_at\",\"updated_at\"]},\"GetAvailableEntitiesRes\":{\"type\":\"object\",\"properties\":{\"entities\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"entities\"]},\"CredentialsJdbc\":{\"type\":\"object\",\"properties\":{\"jdbc_user\":{\"type\":\"string\"},\"jdbc_password\":{\"type\":\"string\"},\"database\":{\"type\":\"string\"},\"endpoint\":{\"type\":\"string\"},\"port\":{\"type\":\"string\"},\"engine\":{\"type\":\"string\"},\"schema\":{\"type\":\"string\"}}},\"TestConnectionReq\":{\"type\":\"object\",\"properties\":{\"plugin\":{\"type\":\"string\"},\"credentials\":{\"$ref\":\"#/components/schemas/CredentialsJdbc\"},\"info\":{\"type\":\"object\"}},\"required\":[\"plugin\",\"credentials\"]},\"TestConnectionRes\":{\"type\":\"object\",\"properties\":{\"connection_state\":{\"type\":\"boolean\"},\"total_entities\":{\"type\":\"number\"},\"database_tables\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"connection_state\",\"total_entities\",\"database_tables\"]},\"TestConnectionGetColumnsReq\":{\"type\":\"object\",\"properties\":{\"plugin\":{\"type\":\"string\"},\"tables\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"credentials\":{\"$ref\":\"#/components/schemas/CredentialsJdbc\"},\"id\":{\"type\":\"string\"},\"info\":{\"type\":\"object\"}},\"required\":[\"plugin\",\"tables\"]},\"TableColumns\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"columns\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"references\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"name\",\"columns\",\"references\"]},\"TestConnectionGetColumnsRes\":{\"type\":\"object\",\"properties\":{\"tables\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/TableColumns\"}}},\"required\":[\"tables\"]},\"FileFormatParams\":{\"type\":\"object\",\"properties\":{\"sep\":{\"type\":\"string\"},\"header\":{\"type\":\"boolean\"},\"encoding\":{\"type\":\"string\"}},\"required\":[\"sep\",\"header\",\"encoding\"]},\"GoogleAnalyticsClientSecrets\":{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\"},\"project_id\":{\"type\":\"string\"},\"private_key_id\":{\"type\":\"string\"},\"private_key\":{\"type\":\"string\"},\"client_email\":{\"type\":\"string\"},\"client_id\":{\"type\":\"string\"},\"auth_uri\":{\"type\":\"string\"},\"token_uri\":{\"type\":\"string\"},\"auth_provider_x509_cert_url\":{\"type\":\"string\"},\"client_x509_cert_url\":{\"type\":\"string\"}},\"required\":[\"type\",\"project_id\",\"private_key_id\",\"private_key\",\"client_email\",\"client_id\",\"auth_uri\",\"token_uri\",\"auth_provider_x509_cert_url\",\"client_x509_cert_url\"]},\"Credentials\":{\"type\":\"object\",\"properties\":{\"jdbc_user\":{\"type\":\"string\"},\"jdbc_password\":{\"type\":\"string\"},\"database\":{\"type\":\"string\"},\"endpoint\":{\"type\":\"string\"},\"port\":{\"type\":\"string\"},\"engine\":{\"type\":\"string\"},\"schema\":{\"type\":\"string\"},\"connection_type\":{\"type\":\"string\"},\"client_aws_access_key_id\":{\"type\":\"string\"},\"client_aws_secret_access_key\":{\"type\":\"string\"},\"client_bucket\":{\"type\":\"string\"},\"file_to_extract\":{\"type\":\"string\"},\"file_format_params\":{\"$ref\":\"#/components/schemas/FileFormatParams\"},\"view_id\":{\"type\":\"string\"},\"client_secrets\":{\"$ref\":\"#/components/schemas/GoogleAnalyticsClientSecrets\"},\"start_date\":{\"type\":\"string\"},\"end_date\":{\"type\":\"string\"},\"oauth_code\":{\"type\":\"string\"}},\"required\":[\"connection_type\"]},\"OauthObject\":{\"type\":\"object\",\"properties\":{\"get_tokens_url\":{\"type\":\"string\"},\"get_tokens_url_params\":{\"type\":\"string\"},\"get_tokens_set_response\":{\"type\":\"object\"},\"content_type\":{\"type\":\"string\"}}},\"InputOptions\":{\"type\":\"object\",\"properties\":{\"oauth\":{\"$ref\":\"#/components/schemas/OauthObject\"},\"skip_select_columns\":{\"type\":\"boolean\"},\"skip_select_entities\":{\"type\":\"boolean\"},\"skip_transformation\":{\"type\":\"boolean\"}}},\"AuthParameters\":{\"type\":\"object\",\"properties\":{\"aws_access_key_id\":{\"type\":\"string\"},\"aws_secret_access_key\":{\"type\":\"string\"}},\"required\":[\"aws_access_key_id\",\"aws_secret_access_key\"]},\"CreateInputReq\":{\"type\":\"object\",\"properties\":{\"tables\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/TableColumns\"}},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"plugin\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"category\":{\"type\":\"string\",\"deprecated\":true},\"credentials\":{\"deprecated\":true,\"allOf\":[{\"$ref\":\"#/components/schemas/Credentials\"}]},\"options\":{\"deprecated\":true,\"allOf\":[{\"$ref\":\"#/components/schemas/InputOptions\"}]},\"info\":{\"type\":\"object\",\"deprecated\":true},\"cron\":{\"type\":\"string\",\"deprecated\":true},\"source_bucket\":{\"type\":\"string\",\"deprecated\":true},\"source_prefix\":{\"type\":\"string\",\"deprecated\":true},\"auth_parameters\":{\"deprecated\":true,\"allOf\":[{\"$ref\":\"#/components/schemas/AuthParameters\"}]},\"file_format_params\":{\"deprecated\":true,\"allOf\":[{\"$ref\":\"#/components/schemas/FileFormatParams\"}]}},\"required\":[\"tables\",\"name\",\"description\",\"plugin\"]},\"Input\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"tables\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/TableColumns\"}},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"plugin\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\"},\"updated_at\":{\"type\":\"string\"},\"category\":{\"type\":\"string\",\"deprecated\":true},\"credentials\":{\"deprecated\":true,\"allOf\":[{\"$ref\":\"#/components/schemas/Credentials\"}]},\"options\":{\"deprecated\":true,\"allOf\":[{\"$ref\":\"#/components/schemas/InputOptions\"}]},\"info\":{\"type\":\"object\",\"deprecated\":true},\"cron\":{\"type\":\"string\",\"deprecated\":true},\"source_bucket\":{\"type\":\"string\",\"deprecated\":true},\"source_prefix\":{\"type\":\"string\",\"deprecated\":true},\"auth_parameters\":{\"deprecated\":true,\"allOf\":[{\"$ref\":\"#/components/schemas/AuthParameters\"}]},\"file_format_params\":{\"deprecated\":true,\"allOf\":[{\"$ref\":\"#/components/schemas/FileFormatParams\"}]}},\"required\":[\"id\",\"tables\",\"name\",\"description\",\"plugin\",\"created_at\",\"updated_at\"]},\"IRole\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"id\":{\"type\":\"string\"}},\"required\":[\"name\",\"id\"]},\"IUser\":{\"type\":\"object\",\"properties\":{\"username\":{\"type\":\"string\"},\"id\":{\"type\":\"string\"}},\"required\":[\"username\",\"id\"]},\"IComment\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"number\"},\"message\":{\"type\":\"string\"},\"created_at\":{\"type\":\"string\"},\"username\":{\"type\":\"string\"}},\"required\":[\"id\",\"message\",\"created_at\",\"username\"]},\"IDataAsset\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"number\"},\"database_name\":{\"type\":\"string\"},\"table_name\":{\"type\":\"string\"},\"num_columns\":{\"type\":\"number\"},\"location\":{\"type\":\"string\"},\"created_time\":{\"type\":\"string\"},\"table_type\":{\"type\":\"string\"},\"size_in_bytes\":{\"type\":\"number\"},\"num_files\":{\"type\":\"number\"},\"data_encrypted\":{\"type\":\"string\"},\"num_rows\":{\"type\":\"number\"},\"display_name\":{\"type\":\"string\"},\"pipeline_id\":{\"type\":\"string\"},\"user_id\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"data_asset_type\":{\"type\":\"string\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"owner\":{\"type\":\"string\"},\"roles\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/IRole\"}},\"users\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/IUser\"}},\"dashboard_id\":{\"type\":\"number\"},\"name\":{\"type\":\"string\"},\"parameters\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"embedding_params\":{\"type\":\"object\"},\"created_at\":{\"type\":\"string\"},\"updated_at\":{\"type\":\"string\"},\"comments\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/IComment\"}}},\"required\":[\"id\",\"pipeline_id\",\"user_id\",\"description\",\"data_asset_type\",\"tags\",\"owner\",\"roles\",\"users\",\"comments\"]},\"ICatalogAllResponse\":{\"type\":\"object\",\"properties\":{\"data_assets\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/IDataAsset\"}},\"total\":{\"type\":\"number\"}},\"required\":[\"data_assets\",\"total\"]},\"IColumnMetadata\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"table_name\":{\"type\":\"string\"},\"column_name\":{\"type\":\"string\"},\"data_type\":{\"type\":\"string\"},\"missing_count\":{\"type\":\"string\"},\"min\":{\"type\":\"string\"},\"max\":{\"type\":\"string\"},\"count\":{\"type\":\"string\"},\"histogram\":{\"type\":\"string\"},\"mean\":{\"type\":\"string\"},\"median\":{\"type\":\"string\"},\"missing_rate\":{\"type\":\"string\"},\"stddev\":{\"type\":\"string\"},\"unique_count\":{\"type\":\"string\"},\"unique_rate\":{\"type\":\"string\"},\"analyzer_rules\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"version\":{\"type\":\"string\"}},\"required\":[\"id\",\"table_name\",\"column_name\",\"data_type\",\"missing_count\",\"min\",\"max\",\"count\",\"histogram\",\"mean\",\"median\",\"missing_rate\",\"stddev\",\"unique_count\",\"unique_rate\",\"analyzer_rules\",\"version\"]},\"IColumnsMetadataResponse\":{\"type\":\"object\",\"properties\":{\"columns_metadata\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/IColumnMetadata\"}}},\"required\":[\"columns_metadata\"]},\"IData\":{\"type\":\"object\",\"properties\":{\"var\":{\"type\":\"number\"},\"date\":{\"type\":\"string\"},\"last\":{\"type\":\"number\"},\"maximum\":{\"type\":\"number\"},\"minimum\":{\"type\":\"number\"},\"day_opening\":{\"type\":\"number\"}},\"required\":[\"var\",\"date\",\"last\",\"maximum\",\"minimum\",\"day_opening\"]},\"IPreview\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"database_name\":{\"type\":\"string\"},\"table_name\":{\"type\":\"string\"},\"data\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/IData\"}}},\"required\":[\"id\",\"database_name\",\"table_name\",\"data\"]},\"IPreviewResponse\":{\"type\":\"object\",\"properties\":{\"preview\":{\"$ref\":\"#/components/schemas/IPreview\"}},\"required\":[\"preview\"]},\"IDocs\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"docs\":{\"type\":\"string\"},\"updated_at\":{\"type\":\"string\"},\"table_id\":{\"type\":\"string\"}},\"required\":[\"id\",\"docs\",\"updated_at\",\"table_id\"]},\"IDocsResponse\":{\"type\":\"object\",\"properties\":{\"docs\":{\"$ref\":\"#/components/schemas/IDocs\"}},\"required\":[\"docs\"]},\"IUpdateDataRequest\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"name\",\"description\",\"tags\"]},\"IOneDataAsset\":{\"type\":\"object\",\"properties\":{\"data_asset\":{\"$ref\":\"#/components/schemas/IDataAsset\"}},\"required\":[\"data_asset\"]},\"IMakeAComment\":{\"type\":\"object\",\"properties\":{\"message\":{\"type\":\"string\"}},\"required\":[\"message\"]},\"IDeleteComment\":{\"type\":\"object\",\"properties\":{\"comment\":{\"$ref\":\"#/components/schemas/IComment\"}},\"required\":[\"comment\"]},\"INote\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\"},\"content\":{\"type\":\"string\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"title\",\"content\",\"tags\"]}}}}" \ No newline at end of file