--- openapi: "3.0.2" info: version: 0.1.0 title: ImageMuck description: >- A simple HTTP service for mucking about with images. This is a super basic HTTP service for autogenerating website ready banner and preview images from full-size source images. The generated images are automatically cached with deterministic URLs. license: name: MIT url: https://mit-license.org/ x-anchors: DefaultHeaders: &headers-default x-imagemuck-version: $ref: "#/components/headers/Version" OptionsResponses: &responses-options '204': description: "Available HTTP verbs in header, per RFC 7231" headers: Allowed: $ref: "#/components/headers/Allowed" '500': $ref: "#/components/responses/InternalServerError" paths: /openapi.json: get: summary: Retrieve the OpenAPI specification file operationId: OpenAPI tags: ["meta"] responses: '200': description: Contents of the OpenAPI spec file headers: *headers-default content: application/json: schema: type: object /image/{image_name}.{format}: get: summary: Retrieve the image resource with the specified ID operationId: ImageGet tags: ["image"] parameters: - $ref: "#/components/parameters/ImageName" - $ref: "#/components/parameters/ImageFormat" responses: '200': $ref: "#/components/responses/Image" '404': $ref: "#/components/responses/NotFoundError" '410': $ref: "#/components/responses/DeletedError" '500': $ref: "#/components/responses/InternalServerError" options: summary: Retrieve available HTTP verbs for the selected endpoint operationId: ImageOptions tags: ["meta"] parameters: - $ref: "#/components/parameters/ImageName" - $ref: "#/components/parameters/ImageFormat" responses: *responses-options /image/{image_name}/{dimension}-{value}.{format}: get: summary: Fetch a scaled image operationId: ThumbnailScale tags: ["manipulate"] parameters: - $ref: "#/components/parameters/ImageName" - $ref: "#/components/parameters/ImageFormat" - $ref: "#/components/parameters/ImageScaleDimension" - $ref: "#/components/parameters/ImageScaleValue" responses: '200': $ref: "#/components/responses/Image" '404': $ref: "#/components/responses/NotFoundError" '410': $ref: "#/components/responses/DeletedError" '500': $ref: "#/components/responses/InternalServerError" options: summary: Retrieve available HTTP verbs for the selected endpoint operationId: ImageScaleOptions tags: ["meta"] parameters: - $ref: "#/components/parameters/ImageName" - $ref: "#/components/parameters/ImageFormat" - $ref: "#/components/parameters/ImageScaleDimension" - $ref: "#/components/parameters/ImageScaleValue" responses: *responses-options /image/{image_name}/{anchor}-{width}x{height}.{format}: get: summary: Fetch a cropped version of the image operationId: ImageCrop tags: ["manipulate"] parameters: - $ref: "#/components/parameters/ImageName" - $ref: "#/components/parameters/ImageFormat" - $ref: "#/components/parameters/ImageCropAnchor" - $ref: "#/components/parameters/ImageCropWidth" - $ref: "#/components/parameters/ImageCropHeight" responses: '200': $ref: "#/components/responses/Image" '404': $ref: "#/components/responses/NotFoundError" '410': $ref: "#/components/responses/DeletedError" '500': $ref: "#/components/responses/InternalServerError" options: summary: Retrieve available HTTP verbs for the selected endpoint operationId: ImageCropOptions tags: ["meta"] parameters: - $ref: "#/components/parameters/ImageName" - $ref: "#/components/parameters/ImageFormat" - $ref: "#/components/parameters/ImageCropAnchor" - $ref: "#/components/parameters/ImageCropWidth" - $ref: "#/components/parameters/ImageCropHeight" responses: *responses-options /image/{image_name}/{alias}.{format}: get: summary: Fetch a pre configured version of the image operationId: ImageAlias tags: ["manipulate"] parameters: - $ref: "#/components/parameters/ImageName" - $ref: "#/components/parameters/ImageFormat" - $ref: "#/components/parameters/ImageAlias" responses: '200': $ref: "#/components/responses/Image" '404': $ref: "#/components/responses/NotFoundError" '410': $ref: "#/components/responses/DeletedError" '500': $ref: "#/components/responses/InternalServerError" options: summary: Retrieve available HTTP verbs for the selected endpoint operationId: ImageAliasOptions tags: ["meta"] parameters: - $ref: "#/components/parameters/ImageName" - $ref: "#/components/parameters/ImageFormat" - $ref: "#/components/parameters/ImageAlias" responses: *responses-options components: schemas: Error: type: object properties: event_id: type: string format: uuid message: type: string data: type: object example: event_id: 0de388ae-8277-49ba-b225-3ef7f5b9d084 message: An error ocurred in a backend component data: {} headers: Version: description: Keyosk server application version schema: type: string Allowed: description: Comma delimited list of valid HTTP verbs schema: type: string parameters: ImageName: name: image_name in: path description: Image resource name required: true schema: type: string ImageFormat: name: format in: path description: Image format extension required: true schema: type: string enum: [jpg, jpeg, png] ImageScaleDimension: name: dimension in: path description: Which dimension to scale to the provided dimension required: true schema: type: string enum: ["w", "h"] ImageScaleValue: name: value in: path description: Dimension in pixels to scale the image to required: true schema: type: number format: integer ImageCropAnchor: name: anchor in: path description: Anchor point on the image for cropping required: true schema: type: string enum: ["tl", "tc", "tr", "cl", "cc", "cr", "bl", "bc", "br"] ImageCropWidth: name: width in: path description: Width in pixels of the image thumbnail required: true schema: type: number format: integer ImageCropHeight: name: height in: path description: Height in pixels of the image thumbnail required: true schema: type: number format: integer ImageAlias: name: alias in: path description: Name of the image config alias to use required: true schema: type: string responses: Image: description: Image content for provided ID headers: <<: *headers-default Digest: description: SHA256 hash of the provided image content schema: type: string format: sha256 content: image/jpeg: {} image/png: {} InternalServerError: description: Internal server error headers: *headers-default content: application/json: schema: $ref: "#/components/schemas/Error" NotFoundError: description: Image with provided ID does not exist headers: *headers-default content: application/json: schema: $ref: "#/components/schemas/Error" MethodNotAllowedError: description: The request's HTTP method is not allowed on this endpoint headers: *headers-default content: application/json: schema: $ref: "#/components/schemas/Error" DeletedError: description: Image with provided ID was deleted headers: *headers-default content: application/json: schema: $ref: "#/components/schemas/Error"