1
0
Fork 0
freesewing/sites/backend/openapi/patterns.mjs
2022-12-22 18:41:19 +01:00

224 lines
5.8 KiB
JavaScript

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'],
},
},
}