photoprism/internal/server/routes.go
Brandon Richardson 3d962e2382 Backend: Expose prometheus-style metrics endpoint
Expose a new API which can be scraped by prometheus to gather useful
metrics from an instance. The new endpoint exposes photoprism build
version information, golang version, edition and various count metrics.
2023-12-06 08:13:24 +01:00

170 lines
3.8 KiB
Go

package server
import (
"github.com/gin-gonic/gin"
"github.com/photoprism/photoprism/internal/api"
"github.com/photoprism/photoprism/internal/config"
)
var APIv1 *gin.RouterGroup
// registerRoutes configures the available Web server routes.
func registerRoutes(router *gin.Engine, conf *config.Config) {
// Enables automatic redirection if the current route cannot be matched but a
// handler for the path with (without) the trailing slash exists.
router.RedirectTrailingSlash = true
// Static assets and templates.
registerStaticRoutes(router, conf)
// Web app bootstrapping and configuration.
registerPWARoutes(router, conf)
// Built-in WebDAV server.
registerWebDAVRoutes(router, conf)
// Sharing routes start with "/s".
registerSharingRoutes(router, conf)
// JSON-REST API Version 1
// Authentication.
api.CreateSession(APIv1)
api.GetSession(APIv1)
api.DeleteSession(APIv1)
// Server Config.
api.GetConfigOptions(APIv1)
api.SaveConfigOptions(APIv1)
api.StopServer(APIv1)
// Custom Settings.
api.GetClientConfig(APIv1)
api.GetSettings(APIv1)
api.SaveSettings(APIv1)
// Profile and Uploads.
api.UploadUserFiles(APIv1)
api.ProcessUserUpload(APIv1)
api.UploadUserAvatar(APIv1)
api.UpdateUserPassword(APIv1)
api.UpdateUser(APIv1)
// Service Accounts.
api.SearchServices(APIv1)
api.GetService(APIv1)
api.GetServiceFolders(APIv1)
api.UploadToService(APIv1)
api.AddService(APIv1)
api.DeleteService(APIv1)
api.UpdateService(APIv1)
// Thumbnail Images.
api.GetThumb(APIv1)
// Video Streaming.
api.GetVideo(APIv1)
// Downloads.
api.GetDownload(APIv1)
api.ZipCreate(APIv1)
api.ZipDownload(APIv1)
// Index and Import.
api.StartImport(APIv1)
api.CancelImport(APIv1)
api.StartIndexing(APIv1)
api.CancelIndexing(APIv1)
// Photo Search and Organization.
api.SearchPhotos(APIv1)
api.SearchGeo(APIv1)
api.GetPhoto(APIv1)
api.GetPhotoYaml(APIv1)
api.UpdatePhoto(APIv1)
api.GetPhotoDownload(APIv1)
// api.GetPhotoLinks(APIv1)
// api.CreatePhotoLink(APIv1)
// api.UpdatePhotoLink(APIv1)
// api.DeletePhotoLink(APIv1)
api.ApprovePhoto(APIv1)
api.LikePhoto(APIv1)
api.DislikePhoto(APIv1)
api.AddPhotoLabel(APIv1)
api.RemovePhotoLabel(APIv1)
api.UpdatePhotoLabel(APIv1)
api.GetMomentsTime(APIv1)
api.GetFile(APIv1)
api.DeleteFile(APIv1)
api.ChangeFileOrientation(APIv1)
api.CreateMarker(APIv1)
api.UpdateMarker(APIv1)
api.ClearMarkerSubject(APIv1)
api.PhotoPrimary(APIv1)
api.PhotoUnstack(APIv1)
// Photo Albums.
api.SearchAlbums(APIv1)
api.GetAlbum(APIv1)
api.AlbumCover(APIv1)
api.CreateAlbum(APIv1)
api.UpdateAlbum(APIv1)
api.DeleteAlbum(APIv1)
api.DownloadAlbum(APIv1)
api.GetAlbumLinks(APIv1)
api.CreateAlbumLink(APIv1)
api.UpdateAlbumLink(APIv1)
api.DeleteAlbumLink(APIv1)
api.LikeAlbum(APIv1)
api.DislikeAlbum(APIv1)
api.CloneAlbums(APIv1)
api.AddPhotosToAlbum(APIv1)
api.RemovePhotosFromAlbum(APIv1)
// Photo Labels.
api.SearchLabels(APIv1)
api.LabelCover(APIv1)
api.UpdateLabel(APIv1)
// api.GetLabelLinks(APIv1)
// api.CreateLabelLink(APIv1)
// api.UpdateLabelLink(APIv1)
// api.DeleteLabelLink(APIv1)
api.LikeLabel(APIv1)
api.DislikeLabel(APIv1)
// Files and Folders.
api.SearchFoldersOriginals(APIv1)
api.SearchFoldersImport(APIv1)
api.FolderCover(APIv1)
// People.
api.SearchSubjects(APIv1)
api.GetSubject(APIv1)
api.UpdateSubject(APIv1)
api.LikeSubject(APIv1)
api.DislikeSubject(APIv1)
// Faces.
api.SearchFaces(APIv1)
api.GetFace(APIv1)
api.UpdateFace(APIv1)
// Batch Operations.
api.BatchPhotosApprove(APIv1)
api.BatchPhotosArchive(APIv1)
api.BatchPhotosRestore(APIv1)
api.BatchPhotosPrivate(APIv1)
api.BatchPhotosDelete(APIv1)
api.BatchAlbumsDelete(APIv1)
api.BatchLabelsDelete(APIv1)
// Technical Endpoints.
api.GetSvg(APIv1)
api.GetStatus(APIv1)
api.GetErrors(APIv1)
api.DeleteErrors(APIv1)
api.SendFeedback(APIv1)
api.Connect(APIv1)
api.WebSocket(APIv1)
api.GetMetrics(APIv1)
}