// ATTENTION: Those constraints are no longer the same file as for the client / admin interface. // Make sure changes are also reflected in /shared/validation/constraints.js. // noinspection RegExpSimplifiable const CONSTRAINTS = { id:{ type: 'string', regex: /^[1-9][0-9]*$/, optional: false }, token:{ type: 'string', regex: /^[0-9a-f]{16}$/i, optional: false }, node: { hostname: { type: 'string', regex: /^[-a-z0-9_]{1,32}$/i, optional: false }, key: { type: 'string', regex: /^([a-f0-9]{64})$/i, optional: true }, email: { type: 'string', regex: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i, optional: false }, nickname: { type: 'string', regex: /^[-a-z0-9_ äöüß]{1,64}$/i, optional: false }, mac: { type: 'string', regex: /^([a-f0-9]{12}|([a-f0-9]{2}:){5}[a-f0-9]{2}|([a-f0-9]{2}-){5}[a-f0-9]{2})$/i, optional: false }, coords: { type: 'string', regex: /^(-?[0-9]{1,3}(\.[0-9]{1,15})? -?[0-9]{1,3}(\.[0-9]{1,15})?)$/, optional: true }, monitoring: { type: 'boolean', optional: false } }, nodeFilters: { hasKey: { type: 'boolean', optional: true }, hasCoords: { type: 'boolean', optional: true }, onlineState: { type: 'string', regex: /^(ONLINE|OFFLINE)$/, optional: true }, monitoringState: { type: 'string', regex: /^(disabled|active|pending)$/, optional: true }, site: { type: 'string', regex: /^[a-z0-9_-]{1,32}$/, optional: true }, domain: { type: 'string', regex: /^[a-z0-9_-]{1,32}$/, optional: true } }, rest: { list: { _page: { type: 'number', min: 1, optional: true, default: 1 }, _perPage: { type: 'number', min: 1, max: 50, optional: true, default: 20 }, _sortDir: { type: 'enum', allowed: ['ASC', 'DESC'], optional: true, default: 'ASC' }, _sortField: { type: 'string', regex: /^[a-zA-Z0-9_]{1,32}$/, optional: true }, q: { type: 'string', regex: /^[äöüß a-z0-9!#$%&@:.'*+/=?^_`{|}~-]{1,64}$/i, optional: true } } } }; export default CONSTRAINTS;