Adds OpenAPI specification of Storefront and Admin APIs. Updates docs project.
63 lines
1.8 KiB
JavaScript
63 lines
1.8 KiB
JavaScript
import { MedusaError, Validator } from "medusa-core-utils"
|
|
|
|
/**
|
|
* @oas [post] /collections/{id}
|
|
* operationId: "PostCollectionsCollection"
|
|
* summary: "Update a Product Collection"
|
|
* description: "Updates a Product Collection."
|
|
* parameters:
|
|
* - (path) id=* {string} The id of the Collection.
|
|
* requestBody:
|
|
* content:
|
|
* application/json:
|
|
* schema:
|
|
* properties:
|
|
* title:
|
|
* type: string
|
|
* description: The title to identify the Collection by.
|
|
* handle:
|
|
* type: string
|
|
* description: An optional handle to be used in slugs, if none is provided we will kebab-case the title.
|
|
* metadata:
|
|
* description: An optional set of key-value pairs to hold additional information.
|
|
* type: object
|
|
* tags:
|
|
* - Collection
|
|
* responses:
|
|
* "200":
|
|
* description: OK
|
|
* content:
|
|
* application/json:
|
|
* schema:
|
|
* properties:
|
|
* collection:
|
|
* $ref: "#/components/schemas/product_collection"
|
|
*/
|
|
export default async (req, res) => {
|
|
const { id } = req.params
|
|
|
|
const schema = Validator.object().keys({
|
|
title: Validator.string().optional(),
|
|
handle: Validator.string().optional(),
|
|
metadata: Validator.object().optional(),
|
|
})
|
|
|
|
const { value, error } = schema.validate(req.body)
|
|
if (error) {
|
|
throw new MedusaError(MedusaError.Types.INVALID_DATA, error.details)
|
|
}
|
|
|
|
try {
|
|
const productCollectionService = req.scope.resolve(
|
|
"productCollectionService"
|
|
)
|
|
|
|
const updated = await productCollectionService.update(id, value)
|
|
const collection = await productCollectionService.retrieve(updated.id)
|
|
|
|
res.status(200).json({ collection })
|
|
} catch (err) {
|
|
throw err
|
|
}
|
|
}
|