diff --git a/src/app.module.ts b/src/app.module.ts index 74cb547..4ed2bf2 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -29,6 +29,8 @@ import { TransformationsClientConfiguration } from './clients/transformations/cl import { AuthClient } from './clients/auth/client.config'; import { InputsClientConfiguration } from './clients/inputs/client.config'; import { PipelinesClientConfiguration } from './clients/pipelines/client.config'; +import { CatalogController } from './modules/catalog/catalog.controller'; +import { CatalogService } from './modules/catalog/catalog.service'; const authClient = new AuthClient(); const inputClient = new InputsClientConfiguration(); @@ -44,6 +46,7 @@ const transformationClient = new TransformationsClientConfiguration(); PipelinesController, AuthController, HealthController, + CatalogController, ], providers: [ InputsService, @@ -57,6 +60,7 @@ const transformationClient = new TransformationsClientConfiguration(); OutputsClientService, PipelinesClientService, AuthClientService, + CatalogService, ], imports: [ ConfigModule.forRoot({ @@ -97,6 +101,7 @@ export class AppModule implements NestModule { TransformationsController, OutputsController, PipelinesController, + CatalogController, ); } } diff --git a/src/middlewares/authentication.ts b/src/middlewares/authentication.ts index baf46f2..d7a9ba3 100644 --- a/src/middlewares/authentication.ts +++ b/src/middlewares/authentication.ts @@ -30,6 +30,7 @@ export class LoggerMiddleware implements NestMiddleware { const permissions = jwtDecoded.user.permissions; const clienId = jwtDecoded.user.customerId; + const customer = jwtDecoded.user.customer; const userId = jwtDecoded.user.id; await verifyToken(accessToken); @@ -49,6 +50,7 @@ export class LoggerMiddleware implements NestMiddleware { request.body.info = { customer_id: clienId, user_id: userId, + customer, }; next(); diff --git a/src/modules/catalog/catalog.controller.ts b/src/modules/catalog/catalog.controller.ts new file mode 100644 index 0000000..421b11c --- /dev/null +++ b/src/modules/catalog/catalog.controller.ts @@ -0,0 +1,267 @@ +import { Body, Controller, Delete, Get, Param, Post } from '@nestjs/common'; +import { CatalogService } from './catalog.service'; + +@Controller('catalog') +export class CatalogController { + constructor(private catalogService: CatalogService) {} + + @Get('all') + async catalogAll(@Body() body) { + console.log(`/catalog`, 'ON CATALOG ALL ROUTE'); + + const catalogService = new CatalogService(); + + const res = await catalogService.catalogAll(body); + + return res; + } + + @Get('data_apps') + async dataAppsAll(@Body() body) { + console.log(`/catalog`, 'ON FIND ALL DATA APPS ROUTE'); + + const catalogService = new CatalogService(); + + const res = await catalogService.dataAppsAll(body); + + return res; + } + + @Delete('data_apps/:id') + async dataAppsOne(@Param() params, @Body() body) { + console.log(`/catalog`, 'ON FIND ONE DATA APP ROUTE'); + const { id } = params; + const catalogService = new CatalogService(); + + const res = await catalogService.dataAppsOne(body, id); + + return res; + } + + @Get('dashboard-metabase') + async getAllDashboardMetabase(@Body() body) { + console.log(`/catalog`, 'ON GET ALL DASHBOARDS METABASE ROUTE'); + + const catalogService = new CatalogService(); + + const res = await catalogService.getAllDashboardMetabase(body); + + return res; + } + + @Get('dashboard-metabase/:id') + async getOneDashboardMetabase(@Body() body, @Param() params) { + const { id } = params; + console.log(`/catalog`, 'ON GET ONE DASHBOARD METABASE ROUTE'); + + const catalogService = new CatalogService(); + + const res = await catalogService.getOneDashboardMetabase(body, id); + + return res; + } + + @Get('table-metadata') + async getAllTableMetadata(@Body() body) { + console.log(`/catalog`, 'ON GET ALL TABLES METADATA ROUTE'); + + const catalogService = new CatalogService(); + + const res = await catalogService.getAllTableMetadata(body); + + return res; + } + + @Delete('table-metadata') + async deleteOneTableMetadata(@Param() params, @Body() body) { + const { id } = params; + console.log(`/catalog`, 'ON DELETE ONE TABLE METADATA ROUTE'); + + const catalogService = new CatalogService(); + + const res = await catalogService.deleteOneTableMetadata(body, id); + + return res; + } + + @Get('column-metadata') + async getOneColumnMetadata(@Body() body) { + console.log(`/catalog`, 'ON GET ONE COLUMN METADATA ROUTE'); + + const catalogService = new CatalogService(); + + const res = await catalogService.getOneColumnMetadata(body); + + return res; + } + + @Delete('column-metadata') + async deleteOneColumnMetadata(@Param() params, @Body() body) { + console.log(`/catalog`, 'ON DELETE ONE COLUMN METADATA ROUTE'); + const { id } = params; + + const catalogService = new CatalogService(); + + const res = await catalogService.deleteOneColumnMetadata(body, id); + + return res; + } + + @Get('data-preview') + async getOneDataPreview(@Body() body) { + console.log(`/catalog`, 'ON GET ONE DATAPREVIEW ROUTE'); + + const catalogService = new CatalogService(); + + const res = await catalogService.getOneDataPreview(body); + + return res; + } + + @Get('data-status') + async getDataStatus(@Body() body) { + console.log(`/catalog`, 'ON GET DATA STATUS ROUTE'); + + const catalogService = new CatalogService(); + + const res = await catalogService.getDataStatus(body); + + return res; + } + + @Get('data-description') + async getDataDescription(@Body() body) { + console.log(`/catalog`, 'ON GET DATA DESCRIPTION ROUTE'); + + const catalogService = new CatalogService(); + + const res = await catalogService.getDataDescription(body); + + return res; + } + + @Get('data-docs') + async getDataDocs(@Body() body) { + console.log(`/catalog`, 'ON GET DATA DOCS ROUTE'); + + const catalogService = new CatalogService(); + + const res = await catalogService.getDataDocs(body); + + return res; + } + + @Get('data-rating') + async getDataRating(@Body() body) { + console.log(`/catalog`, 'ON GET DATA RATING ROUTE'); + + const catalogService = new CatalogService(); + + const res = await catalogService.getDataRating(body); + + return res; + } + + @Get('summary-rating/:id') + async getSummaryRating(@Param() params, @Body() body) { + console.log(`/catalog`, 'ON GET SUMMARY RATING ROUTE'); + const { id } = params; + + const catalogService = new CatalogService(); + + const res = await catalogService.getSummaryRating(id, body); + + return res; + } + + @Get('data-comment') + async getDataComment(@Body() body) { + console.log(`/catalog`, 'ON GET DATA COMMENT ROUTE'); + + const catalogService = new CatalogService(); + + const res = await catalogService.getDataComment(body); + + return res; + } + + @Get('data-review') + async getDataReview(@Body() body) { + console.log(`/catalog`, 'ON GET DATA REVIEW ROUTE'); + + const catalogService = new CatalogService(); + + const res = await catalogService.getDataReview(body); + + return res; + } + + @Post('tags') + async createTags(@Body() body) { + console.log(`/catalog`, 'ON CREATE TAG ROUTE'); + + const catalogService = new CatalogService(); + + const res = await catalogService.createTags(body); + + return res; + } + + @Delete('tags/:id') + async deleteTags(@Param() params, @Body() body) { + console.log(`/catalog`, 'ON DELETE TAG ROUTE'); + const { id } = params; + + const catalogService = new CatalogService(); + + const res = await catalogService.deleteTags(body, id); + + return res; + } + + @Post('table-tags') + async createTableTags(@Body() body) { + console.log(`/catalog`, 'ON CREATE TABLE TAG ROUTE'); + + const catalogService = new CatalogService(); + + const res = await catalogService.createTableTags(body); + + return res; + } + + @Delete('table-tags') + async deleteTableTags(@Param() params, @Body() body) { + console.log(`/catalog`, 'ON CREATE TABLE TAGS ROUTE'); + const { id } = params; + + const catalogService = new CatalogService(); + + const res = await catalogService.deleteTableTags(body, id); + + return res; + } + + @Get('table-rules') + async getTableRules(@Body() body) { + console.log(`/catalog`, 'ON GET TABLE RULES ROUTE'); + + const catalogService = new CatalogService(); + + const res = await catalogService.getTableRules(body); + + return res; + } + + @Delete('table-rules') + async deleteTableRules(@Param() params, @Body() body) { + console.log(`/catalog`, 'ON DELETE TABLE RULES ROUTE'); + const { id } = params; + + const catalogService = new CatalogService(); + + const res = await catalogService.deleteTableRules(body, id); + + return res; + } +} diff --git a/src/modules/catalog/catalog.service.ts b/src/modules/catalog/catalog.service.ts new file mode 100644 index 0000000..3bd6323 --- /dev/null +++ b/src/modules/catalog/catalog.service.ts @@ -0,0 +1,282 @@ +import axios from 'axios'; + +class CatalogService { + async catalogAll(body) { + const customer = + body.info.customer.toLowerCase() === 'dadosfera' + ? `` + : `-${body.info.customer.toLowerCase()}`; + const { data } = await axios.get( + `${process.env.NIMBUS_BASE_URL}${customer}.${process.env.ENV}.dadosfera/api/catalog/all/`, + ); + return data; + } + + async dataAppsAll(body) { + const customer = + body.info.customer.toLowerCase() === 'dadosfera' + ? `` + : `-${body.info.customer.toLowerCase()}`; + + const { data } = await axios.get( + `${process.env.NIMBUS_BASE_URL}${customer}.${process.env.ENV}.dadosfera/api/catalog/data_apps/`, + ); + return data; + } + + async dataAppsOne(id, body) { + const customer = + body.info.customer.toLowerCase() === 'dadosfera' + ? `` + : `-${body.info.customer.toLowerCase()}`; + + const { data } = await axios.delete( + `${process.env.NIMBUS_BASE_URL}${customer}.${process.env.ENV}.dadosfera/api/catalog/data_apps/${id}/`, + ); + return data; + } + + async getAllDashboardMetabase(body) { + const customer = + body.info.customer.toLowerCase() === 'dadosfera' + ? `` + : `-${body.info.customer.toLowerCase()}`; + + const { data } = await axios.get( + `${process.env.NIMBUS_BASE_URL}${customer}.${process.env.ENV}.dadosfera/api/catalog/dashboard-metabase/`, + ); + return data; + } + + async getOneDashboardMetabase(body, id) { + const customer = + body.info.customer.toLowerCase() === 'dadosfera' + ? `` + : `-${body.info.customer.toLowerCase()}`; + + const { data } = await axios.get( + `${process.env.NIMBUS_BASE_URL}${customer}.${process.env.ENV}.dadosfera/api/catalog/dashboard-metabase/${id}`, + ); + return data; + } + + async getAllTableMetadata(body) { + const customer = + body.info.customer.toLowerCase() === 'dadosfera' + ? `` + : `-${body.info.customer.toLowerCase()}`; + + const { data } = await axios.get( + `${process.env.NIMBUS_BASE_URL}${customer}.${process.env.ENV}.dadosfera/api/catalog/table-metadata/`, + ); + return data; + } + + async deleteOneTableMetadata(id, body) { + const customer = + body.info.customer.toLowerCase() === 'dadosfera' + ? `` + : `-${body.info.customer.toLowerCase()}`; + + const { data } = await axios.delete( + `${process.env.NIMBUS_BASE_URL}${customer}.${process.env.ENV}.dadosfera/api/catalog/table-metadata/${id}`, + ); + return data; + } + + async getOneColumnMetadata(body) { + const customer = + body.info.customer.toLowerCase() === 'dadosfera' + ? `` + : `-${body.info.customer.toLowerCase()}`; + + const { data } = await axios.get( + `${process.env.NIMBUS_BASE_URL}${customer}.${process.env.ENV}.dadosfera/api/catalog/column-metadata/`, + ); + return data; + } + + async deleteOneColumnMetadata(id, body) { + const customer = + body.info.customer.toLowerCase() === 'dadosfera' + ? `` + : `-${body.info.customer.toLowerCase()}`; + + const { data } = await axios.delete( + `${process.env.NIMBUS_BASE_URL}${customer}.${process.env.ENV}.dadosfera/api/catalog/column-metadata/${id}/`, + ); + return data; + } + + async getOneDataPreview(body) { + const customer = + body.info.customer.toLowerCase() === 'dadosfera' + ? `` + : `-${body.info.customer.toLowerCase()}`; + + const { data } = await axios.get( + `${process.env.NIMBUS_BASE_URL}${customer}.${process.env.ENV}.dadosfera/api/catalog/data-preview/`, + ); + return data; + } + + async getDataStatus(body) { + const customer = + body.info.customer.toLowerCase() === 'dadosfera' + ? `` + : `-${body.info.customer.toLowerCase()}`; + + const { data } = await axios.get( + `${process.env.NIMBUS_BASE_URL}${customer}.${process.env.ENV}.dadosfera/api/catalog/data-status/`, + ); + return data; + } + + async getDataDescription(body) { + const customer = + body.info.customer.toLowerCase() === 'dadosfera' + ? `` + : `-${body.info.customer.toLowerCase()}`; + + const { data } = await axios.get( + `${process.env.NIMBUS_BASE_URL}${customer}.${process.env.ENV}.dadosfera/api/catalog/data-description/`, + ); + return data; + } + + async getDataDocs(body) { + const customer = + body.info.customer.toLowerCase() === 'dadosfera' + ? `` + : `-${body.info.customer.toLowerCase()}`; + + const { data } = await axios.get( + `${process.env.NIMBUS_BASE_URL}${customer}.${process.env.ENV}.dadosfera/api/catalog/data-docs/`, + ); + return data; + } + + async getDataRating(body) { + const customer = + body.info.customer.toLowerCase() === 'dadosfera' + ? `` + : `-${body.info.customer.toLowerCase()}`; + + const { data } = await axios.get( + `${process.env.NIMBUS_BASE_URL}${customer}.${process.env.ENV}.dadosfera/api/catalog/data-rating/`, + ); + return data; + } + + async getSummaryRating(id, body) { + const customer = + body.info.customer.toLowerCase() === 'dadosfera' + ? `` + : `-${body.info.customer.toLowerCase()}`; + const { data } = await axios.get( + `${process.env.NIMBUS_BASE_URL}${customer}.${process.env.ENV}.dadosfera/api/catalog/summary-rating/${id}`, + ); + return data; + } + + async getDataComment(body) { + const customer = + body.info.customer.toLowerCase() === 'dadosfera' + ? `` + : `-${body.info.customer.toLowerCase()}`; + + const { data } = await axios.get( + `${process.env.NIMBUS_BASE_URL}${customer}.${process.env.ENV}.dadosfera/api/catalog/data-comment/`, + ); + return data; + } + + async getDataReview(body) { + const customer = + body.info.customer.toLowerCase() === 'dadosfera' + ? `` + : `-${body.info.customer.toLowerCase()}`; + + const { data } = await axios.get( + `${process.env.NIMBUS_BASE_URL}${customer}.${process.env.ENV}.dadosfera/api/catalog/data-review/`, + ); + return data; + } + + async createTags(body) { + const customer = + body.info.customer.toLowerCase() === 'dadosfera' + ? `` + : `-${body.info.customer.toLowerCase()}`; + + const { data } = await axios.post( + `${process.env.NIMBUS_BASE_URL}${customer}.${process.env.ENV}.dadosfera/api/catalog/tags/`, + body, + ); + return data; + } + + async deleteTags(id, body) { + const customer = + body.info.customer.toLowerCase() === 'dadosfera' + ? `` + : `-${body.info.customer.toLowerCase()}`; + + const { data } = await axios.delete( + `${process.env.NIMBUS_BASE_URL}${customer}.${process.env.ENV}.dadosfera/api/catalog/tags/${id}`, + ); + return data; + } + + async createTableTags(body) { + const customer = + body.info.customer.toLowerCase() === 'dadosfera' + ? `` + : `-${body.info.customer.toLowerCase()}`; + + const { data } = await axios.post( + `${process.env.NIMBUS_BASE_URL}${customer}.${process.env.ENV}.dadosfera/api/catalog/table-tags/`, + body, + ); + return data; + } + + async deleteTableTags(id, body) { + const customer = + body.info.customer.toLowerCase() === 'dadosfera' + ? `` + : `-${body.info.customer.toLowerCase()}`; + + const { data } = await axios.delete( + `${process.env.NIMBUS_BASE_URL}${customer}.${process.env.ENV}.dadosfera/api/catalog/table-tags/${id}`, + ); + return data; + } + + async getTableRules(body) { + const customer = + body.info.customer.toLowerCase() === 'dadosfera' + ? `` + : `-${body.info.customer.toLowerCase()}`; + + const { data } = await axios.get( + `${process.env.NIMBUS_BASE_URL}${customer}.${process.env.ENV}.dadosfera/api/catalog/table-rules/`, + body, + ); + return data; + } + + async deleteTableRules(id, body) { + const customer = + body.info.customer.toLowerCase() === 'dadosfera' + ? `` + : `-${body.info.customer.toLowerCase()}`; + + const { data } = await axios.delete( + `${process.env.NIMBUS_BASE_URL}${customer}.${process.env.ENV}.dadosfera/api/catalog/table-rules/${id}`, + ); + return data; + } +} + +export { CatalogService }; diff --git a/swagger.json b/swagger.json index 01d3ee4..10a69c2 100644 --- a/swagger.json +++ b/swagger.json @@ -1 +1 @@ -{"openapi":"3.0.0","paths":{"/inputs/test-connection":{"post":{"operationId":"InputsController_testConnection","parameters":[],"responses":{"201":{"description":""}}}},"/inputs":{"post":{"operationId":"InputsController_create","parameters":[],"responses":{"201":{"description":""}}},"get":{"operationId":"InputsController_findAll","parameters":[],"responses":{"200":{"description":""}}}},"/inputs/{id}":{"get":{"operationId":"InputsController_findOne","parameters":[],"responses":{"200":{"description":""}}},"put":{"operationId":"InputsController_update","parameters":[],"responses":{"200":{"description":""}}},"delete":{"operationId":"InputsController_delete","parameters":[],"responses":{"200":{"description":""}}}},"/transformations":{"post":{"operationId":"TransformationsController_create","parameters":[],"responses":{"201":{"description":""}}},"get":{"operationId":"TransformationsController_findAll","parameters":[],"responses":{"200":{"description":""}}}},"/transformations/{id}":{"get":{"operationId":"TransformationsController_findOne","parameters":[],"responses":{"200":{"description":""}}},"put":{"operationId":"TransformationsController_update","parameters":[],"responses":{"200":{"description":""}}},"delete":{"operationId":"TransformationsController_delete","parameters":[],"responses":{"200":{"description":""}}}},"/outputs":{"post":{"operationId":"OutputsController_create","parameters":[],"responses":{"201":{"description":""}}},"get":{"operationId":"OutputsController_findAll","parameters":[],"responses":{"200":{"description":""}}}},"/outputs/{id}":{"get":{"operationId":"OutputsController_findOne","parameters":[],"responses":{"200":{"description":""}}},"put":{"operationId":"OutputsController_update","parameters":[],"responses":{"200":{"description":""}}},"delete":{"operationId":"OutputsController_delete","parameters":[],"responses":{"200":{"description":""}}}},"/pipelines/start/{id}":{"get":{"operationId":"PipelinesController_activate","parameters":[],"responses":{"200":{"description":""}}}},"/pipelines/{id}/status":{"get":{"operationId":"PipelinesController_getPipelineStatus","parameters":[],"responses":{"200":{"description":""}}}},"/pipelines/{id}/{details}":{"get":{"operationId":"PipelinesController_getPipelineLogs","parameters":[],"responses":{"200":{"description":""}}}},"/pipelines":{"post":{"operationId":"PipelinesController_create","parameters":[],"responses":{"201":{"description":""}}},"get":{"operationId":"PipelinesController_findAll","parameters":[],"responses":{"200":{"description":""}}}},"/pipelines/{id}":{"get":{"operationId":"PipelinesController_findOne","parameters":[],"responses":{"200":{"description":""}}},"put":{"operationId":"PipelinesController_update","parameters":[],"responses":{"200":{"description":""}}},"delete":{"operationId":"PipelinesController_delete","parameters":[],"responses":{"200":{"description":""}}}},"/auth":{"post":{"operationId":"AuthController_signIn","parameters":[],"responses":{"201":{"description":""}}}},"/health":{"get":{"operationId":"HealthController_check","parameters":[],"responses":{"200":{"description":""}}}}},"info":{"title":"Maestro Grpc Documentation","description":"Documentation for Maestro gateway","version":"1.0","contact":{}},"tags":[],"servers":[],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{}}} \ No newline at end of file +{"openapi":"3.0.0","paths":{"/inputs/test-connection":{"post":{"operationId":"InputsController_testConnection","parameters":[],"responses":{"201":{"description":""}}}},"/inputs":{"post":{"operationId":"InputsController_create","parameters":[],"responses":{"201":{"description":""}}},"get":{"operationId":"InputsController_findAll","parameters":[],"responses":{"200":{"description":""}}}},"/inputs/{id}":{"get":{"operationId":"InputsController_findOne","parameters":[],"responses":{"200":{"description":""}}},"put":{"operationId":"InputsController_update","parameters":[],"responses":{"200":{"description":""}}},"delete":{"operationId":"InputsController_delete","parameters":[],"responses":{"200":{"description":""}}}},"/transformations":{"post":{"operationId":"TransformationsController_create","parameters":[],"responses":{"201":{"description":""}}},"get":{"operationId":"TransformationsController_findAll","parameters":[],"responses":{"200":{"description":""}}}},"/transformations/{id}":{"get":{"operationId":"TransformationsController_findOne","parameters":[],"responses":{"200":{"description":""}}},"put":{"operationId":"TransformationsController_update","parameters":[],"responses":{"200":{"description":""}}},"delete":{"operationId":"TransformationsController_delete","parameters":[],"responses":{"200":{"description":""}}}},"/outputs":{"post":{"operationId":"OutputsController_create","parameters":[],"responses":{"201":{"description":""}}},"get":{"operationId":"OutputsController_findAll","parameters":[],"responses":{"200":{"description":""}}}},"/outputs/{id}":{"get":{"operationId":"OutputsController_findOne","parameters":[],"responses":{"200":{"description":""}}},"put":{"operationId":"OutputsController_update","parameters":[],"responses":{"200":{"description":""}}},"delete":{"operationId":"OutputsController_delete","parameters":[],"responses":{"200":{"description":""}}}},"/pipelines/start/{id}":{"get":{"operationId":"PipelinesController_activate","parameters":[],"responses":{"200":{"description":""}}}},"/pipelines/{id}/status":{"get":{"operationId":"PipelinesController_getPipelineStatus","parameters":[],"responses":{"200":{"description":""}}}},"/pipelines/{id}/{details}":{"get":{"operationId":"PipelinesController_getPipelineLogs","parameters":[],"responses":{"200":{"description":""}}}},"/pipelines":{"post":{"operationId":"PipelinesController_create","parameters":[],"responses":{"201":{"description":""}}},"get":{"operationId":"PipelinesController_findAll","parameters":[],"responses":{"200":{"description":""}}}},"/pipelines/{id}":{"get":{"operationId":"PipelinesController_findOne","parameters":[],"responses":{"200":{"description":""}}},"put":{"operationId":"PipelinesController_update","parameters":[],"responses":{"200":{"description":""}}},"delete":{"operationId":"PipelinesController_delete","parameters":[],"responses":{"200":{"description":""}}}},"/auth":{"post":{"operationId":"AuthController_signIn","parameters":[],"responses":{"201":{"description":""}}}},"/health":{"get":{"operationId":"HealthController_check","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/all":{"get":{"operationId":"CatalogController_catalogAll","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/data_apps":{"get":{"operationId":"CatalogController_dataAppsAll","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/data_apps/{id}":{"delete":{"operationId":"CatalogController_dataAppsOne","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/dashboard-metabase":{"get":{"operationId":"CatalogController_getAllDashboardMetabase","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/dashboard-metabase/{id}":{"get":{"operationId":"CatalogController_getOneDashboardMetabase","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/table-metadata":{"get":{"operationId":"CatalogController_getAllTableMetadata","parameters":[],"responses":{"200":{"description":""}}},"delete":{"operationId":"CatalogController_deleteOneTableMetadata","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/column-metadata":{"get":{"operationId":"CatalogController_getOneColumnMetadata","parameters":[],"responses":{"200":{"description":""}}},"delete":{"operationId":"CatalogController_deleteOneColumnMetadata","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/data-preview":{"get":{"operationId":"CatalogController_getOneDataPreview","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/data-status":{"get":{"operationId":"CatalogController_getDataStatus","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/data-description":{"get":{"operationId":"CatalogController_getDataDescription","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/data-docs":{"get":{"operationId":"CatalogController_getDataDocs","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/data-rating":{"get":{"operationId":"CatalogController_getDataRating","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/summary-rating/{id}":{"get":{"operationId":"CatalogController_getSummaryRating","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/data-comment":{"get":{"operationId":"CatalogController_getDataComment","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/data-review":{"get":{"operationId":"CatalogController_getDataReview","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/tags":{"post":{"operationId":"CatalogController_createTags","parameters":[],"responses":{"201":{"description":""}}}},"/catalog/tags/{id}":{"delete":{"operationId":"CatalogController_deleteTags","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/table-tags":{"post":{"operationId":"CatalogController_createTableTags","parameters":[],"responses":{"201":{"description":""}}},"delete":{"operationId":"CatalogController_deleteTableTags","parameters":[],"responses":{"200":{"description":""}}}},"/catalog/table-rules":{"get":{"operationId":"CatalogController_getTableRules","parameters":[],"responses":{"200":{"description":""}}},"delete":{"operationId":"CatalogController_deleteTableRules","parameters":[],"responses":{"200":{"description":""}}}}},"info":{"title":"Maestro Grpc Documentation","description":"Documentation for Maestro gateway","version":"1.0","contact":{}},"tags":[],"servers":[],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{}}} \ No newline at end of file