UNPKG

linagora-rse

Version:
283 lines (270 loc) 8.39 kB
'use strict'; const authorize = require('../middleware/authorization'); const domains = require('../controllers/domains'); const domainMiddleware = require('../middleware/domain'); const platformadminsMw = require('../middleware/platformadmins'); const helperMw = require('../middleware/helper'); module.exports = function(router) { /** * @swagger * /domains: * get: * tags: * - Domain * description: | * List ESN domains. * parameters: * - $ref: "#/parameters/dm_hostname_filter" * - $ref: "#/parameters/dm_name_filter" * - $ref: "#/parameters/cm_limit" * - $ref: "#/parameters/cm_offset" * responses: * 200: * $ref: "#/responses/dm_domains" * 401: * $ref: "#/responses/cm_401" * 403: * $ref: "#/responses/cm_403" * 409: * $ref: "#/responses/cm_409" * 500: * $ref: "#/responses/cm_500" */ router.get('/domains', authorize.requiresAPILogin, platformadminsMw.requirePlatformAdmin, domains.list); /** * @swagger * /domains: * post: * tags: * - Domain * description: | * Create an ESN domain. * parameters: * - $ref: "#/parameters/dm_name" * - $ref: "#/parameters/dm_company_name" * - $ref: "#/parameters/dm_hostnames" * - $ref: "#/parameters/dm_administrator" * responses: * 201: * $ref: "#/responses/dm_created_domain" * 400: * $ref: "#/responses/cm_400" * 401: * $ref: "#/responses/cm_401" * 403: * $ref: "#/responses/cm_403" * 404: * $ref: "#/responses/cm_404" * 500: * $ref: "#/responses/cm_500" */ router.post('/domains', authorize.requiresAPILogin, platformadminsMw.requirePlatformAdmin, domainMiddleware.requireDomainInfo, domainMiddleware.requireAdministrator, domains.create); /** * @swagger * /domains/{domain_id}: * put: * tags: * - Domain * description: | * Update an ESN domain. * parameters: * - $ref: "#/parameters/dm_id" * - $ref: "#/parameters/dm_company_name" * - $ref: "#/parameters/dm_hostnames" * responses: * 200: * $ref: "#/responses/cm_200" * 400: * $ref: "#/responses/cm_400" * 401: * $ref: "#/responses/cm_401" * 403: * $ref: "#/responses/cm_403" * 404: * $ref: "#/responses/cm_404" * 500: * $ref: "#/responses/cm_500" */ router.put('/domains/:uuid', authorize.requiresAPILogin, platformadminsMw.requirePlatformAdmin, helperMw.checkIdInParams('uuid', 'Domain'), domainMiddleware.load, domainMiddleware.checkUpdateParameters, domains.update); /** * @swagger * /domains/{domain_id}: * get: * tags: * - Domain * description: Get the domain information. * parameters: * - $ref: "#/parameters/dm_id" * responses: * 200: * $ref: "#/responses/dm_domain" * 400: * $ref: "#/responses/cm_400" * 401: * $ref: "#/responses/cm_401" * 403: * $ref: "#/responses/cm_403" * 404: * $ref: "#/responses/cm_404" */ router.get('/domains/:uuid', authorize.requiresAPILogin, domainMiddleware.load, authorize.requiresDomainMember, domains.getDomain); /** * @swagger * /domains/{domain_id}/members: * get: * tags: * - Domain * description: Get the list of members for a domain. * parameters: * - $ref: "#/parameters/dm_id" * - $ref: "#/parameters/cl_limit" * - $ref: "#/parameters/cl_offset" * - $ref: "#/parameters/cl_search" * - $ref: "#/parameters/dm_search_includes_disabled_searchable" * responses: * 200: * $ref: "#/responses/dm_members" * 400: * $ref: "#/responses/cm_400" * 401: * $ref: "#/responses/cm_401" * 403: * $ref: "#/responses/cm_403" * 404: * $ref: "#/responses/cm_404" * 500: * $ref: "#/responses/cm_500" */ router.get('/domains/:uuid/members', authorize.requiresAPILogin, domainMiddleware.load, domainMiddleware.canGetMembers, domains.getMembers); /** * @swagger * /domains/{domain_id}/members: * post: * tags: * - Domain * description: | * Create member for domain * Only the domain manager is able to create people to join a domain. * parameters: * - $ref: "#/parameters/dm_id" * - $ref: "#/parameters/dm_member" * responses: * 201: * $ref: "#/responses/dm_member" * 400: * $ref: "#/responses/cm_400" * 401: * $ref: "#/responses/cm_401" * 403: * $ref: "#/responses/cm_403" * 404: * $ref: "#/responses/cm_404" * 409: * $ref: "#/responses/cm_409" * 500: * $ref: "#/responses/cm_500" */ router.post('/domains/:uuid/members', authorize.requiresAPILogin, domainMiddleware.load, authorize.requiresDomainManager, domains.createMember); /** * @swagger * /domains/{domain_id}/manager: * get: * tags: * - Domain * description: Check if the authenticated user is the domain manager. * parameters: * - $ref: "#/parameters/dm_id" * responses: * 200: * $ref: "#/responses/dm_domain" * 400: * $ref: "#/responses/cm_400" * 401: * $ref: "#/responses/cm_401" * 403: * $ref: "#/responses/cm_403" * 404: * $ref: "#/responses/cm_404" */ router.get('/domains/:uuid/manager', authorize.requiresAPILogin, domainMiddleware.load, authorize.requiresDomainManager, domains.getDomain); /** * @swagger * /domains/{domain_id}/administrators: * get: * tags: * - Domain * description: get list administrators of a domain. * parameters: * - $ref: "#/parameters/dm_id" * responses: * 200: * $ref: "#/responses/dm_members" * 401: * $ref: "#/responses/cm_401" * 403: * $ref: "#/responses/cm_403" * 404: * $ref: "#/responses/cm_404" * 500: * $ref: "#/responses/cm_500" */ router.get('/domains/:uuid/administrators', authorize.requiresAPILogin, domainMiddleware.load, authorize.requiresDomainManager, domains.getDomainAdministrators); /** * @swagger * /domains/{domain_id}/administrators: * post: * tags: * - Domain * description: Add administrators to a domain * parameters: * - $ref: "#/parameters/dm_id" * responses: * 204: * $ref: "#/responses/cm_204" * 400: * $ref: "#/responses/cm_400" * 401: * $ref: "#/responses/cm_401" * 403: * $ref: "#/responses/cm_403" * 404: * $ref: "#/responses/cm_404" * 500: * $ref: "#/responses/cm_500" */ router.post('/domains/:uuid/administrators', authorize.requiresAPILogin, domainMiddleware.load, authorize.requiresDomainManager, domains.addDomainAdministrator); /** * @swagger * /domains/{domain_id}/administrators/{administrator_id}: * delete: * tags: * - Domain * description: Remove an administrator from a domain * parameters: * - $ref: "#/parameters/dm_id" * - $ref: "#/parameters/dm_administrator_id" * responses: * 204: * $ref: "#/responses/cm_204" * 401: * $ref: "#/responses/cm_401" * 403: * $ref: "#/responses/cm_403" * 404: * $ref: "#/responses/cm_404" * 500: * $ref: "#/responses/cm_500" */ router.delete('/domains/:uuid/administrators/:administratorId', authorize.requiresAPILogin, domainMiddleware.load, authorize.requiresDomainManager, domains.removeDomainAdministrator); };