import { jwt, key, fields, parameters, response, errorExamples, jsonResponse, uploadImg, } from './lib.mjs' const common = { tags: ['Patterns'], security: [jwt, key], } const local = { params: { id: { in: 'path', name: 'id', required: true, description: "The Patterns's unique ID", schema: { example: 666, type: 'integer', }, }, }, } // Paths export const paths = {} // Create Pattern paths['/patterns/{auth}'] = { post: { ...common, summary: 'Create a new Pattern', description: 'Creates a new Pattern and returns it.', parameters: [parameters.auth], requestBody: { required: true, content: { 'application/json': { schema: { type: 'object', properties: { data: response.body.pattern.properties.data, design: response.body.pattern.properties.design, img: uploadImg, name: response.body.pattern.properties.name, notes: response.body.pattern.properties.notes, person: response.body.pattern.properties.personId, public: response.body.pattern.properties.public, settings: response.body.pattern.properties.settings, }, }, }, }, }, responses: { 201: { ...response.status['201'], ...jsonResponse({ result: fields.result, pattern: response.body.pattern, }), }, 400: { ...response.status['400'], description: response.status['400'].description + errorExamples([ 'dataNotAnObject', 'designMissing', 'designNotStringy', 'postBodyMissing', 'personMissing', 'personNotNumeric', 'settingsNotAnObject', ]), }, 401: response.status['401'], 403: { ...response.status['403'], description: response.status['403'].description + errorExamples(['accountStatusLacking', 'insufficientAccessLevel']), }, 500: response.status['500'], }, }, } // Get/Remove Pattern paths['/patterns/{id}/{auth}'] = { // Get a Pattern get: { ...common, summary: 'Retrieve a Pattern', description: 'Retrieves information about Pattern `id`.', parameters: [parameters.auth, local.params.id], responses: { 200: { description: '**Success - Pattern returned**\n\n' + 'Status code `200` indicates that the resource was returned successfully.', ...jsonResponse({ result: { ...fields.result, example: 'success', }, pattern: response.body.pattern, }), }, 401: response.status['401'], 403: { ...response.status['403'], description: response.status['403'].description + errorExamples(['accountStatusLacking', 'insufficientAccessLevel']), }, 404: response.status['404'], 500: response.status['500'], }, }, // Update a Pattern patch: { ...common, summary: 'Update a Pattern', description: 'Updates information about Pattern `id`.', parameters: [parameters.auth, local.params.id], requestBody: { required: true, content: { 'application/json': { schema: { type: 'object', properties: { data: response.body.pattern.properties.data, design: response.body.pattern.properties.design, img: uploadImg, name: response.body.pattern.properties.name, notes: response.body.pattern.properties.notes, person: response.body.pattern.properties.personId, public: response.body.pattern.properties.public, settings: response.body.pattern.properties.settings, }, }, }, }, }, responses: { 200: { description: '**Success - Pattern returned**\n\n' + 'Status code `200` indicates that the resource was returned successfully.', ...jsonResponse({ result: { ...fields.result, example: 'success', }, pattern: response.body.pattern, }), }, 401: response.status['401'], 403: { ...response.status['403'], description: response.status['403'].description + errorExamples(['accountStatusLacking', 'insufficientAccessLevel']), }, 404: response.status['404'], 500: response.status['500'], }, }, // Remove a Pattern delete: { ...common, summary: 'Remove a Pattern', description: 'Removes the Pattern `id`.', parameters: [parameters.auth, local.params.id], responses: { 204: response.status['204'], 401: response.status['401'], 403: { ...response.status['403'], description: response.status['403'].description + errorExamples(['accountStatusLacking', 'insufficientAccessLevel']), }, 404: response.status['404'], 500: response.status['500'], }, }, } // Clone Pattern paths['/patterns/{id}/clone/{auth}'] = { post: { ...common, summary: 'Clone a Pattern', description: 'Creates a new Pattern by cloning an existing one.', parameters: [parameters.auth], responses: { 201: { ...response.status['201'], ...jsonResponse({ result: fields.result, pattern: response.body.pattern, }), }, 401: response.status['401'], 403: { ...response.status['403'], description: response.status['403'].description + errorExamples(['accountStatusLacking', 'insufficientAccessLevel']), }, 500: response.status['500'], }, }, }