Files
wijtransferen/backend/docs/swagger.yaml
T
2026-08-22 17:27:55 +02:00

1166 lines
27 KiB
YAML

basePath: /
definitions:
auth.credentialsRequest:
properties:
email:
type: string
name:
type: string
password:
type: string
type: object
auth.passwordRequest:
properties:
currentPassword:
type: string
newPassword:
type: string
type: object
auth.profileRequest:
properties:
email:
type: string
name:
type: string
type: object
galleries.createRequest:
properties:
clientName:
type: string
description:
type: string
title:
type: string
type: object
galleries.publicPasswordRequest:
properties:
password:
type: string
type: object
media.updateRequest:
properties:
sortOrder:
type: integer
type: object
media.uploadRequest:
properties:
fileSize:
type: integer
filename:
type: string
mimeType:
type: string
type: object
info:
contact: {}
description: REST API for photographer galleries and client delivery.
title: Noah Bianchi Studio API
version: "1.0"
paths:
/api/auth/login:
post:
consumes:
- application/json
parameters:
- description: Account credentials
in: body
name: request
required: true
schema:
$ref: '#/definitions/auth.credentialsRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
summary: Sign in a photographer
tags:
- authentication
/api/auth/logout:
post:
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
summary: Sign out the current photographer
tags:
- authentication
/api/auth/me:
get:
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
security:
- studioSession: []
summary: Get the current photographer
tags:
- authentication
patch:
consumes:
- application/json
parameters:
- description: Profile details
in: body
name: request
required: true
schema:
$ref: '#/definitions/auth.profileRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
"409":
description: Conflict
schema:
additionalProperties:
type: string
type: object
security:
- studioSession: []
summary: Update the current photographer profile
tags:
- authentication
/api/auth/password:
post:
consumes:
- application/json
parameters:
- description: Password details
in: body
name: request
required: true
schema:
$ref: '#/definitions/auth.passwordRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
security:
- studioSession: []
summary: Change the current photographer password
tags:
- authentication
/api/auth/register:
post:
consumes:
- application/json
parameters:
- description: Account details
in: body
name: request
required: true
schema:
$ref: '#/definitions/auth.credentialsRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
additionalProperties: true
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"409":
description: Conflict
schema:
additionalProperties:
type: string
type: object
summary: Register a photographer account
tags:
- authentication
/api/dev/diagnostics:
get:
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
security:
- studioSession: []
summary: Inspect local development dependencies
tags:
- development
/api/dev/storage-check:
post:
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties: true
type: object
"503":
description: Service Unavailable
schema:
additionalProperties: true
type: object
security:
- studioSession: []
summary: Check MinIO storage read/write access
tags:
- development
/api/galleries:
get:
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
security:
- studioSession: []
summary: List owned galleries
tags:
- galleries
post:
consumes:
- application/json
parameters:
- description: Gallery details
in: body
name: request
required: true
schema:
$ref: '#/definitions/galleries.createRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
additionalProperties: true
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
security:
- studioSession: []
summary: Create a gallery
tags:
- galleries
/api/galleries/{id}:
delete:
parameters:
- description: Gallery UUID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"204":
description: No Content
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- studioSession: []
summary: Delete a gallery
tags:
- galleries
get:
parameters:
- description: Gallery UUID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- studioSession: []
summary: Get an owned gallery
tags:
- galleries
patch:
consumes:
- application/json
parameters:
- description: Gallery UUID
in: path
name: id
required: true
type: string
- description: Gallery changes
in: body
name: request
required: true
schema:
additionalProperties: true
type: object
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- studioSession: []
summary: Update a gallery
tags:
- galleries
/api/galleries/{id}/media:
get:
parameters:
- description: Gallery UUID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- studioSession: []
summary: List gallery media
tags:
- media
/api/galleries/{id}/preview:
get:
parameters:
- description: Gallery UUID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- studioSession: []
summary: Preview a gallery as a client
tags:
- galleries
/api/galleries/{id}/publish:
post:
parameters:
- description: Gallery UUID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- studioSession: []
summary: Publish a gallery
tags:
- galleries
/api/galleries/{id}/unpublish:
post:
parameters:
- description: Gallery UUID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- studioSession: []
summary: Unpublish a gallery
tags:
- galleries
/api/galleries/{id}/uploads:
post:
consumes:
- application/json
parameters:
- description: Gallery UUID
in: path
name: id
required: true
type: string
- description: Upload metadata
in: body
name: request
required: true
schema:
$ref: '#/definitions/media.uploadRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
additionalProperties: true
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- studioSession: []
summary: Create a presigned media upload
tags:
- media
/api/media/{id}:
delete:
parameters:
- description: Media UUID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"204":
description: No Content
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- studioSession: []
summary: Delete media or cancel an upload
tags:
- media
patch:
consumes:
- application/json
parameters:
- description: Media UUID
in: path
name: id
required: true
type: string
- description: Media changes
in: body
name: request
required: true
schema:
$ref: '#/definitions/media.updateRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- studioSession: []
summary: Update media ordering
tags:
- media
/api/media/{id}/download:
post:
parameters:
- description: Media UUID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- studioSession: []
summary: Create a signed original media download URL
tags:
- media
/api/public/galleries/{slug}:
get:
parameters:
- description: Gallery slug
in: path
name: slug
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Get a published public gallery
tags:
- public galleries
/api/public/galleries/{slug}/authenticate:
post:
consumes:
- application/json
parameters:
- description: Gallery slug
in: path
name: slug
required: true
type: string
- description: Gallery password
in: body
name: request
required: true
schema:
$ref: '#/definitions/galleries.publicPasswordRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
summary: Authenticate to a password-protected gallery
tags:
- public galleries
/api/public/galleries/{slug}/download-all:
post:
parameters:
- description: Gallery slug
in: path
name: slug
required: true
type: string
produces:
- application/json
responses:
"202":
description: Accepted
schema:
additionalProperties:
type: string
type: object
"403":
description: Forbidden
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Start a public gallery ZIP download
tags:
- public downloads
/api/public/galleries/{slug}/download-all/{jobId}:
get:
parameters:
- description: Gallery slug
in: path
name: slug
required: true
type: string
- description: Download job UUID
in: path
name: jobId
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"403":
description: Forbidden
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Get public gallery ZIP download status
tags:
- public downloads
/api/public/galleries/{slug}/media/{mediaId}/download:
post:
parameters:
- description: Gallery slug
in: path
name: slug
required: true
type: string
- description: Media UUID
in: path
name: mediaId
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"403":
description: Forbidden
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
summary: Download one public gallery media item
tags:
- public downloads
/api/public/galleries/{slug}/media/{mediaId}/favorite:
delete:
parameters:
- description: Gallery slug
in: path
name: slug
required: true
type: string
- description: Media UUID
in: path
name: mediaId
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties:
type: boolean
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"403":
description: Forbidden
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
summary: Remove a favorite from a gallery media item
tags:
- public galleries
post:
parameters:
- description: Gallery slug
in: path
name: slug
required: true
type: string
- description: Media UUID
in: path
name: mediaId
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties:
type: boolean
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"403":
description: Forbidden
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
summary: Favorite a gallery media item
tags:
- public galleries
/api/uploads/{id}:
delete:
parameters:
- description: Media UUID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"204":
description: No Content
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- studioSession: []
summary: Delete media or cancel an upload
tags:
- media
/api/uploads/{id}/complete:
post:
parameters:
- description: Media UUID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- studioSession: []
summary: Complete a media upload
tags:
- media
/health:
get:
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
summary: Check API health
tags:
- system
schemes:
- http
- https
securityDefinitions:
studioSession:
description: Use the studio_session cookie as studio_session=<value>.
in: header
name: Cookie
type: apiKey
swagger: "2.0"