Identificar las tablas de la base de datos original que tienen relaciones 1 a muchos y muchos a muchos. Crear una base de datos independiente para cada microservicio. Crear tablas equivalentes en cada base de datos independiente para almacenar la información de cada microservicio. Migrar los datos de la base de datos original a las nuevas bases de datos independientes. Actualizar los microservicios para que utilicen las nuevas bases de datos independientes. Supongamos que tenemos una base de datos llamada "tienda" que contiene dos tablas: "productos" y "pedidos". La tabla "productos" tiene una relación 1 a muchos con la tabla "pedidos", ya que cada pedido puede contener varios productos. Además, la tabla "pedidos" tiene una relación muchos a muchos con la tabla "clientes", ya que cada pedido puede tener varios clientes y cada cliente puede hacer varios pedidos. Para migrar esta base de datos a microservicios para bases de datos independientes, se podrían seguir los siguientes pasos: Identificar las tablas de la base de datos original que tienen relaciones 1 a muchos y muchos a muchos. En nuestro ejemplo, las tablas "productos" y "pedidos" tienen una relación 1 a muchos, y la tabla "pedidos" tiene una relación muchos a muchos con la tabla "clientes". Crear una base de datos independiente para cada microservicio. En nuestro ejemplo, se podrían crear tres bases de datos independientes: "servicio-productos", "servicio-pedidos" y "servicio-clientes". Crear tablas equivalentes en cada base de datos independiente para almacenar la información de cada microservicio. En cada base de datos independiente, se deberían crear tablas equivalentes a las que existen en la base de datos original. En nuestro ejemplo, se crearían las siguientes tablas: En la base de datos "servicio-productos": "productos". En la base de datos "servicio-pedidos": "pedidos" y "productos_pedidos". En la base de datos "servicio-clientes": "clientes" y "clientes_pedidos". La tabla "productos_pedidos" se crea para almacenar la relación muchos a muchos entre las tablas "productos" y "pedidos", y la tabla "clientes_pedidos" se crea para almacenar la relación muchos a muchos entre las tablas "clientes" y "pedidos". Aquí está el SQL para crear las tablas equivalentes en cada base de datos independiente: ```sql -- En la base de datos "servicio-productos": CREATE TABLE productos ( id INT PRIMARY KEY, nombre VARCHAR(255), descripcion TEXT, precio DECIMAL(10,2) ); -- En la base de datos "servicio-pedidos": CREATE TABLE pedidos ( id INT PRIMARY KEY, fecha TIMESTAMP, total DECIMAL(10,2) ); CREATE TABLE productos_pedidos ( producto_id INT, pedido_id INT, cantidad INT, PRIMARY KEY (producto_id, pedido_id), FOREIGN KEY (producto_id) REFERENCES productos(id), FOREIGN KEY (pedido_id) REFERENCES pedidos(id) ); -- En la base de datos "servicio-clientes": CREATE TABLE clientes ( id INT PRIMARY KEY, nombre VARCHAR(255), direccion TEXT, email VARCHAR(255) ); CREATE TABLE clientes_pedidos ( cliente_id INT, pedido_id INT, PRIMARY KEY (cliente_id, pedido_id), FOREIGN KEY (cliente_id) REFERENCES clientes(id), FOREIGN KEY (pedido_id) REFERENCES pedidos(id) ); ``` ```json const roles = [ { name: 'admin', description: 'adasdasd', permissions: [ { id: 1, action: 'crear', condition: {}, resource: { id: 1, route: '/projects' } }, { id: 2, action: 'actualizar', condition: { id: '${id}' }, resource: { id: 1, route: '/projects' } }, { id: 3, action: 'obtener', condition: {}, resource: { id: 1, route: '/projects' } }, { id: 4, action: 'obtener', condition: { id: '${id}' }, resource: { id: 1, route: '/projects' } }, { id: 5, action: 'eliminar', condition: { id: '${id}' }, resource: { id: 1, route: '/projects' } }, ], }, ] ``` | (index) | METHOD | PATH | | ------- | -------- | ---------------------------------------------------------------------------------- | | 0 | 'POST' | '/api/v2/auth/login' | | 1 | 'POST' | '/api/v2/auth/register' | | 2 | 'PUT' | '/api/v2/auth/register/demo' | | 3 | 'POST' | '/api/v2/users' | | 4 | 'POST' | '/api/v2/users/batch' | | 5 | 'GET' | '/api/v2/users' | | 6 | 'GET' | '/api/v2/users/:id/project' | | 7 | 'GET' | '/api/v2/users/:id' | | 8 | 'PATCH' | '/api/v2/users/:id' | | 9 | 'DELETE' | '/api/v2/users/:id' | | 10 | 'GET' | '/api/v2/reports/project/overview' | | 11 | 'GET' | '/api/v2/reports/transmital/:projectId' | | 12 | 'POST' | '/api/v2/reports/project/excel' | | 13 | 'POST' | '/api/v2/reports/table/excel/projects/:id' | | 14 | 'GET' | '/api/v2/reports/table/projects/:id' | | 15 | 'POST' | '/api/v2/reports/table/reviews/excel/projects/:id' | | 16 | 'POST' | '/api/v2/reports/table/reviews/projects/:id' | | 17 | 'POST' | '/api/v2/reports/tasks' | | 18 | 'GET' | '/api/v2/reports/projects/:id' | | 19 | 'POST' | '/api/v2/deliverables/images' | | 20 | 'GET' | '/api/v2/deliverables/:deliverableId/images' | | 21 | 'GET' | '/api/v2/deliverables/images/quantity/:disciplineId' | | 22 | 'PATCH' | '/api/v2/deliverables/:id' | | 23 | 'DELETE' | '/api/v2/deliverables/:id' | | 24 | 'POST' | '/api/v2/deliverables' | | 25 | 'POST' | '/api/v2/deliverables/batch/:projectId' | | 26 | 'GET' | '/api/v2/deliverables/projects/:id' | | 27 | 'GET' | '/api/v2/deliverables/beginning/:projectId' | | 28 | 'GET' | '/api/v2/deliverables/roadmaps/projects/:id' | | 29 | 'GET' | '/api/v2/deliverables/timeline/:projectId' | | 30 | 'GET' | '/api/v2/deliverables/:id' | | 31 | 'GET' | '/api/v2/projects' | | 32 | 'GET' | '/api/v2/projects/:id' | | 33 | 'POST' | '/api/v2/projects' | | 34 | 'PATCH' | '/api/v2/projects/:id' | | 35 | 'DELETE' | '/api/v2/projects/:id' | | 36 | 'POST' | '/api/v2/projects/weights' | | 37 | 'PATCH' | '/api/v2/projects/:id/weights' | | 38 | 'PATCH' | '/api/v2/projects/:id/versions' | | 39 | 'GET' | '/api/v2/projects/:id/versions' | | 40 | 'POST' | '/api/v2/companies' | | 41 | 'GET' | '/api/v2/companies' | | 42 | 'GET' | '/api/v2/companies/:id' | | 43 | 'PATCH' | '/api/v2/companies/:id' | | 44 | 'DELETE' | '/api/v2/companies/:id' | | 45 | 'POST' | '/api/v2/profile/versions' | | 46 | 'PATCH' | '/api/v2/profile/versions/:id' | | 47 | 'GET' | '/api/v2/profile/versions/:id' | | 48 | 'GET' | '/api/v2/profile/versions' | | 49 | 'DELETE' | '/api/v2/profile/versions/:id' | | 50 | 'POST' | '/api/v2/companies/areas' | | 51 | 'POST' | '/api/v2/companies/areas/batch' | | 52 | 'GET' | '/api/v2/companies/areas/:companyId' | | 53 | 'PATCH' | '/api/v2/companies/areas/:id' | | 54 | 'DELETE' | '/api/v2/companies/areas/:id' | | 55 | 'POST' | '/api/v2/profile/areas' | | 56 | 'POST' | '/api/v2/profile/areas/batch' | | 57 | 'GET' | '/api/v2/profile/areas' | | 58 | 'PATCH' | '/api/v2/profile/areas/:id' | | 59 | 'DELETE' | '/api/v2/profile/areas/:id' | | 60 | 'POST' | '/api/v2/companies/disciplines' | | 61 | 'POST' | '/api/v2/companies/disciplines/batch' | | 62 | 'GET' | '/api/v2/companies/disciplines/:companyId' | | 63 | 'PATCH' | '/api/v2/companies/disciplines/:id' | | 64 | 'DELETE' | '/api/v2/companies/disciplines/:id' | | 65 | 'POST' | '/api/v2/profile/disciplines' | | 66 | 'POST' | '/api/v2/profile/disciplines/batch' | | 67 | 'GET' | '/api/v2/profile/disciplines' | | 68 | 'PATCH' | '/api/v2/profile/disciplines/:id' | | 69 | 'DELETE' | '/api/v2/profile/disciplines/:id' | | 70 | 'POST' | '/api/v2/companies/typedocs' | | 71 | 'POST' | '/api/v2/companies/typedocs/batch' | | 72 | 'GET' | '/api/v2/companies/typedocs/:companyId' | | 73 | 'PATCH' | '/api/v2/companies/typedocs/:id' | | 74 | 'DELETE' | '/api/v2/companies/typedocs/:id' | | 75 | 'POST' | '/api/v2/profile/typedocs' | | 76 | 'POST' | '/api/v2/profile/typedocs/batch' | | 77 | 'GET' | '/api/v2/profile/typedocs' | | 78 | 'PATCH' | '/api/v2/profile/typedocs/:id' | | 79 | 'DELETE' | '/api/v2/profile/typedocs/:id' | | 80 | 'POST' | '/api/v2/profile' | | 81 | 'GET' | '/api/v2/profile' | | 82 | 'PATCH' | '/api/v2/profile' | | 83 | 'DELETE' | '/api/v2/profile/:id' | | 84 | 'POST' | '/api/v2/transmitals' | | 85 | 'GET' | '/api/v2/transmitals/projects/:id' | | 86 | 'GET' | '/api/v2/transmitals/:id' | | 87 | 'PATCH' | '/api/v2/transmitals/:id' | | 88 | 'DELETE' | '/api/v2/transmitals/:id' | | 89 | 'POST' | '/api/v2/transmitals/:id/send' | | 90 | 'POST' | '/api/v2/transmitals/mail' | | 91 | 'POST' | '/api/v2/roles' | | 92 | 'GET' | '/api/v2/roles' | | 93 | 'GET' | '/api/v2/roles/:id' | | 94 | 'PATCH' | '/api/v2/roles/:id' | | 95 | 'DELETE' | '/api/v2/roles/:id' | | 96 | 'POST' | '/api/v2/notes' | | 97 | 'GET' | '/api/v2/notes/users/:userId' | | 98 | 'GET' | '/api/v2/notes/:id' | | 99 | 'PATCH' | '/api/v2/notes/:id' | | 100 | 'DELETE' | '/api/v2/notes/:id' | | 101 | 'POST' | '/api/v2/permission' | | 102 | 'GET' | '/api/v2/permission' | | 103 | 'GET' | '/api/v2/permission/:id' | | 104 | 'PATCH' | '/api/v2/permission/:id' | | 105 | 'DELETE' | '/api/v2/permission/:id' | | 106 | 'POST' | '/api/v2/resource' | | 107 | 'GET' | '/api/v2/resource' | | 108 | 'GET' | '/api/v2/resource/:id' | | 109 | 'PATCH' | '/api/v2/resource/:id' | | 110 | 'DELETE' | '/api/v2/resource/:id' | | 111 | 'POST' | '/api/v2/annotations' | | 112 | 'GET' | '/api/v2/annotations/reviews/:id' | | 113 | 'GET' | '/api/v2/annotations/reviews/:id/users/:userId' | | 114 | 'PUT' | '/api/v2/annotations/reviews/:id' | | 115 | 'GET' | '/api/v2/annotations/reviewers/number/:deliverableId' | | 116 | 'POST' | '/api/v2/reviews' | | 117 | 'PATCH' | '/api/v2/reviews' | | 118 | 'GET' | '/api/v2/reviews/projects/:id' | | 119 | 'GET' | '/api/v2/reviews/deliverables/projects/:id' | | 120 | 'GET' | '/api/v2/reviews/internal/:projectId' | | 121 | 'PATCH' | '/api/v2/reviews/tags/:id' | | 122 | 'GET' | '/api/v2/reviews/approved/:projectId' | | 123 | 'GET' | '/api/v2/reviews/deliverables/users/:userId/projects/:id' | | 124 | 'GET' | '/api/v2/reviews/projects/users/:id' | | 125 | 'DELETE' | '/api/v2/reviews/:id' | | 126 | 'GET' | '/api/v2/reviews/:id' | | 127 | 'POST' | '/api/v2/reviews/config' | | 128 | 'PATCH' | '/api/v2/reviews/signature/:id' | | 129 | 'POST' | '/api/v2/check-list' | | 130 | 'GET' | '/api/v2/check-list/reviews/:id' | | 131 | 'DELETE' | '/api/v2/check-list/:id' | | 132 | 'GET' | '/api/v2/check-list/:id' | | 133 | 'POST' | '/api/v2/storage/file' | | 134 | 'POST' | '/api/v2/storage/file/dir' | | 135 | 'GET' | '/api/v2/storage/file/:spaceId' | | 136 | 'PATCH' | '/api/v2/storage/tags/:id' | | 137 | 'GET' | '/api/v2/storage/file/project/:projectId' | | 138 | 'GET' | '/api/v2/storage/file/url' | | 139 | 'DELETE' | '/api/v2/storage/file/:id' | | 140 | 'POST' | '/api/v2/storage/space/create' | | 141 | 'PATCH' | '/api/v2/storage/space/:id' | | 142 | 'GET' | '/api/v2/storage/space/:projectId' | | 143 | 'GET' | '/api/v2/storage/space/procura/:projectId' | | 144 | 'DELETE' | '/api/v2/storage/space/:id' | | 145 | 'POST' | '/api/v2/models' | | 146 | 'PATCH' | '/api/v2/models/:id/thumbnail' | | 147 | 'GET' | '/api/v2/models/:projectId' | | 148 | 'GET' | '/api/v2/models/forge/token' | | 149 | 'DELETE' | '/api/v2/models/:id' | | 150 | 'POST' | '/api/v2/budget/profile/apus' | | 151 | 'POST' | '/api/v2/budget/profile/apus/batch' | | 152 | 'PATCH' | '/api/v2/budget/profile/apus/:id' | | 153 | 'GET' | '/api/v2/budget/profile/apus' | | 154 | 'GET' | '/api/v2/budget/profile/apus/files/:fileName' | | 155 | 'GET' | '/api/v2/budget/profile/apus/:id' | | 156 | 'POST' | '/api/v2/budget/profile/apus/equipment' | | 157 | 'POST' | '/api/v2/budget/profile/apus/workforce' | | 158 | 'POST' | '/api/v2/budget/profile/apus/material' | | 159 | 'POST' | '/api/v2/budget/profile/apus/subcontract' | | 160 | 'DELETE' | '/api/v2/budget/profile/apus/:id' | | 161 | 'POST' | '/api/v2/budget/profile/departures' | | 162 | 'POST' | '/api/v2/budget/profile/departures/batch' | | 163 | 'GET' | '/api/v2/budget/profile/departures' | | 164 | 'GET' | '/api/v2/budget/profile/departures/:id' | | 165 | 'PATCH' | '/api/v2/budget/profile/departures/:id' | | 166 | 'DELETE' | '/api/v2/budget/profile/departures/:id' | | 167 | 'POST' | '/api/v2/budget/profile/equipments' | | 168 | 'POST' | '/api/v2/budget/profile/equipments/batch' | | 169 | 'PATCH' | '/api/v2/budget/profile/equipments/:id' | | 170 | 'GET' | '/api/v2/budget/profile/equipments' | | 171 | 'DELETE' | '/api/v2/budget/profile/equipments/:id' | | 172 | 'POST' | '/api/v2/budget/profile/materials' | | 173 | 'POST' | '/api/v2/budget/profile/materials/batch' | | 174 | 'PATCH' | '/api/v2/budget/profile/materials/:id' | | 175 | 'GET' | '/api/v2/budget/profile/materials' | | 176 | 'DELETE' | '/api/v2/budget/profile/materials/:id' | | 177 | 'POST' | '/api/v2/budget/profile/subcontracts' | | 178 | 'POST' | '/api/v2/budget/profile/subcontracts/batch' | | 179 | 'PATCH' | '/api/v2/budget/profile/subcontracts/:id' | | 180 | 'GET' | '/api/v2/budget/profile/subcontracts' | | 181 | 'DELETE' | '/api/v2/budget/profile/subcontracts/:id' | | 182 | 'POST' | '/api/v2/budget/profile/workforce' | | 183 | 'POST' | '/api/v2/budget/profile/workforce/batch' | | 184 | 'PATCH' | '/api/v2/budget/profile/workforce/:id' | | 185 | 'GET' | '/api/v2/budget/profile/workforce' | | 186 | 'DELETE' | '/api/v2/budget/profile/workforce/:id' | | 187 | 'POST' | '/api/v2/budget/project/apus' | | 188 | 'GET' | '/api/v2/budget/project/apus/:budgetId' | | 189 | 'GET' | '/api/v2/budget/project/apus/:budgetId/:apuId' | | 190 | 'POST' | '/api/v2/budget/project/apus/search/:budgetId' | | 191 | 'GET' | '/api/v2/budget/project/apus/summary/equipment/:budgetId' | | 192 | 'GET' | '/api/v2/budget/project/apus/summary/material/:budgetId' | | 193 | 'GET' | '/api/v2/budget/project/apus/summary/workforce/:budgetId' | | 194 | 'GET' | '/api/v2/budget/project/apus/summary/subcontract/:budgetId' | | 195 | 'POST' | '/api/v2/budget/project/apus/batch/:budgetId' | | 196 | 'GET' | '/api/v2/budget/project/apus/budget/:budgetId' | | 197 | 'GET' | '/api/v2/budget/project/apus/summary/:budgetId' | | 198 | 'PATCH' | '/api/v2/budget/project/apus' | | 199 | 'DELETE' | '/api/v2/budget/project/apus/:id' | | 200 | 'PATCH' | '/api/v2/budget/project/apus/equipments' | | 201 | 'PATCH' | '/api/v2/budget/project/apus/workforces' | | 202 | 'PATCH' | '/api/v2/budget/project/apus/materials' | | 203 | 'PATCH' | '/api/v2/budget/project/apus/subcontracts' | | 204 | 'GET' | '/api/v2/budget/project/apus/resumen/:budgetId' | | 205 | 'POST' | '/api/v2/budget/project' | | 206 | 'GET' | '/api/v2/budget/project/:id' | | 207 | 'GET' | '/api/v2/budget/project' | | 208 | 'PATCH' | '/api/v2/budget/project/:id' | | 209 | 'DELETE' | '/api/v2/budget/project/:id' | | 210 | 'GET' | '/api/v2/budget/project/apus/reports/:id' | | 211 | 'GET' | '/api/v2/budget/project/apus/reports/resume/:id' | | 212 | 'POST' | '/api/v2/budget/company/apus' | | 213 | 'PATCH' | '/api/v2/budget/company/apus/:id' | | 214 | 'GET' | '/api/v2/budget/company/apus' | | 215 | 'GET' | '/api/v2/budget/company/apus/:id' | | 216 | 'DELETE' | '/api/v2/budget/company/apus/:id' | | 217 | 'POST' | '/api/v2/budget/company/departures' | | 218 | 'GET' | '/api/v2/budget/company/departures' | | 219 | 'GET' | '/api/v2/budget/company/departures/:id' | | 220 | 'PATCH' | '/api/v2/budget/company/departures/:id' | | 221 | 'DELETE' | '/api/v2/budget/company/departures/:id' | | 222 | 'POST' | '/api/v2/budget/company/equipments' | | 223 | 'PATCH' | '/api/v2/budget/company/equipments/:id' | | 224 | 'GET' | '/api/v2/budget/company/equipments/:companyId' | | 225 | 'DELETE' | '/api/v2/budget/company/equipments/:id' | | 226 | 'POST' | '/api/v2/budget/company/materials' | | 227 | 'PATCH' | '/api/v2/budget/company/materials/:id' | | 228 | 'GET' | '/api/v2/budget/company/materials/:companyId' | | 229 | 'DELETE' | '/api/v2/budget/company/materials/:id' | | 230 | 'POST' | '/api/v2/budget/company/subcontracts' | | 231 | 'PATCH' | '/api/v2/budget/company/subcontracts/:id' | | 232 | 'GET' | '/api/v2/budget/company/subcontracts/:companyId' | | 233 | 'DELETE' | '/api/v2/budget/company/subcontracts/:id' | | 234 | 'POST' | '/api/v2/budget/company/workforces' | | 235 | 'PATCH' | '/api/v2/budget/company/workforces/:id' | | 236 | 'GET' | '/api/v2/budget/company/workforces/:companyId' | | 237 | 'DELETE' | '/api/v2/budget/company/workforces/:id' | | 238 | 'POST' | '/api/v2/mail/bounces' | | 239 | 'POST' | '/api/v2/mail/complaints' | | 240 | 'POST' | '/api/v2/mail/deliveries' | | 241 | 'POST' | '/api/v2/annotations-tenders' | | 242 | 'GET' | '/api/v2/annotations-tenders/reviews/:id' | | 243 | 'GET' | '/api/v2/annotations-tenders/reviews/:id/users/:userId' | | 244 | 'PUT' | '/api/v2/annotations-tenders/reviews/:id' | | 245 | 'GET' | '/api/v2/annotations-tenders/reviewers/number/:deliverableId' | | 246 | 'PATCH' | '/api/v2/deliverables-tenders/:id' | | 247 | 'DELETE' | '/api/v2/deliverables-tenders/:id' | | 248 | 'POST' | '/api/v2/deliverables-tenders' | | 249 | 'POST' | '/api/v2/deliverables-tenders/deliverables-default' | | 250 | 'GET' | '/api/v2/deliverables-tenders/projects/:id' | | 251 | 'GET' | '/api/v2/deliverables-tenders/beginning/:projectId' | | 252 | 'GET' | '/api/v2/deliverables-tenders/requisition/:projectId' | | 253 | 'GET' | '/api/v2/deliverables-tenders/roadmaps/projects/:id' | | 254 | 'POST' | '/api/v2/procura/requisition' | | 255 | 'PATCH' | '/api/v2/procura/requisition/:id' | | 256 | 'GET' | '/api/v2/procura/requisition/projects/:id' | | 257 | 'GET' | '/api/v2/procura/requisition/:id' | | 258 | 'GET' | '/api/v2/procura/requisition/vendor/:projectId' | | 259 | 'DELETE' | '/api/v2/procura/requisition/:id' | | 260 | 'POST' | '/api/v2/procura/requisition/vendor/adjudge' | | 261 | 'POST' | '/api/v2/vendors' | | 262 | 'PATCH' | '/api/v2/vendors/:id' | | 263 | 'GET' | '/api/v2/vendors/:id' | | 264 | 'GET' | '/api/v2/vendors/projects/:id' | | 265 | 'DELETE' | '/api/v2/vendors/:id' | | 266 | 'GET' | '/api/v2/vendors/requisition/:requisitionId' | | 267 | 'GET' | '/api/v2/vendors/all' | | 268 | 'POST' | '/api/v2/deliverables-adjudged/images' | | 269 | 'GET' | '/api/v2/deliverables-adjudged/requisition/:projectId' | | 270 | 'GET' | '/api/v2/deliverables-adjudged/:deliverableId/images' | | 271 | 'POST' | '/api/v2/deliverables-adjudged/images/quantity' | | 272 | 'PATCH' | '/api/v2/deliverables-adjudged/:id' | | 273 | 'PATCH' | '/api/v2/deliverables-adjudged/batch/:projectId' | | 274 | 'DELETE' | '/api/v2/deliverables-adjudged/:id' | | 275 | 'POST' | '/api/v2/deliverables-adjudged' | | 276 | 'POST' | '/api/v2/deliverables-adjudged/batch/:projectId' | | 277 | 'GET' | '/api/v2/deliverables-adjudged/projects/:id' | | 278 | 'GET' | '/api/v2/deliverables-adjudged/beginning/:projectId' | | 279 | 'GET' | '/api/v2/deliverables-adjudged/roadmaps/projects/:id' | | 280 | 'POST' | '/api/v2/reviews-tenders' | | 281 | 'PATCH' | '/api/v2/reviews-tenders' | | 282 | 'GET' | '/api/v2/reviews-tenders/projects/:id' | | 283 | 'GET' | '/api/v2/reviews-tenders/deliverables/projects/:id' | | 284 | 'GET' | '/api/v2/reviews-tenders/projects/users/:id' | | 285 | 'DELETE' | '/api/v2/reviews-tenders/:id' | | 286 | 'GET' | '/api/v2/reviews-tenders/:id' | | 287 | 'POST' | '/api/v2/reviews-tenders/config' | | 288 | 'PATCH' | '/api/v2/reviews-tenders/files' | | 289 | 'PATCH' | '/api/v2/reviews-tenders/tags/:id' | | 290 | 'PATCH' | '/api/v2/reviews-tenders/signature/:id' | | 291 | 'GET' | '/api/v2/reviews-tenders/modules/projects/:id' | | 292 | 'GET' | '/api/v2/reviews-tenders/download/:id' | | 293 | 'GET' | '/api/v2/reports-tenders/project/:id' | | 294 | 'GET' | '/api/v2/reports-tenders/project/overview' | | 295 | 'GET' | '/api/v2/reports-tenders/transmital/:projectId' | | 296 | 'GET' | '/api/v2/reports-tenders/project/:id/table' | | 297 | 'POST' | '/api/v2/reports-tenders/project/excel' | | 298 | 'POST' | '/api/v2/reports-tenders/table/excel' | | 299 | 'POST' | '/api/v2/tags' | | 300 | 'PATCH' | '/api/v2/tags/:id' | | 301 | 'GET' | '/api/v2/tags/:id' | | 302 | 'GET' | '/api/v2/tags' | | 303 | 'DELETE' | '/api/v2/tags/:id' | | 304 | 'POST' | '/api/v2/default-deliverables' | | 305 | 'GET' | '/api/v2/default-deliverables' | | 306 | 'PATCH' | '/api/v2/default-deliverables/:id' | | 307 | 'DELETE' | '/api/v2/default-deliverables/:id' | | 308 | 'POST' | '/api/v2/annotations-rfis' | | 309 | 'GET' | '/api/v2/annotations-rfis/:id' | | 310 | 'GET' | '/api/v2/annotations-rfis/:id/users/:userId' | | 311 | 'PUT' | '/api/v2/annotations-rfis/:id' | | 312 | 'POST' | '/api/v2/rfis' | | 313 | 'GET' | '/api/v2/rfis/requisitions/:id' | | 314 | 'DELETE' | '/api/v2/rfis/:id' | | 315 | 'GET' | '/api/v2/rfis/:id' | | 316 | 'GET' | '/api/v2/rfis/projects/:id' | | 317 | 'POST' | '/api/v2/rfis/excel/projects/:id' | | 318 | 'PUT' | '/api/v2/rfis/:id' | | 319 | 'POST' | '/api/v2/checklist-rfi' | | 320 | 'GET' | '/api/v2/checklist-rfi/rfis/:id' | | 321 | 'DELETE' | '/api/v2/checklist-rfi/:id' | | 322 | 'POST' | '/api/v2/annotations-adjudged' | | 323 | 'GET' | '/api/v2/annotations-adjudged/reviews/:id' | | 324 | 'GET' | '/api/v2/annotations-adjudged/reviews/:id/users/:userId' | | 325 | 'PUT' | '/api/v2/annotations-adjudged/reviews/:id' | | 326 | 'GET' | '/api/v2/annotations-adjudged/reviewers/number/:deliverableId' | | 327 | 'POST' | '/api/v2/reviews-adjudged' | | 328 | 'PATCH' | '/api/v2/reviews-adjudged' | | 329 | 'GET' | '/api/v2/reviews-adjudged/projects/:id' | | 330 | 'GET' | '/api/v2/reviews-adjudged/deliverables/projects/:id' | | 331 | 'GET' | '/api/v2/reviews-adjudged/projects/users/:id' | | 332 | 'DELETE' | '/api/v2/reviews-adjudged/:id' | | 333 | 'GET' | '/api/v2/reviews-adjudged/:id' | | 334 | 'POST' | '/api/v2/reviews-adjudged/config' | | 335 | 'PATCH' | '/api/v2/reviews-adjudged/signature/:id' | | 336 | 'POST' | '/api/v2/reviews-adjudged/table/projects/:id' | | 337 | 'POST' | '/api/v2/discipline-adjudged' | | 338 | 'PATCH' | '/api/v2/discipline-adjudged/:id' | | 339 | 'GET' | '/api/v2/discipline-adjudged/projects/:id' | | 340 | 'GET' | '/api/v2/discipline-adjudged/:id' | | 341 | 'DELETE' | '/api/v2/discipline-adjudged/:id' | | 342 | 'DELETE' | '/api/v2/groups/:id' | | 343 | 'GET' | '/api/v2/report-adjudged/chart-pie/:projectId' | | 344 | 'GET' | '/api/v2/p-procura-providers/:projectId' | | 345 | 'GET' | '/api/v2/p-procura-providers/project/:projectId/provider/:providerId/deliverables' | | 346 | 'GET' | '/api/v2/notification/reviews' | | 347 | 'POST' | '/api/v2/materials' | | 348 | 'POST' | '/api/v2/materials/batch-create' | | 349 | 'PATCH' | '/api/v2/materials/:id' | | 350 | 'GET' | '/api/v2/materials/:companyId' | | 351 | 'POST' | '/api/v2/p-materials-projects' | | 352 | 'POST' | '/api/v2/p-materials-projects/batch' | | 353 | 'GET' | '/api/v2/p-materials-projects/:projectId' | | 354 | 'PATCH' | '/api/v2/p-materials-projects/:id' | | 355 | 'POST' | '/api/v2/requisition' | | 356 | 'GET' | '/api/v2/reports-procura/projects/:id' | | 357 | 'POST' | '/api/v2/reports-procura/tables/projects/:id' | | 358 | 'POST' | '/api/v2/transmitals-rfis' | | 359 | 'GET' | '/api/v2/transmitals-rfis/projects/:id' | | 360 | 'GET' | '/api/v2/transmitals-rfis/:id' | | 361 | 'PATCH' | '/api/v2/transmitals-rfis/:id' | | 362 | 'DELETE' | '/api/v2/transmitals-rfis/:id' | | 363 | 'POST' | '/api/v2/transmitals-rfis/:id/send' | | 364 | 'POST' | '/api/v2/transmitals-rfis/mail' | | 365 | 'POST' | '/api/v2/transmitals-reviewgroups' | | 366 | 'GET' | '/api/v2/transmitals-reviewgroups/projects/:id' | | 367 | 'GET' | '/api/v2/transmitals-reviewgroups/:id' | | 368 | 'PATCH' | '/api/v2/transmitals-reviewgroups/:id' | | 369 | 'DELETE' | '/api/v2/transmitals-reviewgroups/:id' | | 370 | 'POST' | '/api/v2/transmitals-reviewgroups/:id/send' | | 371 | 'POST' | '/api/v2/transmitals-reviewgroups/mail' | [{"METHOD":"POST","PATH":"/api/v2/auth/login"},{"METHOD":"POST","PATH":"/api/v2/auth/register"},{"METHOD":"PUT","PATH":"/api/v2/auth/register/demo"},{"METHOD":"POST","PATH":"/api/v2/users"},{"METHOD":"POST","PATH":"/api/v2/users/batch"},{"METHOD":"GET","PATH":"/api/v2/users"},{"METHOD":"GET","PATH":"/api/v2/users/:id/project"},{"METHOD":"GET","PATH":"/api/v2/users/:id"},{"METHOD":"PATCH","PATH":"/api/v2/users/:id"},{"METHOD":"DELETE","PATH":"/api/v2/users/:id"}]