1
0
Fork 0
freesewing/sites/backend/openapi/sets.mjs

242 lines
6.3 KiB
JavaScript

import {
jwt,
key,
fields,
parameters,
response,
errorExamples,
jsonResponse,
uploadImg,
} from './lib.mjs'
const common = {
tags: ['Measurements Sets'],
security: [jwt, key],
}
const local = {
params: {
id: {
in: 'path',
name: 'id',
required: true,
description: "The Set's unique ID",
schema: {
example: 666,
type: 'integer',
},
},
},
}
// Paths
export const paths = {}
// Create set
paths['/sets/{auth}'] = {
get: {
...common,
summary: 'Retrieves list of measurements sets',
description: 'Returns a list of sets for the user making the API request',
parameters: [parameters.auth],
responses: {
200: {
description:
'**Success - List of measurements sets returned**\n\n' +
'Status code `200` indicates that the resource was returned successfully.',
...jsonResponse({
result: {
...fields.result,
example: 'success',
},
sets: {
type: 'array',
items: response.body.set,
},
}),
},
401: response.status['401'],
403: {
...response.status['403'],
description:
response.status['403'].description +
errorExamples(['accountStatusLacking', 'insufficientAccessLevel']),
},
500: response.status['500'],
},
},
post: {
...common,
summary: 'Create a new Measurements Set',
description: 'Creates a new Measurements Set and returns it.',
parameters: [parameters.auth],
requestBody: {
required: true,
content: {
'application/json': {
schema: {
type: 'object',
properties: {
img: uploadImg,
imperial: response.body.set.properties.imperial,
name: response.body.set.properties.name,
notes: response.body.set.properties.notes,
public: response.body.set.properties.public,
measies: response.body.set.properties.measies,
},
},
},
},
},
responses: {
201: {
...response.status['201'],
...jsonResponse({
result: fields.result,
set: response.body.set,
}),
},
400: {
...response.status['400'],
description:
response.status['400'].description + errorExamples(['postBodyMissing', 'nameMissing']),
},
401: response.status['401'],
403: {
...response.status['403'],
description:
response.status['403'].description +
errorExamples(['accountStatusLacking', 'insufficientAccessLevel']),
},
500: response.status['500'],
},
},
}
// Get/Remove Set
paths['/sets/{id}/{auth}'] = {
// Get a Set
get: {
...common,
summary: 'Retrieve a Measurements Set',
description: 'Retrieves information about Measurements Set `id`.',
parameters: [parameters.auth, local.params.id],
responses: {
200: {
description:
'**Success - Measurements Set returned**\n\n' +
'Status code `200` indicates that the resource was returned successfully.',
...jsonResponse({
result: {
...fields.result,
example: 'success',
},
set: response.body.set,
}),
},
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 Set
patch: {
...common,
summary: 'Update a Measurements Set',
description: 'Updates information about Measurements Set `id`.',
parameters: [parameters.auth, local.params.id],
requestBody: {
required: true,
content: {
'application/json': {
schema: {
type: 'object',
properties: {
img: uploadImg,
imperial: response.body.set.properties.imperial,
name: response.body.set.properties.name,
notes: response.body.set.properties.notes,
public: response.body.set.properties.public,
measies: response.body.set.properties.measies,
},
},
},
},
},
responses: {
200: {
description:
'**Success - Measurements Set returned**\n\n' +
'Status code `200` indicates that the resource was returned successfully.',
...jsonResponse({
result: {
...fields.result,
example: 'success',
},
set: response.body.set,
}),
},
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 Set
delete: {
...common,
summary: 'Remove a Set',
description: 'Removes the Measurements Set `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 a Set
paths['/sets/{id}/clone/{auth}'] = {
post: {
...common,
summary: 'Clone a Measurements Set',
description: 'Creates a new Measurments Set by cloning an existing one.',
parameters: [parameters.auth],
responses: {
201: {
...response.status['201'],
...jsonResponse({
result: fields.result,
set: response.body.set,
}),
},
401: response.status['401'],
403: {
...response.status['403'],
description:
response.status['403'].description +
errorExamples(['accountStatusLacking', 'insufficientAccessLevel']),
},
500: response.status['500'],
},
},
}