UNPKG

@fabrix/spool-cart

Version:

Spool - eCommerce Spool for Fabrix

1,617 lines (1,616 loc) 343 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const joi = require("joi"); exports.routes = { '/generalStats': { 'GET': 'ProxyCartController.generalStats', config: { prefix: 'cart.prefix', validate: { query: { offset: joi.number(), limit: joi.number(), sort: joi.array().items(joi.array()), where: joi.object() } }, app: { permissions: { resource_name: 'apiGetGeneralStatsRoute', roles: ['admin'] } } } }, '/gateways': { 'GET': 'GatewayController.gateways', config: { prefix: 'cart.prefix', validate: {}, app: { permissions: { resource_name: 'apiGetGatewaysRoute', roles: ['admin', 'registered', 'public'] } } } }, '/countries': { 'GET': 'CountryController.countries', config: { prefix: 'cart.prefix', validate: { query: { offset: joi.number(), limit: joi.number(), sort: joi.array().items(joi.array()), where: joi.any(), include: joi.array().items(joi.string()) } }, app: { permissions: { resource_name: 'apiGetCountriesRoute', roles: ['admin', 'registered', 'public'] } } } }, '/provinces': { 'GET': 'CountryController.provinces', config: { prefix: 'cart.prefix', validate: { query: { offset: joi.number(), limit: joi.number(), sort: joi.array().items(joi.array()), where: joi.any(), include: joi.array().items(joi.string()) } }, app: { permissions: { resource_name: 'apiGetProvincesRoute', roles: ['admin', 'registered', 'public'] } } } }, '/counties': { 'GET': 'CountryController.counties', config: { prefix: 'cart.prefix', validate: { query: { offset: joi.number(), limit: joi.number(), sort: joi.array().items(joi.array()), where: joi.any(), include: joi.array().items(joi.string()) } }, app: { permissions: { resource_name: 'apiGetCountiesRoute', roles: ['admin', 'registered', 'public'] } } } }, '/cities': { 'GET': 'CountryController.cities', config: { prefix: 'cart.prefix', validate: { query: { offset: joi.number(), limit: joi.number(), sort: joi.array().items(joi.array()), where: joi.any(), include: joi.array().items(joi.string()) } }, app: { permissions: { resource_name: 'apiGetCitiesRoute', roles: ['admin', 'registered', 'public'] } } } }, '/country': { 'POST': 'CountryController.createCountry', config: { prefix: 'cart.prefix', app: { permissions: { resource_name: 'apiPostCountryRoute', roles: ['admin'] } } } }, '/country/:id/provinces': { 'GET': 'CountryController.countryProvinces', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number() } }, app: { permissions: { resource_name: 'apiGetCountryIdProvincesRoute', roles: ['admin', 'registered', 'public'] } } } }, '/country/:id': { 'GET': { handler: 'CountryController.country', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number() } }, app: { permissions: { resource_name: 'apiGetCountryIdRoute', roles: ['admin', 'registered', 'public'] } } } }, 'POST': { handler: 'CountryController.updateCountry', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number() } }, app: { permissions: { resource_name: 'apiPostCountryIdRoute', roles: ['admin'] } } } }, 'PUT': { handler: 'CountryController.updateCountry', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number() } }, app: { permissions: { resource_name: 'apiPutCountryIdRoute', roles: ['admin'] } } } }, 'DELETE': { handler: 'CountryController.destroyCountry', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number() } }, app: { permissions: { resource_name: 'apiDeleteCountryIdRoute', roles: ['admin'] } } } } }, '/country/:id/addProvince/:province': { 'POST': 'CountryController.addProvince', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number(), province: joi.any() } }, app: { permissions: { resource_name: 'apiPostCountryIdAddProvinceProvinceRoute', roles: ['admin'] } } } }, '/country/:id/removeProvince/:province': { 'POST': 'CountryController.removeProvince', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number(), province: joi.any() } }, app: { permissions: { resource_name: 'apiPostCountryIdRemoveProvinceProvinceRoute', roles: ['admin'] } } } }, '/province': { 'POST': 'CountryController.createProvince', config: { prefix: 'cart.prefix', app: { permissions: { resource_name: 'apiPostProvinceRoute', roles: ['admin'] } } } }, '/province/:id': { 'GET': 'CountryController.province', 'POST': { handler: 'CountryController.updateProvince', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number() } }, app: { permissions: { resource_name: 'apiPostProvinceIdRoute', roles: ['admin'] } } } }, 'PUT': { handler: 'CountryController.updateProvince', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number() } }, app: { permissions: { resource_name: 'apiPutProvinceIdRoute', roles: ['admin'] } } } }, 'DELETE': { handler: 'CountryController.destroyProvince', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number() } }, app: { permissions: { resource_name: 'apiDeleteProvinceIdRoute', roles: ['admin'] } } } }, config: { prefix: 'cart.prefix', validate: { params: { id: joi.number() } }, app: { permissions: { resource_name: 'apiGetProvinceIdRoute', roles: ['admin', 'registered', 'public'] } } } }, '/county': { 'POST': 'CountryController.createCounty', config: { prefix: 'cart.prefix', app: { permissions: { resource_name: 'apiPostCountyRoute', roles: ['admin'] } } } }, '/county/:id': { 'GET': 'CountryController.county', 'POST': { handler: 'CountryController.updateCounty', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number() } }, app: { permissions: { resource_name: 'apiPostCountyIdRoute', roles: ['admin'] } } } }, 'PUT': { handler: 'CountryController.updateCounty', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number() } }, app: { permissions: { resource_name: 'apiPutCountyIdRoute', roles: ['admin'] } } } }, 'DELETE': { handler: 'CountryController.destroyCounty', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number() } }, app: { permissions: { resource_name: 'apiDeleteCountyIdRoute', roles: ['admin'] } } } }, config: { prefix: 'cart.prefix', validate: { params: { id: joi.number() } }, app: { permissions: { resource_name: 'apiGetCountyIdRoute', roles: ['admin', 'registered', 'public'] } } } }, '/city': { 'POST': 'CountryController.createCity', config: { prefix: 'cart.prefix', app: { permissions: { resource_name: 'apiPostCityRoute', roles: ['admin'] } } } }, '/city/:id': { 'GET': 'CountryController.city', 'POST': { handler: 'CountryController.updateCity', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number() } }, app: { permissions: { resource_name: 'apiPostCityIdRoute', roles: ['admin'] } } } }, 'PUT': { handler: 'CountryController.updateCity', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number() } }, app: { permissions: { resource_name: 'apiPutCityIdRoute', roles: ['admin'] } } } }, 'DELETE': { handler: 'CountryController.destroyCity', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number() } }, app: { permissions: { resource_name: 'apiDeleteCityIdRoute', roles: ['admin'] } } } }, config: { prefix: 'cart.prefix', validate: { params: { id: joi.number() } }, app: { permissions: { resource_name: 'apiGetCityIdRoute', roles: ['admin', 'registered', 'public'] } } } }, '/carts': { 'GET': 'CartController.findAll', config: { prefix: 'cart.prefix', validate: { query: { offset: joi.number(), limit: joi.number(), sort: joi.array().items(joi.array()), where: joi.any(), include: joi.array().items(joi.string()) } }, app: { permissions: { resource_name: 'apiGetCartsRoute', roles: ['admin'] } } } }, '/cart': { 'GET': { handler: 'CartController.session', config: { prefix: 'cart.prefix', app: { permissions: { resource_name: 'apiGetCartRoute', roles: ['admin', 'registered', 'public'] } } } }, 'POST': { handler: 'CartController.create', config: { prefix: 'cart.prefix', app: { permissions: { resource_name: 'apiPostCartRoute', roles: ['admin', 'registered', 'public'] } } } }, 'PUT': { handler: 'CartController.update', config: { prefix: 'cart.prefix', app: { permissions: { resource_name: 'apiPutCartRoute', roles: ['admin', 'registered', 'public'] } } } } }, '/cart/draft': { 'POST': 'CartController.draft', config: { prefix: 'cart.prefix', app: { permissions: { resource_name: 'apiPostCartDraftRoute', roles: ['admin'] } } } }, '/cart/:id': { 'GET': { handler: 'CartController.resolve', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiGetCartIdRoute', roles: ['admin', 'registered'] } } } }, 'POST': { handler: 'CartController.update', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number().required() } }, app: { permissions: { resource_name: 'apiPostCartIdRoute', roles: ['admin', 'registered', 'public'] } } } }, 'PUT': { handler: 'CartController.update', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number().required() } }, app: { permissions: { resource_name: 'apiPutCartIdRoute', roles: ['admin', 'registered', 'public'] } } } } }, '/cart/:id/addShipping': { 'POST': { handler: 'CartController.addShipping', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiPostCartIdAddShippingRoute', roles: ['admin'] } } } }, 'PUT': { handler: 'CartController.addShipping', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiPutCartIdAddShippingRoute', roles: ['admin'] } } } } }, '/cart/:id/removeShipping': { 'POST': { handler: 'CartController.removeShipping', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiPostCartIdRemoveShippingRoute', roles: ['admin'] } } } }, 'PUT': { handler: 'CartController.removeShipping', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiPutCartIdRemoveShippingRoute', roles: ['admin'] } } } } }, '/cart/:id/addTaxes': { 'POST': { handler: 'CartController.addTaxes', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiPostCartIdAddTaxesRoute', roles: ['admin'] } } } }, 'PUT': { handler: 'CartController.addTaxes', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiPutCartIdAddTaxesRoute', roles: ['admin'] } } } } }, '/cart/:id/removeTaxes': { 'POST': { handler: 'CartController.removeTaxes', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiPostCartIdRemoveTaxesRoute', roles: ['admin'] } } } }, 'PUT': { handler: 'CartController.removeTaxes', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiPutCartIdRemoveTaxesRoute', roles: ['admin'] } } } } }, '/cart/generalStats': { 'GET': 'CartController.generalStats', config: { prefix: 'cart.prefix', validate: { query: { offset: joi.number(), limit: joi.number(), sort: joi.array().items(joi.array()), where: joi.any(), include: joi.array().items(joi.string()) } }, app: { permissions: { resource_name: 'apiGetCartGeneralStatsRoute', roles: ['admin'] } } } }, '/cart/count': { 'GET': 'CartController.count', config: { prefix: 'cart.prefix', app: { permissions: { resource_name: 'apiGetCartCountRoute', roles: ['admin'] } } } }, '/cart/init': { 'GET': { handler: 'CartController.init', config: { prefix: 'cart.prefix', app: { permissions: { resource_name: 'apiGetCartInitRoute', roles: ['admin', 'registered', 'public'] } } } }, 'POST': { handler: 'CartController.init', config: { prefix: 'cart.prefix', app: { permissions: { resource_name: 'apiPostCartInitRoute', roles: ['admin', 'registered', 'public'] } } } } }, '/cart/session': { 'GET': { handler: 'CartController.session', config: { prefix: 'cart.prefix', app: {} } } }, '/cart/logout': { 'POST': { handler: 'CartController.logout', config: { prefix: 'cart.prefix', app: { permissions: { resource_name: 'apiPostCartLogoutRoute', roles: ['public', 'registered', 'admin'] } } } }, 'PUT': { handler: 'CartController.logout', config: { prefix: 'cart.prefix', app: { permissions: { resource_name: 'apiPutCartLogoutRoute', roles: ['public', 'registered', 'admin'] } } } } }, '/cart/checkout': { 'POST': { handler: 'CartController.checkout', config: { prefix: 'cart.prefix', app: { permissions: { resource_name: 'apiPostCartCheckoutRoute', roles: ['public', 'registered'] } } } }, 'PUT': { handler: 'CartController.checkout', config: { prefix: 'cart.prefix', app: { permissions: { resource_name: 'apiPutCartCheckoutRoute', roles: ['public', 'registered'] } } } } }, '/cart/addItems': { 'POST': { handler: 'CartController.addItems', config: { prefix: 'cart.prefix', app: { permissions: { resource_name: 'apiPostCartAddItemsRoute', roles: ['public', 'registered'] } } } }, 'PUT': { handler: 'CartController.addItems', config: { prefix: 'cart.prefix', app: { permissions: { resource_name: 'apiPutCartAddItemsRoute', roles: ['public', 'registered'] } } } } }, '/cart/removeItems': { 'POST': { handler: 'CartController.removeItems', config: { prefix: 'cart.prefix', app: { permissions: { resource_name: 'apiPostCartRemoveItemsRoute', roles: ['public', 'registered', 'admin'] } } } }, 'PUT': { handler: 'CartController.removeItems', config: { prefix: 'cart.prefix', app: { permissions: { resource_name: 'apiPutCartRemoveItemsRoute', roles: ['public', 'registered', 'admin'] } } } } }, '/cart/clear': { 'POST': { handler: 'CartController.clear', config: { prefix: 'cart.prefix', app: { permissions: { resource_name: 'apiPostCartClearRoute', roles: ['public', 'registered', 'admin'] } } } } }, '/cart/login': { 'POST': { handler: 'CartController.login', config: { prefix: 'cart.prefix', app: { permissions: { resource_name: 'apiPostCartLoginRoute', roles: ['public', 'registered', 'admin'] } } } } }, '/cart/:id/login': { 'POST': { handler: 'CartController.login', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiPostCartIdLoginRoute', roles: ['public', 'registered'] } } } } }, '/cart/:id/checkout': { 'POST': { handler: 'CartController.checkout', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number().required() } }, app: { permissions: { resource_name: 'apiPostCartIdCheckoutRoute', roles: ['public', 'registered'] } } } }, 'PUT': { handler: 'CartController.checkout', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number().required() } }, app: { permissions: { resource_name: 'apiPutCartIdCheckoutRoute', roles: ['public', 'registered'] } } } } }, '/cart/:id/checkout/:customer': { 'POST': { handler: 'CartController.checkout', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number().required(), customer: joi.number().required() } }, app: { permissions: { resource_name: 'apiPostCartIdCheckoutCustomerRoute', roles: ['public', 'registered'] } } } }, 'PUT': { handler: 'CartController.checkout', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number().required(), customer: joi.number().required() } }, app: { permissions: { resource_name: 'apiPutCartIdCheckoutCustomerRoute', roles: ['public', 'registered'] } } } } }, '/cart/:id/customer': { 'GET': { handler: 'CartController.customer', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number().required() } }, app: { permissions: { resource_name: 'apiGetCartIdCustomerRoute', roles: ['admin'] } } } } }, '/cart/:id/switch': { 'POST': { handler: 'CartController.switchCart', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiPostCartIdSwitchRoute', roles: ['public', 'registered'] } } } } }, '/cart/:id/addItems': { 'POST': { handler: 'CartController.addItems', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number().required() } }, app: { permissions: { resource_name: 'apiPostCartIdAddItemsRoute', roles: ['public', 'registered'] } } } }, 'PUT': { handler: 'CartController.addItems', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number().required() } }, app: { permissions: { resource_name: 'apiPutCartIdAddItemsRoute', roles: ['public', 'registered'] } } } } }, '/cart/:id/removeItems': { 'POST': { handler: 'CartController.removeItems', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number().required() } }, app: { permissions: { resource_name: 'apiPostCartIdRemoveItemsRoute', roles: ['public', 'registered'] } } } }, 'PUT': { handler: 'CartController.removeItems', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number().required() } }, app: { permissions: { resource_name: 'apiPutCartIdRemoveItemsRoute', roles: ['public', 'registered'] } } } } }, '/cart/:id/pricingOverrides': { 'POST': { handler: 'CartController.pricingOverrides', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number().required() } }, app: { permissions: { resource_name: 'apiPostCartIdPricingOverridesRoute', roles: ['admin'] } } } }, 'PUT': { handler: 'CartController.pricingOverrides', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number().required() } }, app: { permissions: { resource_name: 'apiPutCartIdPricingOverridesRoute', roles: ['admin'] } } } } }, '/cart/:id/clear': { 'POST': { handler: 'CartController.clear', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number().required() } }, app: { permissions: { resource_name: 'apiPostCartIdClearRoute', roles: ['public', 'registered'] } } } }, 'PUT': { handler: 'CartController.clear', config: { prefix: 'cart.prefix', validate: { params: { id: joi.number().required() } }, app: { permissions: { resource_name: 'apiPutCartIdClearRoute', roles: ['public', 'registered'] } } } } }, '/collections': { 'GET': { handler: 'CollectionController.findAll', config: { prefix: 'cart.prefix', validate: { query: { offset: joi.number(), limit: joi.number(), sort: joi.array().items(joi.array()), where: joi.any(), include: joi.array().items(joi.string()) } }, app: { permissions: { resource_name: 'apiGetCollectionsRoute', roles: ['public', 'registered', 'admin'] } } } } }, '/collection': { 'POST': { handler: 'CollectionController.create', config: { prefix: 'cart.prefix', app: { permissions: { resource_name: 'apiPostCollectionRoute', roles: ['admin'] } } } } }, '/collection/:id': { 'GET': { handler: 'CollectionController.findById', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiGetCollectionIdRoute', roles: ['admin', 'registered', 'public'] } } } }, 'POST': { handler: 'CollectionController.update', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiPostCollectionIdRoute', roles: ['admin'] } } } }, 'PUT': { handler: 'CollectionController.update', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiPutCollectionIdRoute', roles: ['admin'] } } } } }, '/collection/:id/collection/:collection': { 'POST': { handler: 'CollectionController.addCollection', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required(), collection: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiPostCollectionIdCollectionCollectionRoute', roles: ['admin'] } } } }, 'PUT': { handler: 'CollectionController.addCollection', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required(), collection: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiPutCollectionIdCollectionCollectionRoute', roles: ['admin'] } } } }, 'DELETE': { handler: 'CollectionController.removeCollection', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required(), collection: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiDeleteCollectionIdCollectionCollectionRoute', roles: ['admin'] } } } } }, '/collection/:id/addCollection/:collection': { 'POST': { handler: 'CollectionController.addCollection', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required(), collection: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiPostCollectionIdAddCollectionCollectionRoute', roles: ['admin'] } } } } }, '/collection/:id/collections': { 'GET': { handler: 'CollectionController.collections', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiGetCollectionIdCollectionsRoute', roles: ['admin', 'registered', 'public'] } } } }, 'POST': { handler: 'CollectionController.addCollections', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiPostCollectionIdCollectionsRoute', roles: ['admin'] } } } }, 'PUT': { handler: 'CollectionController.addCollections', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiPutCollectionIdCollectionsRoute', roles: ['admin'] } } } }, 'DELETE': { handler: 'CollectionController.removeCollections', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required(), collection: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiDeleteCollectionIdCollectionsRoute', roles: ['admin'] } } } } }, '/collection/:id/images': { 'GET': { handler: 'CollectionController.images', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiGetCollectionIdImagesRoute', roles: ['admin', 'registered', 'public'] } } } }, 'POST': { handler: 'CollectionController.addImages', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiPostCollectionIdImagesRoute', roles: ['admin'] } } } }, 'PUT': { handler: 'CollectionController.addImages', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiPutCollectionIdImagesRoute', roles: ['admin'] } } } }, 'DELETE': { handler: 'CollectionController.removeImages', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required(), collection: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiDeleteCollectionIdImagesRoute', roles: ['admin'] } } } } }, '/collection/:id/image/create': { 'POST': { handler: 'CollectionController.createImage', config: { prefix: 'cart.prefix', pre: ['CollectionPolicy.image'], validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiPostCollectionIdImageCreateRoute', roles: ['admin'] } } } } }, '/collection/:id/image/:image': { 'POST': { handler: 'CollectionController.addImage', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required(), image: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiPostCollectionIdImageImageRoute', roles: ['admin'] } } } }, 'PUT': { handler: 'CollectionController.addImage', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required(), image: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: { resource_name: 'apiPutCollectionIdImageImageRoute', roles: ['admin'] } } } }, 'DELETE': { handler: 'CollectionController.removeImage', config: { prefix: 'cart.prefix', validate: { params: { id: joi.alternatives().try(joi.number(), joi.string()).required(), image: joi.alternatives().try(joi.number(), joi.string()).required() } }, app: { permissions: {