// Package docs Code generated by swaggo/swag. DO NOT EDIT package docs import "github.com/swaggo/swag" const docTemplate = `{ "schemes": {{ marshal .Schemes }}, "swagger": "2.0", "info": { "description": "{{escape .Description}}", "title": "{{.Title}}", "contact": {}, "version": "{{.Version}}" }, "host": "{{.Host}}", "basePath": "{{.BasePath}}", "paths": { "/api/auth/login": { "post": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "authentication" ], "summary": "Sign in a photographer", "parameters": [ { "description": "Account credentials", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/auth.credentialsRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/auth/logout": { "post": { "produces": [ "application/json" ], "tags": [ "authentication" ], "summary": "Sign out the current photographer", "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/auth/me": { "get": { "security": [ { "studioSession": [] } ], "produces": [ "application/json" ], "tags": [ "authentication" ], "summary": "Get the current photographer", "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } }, "patch": { "security": [ { "studioSession": [] } ], "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "authentication" ], "summary": "Update the current photographer profile", "parameters": [ { "description": "Profile details", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/auth.profileRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "409": { "description": "Conflict", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/auth/password": { "post": { "security": [ { "studioSession": [] } ], "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "authentication" ], "summary": "Change the current photographer password", "parameters": [ { "description": "Password details", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/auth.passwordRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/auth/register": { "post": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "authentication" ], "summary": "Register a photographer account", "parameters": [ { "description": "Account details", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/auth.credentialsRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "409": { "description": "Conflict", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/dev/diagnostics": { "get": { "security": [ { "studioSession": [] } ], "produces": [ "application/json" ], "tags": [ "development" ], "summary": "Inspect local development dependencies", "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/dev/storage-check": { "post": { "security": [ { "studioSession": [] } ], "produces": [ "application/json" ], "tags": [ "development" ], "summary": "Check MinIO storage read/write access", "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "500": { "description": "Internal Server Error", "schema": { "type": "object", "additionalProperties": true } }, "503": { "description": "Service Unavailable", "schema": { "type": "object", "additionalProperties": true } } } } }, "/api/galleries": { "get": { "security": [ { "studioSession": [] } ], "produces": [ "application/json" ], "tags": [ "galleries" ], "summary": "List owned galleries", "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } }, "post": { "security": [ { "studioSession": [] } ], "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "galleries" ], "summary": "Create a gallery", "parameters": [ { "description": "Gallery details", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/galleries.createRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/galleries/{id}": { "get": { "security": [ { "studioSession": [] } ], "produces": [ "application/json" ], "tags": [ "galleries" ], "summary": "Get an owned gallery", "parameters": [ { "type": "string", "description": "Gallery UUID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "404": { "description": "Not Found", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } }, "delete": { "security": [ { "studioSession": [] } ], "produces": [ "application/json" ], "tags": [ "galleries" ], "summary": "Delete a gallery", "parameters": [ { "type": "string", "description": "Gallery UUID", "name": "id", "in": "path", "required": true } ], "responses": { "204": { "description": "No Content" }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "404": { "description": "Not Found", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } }, "patch": { "security": [ { "studioSession": [] } ], "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "galleries" ], "summary": "Update a gallery", "parameters": [ { "type": "string", "description": "Gallery UUID", "name": "id", "in": "path", "required": true }, { "description": "Gallery changes", "name": "request", "in": "body", "required": true, "schema": { "type": "object", "additionalProperties": true } } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "404": { "description": "Not Found", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/galleries/{id}/media": { "get": { "security": [ { "studioSession": [] } ], "produces": [ "application/json" ], "tags": [ "media" ], "summary": "List gallery media", "parameters": [ { "type": "string", "description": "Gallery UUID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "404": { "description": "Not Found", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/galleries/{id}/preview": { "get": { "security": [ { "studioSession": [] } ], "produces": [ "application/json" ], "tags": [ "galleries" ], "summary": "Preview a gallery as a client", "parameters": [ { "type": "string", "description": "Gallery UUID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "404": { "description": "Not Found", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/galleries/{id}/publish": { "post": { "security": [ { "studioSession": [] } ], "produces": [ "application/json" ], "tags": [ "galleries" ], "summary": "Publish a gallery", "parameters": [ { "type": "string", "description": "Gallery UUID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "404": { "description": "Not Found", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/galleries/{id}/unpublish": { "post": { "security": [ { "studioSession": [] } ], "produces": [ "application/json" ], "tags": [ "galleries" ], "summary": "Unpublish a gallery", "parameters": [ { "type": "string", "description": "Gallery UUID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "404": { "description": "Not Found", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/galleries/{id}/uploads": { "post": { "security": [ { "studioSession": [] } ], "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "media" ], "summary": "Create a presigned media upload", "parameters": [ { "type": "string", "description": "Gallery UUID", "name": "id", "in": "path", "required": true }, { "description": "Upload metadata", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/media.uploadRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "404": { "description": "Not Found", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "500": { "description": "Internal Server Error", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/media/{id}": { "delete": { "security": [ { "studioSession": [] } ], "produces": [ "application/json" ], "tags": [ "media" ], "summary": "Delete media or cancel an upload", "parameters": [ { "type": "string", "description": "Media UUID", "name": "id", "in": "path", "required": true } ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "404": { "description": "Not Found", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } }, "patch": { "security": [ { "studioSession": [] } ], "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "media" ], "summary": "Update media ordering", "parameters": [ { "type": "string", "description": "Media UUID", "name": "id", "in": "path", "required": true }, { "description": "Media changes", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/media.updateRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "404": { "description": "Not Found", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/media/{id}/download": { "post": { "security": [ { "studioSession": [] } ], "produces": [ "application/json" ], "tags": [ "media" ], "summary": "Create a signed original media download URL", "parameters": [ { "type": "string", "description": "Media UUID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "404": { "description": "Not Found", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/public/galleries/{slug}": { "get": { "produces": [ "application/json" ], "tags": [ "public galleries" ], "summary": "Get a published public gallery", "parameters": [ { "type": "string", "description": "Gallery slug", "name": "slug", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "404": { "description": "Not Found", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "500": { "description": "Internal Server Error", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/public/galleries/{slug}/authenticate": { "post": { "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "public galleries" ], "summary": "Authenticate to a password-protected gallery", "parameters": [ { "type": "string", "description": "Gallery slug", "name": "slug", "in": "path", "required": true }, { "description": "Gallery password", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/galleries.publicPasswordRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "404": { "description": "Not Found", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/public/galleries/{slug}/download-all": { "post": { "produces": [ "application/json" ], "tags": [ "public downloads" ], "summary": "Start a public gallery ZIP download", "parameters": [ { "type": "string", "description": "Gallery slug", "name": "slug", "in": "path", "required": true } ], "responses": { "202": { "description": "Accepted", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "403": { "description": "Forbidden", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "404": { "description": "Not Found", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "500": { "description": "Internal Server Error", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/public/galleries/{slug}/download-all/{jobId}": { "get": { "produces": [ "application/json" ], "tags": [ "public downloads" ], "summary": "Get public gallery ZIP download status", "parameters": [ { "type": "string", "description": "Gallery slug", "name": "slug", "in": "path", "required": true }, { "type": "string", "description": "Download job UUID", "name": "jobId", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "403": { "description": "Forbidden", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "404": { "description": "Not Found", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "500": { "description": "Internal Server Error", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/public/galleries/{slug}/media/{mediaId}/download": { "post": { "produces": [ "application/json" ], "tags": [ "public downloads" ], "summary": "Download one public gallery media item", "parameters": [ { "type": "string", "description": "Gallery slug", "name": "slug", "in": "path", "required": true }, { "type": "string", "description": "Media UUID", "name": "mediaId", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "403": { "description": "Forbidden", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "404": { "description": "Not Found", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "500": { "description": "Internal Server Error", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/public/galleries/{slug}/media/{mediaId}/favorite": { "post": { "produces": [ "application/json" ], "tags": [ "public galleries" ], "summary": "Favorite a gallery media item", "parameters": [ { "type": "string", "description": "Gallery slug", "name": "slug", "in": "path", "required": true }, { "type": "string", "description": "Media UUID", "name": "mediaId", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": { "type": "boolean" } } }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "403": { "description": "Forbidden", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "404": { "description": "Not Found", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } }, "delete": { "produces": [ "application/json" ], "tags": [ "public galleries" ], "summary": "Remove a favorite from a gallery media item", "parameters": [ { "type": "string", "description": "Gallery slug", "name": "slug", "in": "path", "required": true }, { "type": "string", "description": "Media UUID", "name": "mediaId", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": { "type": "boolean" } } }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "403": { "description": "Forbidden", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "404": { "description": "Not Found", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/uploads/{id}": { "delete": { "security": [ { "studioSession": [] } ], "produces": [ "application/json" ], "tags": [ "media" ], "summary": "Delete media or cancel an upload", "parameters": [ { "type": "string", "description": "Media UUID", "name": "id", "in": "path", "required": true } ], "responses": { "204": { "description": "No Content" }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "404": { "description": "Not Found", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/uploads/{id}/complete": { "post": { "security": [ { "studioSession": [] } ], "produces": [ "application/json" ], "tags": [ "media" ], "summary": "Complete a media upload", "parameters": [ { "type": "string", "description": "Media UUID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "404": { "description": "Not Found", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/health": { "get": { "produces": [ "application/json" ], "tags": [ "system" ], "summary": "Check API health", "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } } }, "definitions": { "auth.credentialsRequest": { "type": "object", "properties": { "email": { "type": "string" }, "name": { "type": "string" }, "password": { "type": "string" } } }, "auth.passwordRequest": { "type": "object", "properties": { "currentPassword": { "type": "string" }, "newPassword": { "type": "string" } } }, "auth.profileRequest": { "type": "object", "properties": { "email": { "type": "string" }, "name": { "type": "string" } } }, "galleries.createRequest": { "type": "object", "properties": { "clientName": { "type": "string" }, "description": { "type": "string" }, "title": { "type": "string" } } }, "galleries.publicPasswordRequest": { "type": "object", "properties": { "password": { "type": "string" } } }, "media.updateRequest": { "type": "object", "properties": { "sortOrder": { "type": "integer" } } }, "media.uploadRequest": { "type": "object", "properties": { "fileSize": { "type": "integer" }, "filename": { "type": "string" }, "mimeType": { "type": "string" } } } }, "securityDefinitions": { "studioSession": { "description": "Use the studio_session cookie as studio_session=\u003cvalue\u003e.", "type": "apiKey", "name": "Cookie", "in": "header" } } }` // SwaggerInfo holds exported Swagger Info so clients can modify it var SwaggerInfo = &swag.Spec{ Version: "1.0", Host: "", BasePath: "/", Schemes: []string{"http", "https"}, Title: "Noah Bianchi Studio API", Description: "REST API for photographer galleries and client delivery.", InfoInstanceName: "swagger", SwaggerTemplate: docTemplate, LeftDelim: "{{", RightDelim: "}}", } func init() { swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo) }