From b107ab026a56268472e879ec50ea8276a46b3d28 Mon Sep 17 00:00:00 2001 From: Matthew Kilgore Date: Sun, 27 Jul 2025 18:20:34 -0400 Subject: [PATCH] Refactor entity attachment handling and update API routes for entities --- .../v1/v1_ctrl_entities_attachments.go | 243 ++++++++++++++++++ backend/app/api/handlers/v1/v1_ctrl_items.go | 18 +- .../handlers/v1/v1_ctrl_items_attachments.go | 4 + .../api/handlers/v1/v1_ctrl_maint_entry.go | 44 +++- backend/app/api/routes.go | 15 +- backend/app/api/static/docs/docs.go | 2 +- backend/app/api/static/docs/swagger.json | 2 +- backend/app/api/static/docs/swagger.yaml | 184 +++++++++++++ .../internal/data/ent/entity_predicates.go | 8 +- ...go => 20250831120000_add_entity_tables.go} | 20 +- ...go => 20250831120023_add_entity_tables.go} | 6 +- docs/en/api/openapi-2.0.json | 2 +- docs/en/api/openapi-2.0.yaml | 184 +++++++++++++ 13 files changed, 700 insertions(+), 32 deletions(-) create mode 100644 backend/app/api/handlers/v1/v1_ctrl_entities_attachments.go rename backend/internal/data/migrations/postgres/{20250531120000_add_entity_tables.go => 20250831120000_add_entity_tables.go} (94%) rename backend/internal/data/migrations/sqlite3/{20250531120023_add_entity_tables.go => 20250831120023_add_entity_tables.go} (96%) diff --git a/backend/app/api/handlers/v1/v1_ctrl_entities_attachments.go b/backend/app/api/handlers/v1/v1_ctrl_entities_attachments.go new file mode 100644 index 00000000..30de1303 --- /dev/null +++ b/backend/app/api/handlers/v1/v1_ctrl_entities_attachments.go @@ -0,0 +1,243 @@ +package v1 + +import ( + "errors" + "net/http" + "net/url" + "path/filepath" + "strconv" + "strings" + + "github.com/hay-kot/httpkit/errchain" + "github.com/hay-kot/httpkit/server" + "github.com/rs/zerolog/log" + "github.com/sysadminsmedia/homebox/backend/internal/core/services" + "github.com/sysadminsmedia/homebox/backend/internal/data/ent/attachment" + "github.com/sysadminsmedia/homebox/backend/internal/data/repo" + "github.com/sysadminsmedia/homebox/backend/internal/sys/validate" + + "gocloud.dev/blob" + _ "gocloud.dev/blob/azureblob" + _ "gocloud.dev/blob/fileblob" + _ "gocloud.dev/blob/gcsblob" + _ "gocloud.dev/blob/memblob" + _ "gocloud.dev/blob/s3blob" +) + +type ( + EntityAttachmentToken struct { + Token string `json:"token"` + } +) + +// HandleEntityAttachmentCreate godocs +// +// @Summary Create Item Attachment +// @Tags Items Attachments +// @Accept multipart/form-data +// @Produce json +// @Param id path string true "Item ID" +// @Param file formData file true "File attachment" +// @Param type formData string false "Type of file" +// @Param primary formData bool false "Is this the primary attachment" +// @Param name formData string true "name of the file including extension" +// @Success 200 {object} repo.ItemOut +// @Failure 422 {object} validate.ErrorResponse +// @Router /v1/entities/{id}/attachments [POST] +// @Security Bearer +func (ctrl *V1Controller) HandleEntityAttachmentCreate() errchain.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) error { + err := r.ParseMultipartForm(ctrl.maxUploadSize << 20) + if err != nil { + log.Err(err).Msg("failed to parse multipart form") + return validate.NewRequestError(errors.New("failed to parse multipart form"), http.StatusBadRequest) + } + + errs := validate.NewFieldErrors() + + file, _, err := r.FormFile("file") + if err != nil { + switch { + case errors.Is(err, http.ErrMissingFile): + log.Debug().Msg("file for attachment is missing") + errs = errs.Append("file", "file is required") + default: + log.Err(err).Msg("failed to get file from form") + return validate.NewRequestError(err, http.StatusInternalServerError) + } + } + + attachmentName := r.FormValue("name") + if attachmentName == "" { + log.Debug().Msg("failed to get name from form") + errs = errs.Append("name", "name is required") + } + + if !errs.Nil() { + return server.JSON(w, http.StatusUnprocessableEntity, errs) + } + + attachmentType := r.FormValue("type") + if attachmentType == "" { + // Attempt to auto-detect the type of the file + ext := filepath.Ext(attachmentName) + + switch strings.ToLower(ext) { + case ".jpg", ".jpeg", ".png", ".webp", ".gif", ".bmp", ".tiff", ".avif", ".ico", ".heic", ".jxl": + attachmentType = attachment.TypePhoto.String() + default: + attachmentType = attachment.TypeAttachment.String() + } + } + + primary, err := strconv.ParseBool(r.FormValue("primary")) + if err != nil { + log.Debug().Msg("failed to parse primary from form") + primary = false + } + + id, err := ctrl.routeID(r) + if err != nil { + return err + } + + ctx := services.NewContext(r.Context()) + + item, err := ctrl.svc.Items.AttachmentAdd( + ctx, + id, + attachmentName, + attachment.Type(attachmentType), + primary, + file, + ) + if err != nil { + log.Err(err).Msg("failed to add attachment") + return validate.NewRequestError(err, http.StatusInternalServerError) + } + + return server.JSON(w, http.StatusCreated, item) + } +} + +// HandleEntityAttachmentGet godocs +// +// @Summary Get Item Attachment +// @Tags Items Attachments +// @Produce application/octet-stream +// @Param id path string true "Item ID" +// @Param attachment_id path string true "Attachment ID" +// @Success 200 {object} ItemAttachmentToken +// @Router /v1/entities/{id}/attachments/{attachment_id} [GET] +// @Security Bearer +func (ctrl *V1Controller) HandleEntityAttachmentGet() errchain.HandlerFunc { + return ctrl.handleItemAttachmentsHandler +} + +// HandleEntityAttachmentDelete godocs +// +// @Summary Delete Item Attachment +// @Tags Items Attachments +// @Param id path string true "Item ID" +// @Param attachment_id path string true "Attachment ID" +// @Success 204 +// @Router /v1/entities/{id}/attachments/{attachment_id} [DELETE] +// @Security Bearer +func (ctrl *V1Controller) HandleEntityAttachmentDelete() errchain.HandlerFunc { + return ctrl.handleItemAttachmentsHandler +} + +// HandleEntityAttachmentUpdate godocs +// +// @Summary Update Item Attachment +// @Tags Items Attachments +// @Param id path string true "Item ID" +// @Param attachment_id path string true "Attachment ID" +// @Param payload body repo.ItemAttachmentUpdate true "Attachment Update" +// @Success 200 {object} repo.ItemOut +// @Router /v1/entities/{id}/attachments/{attachment_id} [PUT] +// @Security Bearer +func (ctrl *V1Controller) HandleEntityAttachmentUpdate() errchain.HandlerFunc { + return ctrl.handleItemAttachmentsHandler +} + +func (ctrl *V1Controller) handleEntityAttachmentsHandler(w http.ResponseWriter, r *http.Request) error { + ID, err := ctrl.routeID(r) + if err != nil { + return err + } + + attachmentID, err := ctrl.routeUUID(r, "attachment_id") + if err != nil { + return err + } + + ctx := services.NewContext(r.Context()) + switch r.Method { + case http.MethodGet: + doc, err := ctrl.svc.Items.AttachmentPath(r.Context(), ctx.GID, attachmentID) + if err != nil { + log.Err(err).Msg("failed to get attachment path") + return validate.NewRequestError(err, http.StatusInternalServerError) + } + + bucket, err := blob.OpenBucket(ctx, ctrl.repo.Attachments.GetConnString()) + if err != nil { + log.Err(err).Msg("failed to open bucket") + return validate.NewRequestError(err, http.StatusInternalServerError) + } + file, err := bucket.NewReader(ctx, doc.Path, nil) + if err != nil { + log.Err(err).Msg("failed to open file") + return validate.NewRequestError(err, http.StatusInternalServerError) + } + defer func(file *blob.Reader) { + err := file.Close() + if err != nil { + log.Err(err).Msg("failed to close file") + } + }(file) + defer func(bucket *blob.Bucket) { + err := bucket.Close() + if err != nil { + log.Err(err).Msg("failed to close bucket") + } + }(bucket) + + // Set the Content-Disposition header for RFC6266 compliance + disposition := "attachment; filename*=UTF-8''" + url.QueryEscape(doc.Title) + w.Header().Set("Content-Disposition", disposition) + http.ServeContent(w, r, doc.Title, doc.CreatedAt, file) + return nil + + // Delete Attachment Handler + case http.MethodDelete: + err = ctrl.svc.Items.AttachmentDelete(r.Context(), ctx.GID, ID, attachmentID) + if err != nil { + log.Err(err).Msg("failed to delete attachment") + return validate.NewRequestError(err, http.StatusInternalServerError) + } + + return server.JSON(w, http.StatusNoContent, nil) + + // Update Attachment Handler + case http.MethodPut: + var attachment repo.ItemAttachmentUpdate + err = server.Decode(r, &attachment) + if err != nil { + log.Err(err).Msg("failed to decode attachment") + return validate.NewRequestError(err, http.StatusBadRequest) + } + + attachment.ID = attachmentID + val, err := ctrl.svc.Items.AttachmentUpdate(ctx, ctx.GID, ID, &attachment) + if err != nil { + log.Err(err).Msg("failed to update attachment") + return validate.NewRequestError(err, http.StatusInternalServerError) + } + + return server.JSON(w, http.StatusOK, val) + } + + return nil +} diff --git a/backend/app/api/handlers/v1/v1_ctrl_items.go b/backend/app/api/handlers/v1/v1_ctrl_items.go index b1874134..44b37196 100644 --- a/backend/app/api/handlers/v1/v1_ctrl_items.go +++ b/backend/app/api/handlers/v1/v1_ctrl_items.go @@ -156,14 +156,15 @@ func (ctrl *V1Controller) HandleItemFullPath() errchain.HandlerFunc { // HandleItemsCreate godoc // -// @Summary Create Item -// @Tags Items -// @Produce json -// @Param payload body repo.ItemCreate true "Item Data" -// @Success 201 {object} repo.ItemSummary -// @Router /v1/items [POST] -// @Security Bearer -// @Deprecated +// @Summary Create Item +// @Tags Items +// @Accept json +// @Produce json +// @Param payload body repo.ItemCreate true "Item Data" +// @Success 201 {object} repo.ItemSummary +// @Router /v1/items [POST] +// @Security Bearer +// @Deprecated func (ctrl *V1Controller) HandleItemsCreate() errchain.HandlerFunc { fn := func(r *http.Request, body repo.ItemCreate) (repo.ItemOut, error) { return ctrl.svc.Items.Create(services.NewContext(r.Context()), body) @@ -201,6 +202,7 @@ func (ctrl *V1Controller) HandleItemGet() errchain.HandlerFunc { // @Success 204 // @Router /v1/items/{id} [DELETE] // @Security Bearer +// @Deprecated func (ctrl *V1Controller) HandleItemDelete() errchain.HandlerFunc { fn := func(r *http.Request, ID uuid.UUID) (any, error) { auth := services.NewContext(r.Context()) diff --git a/backend/app/api/handlers/v1/v1_ctrl_items_attachments.go b/backend/app/api/handlers/v1/v1_ctrl_items_attachments.go index e055ec63..365b45d4 100644 --- a/backend/app/api/handlers/v1/v1_ctrl_items_attachments.go +++ b/backend/app/api/handlers/v1/v1_ctrl_items_attachments.go @@ -45,6 +45,7 @@ type ( // @Failure 422 {object} validate.ErrorResponse // @Router /v1/items/{id}/attachments [POST] // @Security Bearer +// @Deprecated func (ctrl *V1Controller) HandleItemAttachmentCreate() errchain.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) error { err := r.ParseMultipartForm(ctrl.maxUploadSize << 20) @@ -130,6 +131,7 @@ func (ctrl *V1Controller) HandleItemAttachmentCreate() errchain.HandlerFunc { // @Success 200 {object} ItemAttachmentToken // @Router /v1/items/{id}/attachments/{attachment_id} [GET] // @Security Bearer +// @Deprecated func (ctrl *V1Controller) HandleItemAttachmentGet() errchain.HandlerFunc { return ctrl.handleItemAttachmentsHandler } @@ -143,6 +145,7 @@ func (ctrl *V1Controller) HandleItemAttachmentGet() errchain.HandlerFunc { // @Success 204 // @Router /v1/items/{id}/attachments/{attachment_id} [DELETE] // @Security Bearer +// @Deprecated func (ctrl *V1Controller) HandleItemAttachmentDelete() errchain.HandlerFunc { return ctrl.handleItemAttachmentsHandler } @@ -157,6 +160,7 @@ func (ctrl *V1Controller) HandleItemAttachmentDelete() errchain.HandlerFunc { // @Success 200 {object} repo.ItemOut // @Router /v1/items/{id}/attachments/{attachment_id} [PUT] // @Security Bearer +// @Deprecated func (ctrl *V1Controller) HandleItemAttachmentUpdate() errchain.HandlerFunc { return ctrl.handleItemAttachmentsHandler } diff --git a/backend/app/api/handlers/v1/v1_ctrl_maint_entry.go b/backend/app/api/handlers/v1/v1_ctrl_maint_entry.go index b465b1c3..3a2e28f7 100644 --- a/backend/app/api/handlers/v1/v1_ctrl_maint_entry.go +++ b/backend/app/api/handlers/v1/v1_ctrl_maint_entry.go @@ -10,7 +10,7 @@ import ( "github.com/sysadminsmedia/homebox/backend/internal/web/adapters" ) -// HandleMaintenanceLogGet godoc +// HandleMaintenanceItemsLogGet godoc // // @Summary Get Maintenance Log // @Tags Item Maintenance @@ -20,6 +20,26 @@ import ( // @Success 200 {array} repo.MaintenanceEntryWithDetails[] // @Router /v1/items/{id}/maintenance [GET] // @Security Bearer +// @Deprecated +func (ctrl *V1Controller) HandleMaintenanceItemsLogGet() errchain.HandlerFunc { + fn := func(r *http.Request, ID uuid.UUID, filters repo.MaintenanceFilters) ([]repo.MaintenanceEntryWithDetails, error) { + auth := services.NewContext(r.Context()) + return ctrl.repo.MaintEntry.GetMaintenanceByItemID(auth, auth.GID, ID, filters) + } + + return adapters.QueryID("id", fn, http.StatusOK) +} + +// HandleMaintenanceLogGet godoc +// +// @Summary Get Maintenance Log +// @Tags Item Maintenance +// @Produce json +// @Param id path string true "Item ID" +// @Param filters query repo.MaintenanceFilters false "which maintenance to retrieve" +// @Success 200 {array} repo.MaintenanceEntryWithDetails[] +// @Router /v1/entities/{id}/maintenance [GET] +// @Security Bearer func (ctrl *V1Controller) HandleMaintenanceLogGet() errchain.HandlerFunc { fn := func(r *http.Request, ID uuid.UUID, filters repo.MaintenanceFilters) ([]repo.MaintenanceEntryWithDetails, error) { auth := services.NewContext(r.Context()) @@ -29,7 +49,7 @@ func (ctrl *V1Controller) HandleMaintenanceLogGet() errchain.HandlerFunc { return adapters.QueryID("id", fn, http.StatusOK) } -// HandleMaintenanceEntryCreate godoc +// HandleMaintenanceItemsEntryCreate godoc // // @Summary Create Maintenance Entry // @Tags Item Maintenance @@ -39,6 +59,26 @@ func (ctrl *V1Controller) HandleMaintenanceLogGet() errchain.HandlerFunc { // @Success 201 {object} repo.MaintenanceEntry // @Router /v1/items/{id}/maintenance [POST] // @Security Bearer +// @Deprecated +func (ctrl *V1Controller) HandleMaintenanceItemsEntryCreate() errchain.HandlerFunc { + fn := func(r *http.Request, itemID uuid.UUID, body repo.MaintenanceEntryCreate) (repo.MaintenanceEntry, error) { + auth := services.NewContext(r.Context()) + return ctrl.repo.MaintEntry.Create(auth, itemID, body) + } + + return adapters.ActionID("id", fn, http.StatusCreated) +} + +// HandleMaintenanceEntryCreate godoc +// +// @Summary Create Maintenance Entry +// @Tags Item Maintenance +// @Produce json +// @Param id path string true "Item ID" +// @Param payload body repo.MaintenanceEntryCreate true "Entry Data" +// @Success 201 {object} repo.MaintenanceEntry +// @Router /v1/entities/{id}/maintenance [POST] +// @Security Bearer func (ctrl *V1Controller) HandleMaintenanceEntryCreate() errchain.HandlerFunc { fn := func(r *http.Request, itemID uuid.UUID, body repo.MaintenanceEntryCreate) (repo.MaintenanceEntry, error) { auth := services.NewContext(r.Context()) diff --git a/backend/app/api/routes.go b/backend/app/api/routes.go index 74f8595f..d15b1518 100644 --- a/backend/app/api/routes.go +++ b/backend/app/api/routes.go @@ -117,6 +117,7 @@ func (a *app) mountRoutes(r *chi.Mux, chain *errchain.ErrChain, repos *repo.AllR r.Put("/labels/{id}", chain.ToHandlerFunc(v1Ctrl.HandleLabelUpdate(), userMW...)) r.Delete("/labels/{id}", chain.ToHandlerFunc(v1Ctrl.HandleLabelDelete(), userMW...)) + // Deprecated, TODO: Remove after some time r.Get("/items", chain.ToHandlerFunc(v1Ctrl.HandleItemsGetAll(), userMW...)) r.Post("/items", chain.ToHandlerFunc(v1Ctrl.HandleItemsCreate(), userMW...)) r.Post("/items/import", chain.ToHandlerFunc(v1Ctrl.HandleItemsImport(), userMW...)) @@ -124,18 +125,28 @@ func (a *app) mountRoutes(r *chi.Mux, chain *errchain.ErrChain, repos *repo.AllR r.Get("/items/fields", chain.ToHandlerFunc(v1Ctrl.HandleGetAllCustomFieldNames(), userMW...)) r.Get("/items/fields/values", chain.ToHandlerFunc(v1Ctrl.HandleGetAllCustomFieldValues(), userMW...)) + // Deprecated, TODO: Remove after some time r.Get("/items/{id}", chain.ToHandlerFunc(v1Ctrl.HandleItemGet(), userMW...)) r.Get("/items/{id}/path", chain.ToHandlerFunc(v1Ctrl.HandleItemFullPath(), userMW...)) r.Put("/items/{id}", chain.ToHandlerFunc(v1Ctrl.HandleItemUpdate(), userMW...)) r.Patch("/items/{id}", chain.ToHandlerFunc(v1Ctrl.HandleItemPatch(), userMW...)) r.Delete("/items/{id}", chain.ToHandlerFunc(v1Ctrl.HandleItemDelete(), userMW...)) + // Deprecated, TODO: Remove after some time r.Post("/items/{id}/attachments", chain.ToHandlerFunc(v1Ctrl.HandleItemAttachmentCreate(), userMW...)) r.Put("/items/{id}/attachments/{attachment_id}", chain.ToHandlerFunc(v1Ctrl.HandleItemAttachmentUpdate(), userMW...)) r.Delete("/items/{id}/attachments/{attachment_id}", chain.ToHandlerFunc(v1Ctrl.HandleItemAttachmentDelete(), userMW...)) - r.Get("/items/{id}/maintenance", chain.ToHandlerFunc(v1Ctrl.HandleMaintenanceLogGet(), userMW...)) - r.Post("/items/{id}/maintenance", chain.ToHandlerFunc(v1Ctrl.HandleMaintenanceEntryCreate(), userMW...)) + r.Post("/entities/{id}/attachments", chain.ToHandlerFunc(v1Ctrl.HandleEntityAttachmentCreate(), userMW...)) + r.Put("/entities/{id}/attachments/{attachment_id}", chain.ToHandlerFunc(v1Ctrl.HandleEntityAttachmentUpdate(), userMW...)) + r.Delete("/entities/{id}/attachments/{attachment_id}", chain.ToHandlerFunc(v1Ctrl.HandleEntityAttachmentDelete(), userMW...)) + + // Deprecated, TODO: Remove after some time + r.Get("/items/{id}/maintenance", chain.ToHandlerFunc(v1Ctrl.HandleMaintenanceItemsLogGet(), userMW...)) + r.Post("/items/{id}/maintenance", chain.ToHandlerFunc(v1Ctrl.HandleMaintenanceItemsEntryCreate(), userMW...)) + + r.Get("/entities/{id}/maintenance", chain.ToHandlerFunc(v1Ctrl.HandleMaintenanceLogGet(), userMW...)) + r.Post("/entities/{id}/maintenance", chain.ToHandlerFunc(v1Ctrl.HandleMaintenanceEntryCreate(), userMW...)) r.Get("/assets/{id}", chain.ToHandlerFunc(v1Ctrl.HandleAssetGet(), userMW...)) diff --git a/backend/app/api/static/docs/docs.go b/backend/app/api/static/docs/docs.go index 04067e94..de3bf8dd 100644 --- a/backend/app/api/static/docs/docs.go +++ b/backend/app/api/static/docs/docs.go @@ -5,7 +5,7 @@ package docs import "github.com/swaggo/swag/v2" const docTemplate = `{ - "schemes": {{ marshal .Schemes }},"swagger":"2.0","info":{"description":"{{escape .Description}}","title":"{{.Title}}","contact":{"name":"Homebox Team","url":"https://discord.homebox.software"},"version":"{{.Version}}"},"host":"{{.Host}}","basePath":"{{.BasePath}}","paths":{"/v1/actions/create-missing-thumbnails":{"post":{"security":[{"Bearer":[]}],"description":"Creates thumbnails for items that are missing them","produces":["application/json"],"tags":["Actions"],"summary":"Create Missing Thumbnails","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/actions/ensure-asset-ids":{"post":{"security":[{"Bearer":[]}],"description":"Ensures all items in the database have an asset ID","produces":["application/json"],"tags":["Actions"],"summary":"Ensure Asset IDs","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/actions/ensure-import-refs":{"post":{"security":[{"Bearer":[]}],"description":"Ensures all items in the database have an import ref","produces":["application/json"],"tags":["Actions"],"summary":"Ensures Import Refs","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/actions/set-primary-photos":{"post":{"security":[{"Bearer":[]}],"description":"Sets the first photo of each item as the primary photo","produces":["application/json"],"tags":["Actions"],"summary":"Set Primary Photos","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/actions/zero-item-time-fields":{"post":{"security":[{"Bearer":[]}],"description":"Resets all item date fields to the beginning of the day","produces":["application/json"],"tags":["Actions"],"summary":"Zero Out Time Fields","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/assets/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Get Item by Asset ID","parameters":[{"type":"string","description":"Asset ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.PaginationResult-repo_ItemSummary"}}}}},"/v1/currency":{"get":{"produces":["application/json"],"tags":["Base"],"summary":"Currency","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/currencies.Currency"}}}}},"/v1/groups":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Group"],"summary":"Get Group","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.Group"}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Group"],"summary":"Update Group","parameters":[{"description":"User Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.GroupUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.Group"}}}}},"/v1/groups/invitations":{"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Group"],"summary":"Create Group Invitation","parameters":[{"description":"User Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/v1.GroupInvitationCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.GroupInvitation"}}}}},"/v1/groups/statistics":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Statistics"],"summary":"Get Group Statistics","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.GroupStatistics"}}}}},"/v1/groups/statistics/labels":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Statistics"],"summary":"Get Label Statistics","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.TotalsByOrganizer"}}}}}},"/v1/groups/statistics/locations":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Statistics"],"summary":"Get Location Statistics","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.TotalsByOrganizer"}}}}}},"/v1/groups/statistics/purchase-price":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Statistics"],"summary":"Get Purchase Price Statistics","parameters":[{"type":"string","description":"start date","name":"start","in":"query"},{"type":"string","description":"end date","name":"end","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ValueOverTime"}}}}},"/v1/items":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Query All Items","deprecated":true,"parameters":[{"type":"string","description":"search string","name":"q","in":"query"},{"type":"integer","description":"page number","name":"page","in":"query"},{"type":"integer","description":"items per page","name":"pageSize","in":"query"},{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"label Ids","name":"labels","in":"query"},{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"location Ids","name":"locations","in":"query"},{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"parent Ids","name":"parentIds","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.PaginationResult-repo_ItemSummary"}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Create Item","deprecated":true,"parameters":[{"description":"Item Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemCreate"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/repo.ItemSummary"}}}}},"/v1/items/export":{"get":{"security":[{"Bearer":[]}],"tags":["Items"],"summary":"(Deprecated) Export Items","deprecated":true,"responses":{"200":{"description":"text/csv","schema":{"type":"string"}}}}},"/v1/items/fields":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Get All Custom Field Names","deprecated":true,"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"type":"string"}}}}}},"/v1/items/fields/values":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Get All Custom Field Values","deprecated":true,"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"type":"string"}}}}}},"/v1/items/import":{"post":{"security":[{"Bearer":[]}],"consumes":["multipart/form-data"],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Import Items","deprecated":true,"parameters":[{"type":"file","description":"Image to upload","name":"csv","in":"formData","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/items/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Get Item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Update Item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"description":"Item Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Delete Item","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}},"patch":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Update Item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"description":"Item Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemPatch"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}}},"/v1/items/{id}/attachments":{"post":{"security":[{"Bearer":[]}],"consumes":["multipart/form-data"],"produces":["application/json"],"tags":["Items Attachments"],"summary":"Create Item Attachment","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"file","description":"File attachment","name":"file","in":"formData","required":true},{"type":"string","description":"Type of file","name":"type","in":"formData"},{"type":"boolean","description":"Is this the primary attachment","name":"primary","in":"formData"},{"type":"string","description":"name of the file including extension","name":"name","in":"formData","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}},"422":{"description":"Unprocessable Entity","schema":{"$ref":"#/definitions/validate.ErrorResponse"}}}}},"/v1/items/{id}/attachments/{attachment_id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/octet-stream"],"tags":["Items Attachments"],"summary":"Get Item Attachment","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ItemAttachmentToken"}}}},"put":{"security":[{"Bearer":[]}],"tags":["Items Attachments"],"summary":"Update Item Attachment","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true},{"description":"Attachment Update","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemAttachmentUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}},"delete":{"security":[{"Bearer":[]}],"tags":["Items Attachments"],"summary":"Delete Item Attachment","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/items/{id}/maintenance":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Item Maintenance"],"summary":"Get Maintenance Log","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"enum":["scheduled","completed","both"],"type":"string","x-enum-varnames":["MaintenanceFilterStatusScheduled","MaintenanceFilterStatusCompleted","MaintenanceFilterStatusBoth"],"name":"status","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.MaintenanceEntryWithDetails"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Item Maintenance"],"summary":"Create Maintenance Entry","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"description":"Entry Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.MaintenanceEntryCreate"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/repo.MaintenanceEntry"}}}}},"/v1/items/{id}/path":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Get the full path of an item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.ItemPath"}}}}}},"/v1/labelmaker/assets/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Get Asset label","parameters":[{"type":"string","description":"Asset ID","name":"id","in":"path","required":true},{"type":"boolean","description":"Print this label, defaults to false","name":"print","in":"query"}],"responses":{"200":{"description":"image/png","schema":{"type":"string"}}}}},"/v1/labelmaker/item/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Get Item label","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"boolean","description":"Print this label, defaults to false","name":"print","in":"query"}],"responses":{"200":{"description":"image/png","schema":{"type":"string"}}}}},"/v1/labelmaker/location/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"Get Location label","parameters":[{"type":"string","description":"Location ID","name":"id","in":"path","required":true},{"type":"boolean","description":"Print this label, defaults to false","name":"print","in":"query"}],"responses":{"200":{"description":"image/png","schema":{"type":"string"}}}}},"/v1/labels":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Get All Labels","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.LabelOut"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Create Label","parameters":[{"description":"Label Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.LabelCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LabelSummary"}}}}},"/v1/labels/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Get Label","parameters":[{"type":"string","description":"Label ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LabelOut"}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Update Label","parameters":[{"type":"string","description":"Label ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LabelOut"}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Delete Label","parameters":[{"type":"string","description":"Label ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/locations":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Get All Locations","deprecated":true,"parameters":[{"type":"boolean","description":"Filter locations with parents","name":"filterChildren","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.LocationOutCount"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Create Location","deprecated":true,"parameters":[{"description":"Location Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.LocationCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LocationSummary"}}}}},"/v1/locations/tree":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Get Locations Tree","deprecated":true,"parameters":[{"type":"boolean","description":"include items in response tree","name":"withItems","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.TreeItem"}}}}}},"/v1/locations/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Get Location","deprecated":true,"parameters":[{"type":"string","description":"Location ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LocationOut"}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Update Location","deprecated":true,"parameters":[{"type":"string","description":"Location ID","name":"id","in":"path","required":true},{"description":"Location Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.LocationUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LocationOut"}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Delete Location","deprecated":true,"parameters":[{"type":"string","description":"Location ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/maintenance":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Maintenance"],"summary":"Query All Maintenance","parameters":[{"enum":["scheduled","completed","both"],"type":"string","x-enum-varnames":["MaintenanceFilterStatusScheduled","MaintenanceFilterStatusCompleted","MaintenanceFilterStatusBoth"],"name":"status","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.MaintenanceEntryWithDetails"}}}}}},"/v1/maintenance/{id}":{"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Maintenance"],"summary":"Update Maintenance Entry","parameters":[{"type":"string","description":"Maintenance ID","name":"id","in":"path","required":true},{"description":"Entry Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.MaintenanceEntryUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.MaintenanceEntry"}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Maintenance"],"summary":"Delete Maintenance Entry","parameters":[{"type":"string","description":"Maintenance ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/notifiers":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Notifiers"],"summary":"Get Notifiers","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.NotifierOut"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Notifiers"],"summary":"Create Notifier","parameters":[{"description":"Notifier Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.NotifierCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.NotifierOut"}}}}},"/v1/notifiers/test":{"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Notifiers"],"summary":"Test Notifier","parameters":[{"type":"string","description":"URL","name":"url","in":"query","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/notifiers/{id}":{"put":{"security":[{"Bearer":[]}],"tags":["Notifiers"],"summary":"Update Notifier","parameters":[{"type":"string","description":"Notifier ID","name":"id","in":"path","required":true},{"description":"Notifier Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.NotifierUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.NotifierOut"}}}},"delete":{"security":[{"Bearer":[]}],"tags":["Notifiers"],"summary":"Delete a Notifier","parameters":[{"type":"string","description":"Notifier ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/products/search-from-barcode":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Search EAN from Barcode","parameters":[{"type":"string","description":"barcode to be searched","name":"data","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.BarcodeProduct"}}}}}},"/v1/qrcode":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Create QR Code","parameters":[{"type":"string","description":"data to be encoded into qrcode","name":"data","in":"query"}],"responses":{"200":{"description":"image/jpeg","schema":{"type":"string"}}}}},"/v1/reporting/bill-of-materials":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Reporting"],"summary":"Export Bill of Materials","responses":{"200":{"description":"text/csv","schema":{"type":"string"}}}}},"/v1/status":{"get":{"produces":["application/json"],"tags":["Base"],"summary":"Application Info","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.APISummary"}}}}},"/v1/users/change-password":{"put":{"security":[{"Bearer":[]}],"tags":["User"],"summary":"Change Password","parameters":[{"description":"Password Payload","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/v1.ChangePassword"}}],"responses":{"204":{"description":"No Content"}}}},"/v1/users/login":{"post":{"consumes":["application/x-www-form-urlencoded","application/json"],"produces":["application/json"],"tags":["Authentication"],"summary":"User Login","parameters":[{"description":"Login Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/v1.LoginForm"}},{"type":"string","description":"auth provider","name":"provider","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.TokenResponse"}}}}},"/v1/users/logout":{"post":{"security":[{"Bearer":[]}],"tags":["Authentication"],"summary":"User Logout","responses":{"204":{"description":"No Content"}}}},"/v1/users/refresh":{"get":{"security":[{"Bearer":[]}],"description":"handleAuthRefresh returns a handler that will issue a new token from an existing token.\nThis does not validate that the user still exists within the database.","tags":["Authentication"],"summary":"User Token Refresh","responses":{"200":{"description":"OK"}}}},"/v1/users/register":{"post":{"produces":["application/json"],"tags":["User"],"summary":"Register New User","parameters":[{"description":"User Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/services.UserRegistration"}}],"responses":{"204":{"description":"No Content"}}}},"/v1/users/self":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["User"],"summary":"Get User Self","responses":{"200":{"description":"OK","schema":{"allOf":[{"$ref":"#/definitions/v1.Wrapped"},{"type":"object","properties":{"item":{"$ref":"#/definitions/repo.UserOut"}}}]}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["User"],"summary":"Update Account","parameters":[{"description":"User Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.UserUpdate"}}],"responses":{"200":{"description":"OK","schema":{"allOf":[{"$ref":"#/definitions/v1.Wrapped"},{"type":"object","properties":{"item":{"$ref":"#/definitions/repo.UserUpdate"}}}]}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["User"],"summary":"Delete Account","responses":{"204":{"description":"No Content"}}}}},"definitions":{"attachment.Type":{"type":"string","enum":["attachment","photo","manual","warranty","attachment","receipt","thumbnail"],"x-enum-varnames":["DefaultType","TypePhoto","TypeManual","TypeWarranty","TypeAttachment","TypeReceipt","TypeThumbnail"]},"authroles.Role":{"type":"string","enum":["user","admin","user","attachments"],"x-enum-varnames":["DefaultRole","RoleAdmin","RoleUser","RoleAttachments"]},"currencies.Currency":{"type":"object","properties":{"code":{"type":"string"},"local":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"}}},"ent.Attachment":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the AttachmentQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.AttachmentEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"mime_type":{"description":"MimeType holds the value of the \"mime_type\" field.","type":"string"},"path":{"description":"Path holds the value of the \"path\" field.","type":"string"},"primary":{"description":"Primary holds the value of the \"primary\" field.","type":"boolean"},"title":{"description":"Title holds the value of the \"title\" field.","type":"string"},"type":{"description":"Type holds the value of the \"type\" field.","allOf":[{"$ref":"#/definitions/attachment.Type"}]},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.AttachmentEdges":{"type":"object","properties":{"entity":{"description":"Entity holds the value of the entity edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]},"thumbnail":{"description":"Thumbnail holds the value of the thumbnail edge.","allOf":[{"$ref":"#/definitions/ent.Attachment"}]}}},"ent.AuthRoles":{"type":"object","properties":{"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the AuthRolesQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.AuthRolesEdges"}]},"id":{"description":"ID of the ent.","type":"integer"},"role":{"description":"Role holds the value of the \"role\" field.","allOf":[{"$ref":"#/definitions/authroles.Role"}]}}},"ent.AuthRolesEdges":{"type":"object","properties":{"token":{"description":"Token holds the value of the token edge.","allOf":[{"$ref":"#/definitions/ent.AuthTokens"}]}}},"ent.AuthTokens":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the AuthTokensQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.AuthTokensEdges"}]},"expires_at":{"description":"ExpiresAt holds the value of the \"expires_at\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"token":{"description":"Token holds the value of the \"token\" field.","type":"array","items":{"type":"integer"}},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.AuthTokensEdges":{"type":"object","properties":{"roles":{"description":"Roles holds the value of the roles edge.","allOf":[{"$ref":"#/definitions/ent.AuthRoles"}]},"user":{"description":"User holds the value of the user edge.","allOf":[{"$ref":"#/definitions/ent.User"}]}}},"ent.Entity":{"type":"object","properties":{"archived":{"description":"Archived holds the value of the \"archived\" field.","type":"boolean"},"asset_id":{"description":"AssetID holds the value of the \"asset_id\" field.","type":"integer"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the EntityQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.EntityEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"import_ref":{"description":"ImportRef holds the value of the \"import_ref\" field.","type":"string"},"insured":{"description":"Insured holds the value of the \"insured\" field.","type":"boolean"},"lifetime_warranty":{"description":"LifetimeWarranty holds the value of the \"lifetime_warranty\" field.","type":"boolean"},"manufacturer":{"description":"Manufacturer holds the value of the \"manufacturer\" field.","type":"string"},"model_number":{"description":"ModelNumber holds the value of the \"model_number\" field.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"notes":{"description":"Notes holds the value of the \"notes\" field.","type":"string"},"purchase_from":{"description":"PurchaseFrom holds the value of the \"purchase_from\" field.","type":"string"},"purchase_price":{"description":"PurchasePrice holds the value of the \"purchase_price\" field.","type":"number"},"purchase_time":{"description":"PurchaseTime holds the value of the \"purchase_time\" field.","type":"string"},"quantity":{"description":"Quantity holds the value of the \"quantity\" field.","type":"integer"},"serial_number":{"description":"SerialNumber holds the value of the \"serial_number\" field.","type":"string"},"sold_notes":{"description":"SoldNotes holds the value of the \"sold_notes\" field.","type":"string"},"sold_price":{"description":"SoldPrice holds the value of the \"sold_price\" field.","type":"number"},"sold_time":{"description":"SoldTime holds the value of the \"sold_time\" field.","type":"string"},"sold_to":{"description":"SoldTo holds the value of the \"sold_to\" field.","type":"string"},"sync_child_entities_locations":{"description":"SyncChildEntitiesLocations holds the value of the \"sync_child_entities_locations\" field.","type":"boolean"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"},"warranty_details":{"description":"WarrantyDetails holds the value of the \"warranty_details\" field.","type":"string"},"warranty_expires":{"description":"WarrantyExpires holds the value of the \"warranty_expires\" field.","type":"string"}}},"ent.EntityEdges":{"type":"object","properties":{"attachments":{"description":"Attachments holds the value of the attachments edge.","type":"array","items":{"$ref":"#/definitions/ent.Attachment"}},"children":{"description":"Children holds the value of the children edge.","type":"array","items":{"$ref":"#/definitions/ent.Entity"}},"entity":{"description":"Entity holds the value of the entity edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]},"fields":{"description":"Fields holds the value of the fields edge.","type":"array","items":{"$ref":"#/definitions/ent.EntityField"}},"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]},"label":{"description":"Label holds the value of the label edge.","type":"array","items":{"$ref":"#/definitions/ent.Label"}},"location":{"description":"Location holds the value of the location edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]},"maintenance_entries":{"description":"MaintenanceEntries holds the value of the maintenance_entries edge.","type":"array","items":{"$ref":"#/definitions/ent.MaintenanceEntry"}},"parent":{"description":"Parent holds the value of the parent edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]},"type":{"description":"Type holds the value of the type edge.","allOf":[{"$ref":"#/definitions/ent.EntityType"}]}}},"ent.EntityField":{"type":"object","properties":{"boolean_value":{"description":"BooleanValue holds the value of the \"boolean_value\" field.","type":"boolean"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the EntityFieldQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.EntityFieldEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"number_value":{"description":"NumberValue holds the value of the \"number_value\" field.","type":"integer"},"text_value":{"description":"TextValue holds the value of the \"text_value\" field.","type":"string"},"time_value":{"description":"TimeValue holds the value of the \"time_value\" field.","type":"string"},"type":{"description":"Type holds the value of the \"type\" field.","allOf":[{"$ref":"#/definitions/entityfield.Type"}]},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.EntityFieldEdges":{"type":"object","properties":{"entity":{"description":"Entity holds the value of the entity edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]}}},"ent.EntityType":{"type":"object","properties":{"color":{"description":"Color holds the value of the \"color\" field.","type":"string"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the EntityTypeQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.EntityTypeEdges"}]},"icon":{"description":"Icon holds the value of the \"icon\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"is_location":{"description":"IsLocation holds the value of the \"is_location\" field.","type":"boolean"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.EntityTypeEdges":{"type":"object","properties":{"entities":{"description":"Entities holds the value of the entities edge.","type":"array","items":{"$ref":"#/definitions/ent.Entity"}},"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]}}},"ent.Group":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"currency":{"description":"Currency holds the value of the \"currency\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the GroupQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.GroupEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.GroupEdges":{"type":"object","properties":{"entities":{"description":"Entities holds the value of the entities edge.","type":"array","items":{"$ref":"#/definitions/ent.Entity"}},"entity_types":{"description":"EntityTypes holds the value of the entity_types edge.","type":"array","items":{"$ref":"#/definitions/ent.EntityType"}},"invitation_tokens":{"description":"InvitationTokens holds the value of the invitation_tokens edge.","type":"array","items":{"$ref":"#/definitions/ent.GroupInvitationToken"}},"labels":{"description":"Labels holds the value of the labels edge.","type":"array","items":{"$ref":"#/definitions/ent.Label"}},"notifiers":{"description":"Notifiers holds the value of the notifiers edge.","type":"array","items":{"$ref":"#/definitions/ent.Notifier"}},"users":{"description":"Users holds the value of the users edge.","type":"array","items":{"$ref":"#/definitions/ent.User"}}}},"ent.GroupInvitationToken":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the GroupInvitationTokenQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.GroupInvitationTokenEdges"}]},"expires_at":{"description":"ExpiresAt holds the value of the \"expires_at\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"token":{"description":"Token holds the value of the \"token\" field.","type":"array","items":{"type":"integer"}},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"},"uses":{"description":"Uses holds the value of the \"uses\" field.","type":"integer"}}},"ent.GroupInvitationTokenEdges":{"type":"object","properties":{"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]}}},"ent.Label":{"type":"object","properties":{"color":{"description":"Color holds the value of the \"color\" field.","type":"string"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the LabelQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.LabelEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.LabelEdges":{"type":"object","properties":{"entities":{"description":"Entities holds the value of the entities edge.","type":"array","items":{"$ref":"#/definitions/ent.Entity"}},"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]}}},"ent.MaintenanceEntry":{"type":"object","properties":{"cost":{"description":"Cost holds the value of the \"cost\" field.","type":"number"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"date":{"description":"Date holds the value of the \"date\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the MaintenanceEntryQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.MaintenanceEntryEdges"}]},"entity_id":{"description":"EntityID holds the value of the \"entity_id\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"scheduled_date":{"description":"ScheduledDate holds the value of the \"scheduled_date\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.MaintenanceEntryEdges":{"type":"object","properties":{"entity":{"description":"Entity holds the value of the entity edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]}}},"ent.Notifier":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the NotifierQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.NotifierEdges"}]},"group_id":{"description":"GroupID holds the value of the \"group_id\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"is_active":{"description":"IsActive holds the value of the \"is_active\" field.","type":"boolean"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"},"user_id":{"description":"UserID holds the value of the \"user_id\" field.","type":"string"}}},"ent.NotifierEdges":{"type":"object","properties":{"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]},"user":{"description":"User holds the value of the user edge.","allOf":[{"$ref":"#/definitions/ent.User"}]}}},"ent.User":{"type":"object","properties":{"activated_on":{"description":"ActivatedOn holds the value of the \"activated_on\" field.","type":"string"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the UserQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.UserEdges"}]},"email":{"description":"Email holds the value of the \"email\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"is_superuser":{"description":"IsSuperuser holds the value of the \"is_superuser\" field.","type":"boolean"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"role":{"description":"Role holds the value of the \"role\" field.","allOf":[{"$ref":"#/definitions/user.Role"}]},"superuser":{"description":"Superuser holds the value of the \"superuser\" field.","type":"boolean"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.UserEdges":{"type":"object","properties":{"auth_tokens":{"description":"AuthTokens holds the value of the auth_tokens edge.","type":"array","items":{"$ref":"#/definitions/ent.AuthTokens"}},"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]},"notifiers":{"description":"Notifiers holds the value of the notifiers edge.","type":"array","items":{"$ref":"#/definitions/ent.Notifier"}}}},"entityfield.Type":{"type":"string","enum":["text","number","boolean","time"],"x-enum-varnames":["TypeText","TypeNumber","TypeBoolean","TypeTime"]},"repo.BarcodeProduct":{"type":"object","properties":{"barcode":{"type":"string"},"imageBase64":{"type":"string"},"imageURL":{"type":"string"},"item":{"$ref":"#/definitions/repo.ItemCreate"},"manufacturer":{"type":"string"},"modelNumber":{"description":"Identifications","type":"string"},"notes":{"description":"Extras","type":"string"},"search_engine_name":{"type":"string"}}},"repo.Group":{"type":"object","properties":{"createdAt":{"type":"string"},"currency":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.GroupStatistics":{"type":"object","properties":{"totalItemPrice":{"type":"number"},"totalItems":{"type":"integer"},"totalLabels":{"type":"integer"},"totalLocations":{"type":"integer"},"totalUsers":{"type":"integer"},"totalWithWarranty":{"type":"integer"}}},"repo.GroupUpdate":{"type":"object","properties":{"currency":{"type":"string"},"name":{"type":"string"}}},"repo.ItemAttachment":{"type":"object","properties":{"createdAt":{"type":"string"},"id":{"type":"string"},"mimeType":{"type":"string"},"path":{"type":"string"},"primary":{"type":"boolean"},"thumbnail":{"$ref":"#/definitions/ent.Attachment"},"title":{"type":"string"},"type":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.ItemAttachmentUpdate":{"type":"object","properties":{"primary":{"type":"boolean"},"title":{"type":"string"},"type":{"type":"string"}}},"repo.ItemCreate":{"type":"object","required":["name"],"properties":{"description":{"type":"string","maxLength":1000},"labelIds":{"type":"array","items":{"type":"string"}},"locationId":{"description":"Edges","type":"string"},"name":{"type":"string","maxLength":255,"minLength":1},"parentId":{"type":"string","x-nullable":true},"quantity":{"type":"integer"}}},"repo.ItemField":{"type":"object","properties":{"booleanValue":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"numberValue":{"type":"integer"},"textValue":{"type":"string"},"type":{"type":"string"}}},"repo.ItemOut":{"type":"object","properties":{"archived":{"type":"boolean"},"assetId":{"type":"string","example":"0"},"attachments":{"type":"array","items":{"$ref":"#/definitions/repo.ItemAttachment"}},"createdAt":{"type":"string"},"description":{"type":"string"},"fields":{"type":"array","items":{"$ref":"#/definitions/repo.ItemField"}},"id":{"type":"string"},"imageId":{"type":"string","x-nullable":true,"x-omitempty":true},"insured":{"type":"boolean"},"labels":{"type":"array","items":{"$ref":"#/definitions/repo.LabelSummary"}},"lifetimeWarranty":{"description":"Warranty","type":"boolean"},"location":{"description":"Edges","allOf":[{"$ref":"#/definitions/repo.LocationSummary"}],"x-nullable":true,"x-omitempty":true},"manufacturer":{"type":"string"},"modelNumber":{"type":"string"},"name":{"type":"string"},"notes":{"description":"Extras","type":"string"},"parent":{"allOf":[{"$ref":"#/definitions/repo.ItemSummary"}],"x-nullable":true,"x-omitempty":true},"purchaseFrom":{"type":"string"},"purchasePrice":{"type":"number"},"purchaseTime":{"description":"Purchase","type":"string"},"quantity":{"type":"integer"},"serialNumber":{"type":"string"},"soldNotes":{"type":"string"},"soldPrice":{"type":"number"},"soldTime":{"description":"Sold","type":"string"},"soldTo":{"type":"string"},"syncChildItemsLocations":{"type":"boolean"},"thumbnailId":{"type":"string","x-nullable":true,"x-omitempty":true},"updatedAt":{"type":"string"},"warrantyDetails":{"type":"string"},"warrantyExpires":{"type":"string"}}},"repo.ItemPatch":{"type":"object","properties":{"id":{"type":"string"},"quantity":{"type":"integer","x-nullable":true,"x-omitempty":true}}},"repo.ItemPath":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"$ref":"#/definitions/repo.ItemType"}}},"repo.ItemSummary":{"type":"object","properties":{"archived":{"type":"boolean"},"assetId":{"type":"string","example":"0"},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"imageId":{"type":"string","x-nullable":true,"x-omitempty":true},"insured":{"type":"boolean"},"labels":{"type":"array","items":{"$ref":"#/definitions/repo.LabelSummary"}},"location":{"description":"Edges","allOf":[{"$ref":"#/definitions/repo.LocationSummary"}],"x-nullable":true,"x-omitempty":true},"name":{"type":"string"},"purchasePrice":{"type":"number"},"quantity":{"type":"integer"},"soldTime":{"description":"Sale details","type":"string"},"thumbnailId":{"type":"string","x-nullable":true,"x-omitempty":true},"updatedAt":{"type":"string"}}},"repo.ItemType":{"type":"string","enum":["location","item"],"x-enum-varnames":["ItemTypeLocation","ItemTypeItem"]},"repo.ItemUpdate":{"type":"object","required":["name"],"properties":{"archived":{"type":"boolean"},"assetId":{"type":"string"},"description":{"type":"string","maxLength":1000},"fields":{"type":"array","items":{"$ref":"#/definitions/repo.ItemField"}},"id":{"type":"string"},"insured":{"type":"boolean"},"labelIds":{"type":"array","items":{"type":"string"}},"lifetimeWarranty":{"description":"Warranty","type":"boolean"},"locationId":{"description":"Edges","type":"string"},"manufacturer":{"type":"string"},"modelNumber":{"type":"string"},"name":{"type":"string","maxLength":255,"minLength":1},"notes":{"description":"Extras","type":"string"},"parentId":{"type":"string","x-nullable":true,"x-omitempty":true},"purchaseFrom":{"type":"string","maxLength":255},"purchasePrice":{"type":"number","x-nullable":true,"x-omitempty":true},"purchaseTime":{"description":"Purchase","type":"string"},"quantity":{"type":"integer"},"serialNumber":{"description":"Identifications","type":"string"},"soldNotes":{"type":"string"},"soldPrice":{"type":"number","x-nullable":true,"x-omitempty":true},"soldTime":{"description":"Sold","type":"string"},"soldTo":{"type":"string","maxLength":255},"syncChildItemsLocations":{"type":"boolean"},"warrantyDetails":{"type":"string"},"warrantyExpires":{"type":"string"}}},"repo.LabelCreate":{"type":"object","required":["name"],"properties":{"color":{"type":"string"},"description":{"type":"string","maxLength":255},"name":{"type":"string","maxLength":255,"minLength":1}}},"repo.LabelOut":{"type":"object","properties":{"color":{"type":"string"},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LabelSummary":{"type":"object","properties":{"color":{"type":"string"},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LocationCreate":{"type":"object","properties":{"description":{"type":"string"},"name":{"type":"string"},"parentId":{"type":"string","x-nullable":true}}},"repo.LocationOut":{"type":"object","properties":{"children":{"type":"array","items":{"$ref":"#/definitions/repo.LocationSummary"}},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"parent":{"$ref":"#/definitions/repo.LocationSummary"},"totalPrice":{"type":"number"},"updatedAt":{"type":"string"}}},"repo.LocationOutCount":{"type":"object","properties":{"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"itemCount":{"type":"integer"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LocationSummary":{"type":"object","properties":{"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LocationUpdate":{"type":"object","properties":{"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"parentId":{"type":"string","x-nullable":true}}},"repo.MaintenanceEntry":{"type":"object","properties":{"completedDate":{"type":"string"},"cost":{"type":"string","example":"0"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"scheduledDate":{"type":"string"}}},"repo.MaintenanceEntryCreate":{"type":"object","required":["name"],"properties":{"completedDate":{"type":"string"},"cost":{"type":"string","example":"0"},"description":{"type":"string"},"name":{"type":"string"},"scheduledDate":{"type":"string"}}},"repo.MaintenanceEntryUpdate":{"type":"object","properties":{"completedDate":{"type":"string"},"cost":{"type":"string","example":"0"},"description":{"type":"string"},"name":{"type":"string"},"scheduledDate":{"type":"string"}}},"repo.MaintenanceEntryWithDetails":{"type":"object","properties":{"completedDate":{"type":"string"},"cost":{"type":"string","example":"0"},"description":{"type":"string"},"id":{"type":"string"},"itemID":{"type":"string"},"itemName":{"type":"string"},"name":{"type":"string"},"scheduledDate":{"type":"string"}}},"repo.MaintenanceFilterStatus":{"type":"string","enum":["scheduled","completed","both"],"x-enum-varnames":["MaintenanceFilterStatusScheduled","MaintenanceFilterStatusCompleted","MaintenanceFilterStatusBoth"]},"repo.NotifierCreate":{"type":"object","required":["name","url"],"properties":{"isActive":{"type":"boolean"},"name":{"type":"string","maxLength":255,"minLength":1},"url":{"type":"string"}}},"repo.NotifierOut":{"type":"object","properties":{"createdAt":{"type":"string"},"groupId":{"type":"string"},"id":{"type":"string"},"isActive":{"type":"boolean"},"name":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"userId":{"type":"string"}}},"repo.NotifierUpdate":{"type":"object","required":["name"],"properties":{"isActive":{"type":"boolean"},"name":{"type":"string","maxLength":255,"minLength":1},"url":{"type":"string","x-nullable":true}}},"repo.PaginationResult-repo_ItemSummary":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/repo.ItemSummary"}},"page":{"type":"integer"},"pageSize":{"type":"integer"},"total":{"type":"integer"}}},"repo.TotalsByOrganizer":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"total":{"type":"number"}}},"repo.TreeItem":{"type":"object","properties":{"children":{"type":"array","items":{"$ref":"#/definitions/repo.TreeItem"}},"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"}}},"repo.UserOut":{"type":"object","properties":{"email":{"type":"string"},"groupId":{"type":"string"},"groupName":{"type":"string"},"id":{"type":"string"},"isOwner":{"type":"boolean"},"isSuperuser":{"type":"boolean"},"name":{"type":"string"}}},"repo.UserUpdate":{"type":"object","properties":{"email":{"type":"string"},"name":{"type":"string"}}},"repo.ValueOverTime":{"type":"object","properties":{"end":{"type":"string"},"entries":{"type":"array","items":{"$ref":"#/definitions/repo.ValueOverTimeEntry"}},"start":{"type":"string"},"valueAtEnd":{"type":"number"},"valueAtStart":{"type":"number"}}},"repo.ValueOverTimeEntry":{"type":"object","properties":{"date":{"type":"string"},"name":{"type":"string"},"value":{"type":"number"}}},"services.Latest":{"type":"object","properties":{"date":{"type":"string"},"version":{"type":"string"}}},"services.UserRegistration":{"type":"object","properties":{"email":{"type":"string"},"name":{"type":"string"},"password":{"type":"string"},"token":{"type":"string"}}},"user.Role":{"type":"string","enum":["user","user","owner"],"x-enum-varnames":["DefaultRole","RoleUser","RoleOwner"]},"v1.APISummary":{"type":"object","properties":{"allowRegistration":{"type":"boolean"},"build":{"$ref":"#/definitions/v1.Build"},"demo":{"type":"boolean"},"health":{"type":"boolean"},"labelPrinting":{"type":"boolean"},"latest":{"$ref":"#/definitions/services.Latest"},"message":{"type":"string"},"title":{"type":"string"},"versions":{"type":"array","items":{"type":"string"}}}},"v1.ActionAmountResult":{"type":"object","properties":{"completed":{"type":"integer"}}},"v1.Build":{"type":"object","properties":{"buildTime":{"type":"string"},"commit":{"type":"string"},"version":{"type":"string"}}},"v1.ChangePassword":{"type":"object","properties":{"current":{"type":"string"},"new":{"type":"string"}}},"v1.GroupInvitation":{"type":"object","properties":{"expiresAt":{"type":"string"},"token":{"type":"string"},"uses":{"type":"integer"}}},"v1.GroupInvitationCreate":{"type":"object","required":["uses"],"properties":{"expiresAt":{"type":"string"},"uses":{"type":"integer","maximum":100,"minimum":1}}},"v1.ItemAttachmentToken":{"type":"object","properties":{"token":{"type":"string"}}},"v1.LoginForm":{"type":"object","properties":{"password":{"type":"string","example":"admin"},"stayLoggedIn":{"type":"boolean"},"username":{"type":"string","example":"admin@admin.com"}}},"v1.TokenResponse":{"type":"object","properties":{"attachmentToken":{"type":"string"},"expiresAt":{"type":"string"},"token":{"type":"string"}}},"v1.Wrapped":{"type":"object","properties":{"item":{}}},"validate.ErrorResponse":{"type":"object","properties":{"error":{"type":"string"},"fields":{"type":"string"}}}},"securityDefinitions":{"Bearer":{"description":"\"Type 'Bearer TOKEN' to correctly set the API Key\"","type":"apiKey","name":"Authorization","in":"header"}}}` + "schemes": {{ marshal .Schemes }},"swagger":"2.0","info":{"description":"{{escape .Description}}","title":"{{.Title}}","contact":{"name":"Homebox Team","url":"https://discord.homebox.software"},"version":"{{.Version}}"},"host":"{{.Host}}","basePath":"{{.BasePath}}","paths":{"/v1/actions/create-missing-thumbnails":{"post":{"security":[{"Bearer":[]}],"description":"Creates thumbnails for items that are missing them","produces":["application/json"],"tags":["Actions"],"summary":"Create Missing Thumbnails","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/actions/ensure-asset-ids":{"post":{"security":[{"Bearer":[]}],"description":"Ensures all items in the database have an asset ID","produces":["application/json"],"tags":["Actions"],"summary":"Ensure Asset IDs","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/actions/ensure-import-refs":{"post":{"security":[{"Bearer":[]}],"description":"Ensures all items in the database have an import ref","produces":["application/json"],"tags":["Actions"],"summary":"Ensures Import Refs","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/actions/set-primary-photos":{"post":{"security":[{"Bearer":[]}],"description":"Sets the first photo of each item as the primary photo","produces":["application/json"],"tags":["Actions"],"summary":"Set Primary Photos","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/actions/zero-item-time-fields":{"post":{"security":[{"Bearer":[]}],"description":"Resets all item date fields to the beginning of the day","produces":["application/json"],"tags":["Actions"],"summary":"Zero Out Time Fields","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/assets/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Get Item by Asset ID","parameters":[{"type":"string","description":"Asset ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.PaginationResult-repo_ItemSummary"}}}}},"/v1/currency":{"get":{"produces":["application/json"],"tags":["Base"],"summary":"Currency","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/currencies.Currency"}}}}},"/v1/entities/{id}/attachments":{"post":{"security":[{"Bearer":[]}],"consumes":["multipart/form-data"],"produces":["application/json"],"tags":["Items Attachments"],"summary":"Create Item Attachment","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"file","description":"File attachment","name":"file","in":"formData","required":true},{"type":"string","description":"Type of file","name":"type","in":"formData"},{"type":"boolean","description":"Is this the primary attachment","name":"primary","in":"formData"},{"type":"string","description":"name of the file including extension","name":"name","in":"formData","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}},"422":{"description":"Unprocessable Entity","schema":{"$ref":"#/definitions/validate.ErrorResponse"}}}}},"/v1/entities/{id}/attachments/{attachment_id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/octet-stream"],"tags":["Items Attachments"],"summary":"Get Item Attachment","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ItemAttachmentToken"}}}},"put":{"security":[{"Bearer":[]}],"tags":["Items Attachments"],"summary":"Update Item Attachment","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true},{"description":"Attachment Update","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemAttachmentUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}},"delete":{"security":[{"Bearer":[]}],"tags":["Items Attachments"],"summary":"Delete Item Attachment","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/entities/{id}/maintenance":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Item Maintenance"],"summary":"Get Maintenance Log","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"enum":["scheduled","completed","both"],"type":"string","x-enum-varnames":["MaintenanceFilterStatusScheduled","MaintenanceFilterStatusCompleted","MaintenanceFilterStatusBoth"],"name":"status","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.MaintenanceEntryWithDetails"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Item Maintenance"],"summary":"Create Maintenance Entry","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"description":"Entry Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.MaintenanceEntryCreate"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/repo.MaintenanceEntry"}}}}},"/v1/groups":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Group"],"summary":"Get Group","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.Group"}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Group"],"summary":"Update Group","parameters":[{"description":"User Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.GroupUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.Group"}}}}},"/v1/groups/invitations":{"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Group"],"summary":"Create Group Invitation","parameters":[{"description":"User Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/v1.GroupInvitationCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.GroupInvitation"}}}}},"/v1/groups/statistics":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Statistics"],"summary":"Get Group Statistics","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.GroupStatistics"}}}}},"/v1/groups/statistics/labels":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Statistics"],"summary":"Get Label Statistics","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.TotalsByOrganizer"}}}}}},"/v1/groups/statistics/locations":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Statistics"],"summary":"Get Location Statistics","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.TotalsByOrganizer"}}}}}},"/v1/groups/statistics/purchase-price":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Statistics"],"summary":"Get Purchase Price Statistics","parameters":[{"type":"string","description":"start date","name":"start","in":"query"},{"type":"string","description":"end date","name":"end","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ValueOverTime"}}}}},"/v1/items":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Query All Items","deprecated":true,"parameters":[{"type":"string","description":"search string","name":"q","in":"query"},{"type":"integer","description":"page number","name":"page","in":"query"},{"type":"integer","description":"items per page","name":"pageSize","in":"query"},{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"label Ids","name":"labels","in":"query"},{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"location Ids","name":"locations","in":"query"},{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"parent Ids","name":"parentIds","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.PaginationResult-repo_ItemSummary"}}}},"post":{"security":[{"Bearer":[]}],"consumes":["application/json"],"produces":["application/json"],"tags":["Items"],"summary":"Create Item","deprecated":true,"parameters":[{"description":"Item Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemCreate"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/repo.ItemSummary"}}}}},"/v1/items/export":{"get":{"security":[{"Bearer":[]}],"tags":["Items"],"summary":"(Deprecated) Export Items","deprecated":true,"responses":{"200":{"description":"text/csv","schema":{"type":"string"}}}}},"/v1/items/fields":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Get All Custom Field Names","deprecated":true,"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"type":"string"}}}}}},"/v1/items/fields/values":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Get All Custom Field Values","deprecated":true,"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"type":"string"}}}}}},"/v1/items/import":{"post":{"security":[{"Bearer":[]}],"consumes":["multipart/form-data"],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Import Items","deprecated":true,"parameters":[{"type":"file","description":"Image to upload","name":"csv","in":"formData","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/items/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Get Item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Update Item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"description":"Item Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Delete Item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}},"patch":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Update Item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"description":"Item Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemPatch"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}}},"/v1/items/{id}/attachments":{"post":{"security":[{"Bearer":[]}],"consumes":["multipart/form-data"],"produces":["application/json"],"tags":["Items Attachments"],"summary":"Create Item Attachment","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"file","description":"File attachment","name":"file","in":"formData","required":true},{"type":"string","description":"Type of file","name":"type","in":"formData"},{"type":"boolean","description":"Is this the primary attachment","name":"primary","in":"formData"},{"type":"string","description":"name of the file including extension","name":"name","in":"formData","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}},"422":{"description":"Unprocessable Entity","schema":{"$ref":"#/definitions/validate.ErrorResponse"}}}}},"/v1/items/{id}/attachments/{attachment_id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/octet-stream"],"tags":["Items Attachments"],"summary":"Get Item Attachment","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ItemAttachmentToken"}}}},"put":{"security":[{"Bearer":[]}],"tags":["Items Attachments"],"summary":"Update Item Attachment","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true},{"description":"Attachment Update","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemAttachmentUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}},"delete":{"security":[{"Bearer":[]}],"tags":["Items Attachments"],"summary":"Delete Item Attachment","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/items/{id}/maintenance":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Item Maintenance"],"summary":"Get Maintenance Log","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"enum":["scheduled","completed","both"],"type":"string","x-enum-varnames":["MaintenanceFilterStatusScheduled","MaintenanceFilterStatusCompleted","MaintenanceFilterStatusBoth"],"name":"status","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.MaintenanceEntryWithDetails"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Item Maintenance"],"summary":"Create Maintenance Entry","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"description":"Entry Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.MaintenanceEntryCreate"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/repo.MaintenanceEntry"}}}}},"/v1/items/{id}/path":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Get the full path of an item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.ItemPath"}}}}}},"/v1/labelmaker/assets/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Get Asset label","parameters":[{"type":"string","description":"Asset ID","name":"id","in":"path","required":true},{"type":"boolean","description":"Print this label, defaults to false","name":"print","in":"query"}],"responses":{"200":{"description":"image/png","schema":{"type":"string"}}}}},"/v1/labelmaker/item/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Get Item label","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"boolean","description":"Print this label, defaults to false","name":"print","in":"query"}],"responses":{"200":{"description":"image/png","schema":{"type":"string"}}}}},"/v1/labelmaker/location/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"Get Location label","parameters":[{"type":"string","description":"Location ID","name":"id","in":"path","required":true},{"type":"boolean","description":"Print this label, defaults to false","name":"print","in":"query"}],"responses":{"200":{"description":"image/png","schema":{"type":"string"}}}}},"/v1/labels":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Get All Labels","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.LabelOut"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Create Label","parameters":[{"description":"Label Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.LabelCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LabelSummary"}}}}},"/v1/labels/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Get Label","parameters":[{"type":"string","description":"Label ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LabelOut"}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Update Label","parameters":[{"type":"string","description":"Label ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LabelOut"}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Delete Label","parameters":[{"type":"string","description":"Label ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/locations":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Get All Locations","deprecated":true,"parameters":[{"type":"boolean","description":"Filter locations with parents","name":"filterChildren","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.LocationOutCount"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Create Location","deprecated":true,"parameters":[{"description":"Location Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.LocationCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LocationSummary"}}}}},"/v1/locations/tree":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Get Locations Tree","deprecated":true,"parameters":[{"type":"boolean","description":"include items in response tree","name":"withItems","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.TreeItem"}}}}}},"/v1/locations/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Get Location","deprecated":true,"parameters":[{"type":"string","description":"Location ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LocationOut"}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Update Location","deprecated":true,"parameters":[{"type":"string","description":"Location ID","name":"id","in":"path","required":true},{"description":"Location Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.LocationUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LocationOut"}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Delete Location","deprecated":true,"parameters":[{"type":"string","description":"Location ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/maintenance":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Maintenance"],"summary":"Query All Maintenance","parameters":[{"enum":["scheduled","completed","both"],"type":"string","x-enum-varnames":["MaintenanceFilterStatusScheduled","MaintenanceFilterStatusCompleted","MaintenanceFilterStatusBoth"],"name":"status","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.MaintenanceEntryWithDetails"}}}}}},"/v1/maintenance/{id}":{"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Maintenance"],"summary":"Update Maintenance Entry","parameters":[{"type":"string","description":"Maintenance ID","name":"id","in":"path","required":true},{"description":"Entry Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.MaintenanceEntryUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.MaintenanceEntry"}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Maintenance"],"summary":"Delete Maintenance Entry","parameters":[{"type":"string","description":"Maintenance ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/notifiers":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Notifiers"],"summary":"Get Notifiers","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.NotifierOut"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Notifiers"],"summary":"Create Notifier","parameters":[{"description":"Notifier Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.NotifierCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.NotifierOut"}}}}},"/v1/notifiers/test":{"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Notifiers"],"summary":"Test Notifier","parameters":[{"type":"string","description":"URL","name":"url","in":"query","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/notifiers/{id}":{"put":{"security":[{"Bearer":[]}],"tags":["Notifiers"],"summary":"Update Notifier","parameters":[{"type":"string","description":"Notifier ID","name":"id","in":"path","required":true},{"description":"Notifier Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.NotifierUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.NotifierOut"}}}},"delete":{"security":[{"Bearer":[]}],"tags":["Notifiers"],"summary":"Delete a Notifier","parameters":[{"type":"string","description":"Notifier ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/products/search-from-barcode":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Search EAN from Barcode","parameters":[{"type":"string","description":"barcode to be searched","name":"data","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.BarcodeProduct"}}}}}},"/v1/qrcode":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Create QR Code","parameters":[{"type":"string","description":"data to be encoded into qrcode","name":"data","in":"query"}],"responses":{"200":{"description":"image/jpeg","schema":{"type":"string"}}}}},"/v1/reporting/bill-of-materials":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Reporting"],"summary":"Export Bill of Materials","responses":{"200":{"description":"text/csv","schema":{"type":"string"}}}}},"/v1/status":{"get":{"produces":["application/json"],"tags":["Base"],"summary":"Application Info","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.APISummary"}}}}},"/v1/users/change-password":{"put":{"security":[{"Bearer":[]}],"tags":["User"],"summary":"Change Password","parameters":[{"description":"Password Payload","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/v1.ChangePassword"}}],"responses":{"204":{"description":"No Content"}}}},"/v1/users/login":{"post":{"consumes":["application/x-www-form-urlencoded","application/json"],"produces":["application/json"],"tags":["Authentication"],"summary":"User Login","parameters":[{"description":"Login Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/v1.LoginForm"}},{"type":"string","description":"auth provider","name":"provider","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.TokenResponse"}}}}},"/v1/users/logout":{"post":{"security":[{"Bearer":[]}],"tags":["Authentication"],"summary":"User Logout","responses":{"204":{"description":"No Content"}}}},"/v1/users/refresh":{"get":{"security":[{"Bearer":[]}],"description":"handleAuthRefresh returns a handler that will issue a new token from an existing token.\nThis does not validate that the user still exists within the database.","tags":["Authentication"],"summary":"User Token Refresh","responses":{"200":{"description":"OK"}}}},"/v1/users/register":{"post":{"produces":["application/json"],"tags":["User"],"summary":"Register New User","parameters":[{"description":"User Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/services.UserRegistration"}}],"responses":{"204":{"description":"No Content"}}}},"/v1/users/self":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["User"],"summary":"Get User Self","responses":{"200":{"description":"OK","schema":{"allOf":[{"$ref":"#/definitions/v1.Wrapped"},{"type":"object","properties":{"item":{"$ref":"#/definitions/repo.UserOut"}}}]}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["User"],"summary":"Update Account","parameters":[{"description":"User Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.UserUpdate"}}],"responses":{"200":{"description":"OK","schema":{"allOf":[{"$ref":"#/definitions/v1.Wrapped"},{"type":"object","properties":{"item":{"$ref":"#/definitions/repo.UserUpdate"}}}]}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["User"],"summary":"Delete Account","responses":{"204":{"description":"No Content"}}}}},"definitions":{"attachment.Type":{"type":"string","enum":["attachment","photo","manual","warranty","attachment","receipt","thumbnail"],"x-enum-varnames":["DefaultType","TypePhoto","TypeManual","TypeWarranty","TypeAttachment","TypeReceipt","TypeThumbnail"]},"authroles.Role":{"type":"string","enum":["user","admin","user","attachments"],"x-enum-varnames":["DefaultRole","RoleAdmin","RoleUser","RoleAttachments"]},"currencies.Currency":{"type":"object","properties":{"code":{"type":"string"},"local":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"}}},"ent.Attachment":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the AttachmentQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.AttachmentEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"mime_type":{"description":"MimeType holds the value of the \"mime_type\" field.","type":"string"},"path":{"description":"Path holds the value of the \"path\" field.","type":"string"},"primary":{"description":"Primary holds the value of the \"primary\" field.","type":"boolean"},"title":{"description":"Title holds the value of the \"title\" field.","type":"string"},"type":{"description":"Type holds the value of the \"type\" field.","allOf":[{"$ref":"#/definitions/attachment.Type"}]},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.AttachmentEdges":{"type":"object","properties":{"entity":{"description":"Entity holds the value of the entity edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]},"thumbnail":{"description":"Thumbnail holds the value of the thumbnail edge.","allOf":[{"$ref":"#/definitions/ent.Attachment"}]}}},"ent.AuthRoles":{"type":"object","properties":{"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the AuthRolesQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.AuthRolesEdges"}]},"id":{"description":"ID of the ent.","type":"integer"},"role":{"description":"Role holds the value of the \"role\" field.","allOf":[{"$ref":"#/definitions/authroles.Role"}]}}},"ent.AuthRolesEdges":{"type":"object","properties":{"token":{"description":"Token holds the value of the token edge.","allOf":[{"$ref":"#/definitions/ent.AuthTokens"}]}}},"ent.AuthTokens":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the AuthTokensQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.AuthTokensEdges"}]},"expires_at":{"description":"ExpiresAt holds the value of the \"expires_at\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"token":{"description":"Token holds the value of the \"token\" field.","type":"array","items":{"type":"integer"}},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.AuthTokensEdges":{"type":"object","properties":{"roles":{"description":"Roles holds the value of the roles edge.","allOf":[{"$ref":"#/definitions/ent.AuthRoles"}]},"user":{"description":"User holds the value of the user edge.","allOf":[{"$ref":"#/definitions/ent.User"}]}}},"ent.Entity":{"type":"object","properties":{"archived":{"description":"Archived holds the value of the \"archived\" field.","type":"boolean"},"asset_id":{"description":"AssetID holds the value of the \"asset_id\" field.","type":"integer"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the EntityQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.EntityEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"import_ref":{"description":"ImportRef holds the value of the \"import_ref\" field.","type":"string"},"insured":{"description":"Insured holds the value of the \"insured\" field.","type":"boolean"},"lifetime_warranty":{"description":"LifetimeWarranty holds the value of the \"lifetime_warranty\" field.","type":"boolean"},"manufacturer":{"description":"Manufacturer holds the value of the \"manufacturer\" field.","type":"string"},"model_number":{"description":"ModelNumber holds the value of the \"model_number\" field.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"notes":{"description":"Notes holds the value of the \"notes\" field.","type":"string"},"purchase_from":{"description":"PurchaseFrom holds the value of the \"purchase_from\" field.","type":"string"},"purchase_price":{"description":"PurchasePrice holds the value of the \"purchase_price\" field.","type":"number"},"purchase_time":{"description":"PurchaseTime holds the value of the \"purchase_time\" field.","type":"string"},"quantity":{"description":"Quantity holds the value of the \"quantity\" field.","type":"integer"},"serial_number":{"description":"SerialNumber holds the value of the \"serial_number\" field.","type":"string"},"sold_notes":{"description":"SoldNotes holds the value of the \"sold_notes\" field.","type":"string"},"sold_price":{"description":"SoldPrice holds the value of the \"sold_price\" field.","type":"number"},"sold_time":{"description":"SoldTime holds the value of the \"sold_time\" field.","type":"string"},"sold_to":{"description":"SoldTo holds the value of the \"sold_to\" field.","type":"string"},"sync_child_entities_locations":{"description":"SyncChildEntitiesLocations holds the value of the \"sync_child_entities_locations\" field.","type":"boolean"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"},"warranty_details":{"description":"WarrantyDetails holds the value of the \"warranty_details\" field.","type":"string"},"warranty_expires":{"description":"WarrantyExpires holds the value of the \"warranty_expires\" field.","type":"string"}}},"ent.EntityEdges":{"type":"object","properties":{"attachments":{"description":"Attachments holds the value of the attachments edge.","type":"array","items":{"$ref":"#/definitions/ent.Attachment"}},"children":{"description":"Children holds the value of the children edge.","type":"array","items":{"$ref":"#/definitions/ent.Entity"}},"entity":{"description":"Entity holds the value of the entity edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]},"fields":{"description":"Fields holds the value of the fields edge.","type":"array","items":{"$ref":"#/definitions/ent.EntityField"}},"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]},"label":{"description":"Label holds the value of the label edge.","type":"array","items":{"$ref":"#/definitions/ent.Label"}},"location":{"description":"Location holds the value of the location edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]},"maintenance_entries":{"description":"MaintenanceEntries holds the value of the maintenance_entries edge.","type":"array","items":{"$ref":"#/definitions/ent.MaintenanceEntry"}},"parent":{"description":"Parent holds the value of the parent edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]},"type":{"description":"Type holds the value of the type edge.","allOf":[{"$ref":"#/definitions/ent.EntityType"}]}}},"ent.EntityField":{"type":"object","properties":{"boolean_value":{"description":"BooleanValue holds the value of the \"boolean_value\" field.","type":"boolean"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the EntityFieldQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.EntityFieldEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"number_value":{"description":"NumberValue holds the value of the \"number_value\" field.","type":"integer"},"text_value":{"description":"TextValue holds the value of the \"text_value\" field.","type":"string"},"time_value":{"description":"TimeValue holds the value of the \"time_value\" field.","type":"string"},"type":{"description":"Type holds the value of the \"type\" field.","allOf":[{"$ref":"#/definitions/entityfield.Type"}]},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.EntityFieldEdges":{"type":"object","properties":{"entity":{"description":"Entity holds the value of the entity edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]}}},"ent.EntityType":{"type":"object","properties":{"color":{"description":"Color holds the value of the \"color\" field.","type":"string"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the EntityTypeQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.EntityTypeEdges"}]},"icon":{"description":"Icon holds the value of the \"icon\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"is_location":{"description":"IsLocation holds the value of the \"is_location\" field.","type":"boolean"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.EntityTypeEdges":{"type":"object","properties":{"entities":{"description":"Entities holds the value of the entities edge.","type":"array","items":{"$ref":"#/definitions/ent.Entity"}},"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]}}},"ent.Group":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"currency":{"description":"Currency holds the value of the \"currency\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the GroupQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.GroupEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.GroupEdges":{"type":"object","properties":{"entities":{"description":"Entities holds the value of the entities edge.","type":"array","items":{"$ref":"#/definitions/ent.Entity"}},"entity_types":{"description":"EntityTypes holds the value of the entity_types edge.","type":"array","items":{"$ref":"#/definitions/ent.EntityType"}},"invitation_tokens":{"description":"InvitationTokens holds the value of the invitation_tokens edge.","type":"array","items":{"$ref":"#/definitions/ent.GroupInvitationToken"}},"labels":{"description":"Labels holds the value of the labels edge.","type":"array","items":{"$ref":"#/definitions/ent.Label"}},"notifiers":{"description":"Notifiers holds the value of the notifiers edge.","type":"array","items":{"$ref":"#/definitions/ent.Notifier"}},"users":{"description":"Users holds the value of the users edge.","type":"array","items":{"$ref":"#/definitions/ent.User"}}}},"ent.GroupInvitationToken":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the GroupInvitationTokenQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.GroupInvitationTokenEdges"}]},"expires_at":{"description":"ExpiresAt holds the value of the \"expires_at\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"token":{"description":"Token holds the value of the \"token\" field.","type":"array","items":{"type":"integer"}},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"},"uses":{"description":"Uses holds the value of the \"uses\" field.","type":"integer"}}},"ent.GroupInvitationTokenEdges":{"type":"object","properties":{"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]}}},"ent.Label":{"type":"object","properties":{"color":{"description":"Color holds the value of the \"color\" field.","type":"string"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the LabelQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.LabelEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.LabelEdges":{"type":"object","properties":{"entities":{"description":"Entities holds the value of the entities edge.","type":"array","items":{"$ref":"#/definitions/ent.Entity"}},"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]}}},"ent.MaintenanceEntry":{"type":"object","properties":{"cost":{"description":"Cost holds the value of the \"cost\" field.","type":"number"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"date":{"description":"Date holds the value of the \"date\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the MaintenanceEntryQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.MaintenanceEntryEdges"}]},"entity_id":{"description":"EntityID holds the value of the \"entity_id\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"scheduled_date":{"description":"ScheduledDate holds the value of the \"scheduled_date\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.MaintenanceEntryEdges":{"type":"object","properties":{"entity":{"description":"Entity holds the value of the entity edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]}}},"ent.Notifier":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the NotifierQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.NotifierEdges"}]},"group_id":{"description":"GroupID holds the value of the \"group_id\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"is_active":{"description":"IsActive holds the value of the \"is_active\" field.","type":"boolean"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"},"user_id":{"description":"UserID holds the value of the \"user_id\" field.","type":"string"}}},"ent.NotifierEdges":{"type":"object","properties":{"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]},"user":{"description":"User holds the value of the user edge.","allOf":[{"$ref":"#/definitions/ent.User"}]}}},"ent.User":{"type":"object","properties":{"activated_on":{"description":"ActivatedOn holds the value of the \"activated_on\" field.","type":"string"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the UserQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.UserEdges"}]},"email":{"description":"Email holds the value of the \"email\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"is_superuser":{"description":"IsSuperuser holds the value of the \"is_superuser\" field.","type":"boolean"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"role":{"description":"Role holds the value of the \"role\" field.","allOf":[{"$ref":"#/definitions/user.Role"}]},"superuser":{"description":"Superuser holds the value of the \"superuser\" field.","type":"boolean"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.UserEdges":{"type":"object","properties":{"auth_tokens":{"description":"AuthTokens holds the value of the auth_tokens edge.","type":"array","items":{"$ref":"#/definitions/ent.AuthTokens"}},"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]},"notifiers":{"description":"Notifiers holds the value of the notifiers edge.","type":"array","items":{"$ref":"#/definitions/ent.Notifier"}}}},"entityfield.Type":{"type":"string","enum":["text","number","boolean","time"],"x-enum-varnames":["TypeText","TypeNumber","TypeBoolean","TypeTime"]},"repo.BarcodeProduct":{"type":"object","properties":{"barcode":{"type":"string"},"imageBase64":{"type":"string"},"imageURL":{"type":"string"},"item":{"$ref":"#/definitions/repo.ItemCreate"},"manufacturer":{"type":"string"},"modelNumber":{"description":"Identifications","type":"string"},"notes":{"description":"Extras","type":"string"},"search_engine_name":{"type":"string"}}},"repo.Group":{"type":"object","properties":{"createdAt":{"type":"string"},"currency":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.GroupStatistics":{"type":"object","properties":{"totalItemPrice":{"type":"number"},"totalItems":{"type":"integer"},"totalLabels":{"type":"integer"},"totalLocations":{"type":"integer"},"totalUsers":{"type":"integer"},"totalWithWarranty":{"type":"integer"}}},"repo.GroupUpdate":{"type":"object","properties":{"currency":{"type":"string"},"name":{"type":"string"}}},"repo.ItemAttachment":{"type":"object","properties":{"createdAt":{"type":"string"},"id":{"type":"string"},"mimeType":{"type":"string"},"path":{"type":"string"},"primary":{"type":"boolean"},"thumbnail":{"$ref":"#/definitions/ent.Attachment"},"title":{"type":"string"},"type":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.ItemAttachmentUpdate":{"type":"object","properties":{"primary":{"type":"boolean"},"title":{"type":"string"},"type":{"type":"string"}}},"repo.ItemCreate":{"type":"object","required":["name"],"properties":{"description":{"type":"string","maxLength":1000},"labelIds":{"type":"array","items":{"type":"string"}},"locationId":{"description":"Edges","type":"string"},"name":{"type":"string","maxLength":255,"minLength":1},"parentId":{"type":"string","x-nullable":true},"quantity":{"type":"integer"}}},"repo.ItemField":{"type":"object","properties":{"booleanValue":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"numberValue":{"type":"integer"},"textValue":{"type":"string"},"type":{"type":"string"}}},"repo.ItemOut":{"type":"object","properties":{"archived":{"type":"boolean"},"assetId":{"type":"string","example":"0"},"attachments":{"type":"array","items":{"$ref":"#/definitions/repo.ItemAttachment"}},"createdAt":{"type":"string"},"description":{"type":"string"},"fields":{"type":"array","items":{"$ref":"#/definitions/repo.ItemField"}},"id":{"type":"string"},"imageId":{"type":"string","x-nullable":true,"x-omitempty":true},"insured":{"type":"boolean"},"labels":{"type":"array","items":{"$ref":"#/definitions/repo.LabelSummary"}},"lifetimeWarranty":{"description":"Warranty","type":"boolean"},"location":{"description":"Edges","allOf":[{"$ref":"#/definitions/repo.LocationSummary"}],"x-nullable":true,"x-omitempty":true},"manufacturer":{"type":"string"},"modelNumber":{"type":"string"},"name":{"type":"string"},"notes":{"description":"Extras","type":"string"},"parent":{"allOf":[{"$ref":"#/definitions/repo.ItemSummary"}],"x-nullable":true,"x-omitempty":true},"purchaseFrom":{"type":"string"},"purchasePrice":{"type":"number"},"purchaseTime":{"description":"Purchase","type":"string"},"quantity":{"type":"integer"},"serialNumber":{"type":"string"},"soldNotes":{"type":"string"},"soldPrice":{"type":"number"},"soldTime":{"description":"Sold","type":"string"},"soldTo":{"type":"string"},"syncChildItemsLocations":{"type":"boolean"},"thumbnailId":{"type":"string","x-nullable":true,"x-omitempty":true},"updatedAt":{"type":"string"},"warrantyDetails":{"type":"string"},"warrantyExpires":{"type":"string"}}},"repo.ItemPatch":{"type":"object","properties":{"id":{"type":"string"},"quantity":{"type":"integer","x-nullable":true,"x-omitempty":true}}},"repo.ItemPath":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"$ref":"#/definitions/repo.ItemType"}}},"repo.ItemSummary":{"type":"object","properties":{"archived":{"type":"boolean"},"assetId":{"type":"string","example":"0"},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"imageId":{"type":"string","x-nullable":true,"x-omitempty":true},"insured":{"type":"boolean"},"labels":{"type":"array","items":{"$ref":"#/definitions/repo.LabelSummary"}},"location":{"description":"Edges","allOf":[{"$ref":"#/definitions/repo.LocationSummary"}],"x-nullable":true,"x-omitempty":true},"name":{"type":"string"},"purchasePrice":{"type":"number"},"quantity":{"type":"integer"},"soldTime":{"description":"Sale details","type":"string"},"thumbnailId":{"type":"string","x-nullable":true,"x-omitempty":true},"updatedAt":{"type":"string"}}},"repo.ItemType":{"type":"string","enum":["location","item"],"x-enum-varnames":["ItemTypeLocation","ItemTypeItem"]},"repo.ItemUpdate":{"type":"object","required":["name"],"properties":{"archived":{"type":"boolean"},"assetId":{"type":"string"},"description":{"type":"string","maxLength":1000},"fields":{"type":"array","items":{"$ref":"#/definitions/repo.ItemField"}},"id":{"type":"string"},"insured":{"type":"boolean"},"labelIds":{"type":"array","items":{"type":"string"}},"lifetimeWarranty":{"description":"Warranty","type":"boolean"},"locationId":{"description":"Edges","type":"string"},"manufacturer":{"type":"string"},"modelNumber":{"type":"string"},"name":{"type":"string","maxLength":255,"minLength":1},"notes":{"description":"Extras","type":"string"},"parentId":{"type":"string","x-nullable":true,"x-omitempty":true},"purchaseFrom":{"type":"string","maxLength":255},"purchasePrice":{"type":"number","x-nullable":true,"x-omitempty":true},"purchaseTime":{"description":"Purchase","type":"string"},"quantity":{"type":"integer"},"serialNumber":{"description":"Identifications","type":"string"},"soldNotes":{"type":"string"},"soldPrice":{"type":"number","x-nullable":true,"x-omitempty":true},"soldTime":{"description":"Sold","type":"string"},"soldTo":{"type":"string","maxLength":255},"syncChildItemsLocations":{"type":"boolean"},"warrantyDetails":{"type":"string"},"warrantyExpires":{"type":"string"}}},"repo.LabelCreate":{"type":"object","required":["name"],"properties":{"color":{"type":"string"},"description":{"type":"string","maxLength":255},"name":{"type":"string","maxLength":255,"minLength":1}}},"repo.LabelOut":{"type":"object","properties":{"color":{"type":"string"},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LabelSummary":{"type":"object","properties":{"color":{"type":"string"},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LocationCreate":{"type":"object","properties":{"description":{"type":"string"},"name":{"type":"string"},"parentId":{"type":"string","x-nullable":true}}},"repo.LocationOut":{"type":"object","properties":{"children":{"type":"array","items":{"$ref":"#/definitions/repo.LocationSummary"}},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"parent":{"$ref":"#/definitions/repo.LocationSummary"},"totalPrice":{"type":"number"},"updatedAt":{"type":"string"}}},"repo.LocationOutCount":{"type":"object","properties":{"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"itemCount":{"type":"integer"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LocationSummary":{"type":"object","properties":{"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LocationUpdate":{"type":"object","properties":{"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"parentId":{"type":"string","x-nullable":true}}},"repo.MaintenanceEntry":{"type":"object","properties":{"completedDate":{"type":"string"},"cost":{"type":"string","example":"0"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"scheduledDate":{"type":"string"}}},"repo.MaintenanceEntryCreate":{"type":"object","required":["name"],"properties":{"completedDate":{"type":"string"},"cost":{"type":"string","example":"0"},"description":{"type":"string"},"name":{"type":"string"},"scheduledDate":{"type":"string"}}},"repo.MaintenanceEntryUpdate":{"type":"object","properties":{"completedDate":{"type":"string"},"cost":{"type":"string","example":"0"},"description":{"type":"string"},"name":{"type":"string"},"scheduledDate":{"type":"string"}}},"repo.MaintenanceEntryWithDetails":{"type":"object","properties":{"completedDate":{"type":"string"},"cost":{"type":"string","example":"0"},"description":{"type":"string"},"id":{"type":"string"},"itemID":{"type":"string"},"itemName":{"type":"string"},"name":{"type":"string"},"scheduledDate":{"type":"string"}}},"repo.MaintenanceFilterStatus":{"type":"string","enum":["scheduled","completed","both"],"x-enum-varnames":["MaintenanceFilterStatusScheduled","MaintenanceFilterStatusCompleted","MaintenanceFilterStatusBoth"]},"repo.NotifierCreate":{"type":"object","required":["name","url"],"properties":{"isActive":{"type":"boolean"},"name":{"type":"string","maxLength":255,"minLength":1},"url":{"type":"string"}}},"repo.NotifierOut":{"type":"object","properties":{"createdAt":{"type":"string"},"groupId":{"type":"string"},"id":{"type":"string"},"isActive":{"type":"boolean"},"name":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"userId":{"type":"string"}}},"repo.NotifierUpdate":{"type":"object","required":["name"],"properties":{"isActive":{"type":"boolean"},"name":{"type":"string","maxLength":255,"minLength":1},"url":{"type":"string","x-nullable":true}}},"repo.PaginationResult-repo_ItemSummary":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/repo.ItemSummary"}},"page":{"type":"integer"},"pageSize":{"type":"integer"},"total":{"type":"integer"}}},"repo.TotalsByOrganizer":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"total":{"type":"number"}}},"repo.TreeItem":{"type":"object","properties":{"children":{"type":"array","items":{"$ref":"#/definitions/repo.TreeItem"}},"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"}}},"repo.UserOut":{"type":"object","properties":{"email":{"type":"string"},"groupId":{"type":"string"},"groupName":{"type":"string"},"id":{"type":"string"},"isOwner":{"type":"boolean"},"isSuperuser":{"type":"boolean"},"name":{"type":"string"}}},"repo.UserUpdate":{"type":"object","properties":{"email":{"type":"string"},"name":{"type":"string"}}},"repo.ValueOverTime":{"type":"object","properties":{"end":{"type":"string"},"entries":{"type":"array","items":{"$ref":"#/definitions/repo.ValueOverTimeEntry"}},"start":{"type":"string"},"valueAtEnd":{"type":"number"},"valueAtStart":{"type":"number"}}},"repo.ValueOverTimeEntry":{"type":"object","properties":{"date":{"type":"string"},"name":{"type":"string"},"value":{"type":"number"}}},"services.Latest":{"type":"object","properties":{"date":{"type":"string"},"version":{"type":"string"}}},"services.UserRegistration":{"type":"object","properties":{"email":{"type":"string"},"name":{"type":"string"},"password":{"type":"string"},"token":{"type":"string"}}},"user.Role":{"type":"string","enum":["user","user","owner"],"x-enum-varnames":["DefaultRole","RoleUser","RoleOwner"]},"v1.APISummary":{"type":"object","properties":{"allowRegistration":{"type":"boolean"},"build":{"$ref":"#/definitions/v1.Build"},"demo":{"type":"boolean"},"health":{"type":"boolean"},"labelPrinting":{"type":"boolean"},"latest":{"$ref":"#/definitions/services.Latest"},"message":{"type":"string"},"title":{"type":"string"},"versions":{"type":"array","items":{"type":"string"}}}},"v1.ActionAmountResult":{"type":"object","properties":{"completed":{"type":"integer"}}},"v1.Build":{"type":"object","properties":{"buildTime":{"type":"string"},"commit":{"type":"string"},"version":{"type":"string"}}},"v1.ChangePassword":{"type":"object","properties":{"current":{"type":"string"},"new":{"type":"string"}}},"v1.GroupInvitation":{"type":"object","properties":{"expiresAt":{"type":"string"},"token":{"type":"string"},"uses":{"type":"integer"}}},"v1.GroupInvitationCreate":{"type":"object","required":["uses"],"properties":{"expiresAt":{"type":"string"},"uses":{"type":"integer","maximum":100,"minimum":1}}},"v1.ItemAttachmentToken":{"type":"object","properties":{"token":{"type":"string"}}},"v1.LoginForm":{"type":"object","properties":{"password":{"type":"string","example":"admin"},"stayLoggedIn":{"type":"boolean"},"username":{"type":"string","example":"admin@admin.com"}}},"v1.TokenResponse":{"type":"object","properties":{"attachmentToken":{"type":"string"},"expiresAt":{"type":"string"},"token":{"type":"string"}}},"v1.Wrapped":{"type":"object","properties":{"item":{}}},"validate.ErrorResponse":{"type":"object","properties":{"error":{"type":"string"},"fields":{"type":"string"}}}},"securityDefinitions":{"Bearer":{"description":"\"Type 'Bearer TOKEN' to correctly set the API Key\"","type":"apiKey","name":"Authorization","in":"header"}}}` // SwaggerInfo holds exported Swagger Info so clients can modify it var SwaggerInfo = &swag.Spec{ diff --git a/backend/app/api/static/docs/swagger.json b/backend/app/api/static/docs/swagger.json index aff5e38a..2b027605 100644 --- a/backend/app/api/static/docs/swagger.json +++ b/backend/app/api/static/docs/swagger.json @@ -1 +1 @@ -{"schemes":["https","http"],"swagger":"2.0","info":{"description":"Track, Manage, and Organize your Things.","title":"Homebox API","contact":{"name":"Homebox Team","url":"https://discord.homebox.software"},"version":"1.0"},"host":"demo.homebox.software","basePath":"/api","paths":{"/v1/actions/create-missing-thumbnails":{"post":{"security":[{"Bearer":[]}],"description":"Creates thumbnails for items that are missing them","produces":["application/json"],"tags":["Actions"],"summary":"Create Missing Thumbnails","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/actions/ensure-asset-ids":{"post":{"security":[{"Bearer":[]}],"description":"Ensures all items in the database have an asset ID","produces":["application/json"],"tags":["Actions"],"summary":"Ensure Asset IDs","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/actions/ensure-import-refs":{"post":{"security":[{"Bearer":[]}],"description":"Ensures all items in the database have an import ref","produces":["application/json"],"tags":["Actions"],"summary":"Ensures Import Refs","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/actions/set-primary-photos":{"post":{"security":[{"Bearer":[]}],"description":"Sets the first photo of each item as the primary photo","produces":["application/json"],"tags":["Actions"],"summary":"Set Primary Photos","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/actions/zero-item-time-fields":{"post":{"security":[{"Bearer":[]}],"description":"Resets all item date fields to the beginning of the day","produces":["application/json"],"tags":["Actions"],"summary":"Zero Out Time Fields","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/assets/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Get Item by Asset ID","parameters":[{"type":"string","description":"Asset ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.PaginationResult-repo_ItemSummary"}}}}},"/v1/currency":{"get":{"produces":["application/json"],"tags":["Base"],"summary":"Currency","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/currencies.Currency"}}}}},"/v1/groups":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Group"],"summary":"Get Group","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.Group"}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Group"],"summary":"Update Group","parameters":[{"description":"User Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.GroupUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.Group"}}}}},"/v1/groups/invitations":{"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Group"],"summary":"Create Group Invitation","parameters":[{"description":"User Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/v1.GroupInvitationCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.GroupInvitation"}}}}},"/v1/groups/statistics":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Statistics"],"summary":"Get Group Statistics","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.GroupStatistics"}}}}},"/v1/groups/statistics/labels":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Statistics"],"summary":"Get Label Statistics","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.TotalsByOrganizer"}}}}}},"/v1/groups/statistics/locations":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Statistics"],"summary":"Get Location Statistics","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.TotalsByOrganizer"}}}}}},"/v1/groups/statistics/purchase-price":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Statistics"],"summary":"Get Purchase Price Statistics","parameters":[{"type":"string","description":"start date","name":"start","in":"query"},{"type":"string","description":"end date","name":"end","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ValueOverTime"}}}}},"/v1/items":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Query All Items","deprecated":true,"parameters":[{"type":"string","description":"search string","name":"q","in":"query"},{"type":"integer","description":"page number","name":"page","in":"query"},{"type":"integer","description":"items per page","name":"pageSize","in":"query"},{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"label Ids","name":"labels","in":"query"},{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"location Ids","name":"locations","in":"query"},{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"parent Ids","name":"parentIds","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.PaginationResult-repo_ItemSummary"}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Create Item","deprecated":true,"parameters":[{"description":"Item Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemCreate"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/repo.ItemSummary"}}}}},"/v1/items/export":{"get":{"security":[{"Bearer":[]}],"tags":["Items"],"summary":"(Deprecated) Export Items","deprecated":true,"responses":{"200":{"description":"text/csv","schema":{"type":"string"}}}}},"/v1/items/fields":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Get All Custom Field Names","deprecated":true,"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"type":"string"}}}}}},"/v1/items/fields/values":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Get All Custom Field Values","deprecated":true,"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"type":"string"}}}}}},"/v1/items/import":{"post":{"security":[{"Bearer":[]}],"consumes":["multipart/form-data"],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Import Items","deprecated":true,"parameters":[{"type":"file","description":"Image to upload","name":"csv","in":"formData","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/items/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Get Item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Update Item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"description":"Item Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Delete Item","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}},"patch":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Update Item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"description":"Item Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemPatch"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}}},"/v1/items/{id}/attachments":{"post":{"security":[{"Bearer":[]}],"consumes":["multipart/form-data"],"produces":["application/json"],"tags":["Items Attachments"],"summary":"Create Item Attachment","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"file","description":"File attachment","name":"file","in":"formData","required":true},{"type":"string","description":"Type of file","name":"type","in":"formData"},{"type":"boolean","description":"Is this the primary attachment","name":"primary","in":"formData"},{"type":"string","description":"name of the file including extension","name":"name","in":"formData","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}},"422":{"description":"Unprocessable Entity","schema":{"$ref":"#/definitions/validate.ErrorResponse"}}}}},"/v1/items/{id}/attachments/{attachment_id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/octet-stream"],"tags":["Items Attachments"],"summary":"Get Item Attachment","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ItemAttachmentToken"}}}},"put":{"security":[{"Bearer":[]}],"tags":["Items Attachments"],"summary":"Update Item Attachment","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true},{"description":"Attachment Update","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemAttachmentUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}},"delete":{"security":[{"Bearer":[]}],"tags":["Items Attachments"],"summary":"Delete Item Attachment","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/items/{id}/maintenance":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Item Maintenance"],"summary":"Get Maintenance Log","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"enum":["scheduled","completed","both"],"type":"string","x-enum-varnames":["MaintenanceFilterStatusScheduled","MaintenanceFilterStatusCompleted","MaintenanceFilterStatusBoth"],"name":"status","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.MaintenanceEntryWithDetails"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Item Maintenance"],"summary":"Create Maintenance Entry","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"description":"Entry Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.MaintenanceEntryCreate"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/repo.MaintenanceEntry"}}}}},"/v1/items/{id}/path":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Get the full path of an item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.ItemPath"}}}}}},"/v1/labelmaker/assets/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Get Asset label","parameters":[{"type":"string","description":"Asset ID","name":"id","in":"path","required":true},{"type":"boolean","description":"Print this label, defaults to false","name":"print","in":"query"}],"responses":{"200":{"description":"image/png","schema":{"type":"string"}}}}},"/v1/labelmaker/item/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Get Item label","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"boolean","description":"Print this label, defaults to false","name":"print","in":"query"}],"responses":{"200":{"description":"image/png","schema":{"type":"string"}}}}},"/v1/labelmaker/location/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"Get Location label","parameters":[{"type":"string","description":"Location ID","name":"id","in":"path","required":true},{"type":"boolean","description":"Print this label, defaults to false","name":"print","in":"query"}],"responses":{"200":{"description":"image/png","schema":{"type":"string"}}}}},"/v1/labels":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Get All Labels","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.LabelOut"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Create Label","parameters":[{"description":"Label Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.LabelCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LabelSummary"}}}}},"/v1/labels/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Get Label","parameters":[{"type":"string","description":"Label ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LabelOut"}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Update Label","parameters":[{"type":"string","description":"Label ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LabelOut"}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Delete Label","parameters":[{"type":"string","description":"Label ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/locations":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Get All Locations","deprecated":true,"parameters":[{"type":"boolean","description":"Filter locations with parents","name":"filterChildren","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.LocationOutCount"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Create Location","deprecated":true,"parameters":[{"description":"Location Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.LocationCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LocationSummary"}}}}},"/v1/locations/tree":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Get Locations Tree","deprecated":true,"parameters":[{"type":"boolean","description":"include items in response tree","name":"withItems","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.TreeItem"}}}}}},"/v1/locations/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Get Location","deprecated":true,"parameters":[{"type":"string","description":"Location ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LocationOut"}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Update Location","deprecated":true,"parameters":[{"type":"string","description":"Location ID","name":"id","in":"path","required":true},{"description":"Location Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.LocationUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LocationOut"}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Delete Location","deprecated":true,"parameters":[{"type":"string","description":"Location ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/maintenance":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Maintenance"],"summary":"Query All Maintenance","parameters":[{"enum":["scheduled","completed","both"],"type":"string","x-enum-varnames":["MaintenanceFilterStatusScheduled","MaintenanceFilterStatusCompleted","MaintenanceFilterStatusBoth"],"name":"status","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.MaintenanceEntryWithDetails"}}}}}},"/v1/maintenance/{id}":{"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Maintenance"],"summary":"Update Maintenance Entry","parameters":[{"type":"string","description":"Maintenance ID","name":"id","in":"path","required":true},{"description":"Entry Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.MaintenanceEntryUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.MaintenanceEntry"}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Maintenance"],"summary":"Delete Maintenance Entry","parameters":[{"type":"string","description":"Maintenance ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/notifiers":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Notifiers"],"summary":"Get Notifiers","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.NotifierOut"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Notifiers"],"summary":"Create Notifier","parameters":[{"description":"Notifier Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.NotifierCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.NotifierOut"}}}}},"/v1/notifiers/test":{"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Notifiers"],"summary":"Test Notifier","parameters":[{"type":"string","description":"URL","name":"url","in":"query","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/notifiers/{id}":{"put":{"security":[{"Bearer":[]}],"tags":["Notifiers"],"summary":"Update Notifier","parameters":[{"type":"string","description":"Notifier ID","name":"id","in":"path","required":true},{"description":"Notifier Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.NotifierUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.NotifierOut"}}}},"delete":{"security":[{"Bearer":[]}],"tags":["Notifiers"],"summary":"Delete a Notifier","parameters":[{"type":"string","description":"Notifier ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/products/search-from-barcode":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Search EAN from Barcode","parameters":[{"type":"string","description":"barcode to be searched","name":"data","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.BarcodeProduct"}}}}}},"/v1/qrcode":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Create QR Code","parameters":[{"type":"string","description":"data to be encoded into qrcode","name":"data","in":"query"}],"responses":{"200":{"description":"image/jpeg","schema":{"type":"string"}}}}},"/v1/reporting/bill-of-materials":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Reporting"],"summary":"Export Bill of Materials","responses":{"200":{"description":"text/csv","schema":{"type":"string"}}}}},"/v1/status":{"get":{"produces":["application/json"],"tags":["Base"],"summary":"Application Info","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.APISummary"}}}}},"/v1/users/change-password":{"put":{"security":[{"Bearer":[]}],"tags":["User"],"summary":"Change Password","parameters":[{"description":"Password Payload","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/v1.ChangePassword"}}],"responses":{"204":{"description":"No Content"}}}},"/v1/users/login":{"post":{"consumes":["application/x-www-form-urlencoded","application/json"],"produces":["application/json"],"tags":["Authentication"],"summary":"User Login","parameters":[{"description":"Login Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/v1.LoginForm"}},{"type":"string","description":"auth provider","name":"provider","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.TokenResponse"}}}}},"/v1/users/logout":{"post":{"security":[{"Bearer":[]}],"tags":["Authentication"],"summary":"User Logout","responses":{"204":{"description":"No Content"}}}},"/v1/users/refresh":{"get":{"security":[{"Bearer":[]}],"description":"handleAuthRefresh returns a handler that will issue a new token from an existing token.\nThis does not validate that the user still exists within the database.","tags":["Authentication"],"summary":"User Token Refresh","responses":{"200":{"description":"OK"}}}},"/v1/users/register":{"post":{"produces":["application/json"],"tags":["User"],"summary":"Register New User","parameters":[{"description":"User Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/services.UserRegistration"}}],"responses":{"204":{"description":"No Content"}}}},"/v1/users/self":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["User"],"summary":"Get User Self","responses":{"200":{"description":"OK","schema":{"allOf":[{"$ref":"#/definitions/v1.Wrapped"},{"type":"object","properties":{"item":{"$ref":"#/definitions/repo.UserOut"}}}]}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["User"],"summary":"Update Account","parameters":[{"description":"User Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.UserUpdate"}}],"responses":{"200":{"description":"OK","schema":{"allOf":[{"$ref":"#/definitions/v1.Wrapped"},{"type":"object","properties":{"item":{"$ref":"#/definitions/repo.UserUpdate"}}}]}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["User"],"summary":"Delete Account","responses":{"204":{"description":"No Content"}}}}},"definitions":{"attachment.Type":{"type":"string","enum":["attachment","photo","manual","warranty","attachment","receipt","thumbnail"],"x-enum-varnames":["DefaultType","TypePhoto","TypeManual","TypeWarranty","TypeAttachment","TypeReceipt","TypeThumbnail"]},"authroles.Role":{"type":"string","enum":["user","admin","user","attachments"],"x-enum-varnames":["DefaultRole","RoleAdmin","RoleUser","RoleAttachments"]},"currencies.Currency":{"type":"object","properties":{"code":{"type":"string"},"local":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"}}},"ent.Attachment":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the AttachmentQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.AttachmentEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"mime_type":{"description":"MimeType holds the value of the \"mime_type\" field.","type":"string"},"path":{"description":"Path holds the value of the \"path\" field.","type":"string"},"primary":{"description":"Primary holds the value of the \"primary\" field.","type":"boolean"},"title":{"description":"Title holds the value of the \"title\" field.","type":"string"},"type":{"description":"Type holds the value of the \"type\" field.","allOf":[{"$ref":"#/definitions/attachment.Type"}]},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.AttachmentEdges":{"type":"object","properties":{"entity":{"description":"Entity holds the value of the entity edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]},"thumbnail":{"description":"Thumbnail holds the value of the thumbnail edge.","allOf":[{"$ref":"#/definitions/ent.Attachment"}]}}},"ent.AuthRoles":{"type":"object","properties":{"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the AuthRolesQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.AuthRolesEdges"}]},"id":{"description":"ID of the ent.","type":"integer"},"role":{"description":"Role holds the value of the \"role\" field.","allOf":[{"$ref":"#/definitions/authroles.Role"}]}}},"ent.AuthRolesEdges":{"type":"object","properties":{"token":{"description":"Token holds the value of the token edge.","allOf":[{"$ref":"#/definitions/ent.AuthTokens"}]}}},"ent.AuthTokens":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the AuthTokensQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.AuthTokensEdges"}]},"expires_at":{"description":"ExpiresAt holds the value of the \"expires_at\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"token":{"description":"Token holds the value of the \"token\" field.","type":"array","items":{"type":"integer"}},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.AuthTokensEdges":{"type":"object","properties":{"roles":{"description":"Roles holds the value of the roles edge.","allOf":[{"$ref":"#/definitions/ent.AuthRoles"}]},"user":{"description":"User holds the value of the user edge.","allOf":[{"$ref":"#/definitions/ent.User"}]}}},"ent.Entity":{"type":"object","properties":{"archived":{"description":"Archived holds the value of the \"archived\" field.","type":"boolean"},"asset_id":{"description":"AssetID holds the value of the \"asset_id\" field.","type":"integer"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the EntityQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.EntityEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"import_ref":{"description":"ImportRef holds the value of the \"import_ref\" field.","type":"string"},"insured":{"description":"Insured holds the value of the \"insured\" field.","type":"boolean"},"lifetime_warranty":{"description":"LifetimeWarranty holds the value of the \"lifetime_warranty\" field.","type":"boolean"},"manufacturer":{"description":"Manufacturer holds the value of the \"manufacturer\" field.","type":"string"},"model_number":{"description":"ModelNumber holds the value of the \"model_number\" field.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"notes":{"description":"Notes holds the value of the \"notes\" field.","type":"string"},"purchase_from":{"description":"PurchaseFrom holds the value of the \"purchase_from\" field.","type":"string"},"purchase_price":{"description":"PurchasePrice holds the value of the \"purchase_price\" field.","type":"number"},"purchase_time":{"description":"PurchaseTime holds the value of the \"purchase_time\" field.","type":"string"},"quantity":{"description":"Quantity holds the value of the \"quantity\" field.","type":"integer"},"serial_number":{"description":"SerialNumber holds the value of the \"serial_number\" field.","type":"string"},"sold_notes":{"description":"SoldNotes holds the value of the \"sold_notes\" field.","type":"string"},"sold_price":{"description":"SoldPrice holds the value of the \"sold_price\" field.","type":"number"},"sold_time":{"description":"SoldTime holds the value of the \"sold_time\" field.","type":"string"},"sold_to":{"description":"SoldTo holds the value of the \"sold_to\" field.","type":"string"},"sync_child_entities_locations":{"description":"SyncChildEntitiesLocations holds the value of the \"sync_child_entities_locations\" field.","type":"boolean"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"},"warranty_details":{"description":"WarrantyDetails holds the value of the \"warranty_details\" field.","type":"string"},"warranty_expires":{"description":"WarrantyExpires holds the value of the \"warranty_expires\" field.","type":"string"}}},"ent.EntityEdges":{"type":"object","properties":{"attachments":{"description":"Attachments holds the value of the attachments edge.","type":"array","items":{"$ref":"#/definitions/ent.Attachment"}},"children":{"description":"Children holds the value of the children edge.","type":"array","items":{"$ref":"#/definitions/ent.Entity"}},"entity":{"description":"Entity holds the value of the entity edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]},"fields":{"description":"Fields holds the value of the fields edge.","type":"array","items":{"$ref":"#/definitions/ent.EntityField"}},"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]},"label":{"description":"Label holds the value of the label edge.","type":"array","items":{"$ref":"#/definitions/ent.Label"}},"location":{"description":"Location holds the value of the location edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]},"maintenance_entries":{"description":"MaintenanceEntries holds the value of the maintenance_entries edge.","type":"array","items":{"$ref":"#/definitions/ent.MaintenanceEntry"}},"parent":{"description":"Parent holds the value of the parent edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]},"type":{"description":"Type holds the value of the type edge.","allOf":[{"$ref":"#/definitions/ent.EntityType"}]}}},"ent.EntityField":{"type":"object","properties":{"boolean_value":{"description":"BooleanValue holds the value of the \"boolean_value\" field.","type":"boolean"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the EntityFieldQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.EntityFieldEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"number_value":{"description":"NumberValue holds the value of the \"number_value\" field.","type":"integer"},"text_value":{"description":"TextValue holds the value of the \"text_value\" field.","type":"string"},"time_value":{"description":"TimeValue holds the value of the \"time_value\" field.","type":"string"},"type":{"description":"Type holds the value of the \"type\" field.","allOf":[{"$ref":"#/definitions/entityfield.Type"}]},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.EntityFieldEdges":{"type":"object","properties":{"entity":{"description":"Entity holds the value of the entity edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]}}},"ent.EntityType":{"type":"object","properties":{"color":{"description":"Color holds the value of the \"color\" field.","type":"string"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the EntityTypeQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.EntityTypeEdges"}]},"icon":{"description":"Icon holds the value of the \"icon\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"is_location":{"description":"IsLocation holds the value of the \"is_location\" field.","type":"boolean"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.EntityTypeEdges":{"type":"object","properties":{"entities":{"description":"Entities holds the value of the entities edge.","type":"array","items":{"$ref":"#/definitions/ent.Entity"}},"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]}}},"ent.Group":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"currency":{"description":"Currency holds the value of the \"currency\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the GroupQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.GroupEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.GroupEdges":{"type":"object","properties":{"entities":{"description":"Entities holds the value of the entities edge.","type":"array","items":{"$ref":"#/definitions/ent.Entity"}},"entity_types":{"description":"EntityTypes holds the value of the entity_types edge.","type":"array","items":{"$ref":"#/definitions/ent.EntityType"}},"invitation_tokens":{"description":"InvitationTokens holds the value of the invitation_tokens edge.","type":"array","items":{"$ref":"#/definitions/ent.GroupInvitationToken"}},"labels":{"description":"Labels holds the value of the labels edge.","type":"array","items":{"$ref":"#/definitions/ent.Label"}},"notifiers":{"description":"Notifiers holds the value of the notifiers edge.","type":"array","items":{"$ref":"#/definitions/ent.Notifier"}},"users":{"description":"Users holds the value of the users edge.","type":"array","items":{"$ref":"#/definitions/ent.User"}}}},"ent.GroupInvitationToken":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the GroupInvitationTokenQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.GroupInvitationTokenEdges"}]},"expires_at":{"description":"ExpiresAt holds the value of the \"expires_at\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"token":{"description":"Token holds the value of the \"token\" field.","type":"array","items":{"type":"integer"}},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"},"uses":{"description":"Uses holds the value of the \"uses\" field.","type":"integer"}}},"ent.GroupInvitationTokenEdges":{"type":"object","properties":{"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]}}},"ent.Label":{"type":"object","properties":{"color":{"description":"Color holds the value of the \"color\" field.","type":"string"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the LabelQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.LabelEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.LabelEdges":{"type":"object","properties":{"entities":{"description":"Entities holds the value of the entities edge.","type":"array","items":{"$ref":"#/definitions/ent.Entity"}},"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]}}},"ent.MaintenanceEntry":{"type":"object","properties":{"cost":{"description":"Cost holds the value of the \"cost\" field.","type":"number"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"date":{"description":"Date holds the value of the \"date\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the MaintenanceEntryQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.MaintenanceEntryEdges"}]},"entity_id":{"description":"EntityID holds the value of the \"entity_id\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"scheduled_date":{"description":"ScheduledDate holds the value of the \"scheduled_date\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.MaintenanceEntryEdges":{"type":"object","properties":{"entity":{"description":"Entity holds the value of the entity edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]}}},"ent.Notifier":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the NotifierQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.NotifierEdges"}]},"group_id":{"description":"GroupID holds the value of the \"group_id\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"is_active":{"description":"IsActive holds the value of the \"is_active\" field.","type":"boolean"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"},"user_id":{"description":"UserID holds the value of the \"user_id\" field.","type":"string"}}},"ent.NotifierEdges":{"type":"object","properties":{"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]},"user":{"description":"User holds the value of the user edge.","allOf":[{"$ref":"#/definitions/ent.User"}]}}},"ent.User":{"type":"object","properties":{"activated_on":{"description":"ActivatedOn holds the value of the \"activated_on\" field.","type":"string"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the UserQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.UserEdges"}]},"email":{"description":"Email holds the value of the \"email\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"is_superuser":{"description":"IsSuperuser holds the value of the \"is_superuser\" field.","type":"boolean"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"role":{"description":"Role holds the value of the \"role\" field.","allOf":[{"$ref":"#/definitions/user.Role"}]},"superuser":{"description":"Superuser holds the value of the \"superuser\" field.","type":"boolean"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.UserEdges":{"type":"object","properties":{"auth_tokens":{"description":"AuthTokens holds the value of the auth_tokens edge.","type":"array","items":{"$ref":"#/definitions/ent.AuthTokens"}},"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]},"notifiers":{"description":"Notifiers holds the value of the notifiers edge.","type":"array","items":{"$ref":"#/definitions/ent.Notifier"}}}},"entityfield.Type":{"type":"string","enum":["text","number","boolean","time"],"x-enum-varnames":["TypeText","TypeNumber","TypeBoolean","TypeTime"]},"repo.BarcodeProduct":{"type":"object","properties":{"barcode":{"type":"string"},"imageBase64":{"type":"string"},"imageURL":{"type":"string"},"item":{"$ref":"#/definitions/repo.ItemCreate"},"manufacturer":{"type":"string"},"modelNumber":{"description":"Identifications","type":"string"},"notes":{"description":"Extras","type":"string"},"search_engine_name":{"type":"string"}}},"repo.Group":{"type":"object","properties":{"createdAt":{"type":"string"},"currency":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.GroupStatistics":{"type":"object","properties":{"totalItemPrice":{"type":"number"},"totalItems":{"type":"integer"},"totalLabels":{"type":"integer"},"totalLocations":{"type":"integer"},"totalUsers":{"type":"integer"},"totalWithWarranty":{"type":"integer"}}},"repo.GroupUpdate":{"type":"object","properties":{"currency":{"type":"string"},"name":{"type":"string"}}},"repo.ItemAttachment":{"type":"object","properties":{"createdAt":{"type":"string"},"id":{"type":"string"},"mimeType":{"type":"string"},"path":{"type":"string"},"primary":{"type":"boolean"},"thumbnail":{"$ref":"#/definitions/ent.Attachment"},"title":{"type":"string"},"type":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.ItemAttachmentUpdate":{"type":"object","properties":{"primary":{"type":"boolean"},"title":{"type":"string"},"type":{"type":"string"}}},"repo.ItemCreate":{"type":"object","required":["name"],"properties":{"description":{"type":"string","maxLength":1000},"labelIds":{"type":"array","items":{"type":"string"}},"locationId":{"description":"Edges","type":"string"},"name":{"type":"string","maxLength":255,"minLength":1},"parentId":{"type":"string","x-nullable":true},"quantity":{"type":"integer"}}},"repo.ItemField":{"type":"object","properties":{"booleanValue":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"numberValue":{"type":"integer"},"textValue":{"type":"string"},"type":{"type":"string"}}},"repo.ItemOut":{"type":"object","properties":{"archived":{"type":"boolean"},"assetId":{"type":"string","example":"0"},"attachments":{"type":"array","items":{"$ref":"#/definitions/repo.ItemAttachment"}},"createdAt":{"type":"string"},"description":{"type":"string"},"fields":{"type":"array","items":{"$ref":"#/definitions/repo.ItemField"}},"id":{"type":"string"},"imageId":{"type":"string","x-nullable":true,"x-omitempty":true},"insured":{"type":"boolean"},"labels":{"type":"array","items":{"$ref":"#/definitions/repo.LabelSummary"}},"lifetimeWarranty":{"description":"Warranty","type":"boolean"},"location":{"description":"Edges","allOf":[{"$ref":"#/definitions/repo.LocationSummary"}],"x-nullable":true,"x-omitempty":true},"manufacturer":{"type":"string"},"modelNumber":{"type":"string"},"name":{"type":"string"},"notes":{"description":"Extras","type":"string"},"parent":{"allOf":[{"$ref":"#/definitions/repo.ItemSummary"}],"x-nullable":true,"x-omitempty":true},"purchaseFrom":{"type":"string"},"purchasePrice":{"type":"number"},"purchaseTime":{"description":"Purchase","type":"string"},"quantity":{"type":"integer"},"serialNumber":{"type":"string"},"soldNotes":{"type":"string"},"soldPrice":{"type":"number"},"soldTime":{"description":"Sold","type":"string"},"soldTo":{"type":"string"},"syncChildItemsLocations":{"type":"boolean"},"thumbnailId":{"type":"string","x-nullable":true,"x-omitempty":true},"updatedAt":{"type":"string"},"warrantyDetails":{"type":"string"},"warrantyExpires":{"type":"string"}}},"repo.ItemPatch":{"type":"object","properties":{"id":{"type":"string"},"quantity":{"type":"integer","x-nullable":true,"x-omitempty":true}}},"repo.ItemPath":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"$ref":"#/definitions/repo.ItemType"}}},"repo.ItemSummary":{"type":"object","properties":{"archived":{"type":"boolean"},"assetId":{"type":"string","example":"0"},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"imageId":{"type":"string","x-nullable":true,"x-omitempty":true},"insured":{"type":"boolean"},"labels":{"type":"array","items":{"$ref":"#/definitions/repo.LabelSummary"}},"location":{"description":"Edges","allOf":[{"$ref":"#/definitions/repo.LocationSummary"}],"x-nullable":true,"x-omitempty":true},"name":{"type":"string"},"purchasePrice":{"type":"number"},"quantity":{"type":"integer"},"soldTime":{"description":"Sale details","type":"string"},"thumbnailId":{"type":"string","x-nullable":true,"x-omitempty":true},"updatedAt":{"type":"string"}}},"repo.ItemType":{"type":"string","enum":["location","item"],"x-enum-varnames":["ItemTypeLocation","ItemTypeItem"]},"repo.ItemUpdate":{"type":"object","required":["name"],"properties":{"archived":{"type":"boolean"},"assetId":{"type":"string"},"description":{"type":"string","maxLength":1000},"fields":{"type":"array","items":{"$ref":"#/definitions/repo.ItemField"}},"id":{"type":"string"},"insured":{"type":"boolean"},"labelIds":{"type":"array","items":{"type":"string"}},"lifetimeWarranty":{"description":"Warranty","type":"boolean"},"locationId":{"description":"Edges","type":"string"},"manufacturer":{"type":"string"},"modelNumber":{"type":"string"},"name":{"type":"string","maxLength":255,"minLength":1},"notes":{"description":"Extras","type":"string"},"parentId":{"type":"string","x-nullable":true,"x-omitempty":true},"purchaseFrom":{"type":"string","maxLength":255},"purchasePrice":{"type":"number","x-nullable":true,"x-omitempty":true},"purchaseTime":{"description":"Purchase","type":"string"},"quantity":{"type":"integer"},"serialNumber":{"description":"Identifications","type":"string"},"soldNotes":{"type":"string"},"soldPrice":{"type":"number","x-nullable":true,"x-omitempty":true},"soldTime":{"description":"Sold","type":"string"},"soldTo":{"type":"string","maxLength":255},"syncChildItemsLocations":{"type":"boolean"},"warrantyDetails":{"type":"string"},"warrantyExpires":{"type":"string"}}},"repo.LabelCreate":{"type":"object","required":["name"],"properties":{"color":{"type":"string"},"description":{"type":"string","maxLength":255},"name":{"type":"string","maxLength":255,"minLength":1}}},"repo.LabelOut":{"type":"object","properties":{"color":{"type":"string"},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LabelSummary":{"type":"object","properties":{"color":{"type":"string"},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LocationCreate":{"type":"object","properties":{"description":{"type":"string"},"name":{"type":"string"},"parentId":{"type":"string","x-nullable":true}}},"repo.LocationOut":{"type":"object","properties":{"children":{"type":"array","items":{"$ref":"#/definitions/repo.LocationSummary"}},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"parent":{"$ref":"#/definitions/repo.LocationSummary"},"totalPrice":{"type":"number"},"updatedAt":{"type":"string"}}},"repo.LocationOutCount":{"type":"object","properties":{"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"itemCount":{"type":"integer"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LocationSummary":{"type":"object","properties":{"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LocationUpdate":{"type":"object","properties":{"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"parentId":{"type":"string","x-nullable":true}}},"repo.MaintenanceEntry":{"type":"object","properties":{"completedDate":{"type":"string"},"cost":{"type":"string","example":"0"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"scheduledDate":{"type":"string"}}},"repo.MaintenanceEntryCreate":{"type":"object","required":["name"],"properties":{"completedDate":{"type":"string"},"cost":{"type":"string","example":"0"},"description":{"type":"string"},"name":{"type":"string"},"scheduledDate":{"type":"string"}}},"repo.MaintenanceEntryUpdate":{"type":"object","properties":{"completedDate":{"type":"string"},"cost":{"type":"string","example":"0"},"description":{"type":"string"},"name":{"type":"string"},"scheduledDate":{"type":"string"}}},"repo.MaintenanceEntryWithDetails":{"type":"object","properties":{"completedDate":{"type":"string"},"cost":{"type":"string","example":"0"},"description":{"type":"string"},"id":{"type":"string"},"itemID":{"type":"string"},"itemName":{"type":"string"},"name":{"type":"string"},"scheduledDate":{"type":"string"}}},"repo.MaintenanceFilterStatus":{"type":"string","enum":["scheduled","completed","both"],"x-enum-varnames":["MaintenanceFilterStatusScheduled","MaintenanceFilterStatusCompleted","MaintenanceFilterStatusBoth"]},"repo.NotifierCreate":{"type":"object","required":["name","url"],"properties":{"isActive":{"type":"boolean"},"name":{"type":"string","maxLength":255,"minLength":1},"url":{"type":"string"}}},"repo.NotifierOut":{"type":"object","properties":{"createdAt":{"type":"string"},"groupId":{"type":"string"},"id":{"type":"string"},"isActive":{"type":"boolean"},"name":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"userId":{"type":"string"}}},"repo.NotifierUpdate":{"type":"object","required":["name"],"properties":{"isActive":{"type":"boolean"},"name":{"type":"string","maxLength":255,"minLength":1},"url":{"type":"string","x-nullable":true}}},"repo.PaginationResult-repo_ItemSummary":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/repo.ItemSummary"}},"page":{"type":"integer"},"pageSize":{"type":"integer"},"total":{"type":"integer"}}},"repo.TotalsByOrganizer":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"total":{"type":"number"}}},"repo.TreeItem":{"type":"object","properties":{"children":{"type":"array","items":{"$ref":"#/definitions/repo.TreeItem"}},"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"}}},"repo.UserOut":{"type":"object","properties":{"email":{"type":"string"},"groupId":{"type":"string"},"groupName":{"type":"string"},"id":{"type":"string"},"isOwner":{"type":"boolean"},"isSuperuser":{"type":"boolean"},"name":{"type":"string"}}},"repo.UserUpdate":{"type":"object","properties":{"email":{"type":"string"},"name":{"type":"string"}}},"repo.ValueOverTime":{"type":"object","properties":{"end":{"type":"string"},"entries":{"type":"array","items":{"$ref":"#/definitions/repo.ValueOverTimeEntry"}},"start":{"type":"string"},"valueAtEnd":{"type":"number"},"valueAtStart":{"type":"number"}}},"repo.ValueOverTimeEntry":{"type":"object","properties":{"date":{"type":"string"},"name":{"type":"string"},"value":{"type":"number"}}},"services.Latest":{"type":"object","properties":{"date":{"type":"string"},"version":{"type":"string"}}},"services.UserRegistration":{"type":"object","properties":{"email":{"type":"string"},"name":{"type":"string"},"password":{"type":"string"},"token":{"type":"string"}}},"user.Role":{"type":"string","enum":["user","user","owner"],"x-enum-varnames":["DefaultRole","RoleUser","RoleOwner"]},"v1.APISummary":{"type":"object","properties":{"allowRegistration":{"type":"boolean"},"build":{"$ref":"#/definitions/v1.Build"},"demo":{"type":"boolean"},"health":{"type":"boolean"},"labelPrinting":{"type":"boolean"},"latest":{"$ref":"#/definitions/services.Latest"},"message":{"type":"string"},"title":{"type":"string"},"versions":{"type":"array","items":{"type":"string"}}}},"v1.ActionAmountResult":{"type":"object","properties":{"completed":{"type":"integer"}}},"v1.Build":{"type":"object","properties":{"buildTime":{"type":"string"},"commit":{"type":"string"},"version":{"type":"string"}}},"v1.ChangePassword":{"type":"object","properties":{"current":{"type":"string"},"new":{"type":"string"}}},"v1.GroupInvitation":{"type":"object","properties":{"expiresAt":{"type":"string"},"token":{"type":"string"},"uses":{"type":"integer"}}},"v1.GroupInvitationCreate":{"type":"object","required":["uses"],"properties":{"expiresAt":{"type":"string"},"uses":{"type":"integer","maximum":100,"minimum":1}}},"v1.ItemAttachmentToken":{"type":"object","properties":{"token":{"type":"string"}}},"v1.LoginForm":{"type":"object","properties":{"password":{"type":"string","example":"admin"},"stayLoggedIn":{"type":"boolean"},"username":{"type":"string","example":"admin@admin.com"}}},"v1.TokenResponse":{"type":"object","properties":{"attachmentToken":{"type":"string"},"expiresAt":{"type":"string"},"token":{"type":"string"}}},"v1.Wrapped":{"type":"object","properties":{"item":{}}},"validate.ErrorResponse":{"type":"object","properties":{"error":{"type":"string"},"fields":{"type":"string"}}}},"securityDefinitions":{"Bearer":{"description":"\"Type 'Bearer TOKEN' to correctly set the API Key\"","type":"apiKey","name":"Authorization","in":"header"}}} \ No newline at end of file +{"schemes":["https","http"],"swagger":"2.0","info":{"description":"Track, Manage, and Organize your Things.","title":"Homebox API","contact":{"name":"Homebox Team","url":"https://discord.homebox.software"},"version":"1.0"},"host":"demo.homebox.software","basePath":"/api","paths":{"/v1/actions/create-missing-thumbnails":{"post":{"security":[{"Bearer":[]}],"description":"Creates thumbnails for items that are missing them","produces":["application/json"],"tags":["Actions"],"summary":"Create Missing Thumbnails","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/actions/ensure-asset-ids":{"post":{"security":[{"Bearer":[]}],"description":"Ensures all items in the database have an asset ID","produces":["application/json"],"tags":["Actions"],"summary":"Ensure Asset IDs","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/actions/ensure-import-refs":{"post":{"security":[{"Bearer":[]}],"description":"Ensures all items in the database have an import ref","produces":["application/json"],"tags":["Actions"],"summary":"Ensures Import Refs","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/actions/set-primary-photos":{"post":{"security":[{"Bearer":[]}],"description":"Sets the first photo of each item as the primary photo","produces":["application/json"],"tags":["Actions"],"summary":"Set Primary Photos","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/actions/zero-item-time-fields":{"post":{"security":[{"Bearer":[]}],"description":"Resets all item date fields to the beginning of the day","produces":["application/json"],"tags":["Actions"],"summary":"Zero Out Time Fields","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/assets/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Get Item by Asset ID","parameters":[{"type":"string","description":"Asset ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.PaginationResult-repo_ItemSummary"}}}}},"/v1/currency":{"get":{"produces":["application/json"],"tags":["Base"],"summary":"Currency","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/currencies.Currency"}}}}},"/v1/entities/{id}/attachments":{"post":{"security":[{"Bearer":[]}],"consumes":["multipart/form-data"],"produces":["application/json"],"tags":["Items Attachments"],"summary":"Create Item Attachment","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"file","description":"File attachment","name":"file","in":"formData","required":true},{"type":"string","description":"Type of file","name":"type","in":"formData"},{"type":"boolean","description":"Is this the primary attachment","name":"primary","in":"formData"},{"type":"string","description":"name of the file including extension","name":"name","in":"formData","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}},"422":{"description":"Unprocessable Entity","schema":{"$ref":"#/definitions/validate.ErrorResponse"}}}}},"/v1/entities/{id}/attachments/{attachment_id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/octet-stream"],"tags":["Items Attachments"],"summary":"Get Item Attachment","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ItemAttachmentToken"}}}},"put":{"security":[{"Bearer":[]}],"tags":["Items Attachments"],"summary":"Update Item Attachment","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true},{"description":"Attachment Update","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemAttachmentUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}},"delete":{"security":[{"Bearer":[]}],"tags":["Items Attachments"],"summary":"Delete Item Attachment","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/entities/{id}/maintenance":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Item Maintenance"],"summary":"Get Maintenance Log","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"enum":["scheduled","completed","both"],"type":"string","x-enum-varnames":["MaintenanceFilterStatusScheduled","MaintenanceFilterStatusCompleted","MaintenanceFilterStatusBoth"],"name":"status","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.MaintenanceEntryWithDetails"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Item Maintenance"],"summary":"Create Maintenance Entry","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"description":"Entry Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.MaintenanceEntryCreate"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/repo.MaintenanceEntry"}}}}},"/v1/groups":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Group"],"summary":"Get Group","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.Group"}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Group"],"summary":"Update Group","parameters":[{"description":"User Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.GroupUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.Group"}}}}},"/v1/groups/invitations":{"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Group"],"summary":"Create Group Invitation","parameters":[{"description":"User Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/v1.GroupInvitationCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.GroupInvitation"}}}}},"/v1/groups/statistics":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Statistics"],"summary":"Get Group Statistics","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.GroupStatistics"}}}}},"/v1/groups/statistics/labels":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Statistics"],"summary":"Get Label Statistics","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.TotalsByOrganizer"}}}}}},"/v1/groups/statistics/locations":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Statistics"],"summary":"Get Location Statistics","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.TotalsByOrganizer"}}}}}},"/v1/groups/statistics/purchase-price":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Statistics"],"summary":"Get Purchase Price Statistics","parameters":[{"type":"string","description":"start date","name":"start","in":"query"},{"type":"string","description":"end date","name":"end","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ValueOverTime"}}}}},"/v1/items":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Query All Items","deprecated":true,"parameters":[{"type":"string","description":"search string","name":"q","in":"query"},{"type":"integer","description":"page number","name":"page","in":"query"},{"type":"integer","description":"items per page","name":"pageSize","in":"query"},{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"label Ids","name":"labels","in":"query"},{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"location Ids","name":"locations","in":"query"},{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"parent Ids","name":"parentIds","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.PaginationResult-repo_ItemSummary"}}}},"post":{"security":[{"Bearer":[]}],"consumes":["application/json"],"produces":["application/json"],"tags":["Items"],"summary":"Create Item","deprecated":true,"parameters":[{"description":"Item Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemCreate"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/repo.ItemSummary"}}}}},"/v1/items/export":{"get":{"security":[{"Bearer":[]}],"tags":["Items"],"summary":"(Deprecated) Export Items","deprecated":true,"responses":{"200":{"description":"text/csv","schema":{"type":"string"}}}}},"/v1/items/fields":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Get All Custom Field Names","deprecated":true,"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"type":"string"}}}}}},"/v1/items/fields/values":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Get All Custom Field Values","deprecated":true,"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"type":"string"}}}}}},"/v1/items/import":{"post":{"security":[{"Bearer":[]}],"consumes":["multipart/form-data"],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Import Items","deprecated":true,"parameters":[{"type":"file","description":"Image to upload","name":"csv","in":"formData","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/items/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Get Item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Update Item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"description":"Item Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Delete Item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}},"patch":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Update Item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"description":"Item Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemPatch"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}}},"/v1/items/{id}/attachments":{"post":{"security":[{"Bearer":[]}],"consumes":["multipart/form-data"],"produces":["application/json"],"tags":["Items Attachments"],"summary":"Create Item Attachment","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"file","description":"File attachment","name":"file","in":"formData","required":true},{"type":"string","description":"Type of file","name":"type","in":"formData"},{"type":"boolean","description":"Is this the primary attachment","name":"primary","in":"formData"},{"type":"string","description":"name of the file including extension","name":"name","in":"formData","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}},"422":{"description":"Unprocessable Entity","schema":{"$ref":"#/definitions/validate.ErrorResponse"}}}}},"/v1/items/{id}/attachments/{attachment_id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/octet-stream"],"tags":["Items Attachments"],"summary":"Get Item Attachment","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ItemAttachmentToken"}}}},"put":{"security":[{"Bearer":[]}],"tags":["Items Attachments"],"summary":"Update Item Attachment","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true},{"description":"Attachment Update","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemAttachmentUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}},"delete":{"security":[{"Bearer":[]}],"tags":["Items Attachments"],"summary":"Delete Item Attachment","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/items/{id}/maintenance":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Item Maintenance"],"summary":"Get Maintenance Log","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"enum":["scheduled","completed","both"],"type":"string","x-enum-varnames":["MaintenanceFilterStatusScheduled","MaintenanceFilterStatusCompleted","MaintenanceFilterStatusBoth"],"name":"status","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.MaintenanceEntryWithDetails"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Item Maintenance"],"summary":"Create Maintenance Entry","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"description":"Entry Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.MaintenanceEntryCreate"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/repo.MaintenanceEntry"}}}}},"/v1/items/{id}/path":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Get the full path of an item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.ItemPath"}}}}}},"/v1/labelmaker/assets/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Get Asset label","parameters":[{"type":"string","description":"Asset ID","name":"id","in":"path","required":true},{"type":"boolean","description":"Print this label, defaults to false","name":"print","in":"query"}],"responses":{"200":{"description":"image/png","schema":{"type":"string"}}}}},"/v1/labelmaker/item/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Get Item label","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"boolean","description":"Print this label, defaults to false","name":"print","in":"query"}],"responses":{"200":{"description":"image/png","schema":{"type":"string"}}}}},"/v1/labelmaker/location/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"Get Location label","parameters":[{"type":"string","description":"Location ID","name":"id","in":"path","required":true},{"type":"boolean","description":"Print this label, defaults to false","name":"print","in":"query"}],"responses":{"200":{"description":"image/png","schema":{"type":"string"}}}}},"/v1/labels":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Get All Labels","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.LabelOut"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Create Label","parameters":[{"description":"Label Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.LabelCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LabelSummary"}}}}},"/v1/labels/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Get Label","parameters":[{"type":"string","description":"Label ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LabelOut"}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Update Label","parameters":[{"type":"string","description":"Label ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LabelOut"}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Delete Label","parameters":[{"type":"string","description":"Label ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/locations":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Get All Locations","deprecated":true,"parameters":[{"type":"boolean","description":"Filter locations with parents","name":"filterChildren","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.LocationOutCount"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Create Location","deprecated":true,"parameters":[{"description":"Location Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.LocationCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LocationSummary"}}}}},"/v1/locations/tree":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Get Locations Tree","deprecated":true,"parameters":[{"type":"boolean","description":"include items in response tree","name":"withItems","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.TreeItem"}}}}}},"/v1/locations/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Get Location","deprecated":true,"parameters":[{"type":"string","description":"Location ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LocationOut"}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Update Location","deprecated":true,"parameters":[{"type":"string","description":"Location ID","name":"id","in":"path","required":true},{"description":"Location Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.LocationUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LocationOut"}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Delete Location","deprecated":true,"parameters":[{"type":"string","description":"Location ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/maintenance":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Maintenance"],"summary":"Query All Maintenance","parameters":[{"enum":["scheduled","completed","both"],"type":"string","x-enum-varnames":["MaintenanceFilterStatusScheduled","MaintenanceFilterStatusCompleted","MaintenanceFilterStatusBoth"],"name":"status","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.MaintenanceEntryWithDetails"}}}}}},"/v1/maintenance/{id}":{"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Maintenance"],"summary":"Update Maintenance Entry","parameters":[{"type":"string","description":"Maintenance ID","name":"id","in":"path","required":true},{"description":"Entry Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.MaintenanceEntryUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.MaintenanceEntry"}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Maintenance"],"summary":"Delete Maintenance Entry","parameters":[{"type":"string","description":"Maintenance ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/notifiers":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Notifiers"],"summary":"Get Notifiers","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.NotifierOut"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Notifiers"],"summary":"Create Notifier","parameters":[{"description":"Notifier Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.NotifierCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.NotifierOut"}}}}},"/v1/notifiers/test":{"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Notifiers"],"summary":"Test Notifier","parameters":[{"type":"string","description":"URL","name":"url","in":"query","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/notifiers/{id}":{"put":{"security":[{"Bearer":[]}],"tags":["Notifiers"],"summary":"Update Notifier","parameters":[{"type":"string","description":"Notifier ID","name":"id","in":"path","required":true},{"description":"Notifier Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.NotifierUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.NotifierOut"}}}},"delete":{"security":[{"Bearer":[]}],"tags":["Notifiers"],"summary":"Delete a Notifier","parameters":[{"type":"string","description":"Notifier ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/products/search-from-barcode":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Search EAN from Barcode","parameters":[{"type":"string","description":"barcode to be searched","name":"data","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.BarcodeProduct"}}}}}},"/v1/qrcode":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Create QR Code","parameters":[{"type":"string","description":"data to be encoded into qrcode","name":"data","in":"query"}],"responses":{"200":{"description":"image/jpeg","schema":{"type":"string"}}}}},"/v1/reporting/bill-of-materials":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Reporting"],"summary":"Export Bill of Materials","responses":{"200":{"description":"text/csv","schema":{"type":"string"}}}}},"/v1/status":{"get":{"produces":["application/json"],"tags":["Base"],"summary":"Application Info","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.APISummary"}}}}},"/v1/users/change-password":{"put":{"security":[{"Bearer":[]}],"tags":["User"],"summary":"Change Password","parameters":[{"description":"Password Payload","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/v1.ChangePassword"}}],"responses":{"204":{"description":"No Content"}}}},"/v1/users/login":{"post":{"consumes":["application/x-www-form-urlencoded","application/json"],"produces":["application/json"],"tags":["Authentication"],"summary":"User Login","parameters":[{"description":"Login Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/v1.LoginForm"}},{"type":"string","description":"auth provider","name":"provider","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.TokenResponse"}}}}},"/v1/users/logout":{"post":{"security":[{"Bearer":[]}],"tags":["Authentication"],"summary":"User Logout","responses":{"204":{"description":"No Content"}}}},"/v1/users/refresh":{"get":{"security":[{"Bearer":[]}],"description":"handleAuthRefresh returns a handler that will issue a new token from an existing token.\nThis does not validate that the user still exists within the database.","tags":["Authentication"],"summary":"User Token Refresh","responses":{"200":{"description":"OK"}}}},"/v1/users/register":{"post":{"produces":["application/json"],"tags":["User"],"summary":"Register New User","parameters":[{"description":"User Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/services.UserRegistration"}}],"responses":{"204":{"description":"No Content"}}}},"/v1/users/self":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["User"],"summary":"Get User Self","responses":{"200":{"description":"OK","schema":{"allOf":[{"$ref":"#/definitions/v1.Wrapped"},{"type":"object","properties":{"item":{"$ref":"#/definitions/repo.UserOut"}}}]}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["User"],"summary":"Update Account","parameters":[{"description":"User Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.UserUpdate"}}],"responses":{"200":{"description":"OK","schema":{"allOf":[{"$ref":"#/definitions/v1.Wrapped"},{"type":"object","properties":{"item":{"$ref":"#/definitions/repo.UserUpdate"}}}]}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["User"],"summary":"Delete Account","responses":{"204":{"description":"No Content"}}}}},"definitions":{"attachment.Type":{"type":"string","enum":["attachment","photo","manual","warranty","attachment","receipt","thumbnail"],"x-enum-varnames":["DefaultType","TypePhoto","TypeManual","TypeWarranty","TypeAttachment","TypeReceipt","TypeThumbnail"]},"authroles.Role":{"type":"string","enum":["user","admin","user","attachments"],"x-enum-varnames":["DefaultRole","RoleAdmin","RoleUser","RoleAttachments"]},"currencies.Currency":{"type":"object","properties":{"code":{"type":"string"},"local":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"}}},"ent.Attachment":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the AttachmentQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.AttachmentEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"mime_type":{"description":"MimeType holds the value of the \"mime_type\" field.","type":"string"},"path":{"description":"Path holds the value of the \"path\" field.","type":"string"},"primary":{"description":"Primary holds the value of the \"primary\" field.","type":"boolean"},"title":{"description":"Title holds the value of the \"title\" field.","type":"string"},"type":{"description":"Type holds the value of the \"type\" field.","allOf":[{"$ref":"#/definitions/attachment.Type"}]},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.AttachmentEdges":{"type":"object","properties":{"entity":{"description":"Entity holds the value of the entity edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]},"thumbnail":{"description":"Thumbnail holds the value of the thumbnail edge.","allOf":[{"$ref":"#/definitions/ent.Attachment"}]}}},"ent.AuthRoles":{"type":"object","properties":{"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the AuthRolesQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.AuthRolesEdges"}]},"id":{"description":"ID of the ent.","type":"integer"},"role":{"description":"Role holds the value of the \"role\" field.","allOf":[{"$ref":"#/definitions/authroles.Role"}]}}},"ent.AuthRolesEdges":{"type":"object","properties":{"token":{"description":"Token holds the value of the token edge.","allOf":[{"$ref":"#/definitions/ent.AuthTokens"}]}}},"ent.AuthTokens":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the AuthTokensQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.AuthTokensEdges"}]},"expires_at":{"description":"ExpiresAt holds the value of the \"expires_at\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"token":{"description":"Token holds the value of the \"token\" field.","type":"array","items":{"type":"integer"}},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.AuthTokensEdges":{"type":"object","properties":{"roles":{"description":"Roles holds the value of the roles edge.","allOf":[{"$ref":"#/definitions/ent.AuthRoles"}]},"user":{"description":"User holds the value of the user edge.","allOf":[{"$ref":"#/definitions/ent.User"}]}}},"ent.Entity":{"type":"object","properties":{"archived":{"description":"Archived holds the value of the \"archived\" field.","type":"boolean"},"asset_id":{"description":"AssetID holds the value of the \"asset_id\" field.","type":"integer"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the EntityQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.EntityEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"import_ref":{"description":"ImportRef holds the value of the \"import_ref\" field.","type":"string"},"insured":{"description":"Insured holds the value of the \"insured\" field.","type":"boolean"},"lifetime_warranty":{"description":"LifetimeWarranty holds the value of the \"lifetime_warranty\" field.","type":"boolean"},"manufacturer":{"description":"Manufacturer holds the value of the \"manufacturer\" field.","type":"string"},"model_number":{"description":"ModelNumber holds the value of the \"model_number\" field.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"notes":{"description":"Notes holds the value of the \"notes\" field.","type":"string"},"purchase_from":{"description":"PurchaseFrom holds the value of the \"purchase_from\" field.","type":"string"},"purchase_price":{"description":"PurchasePrice holds the value of the \"purchase_price\" field.","type":"number"},"purchase_time":{"description":"PurchaseTime holds the value of the \"purchase_time\" field.","type":"string"},"quantity":{"description":"Quantity holds the value of the \"quantity\" field.","type":"integer"},"serial_number":{"description":"SerialNumber holds the value of the \"serial_number\" field.","type":"string"},"sold_notes":{"description":"SoldNotes holds the value of the \"sold_notes\" field.","type":"string"},"sold_price":{"description":"SoldPrice holds the value of the \"sold_price\" field.","type":"number"},"sold_time":{"description":"SoldTime holds the value of the \"sold_time\" field.","type":"string"},"sold_to":{"description":"SoldTo holds the value of the \"sold_to\" field.","type":"string"},"sync_child_entities_locations":{"description":"SyncChildEntitiesLocations holds the value of the \"sync_child_entities_locations\" field.","type":"boolean"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"},"warranty_details":{"description":"WarrantyDetails holds the value of the \"warranty_details\" field.","type":"string"},"warranty_expires":{"description":"WarrantyExpires holds the value of the \"warranty_expires\" field.","type":"string"}}},"ent.EntityEdges":{"type":"object","properties":{"attachments":{"description":"Attachments holds the value of the attachments edge.","type":"array","items":{"$ref":"#/definitions/ent.Attachment"}},"children":{"description":"Children holds the value of the children edge.","type":"array","items":{"$ref":"#/definitions/ent.Entity"}},"entity":{"description":"Entity holds the value of the entity edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]},"fields":{"description":"Fields holds the value of the fields edge.","type":"array","items":{"$ref":"#/definitions/ent.EntityField"}},"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]},"label":{"description":"Label holds the value of the label edge.","type":"array","items":{"$ref":"#/definitions/ent.Label"}},"location":{"description":"Location holds the value of the location edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]},"maintenance_entries":{"description":"MaintenanceEntries holds the value of the maintenance_entries edge.","type":"array","items":{"$ref":"#/definitions/ent.MaintenanceEntry"}},"parent":{"description":"Parent holds the value of the parent edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]},"type":{"description":"Type holds the value of the type edge.","allOf":[{"$ref":"#/definitions/ent.EntityType"}]}}},"ent.EntityField":{"type":"object","properties":{"boolean_value":{"description":"BooleanValue holds the value of the \"boolean_value\" field.","type":"boolean"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the EntityFieldQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.EntityFieldEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"number_value":{"description":"NumberValue holds the value of the \"number_value\" field.","type":"integer"},"text_value":{"description":"TextValue holds the value of the \"text_value\" field.","type":"string"},"time_value":{"description":"TimeValue holds the value of the \"time_value\" field.","type":"string"},"type":{"description":"Type holds the value of the \"type\" field.","allOf":[{"$ref":"#/definitions/entityfield.Type"}]},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.EntityFieldEdges":{"type":"object","properties":{"entity":{"description":"Entity holds the value of the entity edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]}}},"ent.EntityType":{"type":"object","properties":{"color":{"description":"Color holds the value of the \"color\" field.","type":"string"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the EntityTypeQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.EntityTypeEdges"}]},"icon":{"description":"Icon holds the value of the \"icon\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"is_location":{"description":"IsLocation holds the value of the \"is_location\" field.","type":"boolean"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.EntityTypeEdges":{"type":"object","properties":{"entities":{"description":"Entities holds the value of the entities edge.","type":"array","items":{"$ref":"#/definitions/ent.Entity"}},"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]}}},"ent.Group":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"currency":{"description":"Currency holds the value of the \"currency\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the GroupQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.GroupEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.GroupEdges":{"type":"object","properties":{"entities":{"description":"Entities holds the value of the entities edge.","type":"array","items":{"$ref":"#/definitions/ent.Entity"}},"entity_types":{"description":"EntityTypes holds the value of the entity_types edge.","type":"array","items":{"$ref":"#/definitions/ent.EntityType"}},"invitation_tokens":{"description":"InvitationTokens holds the value of the invitation_tokens edge.","type":"array","items":{"$ref":"#/definitions/ent.GroupInvitationToken"}},"labels":{"description":"Labels holds the value of the labels edge.","type":"array","items":{"$ref":"#/definitions/ent.Label"}},"notifiers":{"description":"Notifiers holds the value of the notifiers edge.","type":"array","items":{"$ref":"#/definitions/ent.Notifier"}},"users":{"description":"Users holds the value of the users edge.","type":"array","items":{"$ref":"#/definitions/ent.User"}}}},"ent.GroupInvitationToken":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the GroupInvitationTokenQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.GroupInvitationTokenEdges"}]},"expires_at":{"description":"ExpiresAt holds the value of the \"expires_at\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"token":{"description":"Token holds the value of the \"token\" field.","type":"array","items":{"type":"integer"}},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"},"uses":{"description":"Uses holds the value of the \"uses\" field.","type":"integer"}}},"ent.GroupInvitationTokenEdges":{"type":"object","properties":{"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]}}},"ent.Label":{"type":"object","properties":{"color":{"description":"Color holds the value of the \"color\" field.","type":"string"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the LabelQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.LabelEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.LabelEdges":{"type":"object","properties":{"entities":{"description":"Entities holds the value of the entities edge.","type":"array","items":{"$ref":"#/definitions/ent.Entity"}},"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]}}},"ent.MaintenanceEntry":{"type":"object","properties":{"cost":{"description":"Cost holds the value of the \"cost\" field.","type":"number"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"date":{"description":"Date holds the value of the \"date\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the MaintenanceEntryQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.MaintenanceEntryEdges"}]},"entity_id":{"description":"EntityID holds the value of the \"entity_id\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"scheduled_date":{"description":"ScheduledDate holds the value of the \"scheduled_date\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.MaintenanceEntryEdges":{"type":"object","properties":{"entity":{"description":"Entity holds the value of the entity edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]}}},"ent.Notifier":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the NotifierQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.NotifierEdges"}]},"group_id":{"description":"GroupID holds the value of the \"group_id\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"is_active":{"description":"IsActive holds the value of the \"is_active\" field.","type":"boolean"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"},"user_id":{"description":"UserID holds the value of the \"user_id\" field.","type":"string"}}},"ent.NotifierEdges":{"type":"object","properties":{"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]},"user":{"description":"User holds the value of the user edge.","allOf":[{"$ref":"#/definitions/ent.User"}]}}},"ent.User":{"type":"object","properties":{"activated_on":{"description":"ActivatedOn holds the value of the \"activated_on\" field.","type":"string"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the UserQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.UserEdges"}]},"email":{"description":"Email holds the value of the \"email\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"is_superuser":{"description":"IsSuperuser holds the value of the \"is_superuser\" field.","type":"boolean"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"role":{"description":"Role holds the value of the \"role\" field.","allOf":[{"$ref":"#/definitions/user.Role"}]},"superuser":{"description":"Superuser holds the value of the \"superuser\" field.","type":"boolean"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.UserEdges":{"type":"object","properties":{"auth_tokens":{"description":"AuthTokens holds the value of the auth_tokens edge.","type":"array","items":{"$ref":"#/definitions/ent.AuthTokens"}},"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]},"notifiers":{"description":"Notifiers holds the value of the notifiers edge.","type":"array","items":{"$ref":"#/definitions/ent.Notifier"}}}},"entityfield.Type":{"type":"string","enum":["text","number","boolean","time"],"x-enum-varnames":["TypeText","TypeNumber","TypeBoolean","TypeTime"]},"repo.BarcodeProduct":{"type":"object","properties":{"barcode":{"type":"string"},"imageBase64":{"type":"string"},"imageURL":{"type":"string"},"item":{"$ref":"#/definitions/repo.ItemCreate"},"manufacturer":{"type":"string"},"modelNumber":{"description":"Identifications","type":"string"},"notes":{"description":"Extras","type":"string"},"search_engine_name":{"type":"string"}}},"repo.Group":{"type":"object","properties":{"createdAt":{"type":"string"},"currency":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.GroupStatistics":{"type":"object","properties":{"totalItemPrice":{"type":"number"},"totalItems":{"type":"integer"},"totalLabels":{"type":"integer"},"totalLocations":{"type":"integer"},"totalUsers":{"type":"integer"},"totalWithWarranty":{"type":"integer"}}},"repo.GroupUpdate":{"type":"object","properties":{"currency":{"type":"string"},"name":{"type":"string"}}},"repo.ItemAttachment":{"type":"object","properties":{"createdAt":{"type":"string"},"id":{"type":"string"},"mimeType":{"type":"string"},"path":{"type":"string"},"primary":{"type":"boolean"},"thumbnail":{"$ref":"#/definitions/ent.Attachment"},"title":{"type":"string"},"type":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.ItemAttachmentUpdate":{"type":"object","properties":{"primary":{"type":"boolean"},"title":{"type":"string"},"type":{"type":"string"}}},"repo.ItemCreate":{"type":"object","required":["name"],"properties":{"description":{"type":"string","maxLength":1000},"labelIds":{"type":"array","items":{"type":"string"}},"locationId":{"description":"Edges","type":"string"},"name":{"type":"string","maxLength":255,"minLength":1},"parentId":{"type":"string","x-nullable":true},"quantity":{"type":"integer"}}},"repo.ItemField":{"type":"object","properties":{"booleanValue":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"numberValue":{"type":"integer"},"textValue":{"type":"string"},"type":{"type":"string"}}},"repo.ItemOut":{"type":"object","properties":{"archived":{"type":"boolean"},"assetId":{"type":"string","example":"0"},"attachments":{"type":"array","items":{"$ref":"#/definitions/repo.ItemAttachment"}},"createdAt":{"type":"string"},"description":{"type":"string"},"fields":{"type":"array","items":{"$ref":"#/definitions/repo.ItemField"}},"id":{"type":"string"},"imageId":{"type":"string","x-nullable":true,"x-omitempty":true},"insured":{"type":"boolean"},"labels":{"type":"array","items":{"$ref":"#/definitions/repo.LabelSummary"}},"lifetimeWarranty":{"description":"Warranty","type":"boolean"},"location":{"description":"Edges","allOf":[{"$ref":"#/definitions/repo.LocationSummary"}],"x-nullable":true,"x-omitempty":true},"manufacturer":{"type":"string"},"modelNumber":{"type":"string"},"name":{"type":"string"},"notes":{"description":"Extras","type":"string"},"parent":{"allOf":[{"$ref":"#/definitions/repo.ItemSummary"}],"x-nullable":true,"x-omitempty":true},"purchaseFrom":{"type":"string"},"purchasePrice":{"type":"number"},"purchaseTime":{"description":"Purchase","type":"string"},"quantity":{"type":"integer"},"serialNumber":{"type":"string"},"soldNotes":{"type":"string"},"soldPrice":{"type":"number"},"soldTime":{"description":"Sold","type":"string"},"soldTo":{"type":"string"},"syncChildItemsLocations":{"type":"boolean"},"thumbnailId":{"type":"string","x-nullable":true,"x-omitempty":true},"updatedAt":{"type":"string"},"warrantyDetails":{"type":"string"},"warrantyExpires":{"type":"string"}}},"repo.ItemPatch":{"type":"object","properties":{"id":{"type":"string"},"quantity":{"type":"integer","x-nullable":true,"x-omitempty":true}}},"repo.ItemPath":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"$ref":"#/definitions/repo.ItemType"}}},"repo.ItemSummary":{"type":"object","properties":{"archived":{"type":"boolean"},"assetId":{"type":"string","example":"0"},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"imageId":{"type":"string","x-nullable":true,"x-omitempty":true},"insured":{"type":"boolean"},"labels":{"type":"array","items":{"$ref":"#/definitions/repo.LabelSummary"}},"location":{"description":"Edges","allOf":[{"$ref":"#/definitions/repo.LocationSummary"}],"x-nullable":true,"x-omitempty":true},"name":{"type":"string"},"purchasePrice":{"type":"number"},"quantity":{"type":"integer"},"soldTime":{"description":"Sale details","type":"string"},"thumbnailId":{"type":"string","x-nullable":true,"x-omitempty":true},"updatedAt":{"type":"string"}}},"repo.ItemType":{"type":"string","enum":["location","item"],"x-enum-varnames":["ItemTypeLocation","ItemTypeItem"]},"repo.ItemUpdate":{"type":"object","required":["name"],"properties":{"archived":{"type":"boolean"},"assetId":{"type":"string"},"description":{"type":"string","maxLength":1000},"fields":{"type":"array","items":{"$ref":"#/definitions/repo.ItemField"}},"id":{"type":"string"},"insured":{"type":"boolean"},"labelIds":{"type":"array","items":{"type":"string"}},"lifetimeWarranty":{"description":"Warranty","type":"boolean"},"locationId":{"description":"Edges","type":"string"},"manufacturer":{"type":"string"},"modelNumber":{"type":"string"},"name":{"type":"string","maxLength":255,"minLength":1},"notes":{"description":"Extras","type":"string"},"parentId":{"type":"string","x-nullable":true,"x-omitempty":true},"purchaseFrom":{"type":"string","maxLength":255},"purchasePrice":{"type":"number","x-nullable":true,"x-omitempty":true},"purchaseTime":{"description":"Purchase","type":"string"},"quantity":{"type":"integer"},"serialNumber":{"description":"Identifications","type":"string"},"soldNotes":{"type":"string"},"soldPrice":{"type":"number","x-nullable":true,"x-omitempty":true},"soldTime":{"description":"Sold","type":"string"},"soldTo":{"type":"string","maxLength":255},"syncChildItemsLocations":{"type":"boolean"},"warrantyDetails":{"type":"string"},"warrantyExpires":{"type":"string"}}},"repo.LabelCreate":{"type":"object","required":["name"],"properties":{"color":{"type":"string"},"description":{"type":"string","maxLength":255},"name":{"type":"string","maxLength":255,"minLength":1}}},"repo.LabelOut":{"type":"object","properties":{"color":{"type":"string"},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LabelSummary":{"type":"object","properties":{"color":{"type":"string"},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LocationCreate":{"type":"object","properties":{"description":{"type":"string"},"name":{"type":"string"},"parentId":{"type":"string","x-nullable":true}}},"repo.LocationOut":{"type":"object","properties":{"children":{"type":"array","items":{"$ref":"#/definitions/repo.LocationSummary"}},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"parent":{"$ref":"#/definitions/repo.LocationSummary"},"totalPrice":{"type":"number"},"updatedAt":{"type":"string"}}},"repo.LocationOutCount":{"type":"object","properties":{"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"itemCount":{"type":"integer"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LocationSummary":{"type":"object","properties":{"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LocationUpdate":{"type":"object","properties":{"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"parentId":{"type":"string","x-nullable":true}}},"repo.MaintenanceEntry":{"type":"object","properties":{"completedDate":{"type":"string"},"cost":{"type":"string","example":"0"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"scheduledDate":{"type":"string"}}},"repo.MaintenanceEntryCreate":{"type":"object","required":["name"],"properties":{"completedDate":{"type":"string"},"cost":{"type":"string","example":"0"},"description":{"type":"string"},"name":{"type":"string"},"scheduledDate":{"type":"string"}}},"repo.MaintenanceEntryUpdate":{"type":"object","properties":{"completedDate":{"type":"string"},"cost":{"type":"string","example":"0"},"description":{"type":"string"},"name":{"type":"string"},"scheduledDate":{"type":"string"}}},"repo.MaintenanceEntryWithDetails":{"type":"object","properties":{"completedDate":{"type":"string"},"cost":{"type":"string","example":"0"},"description":{"type":"string"},"id":{"type":"string"},"itemID":{"type":"string"},"itemName":{"type":"string"},"name":{"type":"string"},"scheduledDate":{"type":"string"}}},"repo.MaintenanceFilterStatus":{"type":"string","enum":["scheduled","completed","both"],"x-enum-varnames":["MaintenanceFilterStatusScheduled","MaintenanceFilterStatusCompleted","MaintenanceFilterStatusBoth"]},"repo.NotifierCreate":{"type":"object","required":["name","url"],"properties":{"isActive":{"type":"boolean"},"name":{"type":"string","maxLength":255,"minLength":1},"url":{"type":"string"}}},"repo.NotifierOut":{"type":"object","properties":{"createdAt":{"type":"string"},"groupId":{"type":"string"},"id":{"type":"string"},"isActive":{"type":"boolean"},"name":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"userId":{"type":"string"}}},"repo.NotifierUpdate":{"type":"object","required":["name"],"properties":{"isActive":{"type":"boolean"},"name":{"type":"string","maxLength":255,"minLength":1},"url":{"type":"string","x-nullable":true}}},"repo.PaginationResult-repo_ItemSummary":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/repo.ItemSummary"}},"page":{"type":"integer"},"pageSize":{"type":"integer"},"total":{"type":"integer"}}},"repo.TotalsByOrganizer":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"total":{"type":"number"}}},"repo.TreeItem":{"type":"object","properties":{"children":{"type":"array","items":{"$ref":"#/definitions/repo.TreeItem"}},"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"}}},"repo.UserOut":{"type":"object","properties":{"email":{"type":"string"},"groupId":{"type":"string"},"groupName":{"type":"string"},"id":{"type":"string"},"isOwner":{"type":"boolean"},"isSuperuser":{"type":"boolean"},"name":{"type":"string"}}},"repo.UserUpdate":{"type":"object","properties":{"email":{"type":"string"},"name":{"type":"string"}}},"repo.ValueOverTime":{"type":"object","properties":{"end":{"type":"string"},"entries":{"type":"array","items":{"$ref":"#/definitions/repo.ValueOverTimeEntry"}},"start":{"type":"string"},"valueAtEnd":{"type":"number"},"valueAtStart":{"type":"number"}}},"repo.ValueOverTimeEntry":{"type":"object","properties":{"date":{"type":"string"},"name":{"type":"string"},"value":{"type":"number"}}},"services.Latest":{"type":"object","properties":{"date":{"type":"string"},"version":{"type":"string"}}},"services.UserRegistration":{"type":"object","properties":{"email":{"type":"string"},"name":{"type":"string"},"password":{"type":"string"},"token":{"type":"string"}}},"user.Role":{"type":"string","enum":["user","user","owner"],"x-enum-varnames":["DefaultRole","RoleUser","RoleOwner"]},"v1.APISummary":{"type":"object","properties":{"allowRegistration":{"type":"boolean"},"build":{"$ref":"#/definitions/v1.Build"},"demo":{"type":"boolean"},"health":{"type":"boolean"},"labelPrinting":{"type":"boolean"},"latest":{"$ref":"#/definitions/services.Latest"},"message":{"type":"string"},"title":{"type":"string"},"versions":{"type":"array","items":{"type":"string"}}}},"v1.ActionAmountResult":{"type":"object","properties":{"completed":{"type":"integer"}}},"v1.Build":{"type":"object","properties":{"buildTime":{"type":"string"},"commit":{"type":"string"},"version":{"type":"string"}}},"v1.ChangePassword":{"type":"object","properties":{"current":{"type":"string"},"new":{"type":"string"}}},"v1.GroupInvitation":{"type":"object","properties":{"expiresAt":{"type":"string"},"token":{"type":"string"},"uses":{"type":"integer"}}},"v1.GroupInvitationCreate":{"type":"object","required":["uses"],"properties":{"expiresAt":{"type":"string"},"uses":{"type":"integer","maximum":100,"minimum":1}}},"v1.ItemAttachmentToken":{"type":"object","properties":{"token":{"type":"string"}}},"v1.LoginForm":{"type":"object","properties":{"password":{"type":"string","example":"admin"},"stayLoggedIn":{"type":"boolean"},"username":{"type":"string","example":"admin@admin.com"}}},"v1.TokenResponse":{"type":"object","properties":{"attachmentToken":{"type":"string"},"expiresAt":{"type":"string"},"token":{"type":"string"}}},"v1.Wrapped":{"type":"object","properties":{"item":{}}},"validate.ErrorResponse":{"type":"object","properties":{"error":{"type":"string"},"fields":{"type":"string"}}}},"securityDefinitions":{"Bearer":{"description":"\"Type 'Bearer TOKEN' to correctly set the API Key\"","type":"apiKey","name":"Authorization","in":"header"}}} \ No newline at end of file diff --git a/backend/app/api/static/docs/swagger.yaml b/backend/app/api/static/docs/swagger.yaml index 9a123299..b14734bc 100644 --- a/backend/app/api/static/docs/swagger.yaml +++ b/backend/app/api/static/docs/swagger.yaml @@ -1580,6 +1580,181 @@ paths: summary: Currency tags: - Base + /v1/entities/{id}/attachments: + post: + consumes: + - multipart/form-data + parameters: + - description: Item ID + in: path + name: id + required: true + type: string + - description: File attachment + in: formData + name: file + required: true + type: file + - description: Type of file + in: formData + name: type + type: string + - description: Is this the primary attachment + in: formData + name: primary + type: boolean + - description: name of the file including extension + in: formData + name: name + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/repo.ItemOut' + "422": + description: Unprocessable Entity + schema: + $ref: '#/definitions/validate.ErrorResponse' + security: + - Bearer: [] + summary: Create Item Attachment + tags: + - Items Attachments + /v1/entities/{id}/attachments/{attachment_id}: + delete: + parameters: + - description: Item ID + in: path + name: id + required: true + type: string + - description: Attachment ID + in: path + name: attachment_id + required: true + type: string + responses: + "204": + description: No Content + security: + - Bearer: [] + summary: Delete Item Attachment + tags: + - Items Attachments + get: + parameters: + - description: Item ID + in: path + name: id + required: true + type: string + - description: Attachment ID + in: path + name: attachment_id + required: true + type: string + produces: + - application/octet-stream + responses: + "200": + description: OK + schema: + $ref: '#/definitions/v1.ItemAttachmentToken' + security: + - Bearer: [] + summary: Get Item Attachment + tags: + - Items Attachments + put: + parameters: + - description: Item ID + in: path + name: id + required: true + type: string + - description: Attachment ID + in: path + name: attachment_id + required: true + type: string + - description: Attachment Update + in: body + name: payload + required: true + schema: + $ref: '#/definitions/repo.ItemAttachmentUpdate' + responses: + "200": + description: OK + schema: + $ref: '#/definitions/repo.ItemOut' + security: + - Bearer: [] + summary: Update Item Attachment + tags: + - Items Attachments + /v1/entities/{id}/maintenance: + get: + parameters: + - description: Item ID + in: path + name: id + required: true + type: string + - enum: + - scheduled + - completed + - both + in: query + name: status + type: string + x-enum-varnames: + - MaintenanceFilterStatusScheduled + - MaintenanceFilterStatusCompleted + - MaintenanceFilterStatusBoth + produces: + - application/json + responses: + "200": + description: OK + schema: + items: + $ref: '#/definitions/repo.MaintenanceEntryWithDetails' + type: array + security: + - Bearer: [] + summary: Get Maintenance Log + tags: + - Item Maintenance + post: + parameters: + - description: Item ID + in: path + name: id + required: true + type: string + - description: Entry Data + in: body + name: payload + required: true + schema: + $ref: '#/definitions/repo.MaintenanceEntryCreate' + produces: + - application/json + responses: + "201": + description: Created + schema: + $ref: '#/definitions/repo.MaintenanceEntry' + security: + - Bearer: [] + summary: Create Maintenance Entry + tags: + - Item Maintenance /v1/groups: get: produces: @@ -1754,6 +1929,8 @@ paths: tags: - Items post: + consumes: + - application/json deprecated: true parameters: - description: Item Data @@ -1776,6 +1953,7 @@ paths: - Items /v1/items/{id}: delete: + deprecated: true parameters: - description: Item ID in: path @@ -1868,6 +2046,7 @@ paths: post: consumes: - multipart/form-data + deprecated: true parameters: - description: Item ID in: path @@ -1910,6 +2089,7 @@ paths: - Items Attachments /v1/items/{id}/attachments/{attachment_id}: delete: + deprecated: true parameters: - description: Item ID in: path @@ -1930,6 +2110,7 @@ paths: tags: - Items Attachments get: + deprecated: true parameters: - description: Item ID in: path @@ -1954,6 +2135,7 @@ paths: tags: - Items Attachments put: + deprecated: true parameters: - description: Item ID in: path @@ -1983,6 +2165,7 @@ paths: - Items Attachments /v1/items/{id}/maintenance: get: + deprecated: true parameters: - description: Item ID in: path @@ -2015,6 +2198,7 @@ paths: tags: - Item Maintenance post: + deprecated: true parameters: - description: Item ID in: path diff --git a/backend/internal/data/ent/entity_predicates.go b/backend/internal/data/ent/entity_predicates.go index 75cca39b..b4e4d1f8 100644 --- a/backend/internal/data/ent/entity_predicates.go +++ b/backend/internal/data/ent/entity_predicates.go @@ -11,16 +11,16 @@ import ( // It normalizes both the database field value and the search value for comparison. func AccentInsensitiveContains(field string, searchValue string) predicate.Entity { if searchValue == "" { - return predicate.Entity(func(s *sql.Selector) { + return func(s *sql.Selector) { // Return a predicate that never matches if search is empty s.Where(sql.False()) - }) + } } // Normalize the search value normalizedSearch := textutils.NormalizeSearchQuery(searchValue) - return predicate.Entity(func(s *sql.Selector) { + return func(s *sql.Selector) { dialect := s.Dialect() switch dialect { @@ -48,7 +48,7 @@ func AccentInsensitiveContains(field string, searchValue string) predicate.Entit "%"+normalizedSearch+"%", )) } - }) + } } // buildSQLiteNormalizeExpression creates a SQLite expression to normalize accented characters diff --git a/backend/internal/data/migrations/postgres/20250531120000_add_entity_tables.go b/backend/internal/data/migrations/postgres/20250831120000_add_entity_tables.go similarity index 94% rename from backend/internal/data/migrations/postgres/20250531120000_add_entity_tables.go rename to backend/internal/data/migrations/postgres/20250831120000_add_entity_tables.go index ac946532..06c53685 100644 --- a/backend/internal/data/migrations/postgres/20250531120000_add_entity_tables.go +++ b/backend/internal/data/migrations/postgres/20250831120000_add_entity_tables.go @@ -11,16 +11,16 @@ import ( //nolint:gochecknoinits func init() { - goose.AddMigrationNoTxContext(Up20250531120000, Down20250531120000) + goose.AddMigrationNoTxContext(Up20250831120000, Down20250831120000) } -func Up20250531120000(ctx context.Context, tx *sql.DB) error { +func Up20250831120000(ctx context.Context, tx *sql.DB) error { // Create entity_types table _, err := tx.ExecContext(ctx, ` CREATE TABLE IF NOT EXISTS "entity_types" ( "id" uuid NOT NULL, - "created_at" timestamptz NOT NULL, - "updated_at" timestamptz NOT NULL, + "created_at" timestamp WITH TIME ZONE NOT NULL, + "updated_at" timestamp WITH TIME ZONE NOT NULL, "name" character varying NOT NULL, "description" character varying NULL, "icon" character varying NULL, @@ -39,8 +39,8 @@ func Up20250531120000(ctx context.Context, tx *sql.DB) error { _, err = tx.ExecContext(ctx, ` CREATE TABLE IF NOT EXISTS "entities" ( "id" uuid NOT NULL, - "created_at" timestamptz NOT NULL, - "updated_at" timestamptz NOT NULL, + "created_at" timestamp WITH TIME ZONE NOT NULL, + "updated_at" timestamp WITH TIME ZONE NOT NULL, "name" character varying NOT NULL, "description" character varying NULL, "import_ref" character varying NULL, @@ -53,12 +53,12 @@ func Up20250531120000(ctx context.Context, tx *sql.DB) error { "model_number" character varying NULL, "manufacturer" character varying NULL, "lifetime_warranty" boolean NOT NULL DEFAULT false, - "warranty_expires" timestamptz NULL, + "warranty_expires" timestamp WITH TIME ZONE NULL, "warranty_details" character varying NULL, - "purchase_time" timestamptz NULL, + "purchase_time" timestamp WITH TIME ZONE NULL, "purchase_from" character varying NULL, "purchase_price" double precision NOT NULL DEFAULT 0, - "sold_time" timestamptz NULL, + "sold_time" timestamp WITH TIME ZONE NULL, "sold_to" character varying NULL, "sold_price" double precision NOT NULL DEFAULT 0, "sold_notes" character varying NULL, @@ -228,6 +228,6 @@ func Up20250531120000(ctx context.Context, tx *sql.DB) error { return nil } -func Down20250531120000(ctx context.Context, tx *sql.DB) error { +func Down20250831120000(ctx context.Context, tx *sql.DB) error { return nil } diff --git a/backend/internal/data/migrations/sqlite3/20250531120023_add_entity_tables.go b/backend/internal/data/migrations/sqlite3/20250831120023_add_entity_tables.go similarity index 96% rename from backend/internal/data/migrations/sqlite3/20250531120023_add_entity_tables.go rename to backend/internal/data/migrations/sqlite3/20250831120023_add_entity_tables.go index 5e3d7180..7f0c3d1b 100644 --- a/backend/internal/data/migrations/sqlite3/20250531120023_add_entity_tables.go +++ b/backend/internal/data/migrations/sqlite3/20250831120023_add_entity_tables.go @@ -11,10 +11,10 @@ import ( //nolint:gochecknoinits func init() { - goose.AddMigrationContext(Up20250531120023, Down20250531120023) + goose.AddMigrationContext(Up20250831120023, Down20250831120023) } -func Up20250531120023(ctx context.Context, tx *sql.Tx) error { +func Up20250831120023(ctx context.Context, tx *sql.Tx) error { // Create entity_types table _, err := tx.ExecContext(ctx, ` CREATE TABLE IF NOT EXISTS "entity_types" ( @@ -154,7 +154,7 @@ func Up20250531120023(ctx context.Context, tx *sql.Tx) error { return nil } -func Down20250531120023(ctx context.Context, tx *sql.Tx) error { +func Down20250831120023(ctx context.Context, tx *sql.Tx) error { // Drop tables in reverse order to avoid foreign key constraints _, err := tx.ExecContext(ctx, `DROP TABLE IF EXISTS "entity_fields";`) if err != nil { diff --git a/docs/en/api/openapi-2.0.json b/docs/en/api/openapi-2.0.json index aff5e38a..2b027605 100644 --- a/docs/en/api/openapi-2.0.json +++ b/docs/en/api/openapi-2.0.json @@ -1 +1 @@ -{"schemes":["https","http"],"swagger":"2.0","info":{"description":"Track, Manage, and Organize your Things.","title":"Homebox API","contact":{"name":"Homebox Team","url":"https://discord.homebox.software"},"version":"1.0"},"host":"demo.homebox.software","basePath":"/api","paths":{"/v1/actions/create-missing-thumbnails":{"post":{"security":[{"Bearer":[]}],"description":"Creates thumbnails for items that are missing them","produces":["application/json"],"tags":["Actions"],"summary":"Create Missing Thumbnails","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/actions/ensure-asset-ids":{"post":{"security":[{"Bearer":[]}],"description":"Ensures all items in the database have an asset ID","produces":["application/json"],"tags":["Actions"],"summary":"Ensure Asset IDs","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/actions/ensure-import-refs":{"post":{"security":[{"Bearer":[]}],"description":"Ensures all items in the database have an import ref","produces":["application/json"],"tags":["Actions"],"summary":"Ensures Import Refs","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/actions/set-primary-photos":{"post":{"security":[{"Bearer":[]}],"description":"Sets the first photo of each item as the primary photo","produces":["application/json"],"tags":["Actions"],"summary":"Set Primary Photos","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/actions/zero-item-time-fields":{"post":{"security":[{"Bearer":[]}],"description":"Resets all item date fields to the beginning of the day","produces":["application/json"],"tags":["Actions"],"summary":"Zero Out Time Fields","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/assets/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Get Item by Asset ID","parameters":[{"type":"string","description":"Asset ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.PaginationResult-repo_ItemSummary"}}}}},"/v1/currency":{"get":{"produces":["application/json"],"tags":["Base"],"summary":"Currency","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/currencies.Currency"}}}}},"/v1/groups":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Group"],"summary":"Get Group","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.Group"}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Group"],"summary":"Update Group","parameters":[{"description":"User Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.GroupUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.Group"}}}}},"/v1/groups/invitations":{"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Group"],"summary":"Create Group Invitation","parameters":[{"description":"User Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/v1.GroupInvitationCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.GroupInvitation"}}}}},"/v1/groups/statistics":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Statistics"],"summary":"Get Group Statistics","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.GroupStatistics"}}}}},"/v1/groups/statistics/labels":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Statistics"],"summary":"Get Label Statistics","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.TotalsByOrganizer"}}}}}},"/v1/groups/statistics/locations":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Statistics"],"summary":"Get Location Statistics","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.TotalsByOrganizer"}}}}}},"/v1/groups/statistics/purchase-price":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Statistics"],"summary":"Get Purchase Price Statistics","parameters":[{"type":"string","description":"start date","name":"start","in":"query"},{"type":"string","description":"end date","name":"end","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ValueOverTime"}}}}},"/v1/items":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Query All Items","deprecated":true,"parameters":[{"type":"string","description":"search string","name":"q","in":"query"},{"type":"integer","description":"page number","name":"page","in":"query"},{"type":"integer","description":"items per page","name":"pageSize","in":"query"},{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"label Ids","name":"labels","in":"query"},{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"location Ids","name":"locations","in":"query"},{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"parent Ids","name":"parentIds","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.PaginationResult-repo_ItemSummary"}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Create Item","deprecated":true,"parameters":[{"description":"Item Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemCreate"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/repo.ItemSummary"}}}}},"/v1/items/export":{"get":{"security":[{"Bearer":[]}],"tags":["Items"],"summary":"(Deprecated) Export Items","deprecated":true,"responses":{"200":{"description":"text/csv","schema":{"type":"string"}}}}},"/v1/items/fields":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Get All Custom Field Names","deprecated":true,"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"type":"string"}}}}}},"/v1/items/fields/values":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Get All Custom Field Values","deprecated":true,"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"type":"string"}}}}}},"/v1/items/import":{"post":{"security":[{"Bearer":[]}],"consumes":["multipart/form-data"],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Import Items","deprecated":true,"parameters":[{"type":"file","description":"Image to upload","name":"csv","in":"formData","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/items/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Get Item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Update Item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"description":"Item Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Delete Item","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}},"patch":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Update Item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"description":"Item Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemPatch"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}}},"/v1/items/{id}/attachments":{"post":{"security":[{"Bearer":[]}],"consumes":["multipart/form-data"],"produces":["application/json"],"tags":["Items Attachments"],"summary":"Create Item Attachment","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"file","description":"File attachment","name":"file","in":"formData","required":true},{"type":"string","description":"Type of file","name":"type","in":"formData"},{"type":"boolean","description":"Is this the primary attachment","name":"primary","in":"formData"},{"type":"string","description":"name of the file including extension","name":"name","in":"formData","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}},"422":{"description":"Unprocessable Entity","schema":{"$ref":"#/definitions/validate.ErrorResponse"}}}}},"/v1/items/{id}/attachments/{attachment_id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/octet-stream"],"tags":["Items Attachments"],"summary":"Get Item Attachment","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ItemAttachmentToken"}}}},"put":{"security":[{"Bearer":[]}],"tags":["Items Attachments"],"summary":"Update Item Attachment","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true},{"description":"Attachment Update","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemAttachmentUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}},"delete":{"security":[{"Bearer":[]}],"tags":["Items Attachments"],"summary":"Delete Item Attachment","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/items/{id}/maintenance":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Item Maintenance"],"summary":"Get Maintenance Log","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"enum":["scheduled","completed","both"],"type":"string","x-enum-varnames":["MaintenanceFilterStatusScheduled","MaintenanceFilterStatusCompleted","MaintenanceFilterStatusBoth"],"name":"status","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.MaintenanceEntryWithDetails"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Item Maintenance"],"summary":"Create Maintenance Entry","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"description":"Entry Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.MaintenanceEntryCreate"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/repo.MaintenanceEntry"}}}}},"/v1/items/{id}/path":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Get the full path of an item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.ItemPath"}}}}}},"/v1/labelmaker/assets/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Get Asset label","parameters":[{"type":"string","description":"Asset ID","name":"id","in":"path","required":true},{"type":"boolean","description":"Print this label, defaults to false","name":"print","in":"query"}],"responses":{"200":{"description":"image/png","schema":{"type":"string"}}}}},"/v1/labelmaker/item/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Get Item label","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"boolean","description":"Print this label, defaults to false","name":"print","in":"query"}],"responses":{"200":{"description":"image/png","schema":{"type":"string"}}}}},"/v1/labelmaker/location/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"Get Location label","parameters":[{"type":"string","description":"Location ID","name":"id","in":"path","required":true},{"type":"boolean","description":"Print this label, defaults to false","name":"print","in":"query"}],"responses":{"200":{"description":"image/png","schema":{"type":"string"}}}}},"/v1/labels":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Get All Labels","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.LabelOut"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Create Label","parameters":[{"description":"Label Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.LabelCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LabelSummary"}}}}},"/v1/labels/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Get Label","parameters":[{"type":"string","description":"Label ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LabelOut"}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Update Label","parameters":[{"type":"string","description":"Label ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LabelOut"}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Delete Label","parameters":[{"type":"string","description":"Label ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/locations":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Get All Locations","deprecated":true,"parameters":[{"type":"boolean","description":"Filter locations with parents","name":"filterChildren","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.LocationOutCount"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Create Location","deprecated":true,"parameters":[{"description":"Location Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.LocationCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LocationSummary"}}}}},"/v1/locations/tree":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Get Locations Tree","deprecated":true,"parameters":[{"type":"boolean","description":"include items in response tree","name":"withItems","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.TreeItem"}}}}}},"/v1/locations/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Get Location","deprecated":true,"parameters":[{"type":"string","description":"Location ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LocationOut"}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Update Location","deprecated":true,"parameters":[{"type":"string","description":"Location ID","name":"id","in":"path","required":true},{"description":"Location Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.LocationUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LocationOut"}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Delete Location","deprecated":true,"parameters":[{"type":"string","description":"Location ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/maintenance":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Maintenance"],"summary":"Query All Maintenance","parameters":[{"enum":["scheduled","completed","both"],"type":"string","x-enum-varnames":["MaintenanceFilterStatusScheduled","MaintenanceFilterStatusCompleted","MaintenanceFilterStatusBoth"],"name":"status","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.MaintenanceEntryWithDetails"}}}}}},"/v1/maintenance/{id}":{"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Maintenance"],"summary":"Update Maintenance Entry","parameters":[{"type":"string","description":"Maintenance ID","name":"id","in":"path","required":true},{"description":"Entry Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.MaintenanceEntryUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.MaintenanceEntry"}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Maintenance"],"summary":"Delete Maintenance Entry","parameters":[{"type":"string","description":"Maintenance ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/notifiers":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Notifiers"],"summary":"Get Notifiers","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.NotifierOut"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Notifiers"],"summary":"Create Notifier","parameters":[{"description":"Notifier Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.NotifierCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.NotifierOut"}}}}},"/v1/notifiers/test":{"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Notifiers"],"summary":"Test Notifier","parameters":[{"type":"string","description":"URL","name":"url","in":"query","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/notifiers/{id}":{"put":{"security":[{"Bearer":[]}],"tags":["Notifiers"],"summary":"Update Notifier","parameters":[{"type":"string","description":"Notifier ID","name":"id","in":"path","required":true},{"description":"Notifier Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.NotifierUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.NotifierOut"}}}},"delete":{"security":[{"Bearer":[]}],"tags":["Notifiers"],"summary":"Delete a Notifier","parameters":[{"type":"string","description":"Notifier ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/products/search-from-barcode":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Search EAN from Barcode","parameters":[{"type":"string","description":"barcode to be searched","name":"data","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.BarcodeProduct"}}}}}},"/v1/qrcode":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Create QR Code","parameters":[{"type":"string","description":"data to be encoded into qrcode","name":"data","in":"query"}],"responses":{"200":{"description":"image/jpeg","schema":{"type":"string"}}}}},"/v1/reporting/bill-of-materials":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Reporting"],"summary":"Export Bill of Materials","responses":{"200":{"description":"text/csv","schema":{"type":"string"}}}}},"/v1/status":{"get":{"produces":["application/json"],"tags":["Base"],"summary":"Application Info","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.APISummary"}}}}},"/v1/users/change-password":{"put":{"security":[{"Bearer":[]}],"tags":["User"],"summary":"Change Password","parameters":[{"description":"Password Payload","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/v1.ChangePassword"}}],"responses":{"204":{"description":"No Content"}}}},"/v1/users/login":{"post":{"consumes":["application/x-www-form-urlencoded","application/json"],"produces":["application/json"],"tags":["Authentication"],"summary":"User Login","parameters":[{"description":"Login Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/v1.LoginForm"}},{"type":"string","description":"auth provider","name":"provider","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.TokenResponse"}}}}},"/v1/users/logout":{"post":{"security":[{"Bearer":[]}],"tags":["Authentication"],"summary":"User Logout","responses":{"204":{"description":"No Content"}}}},"/v1/users/refresh":{"get":{"security":[{"Bearer":[]}],"description":"handleAuthRefresh returns a handler that will issue a new token from an existing token.\nThis does not validate that the user still exists within the database.","tags":["Authentication"],"summary":"User Token Refresh","responses":{"200":{"description":"OK"}}}},"/v1/users/register":{"post":{"produces":["application/json"],"tags":["User"],"summary":"Register New User","parameters":[{"description":"User Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/services.UserRegistration"}}],"responses":{"204":{"description":"No Content"}}}},"/v1/users/self":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["User"],"summary":"Get User Self","responses":{"200":{"description":"OK","schema":{"allOf":[{"$ref":"#/definitions/v1.Wrapped"},{"type":"object","properties":{"item":{"$ref":"#/definitions/repo.UserOut"}}}]}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["User"],"summary":"Update Account","parameters":[{"description":"User Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.UserUpdate"}}],"responses":{"200":{"description":"OK","schema":{"allOf":[{"$ref":"#/definitions/v1.Wrapped"},{"type":"object","properties":{"item":{"$ref":"#/definitions/repo.UserUpdate"}}}]}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["User"],"summary":"Delete Account","responses":{"204":{"description":"No Content"}}}}},"definitions":{"attachment.Type":{"type":"string","enum":["attachment","photo","manual","warranty","attachment","receipt","thumbnail"],"x-enum-varnames":["DefaultType","TypePhoto","TypeManual","TypeWarranty","TypeAttachment","TypeReceipt","TypeThumbnail"]},"authroles.Role":{"type":"string","enum":["user","admin","user","attachments"],"x-enum-varnames":["DefaultRole","RoleAdmin","RoleUser","RoleAttachments"]},"currencies.Currency":{"type":"object","properties":{"code":{"type":"string"},"local":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"}}},"ent.Attachment":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the AttachmentQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.AttachmentEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"mime_type":{"description":"MimeType holds the value of the \"mime_type\" field.","type":"string"},"path":{"description":"Path holds the value of the \"path\" field.","type":"string"},"primary":{"description":"Primary holds the value of the \"primary\" field.","type":"boolean"},"title":{"description":"Title holds the value of the \"title\" field.","type":"string"},"type":{"description":"Type holds the value of the \"type\" field.","allOf":[{"$ref":"#/definitions/attachment.Type"}]},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.AttachmentEdges":{"type":"object","properties":{"entity":{"description":"Entity holds the value of the entity edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]},"thumbnail":{"description":"Thumbnail holds the value of the thumbnail edge.","allOf":[{"$ref":"#/definitions/ent.Attachment"}]}}},"ent.AuthRoles":{"type":"object","properties":{"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the AuthRolesQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.AuthRolesEdges"}]},"id":{"description":"ID of the ent.","type":"integer"},"role":{"description":"Role holds the value of the \"role\" field.","allOf":[{"$ref":"#/definitions/authroles.Role"}]}}},"ent.AuthRolesEdges":{"type":"object","properties":{"token":{"description":"Token holds the value of the token edge.","allOf":[{"$ref":"#/definitions/ent.AuthTokens"}]}}},"ent.AuthTokens":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the AuthTokensQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.AuthTokensEdges"}]},"expires_at":{"description":"ExpiresAt holds the value of the \"expires_at\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"token":{"description":"Token holds the value of the \"token\" field.","type":"array","items":{"type":"integer"}},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.AuthTokensEdges":{"type":"object","properties":{"roles":{"description":"Roles holds the value of the roles edge.","allOf":[{"$ref":"#/definitions/ent.AuthRoles"}]},"user":{"description":"User holds the value of the user edge.","allOf":[{"$ref":"#/definitions/ent.User"}]}}},"ent.Entity":{"type":"object","properties":{"archived":{"description":"Archived holds the value of the \"archived\" field.","type":"boolean"},"asset_id":{"description":"AssetID holds the value of the \"asset_id\" field.","type":"integer"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the EntityQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.EntityEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"import_ref":{"description":"ImportRef holds the value of the \"import_ref\" field.","type":"string"},"insured":{"description":"Insured holds the value of the \"insured\" field.","type":"boolean"},"lifetime_warranty":{"description":"LifetimeWarranty holds the value of the \"lifetime_warranty\" field.","type":"boolean"},"manufacturer":{"description":"Manufacturer holds the value of the \"manufacturer\" field.","type":"string"},"model_number":{"description":"ModelNumber holds the value of the \"model_number\" field.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"notes":{"description":"Notes holds the value of the \"notes\" field.","type":"string"},"purchase_from":{"description":"PurchaseFrom holds the value of the \"purchase_from\" field.","type":"string"},"purchase_price":{"description":"PurchasePrice holds the value of the \"purchase_price\" field.","type":"number"},"purchase_time":{"description":"PurchaseTime holds the value of the \"purchase_time\" field.","type":"string"},"quantity":{"description":"Quantity holds the value of the \"quantity\" field.","type":"integer"},"serial_number":{"description":"SerialNumber holds the value of the \"serial_number\" field.","type":"string"},"sold_notes":{"description":"SoldNotes holds the value of the \"sold_notes\" field.","type":"string"},"sold_price":{"description":"SoldPrice holds the value of the \"sold_price\" field.","type":"number"},"sold_time":{"description":"SoldTime holds the value of the \"sold_time\" field.","type":"string"},"sold_to":{"description":"SoldTo holds the value of the \"sold_to\" field.","type":"string"},"sync_child_entities_locations":{"description":"SyncChildEntitiesLocations holds the value of the \"sync_child_entities_locations\" field.","type":"boolean"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"},"warranty_details":{"description":"WarrantyDetails holds the value of the \"warranty_details\" field.","type":"string"},"warranty_expires":{"description":"WarrantyExpires holds the value of the \"warranty_expires\" field.","type":"string"}}},"ent.EntityEdges":{"type":"object","properties":{"attachments":{"description":"Attachments holds the value of the attachments edge.","type":"array","items":{"$ref":"#/definitions/ent.Attachment"}},"children":{"description":"Children holds the value of the children edge.","type":"array","items":{"$ref":"#/definitions/ent.Entity"}},"entity":{"description":"Entity holds the value of the entity edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]},"fields":{"description":"Fields holds the value of the fields edge.","type":"array","items":{"$ref":"#/definitions/ent.EntityField"}},"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]},"label":{"description":"Label holds the value of the label edge.","type":"array","items":{"$ref":"#/definitions/ent.Label"}},"location":{"description":"Location holds the value of the location edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]},"maintenance_entries":{"description":"MaintenanceEntries holds the value of the maintenance_entries edge.","type":"array","items":{"$ref":"#/definitions/ent.MaintenanceEntry"}},"parent":{"description":"Parent holds the value of the parent edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]},"type":{"description":"Type holds the value of the type edge.","allOf":[{"$ref":"#/definitions/ent.EntityType"}]}}},"ent.EntityField":{"type":"object","properties":{"boolean_value":{"description":"BooleanValue holds the value of the \"boolean_value\" field.","type":"boolean"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the EntityFieldQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.EntityFieldEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"number_value":{"description":"NumberValue holds the value of the \"number_value\" field.","type":"integer"},"text_value":{"description":"TextValue holds the value of the \"text_value\" field.","type":"string"},"time_value":{"description":"TimeValue holds the value of the \"time_value\" field.","type":"string"},"type":{"description":"Type holds the value of the \"type\" field.","allOf":[{"$ref":"#/definitions/entityfield.Type"}]},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.EntityFieldEdges":{"type":"object","properties":{"entity":{"description":"Entity holds the value of the entity edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]}}},"ent.EntityType":{"type":"object","properties":{"color":{"description":"Color holds the value of the \"color\" field.","type":"string"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the EntityTypeQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.EntityTypeEdges"}]},"icon":{"description":"Icon holds the value of the \"icon\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"is_location":{"description":"IsLocation holds the value of the \"is_location\" field.","type":"boolean"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.EntityTypeEdges":{"type":"object","properties":{"entities":{"description":"Entities holds the value of the entities edge.","type":"array","items":{"$ref":"#/definitions/ent.Entity"}},"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]}}},"ent.Group":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"currency":{"description":"Currency holds the value of the \"currency\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the GroupQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.GroupEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.GroupEdges":{"type":"object","properties":{"entities":{"description":"Entities holds the value of the entities edge.","type":"array","items":{"$ref":"#/definitions/ent.Entity"}},"entity_types":{"description":"EntityTypes holds the value of the entity_types edge.","type":"array","items":{"$ref":"#/definitions/ent.EntityType"}},"invitation_tokens":{"description":"InvitationTokens holds the value of the invitation_tokens edge.","type":"array","items":{"$ref":"#/definitions/ent.GroupInvitationToken"}},"labels":{"description":"Labels holds the value of the labels edge.","type":"array","items":{"$ref":"#/definitions/ent.Label"}},"notifiers":{"description":"Notifiers holds the value of the notifiers edge.","type":"array","items":{"$ref":"#/definitions/ent.Notifier"}},"users":{"description":"Users holds the value of the users edge.","type":"array","items":{"$ref":"#/definitions/ent.User"}}}},"ent.GroupInvitationToken":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the GroupInvitationTokenQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.GroupInvitationTokenEdges"}]},"expires_at":{"description":"ExpiresAt holds the value of the \"expires_at\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"token":{"description":"Token holds the value of the \"token\" field.","type":"array","items":{"type":"integer"}},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"},"uses":{"description":"Uses holds the value of the \"uses\" field.","type":"integer"}}},"ent.GroupInvitationTokenEdges":{"type":"object","properties":{"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]}}},"ent.Label":{"type":"object","properties":{"color":{"description":"Color holds the value of the \"color\" field.","type":"string"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the LabelQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.LabelEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.LabelEdges":{"type":"object","properties":{"entities":{"description":"Entities holds the value of the entities edge.","type":"array","items":{"$ref":"#/definitions/ent.Entity"}},"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]}}},"ent.MaintenanceEntry":{"type":"object","properties":{"cost":{"description":"Cost holds the value of the \"cost\" field.","type":"number"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"date":{"description":"Date holds the value of the \"date\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the MaintenanceEntryQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.MaintenanceEntryEdges"}]},"entity_id":{"description":"EntityID holds the value of the \"entity_id\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"scheduled_date":{"description":"ScheduledDate holds the value of the \"scheduled_date\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.MaintenanceEntryEdges":{"type":"object","properties":{"entity":{"description":"Entity holds the value of the entity edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]}}},"ent.Notifier":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the NotifierQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.NotifierEdges"}]},"group_id":{"description":"GroupID holds the value of the \"group_id\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"is_active":{"description":"IsActive holds the value of the \"is_active\" field.","type":"boolean"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"},"user_id":{"description":"UserID holds the value of the \"user_id\" field.","type":"string"}}},"ent.NotifierEdges":{"type":"object","properties":{"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]},"user":{"description":"User holds the value of the user edge.","allOf":[{"$ref":"#/definitions/ent.User"}]}}},"ent.User":{"type":"object","properties":{"activated_on":{"description":"ActivatedOn holds the value of the \"activated_on\" field.","type":"string"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the UserQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.UserEdges"}]},"email":{"description":"Email holds the value of the \"email\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"is_superuser":{"description":"IsSuperuser holds the value of the \"is_superuser\" field.","type":"boolean"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"role":{"description":"Role holds the value of the \"role\" field.","allOf":[{"$ref":"#/definitions/user.Role"}]},"superuser":{"description":"Superuser holds the value of the \"superuser\" field.","type":"boolean"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.UserEdges":{"type":"object","properties":{"auth_tokens":{"description":"AuthTokens holds the value of the auth_tokens edge.","type":"array","items":{"$ref":"#/definitions/ent.AuthTokens"}},"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]},"notifiers":{"description":"Notifiers holds the value of the notifiers edge.","type":"array","items":{"$ref":"#/definitions/ent.Notifier"}}}},"entityfield.Type":{"type":"string","enum":["text","number","boolean","time"],"x-enum-varnames":["TypeText","TypeNumber","TypeBoolean","TypeTime"]},"repo.BarcodeProduct":{"type":"object","properties":{"barcode":{"type":"string"},"imageBase64":{"type":"string"},"imageURL":{"type":"string"},"item":{"$ref":"#/definitions/repo.ItemCreate"},"manufacturer":{"type":"string"},"modelNumber":{"description":"Identifications","type":"string"},"notes":{"description":"Extras","type":"string"},"search_engine_name":{"type":"string"}}},"repo.Group":{"type":"object","properties":{"createdAt":{"type":"string"},"currency":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.GroupStatistics":{"type":"object","properties":{"totalItemPrice":{"type":"number"},"totalItems":{"type":"integer"},"totalLabels":{"type":"integer"},"totalLocations":{"type":"integer"},"totalUsers":{"type":"integer"},"totalWithWarranty":{"type":"integer"}}},"repo.GroupUpdate":{"type":"object","properties":{"currency":{"type":"string"},"name":{"type":"string"}}},"repo.ItemAttachment":{"type":"object","properties":{"createdAt":{"type":"string"},"id":{"type":"string"},"mimeType":{"type":"string"},"path":{"type":"string"},"primary":{"type":"boolean"},"thumbnail":{"$ref":"#/definitions/ent.Attachment"},"title":{"type":"string"},"type":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.ItemAttachmentUpdate":{"type":"object","properties":{"primary":{"type":"boolean"},"title":{"type":"string"},"type":{"type":"string"}}},"repo.ItemCreate":{"type":"object","required":["name"],"properties":{"description":{"type":"string","maxLength":1000},"labelIds":{"type":"array","items":{"type":"string"}},"locationId":{"description":"Edges","type":"string"},"name":{"type":"string","maxLength":255,"minLength":1},"parentId":{"type":"string","x-nullable":true},"quantity":{"type":"integer"}}},"repo.ItemField":{"type":"object","properties":{"booleanValue":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"numberValue":{"type":"integer"},"textValue":{"type":"string"},"type":{"type":"string"}}},"repo.ItemOut":{"type":"object","properties":{"archived":{"type":"boolean"},"assetId":{"type":"string","example":"0"},"attachments":{"type":"array","items":{"$ref":"#/definitions/repo.ItemAttachment"}},"createdAt":{"type":"string"},"description":{"type":"string"},"fields":{"type":"array","items":{"$ref":"#/definitions/repo.ItemField"}},"id":{"type":"string"},"imageId":{"type":"string","x-nullable":true,"x-omitempty":true},"insured":{"type":"boolean"},"labels":{"type":"array","items":{"$ref":"#/definitions/repo.LabelSummary"}},"lifetimeWarranty":{"description":"Warranty","type":"boolean"},"location":{"description":"Edges","allOf":[{"$ref":"#/definitions/repo.LocationSummary"}],"x-nullable":true,"x-omitempty":true},"manufacturer":{"type":"string"},"modelNumber":{"type":"string"},"name":{"type":"string"},"notes":{"description":"Extras","type":"string"},"parent":{"allOf":[{"$ref":"#/definitions/repo.ItemSummary"}],"x-nullable":true,"x-omitempty":true},"purchaseFrom":{"type":"string"},"purchasePrice":{"type":"number"},"purchaseTime":{"description":"Purchase","type":"string"},"quantity":{"type":"integer"},"serialNumber":{"type":"string"},"soldNotes":{"type":"string"},"soldPrice":{"type":"number"},"soldTime":{"description":"Sold","type":"string"},"soldTo":{"type":"string"},"syncChildItemsLocations":{"type":"boolean"},"thumbnailId":{"type":"string","x-nullable":true,"x-omitempty":true},"updatedAt":{"type":"string"},"warrantyDetails":{"type":"string"},"warrantyExpires":{"type":"string"}}},"repo.ItemPatch":{"type":"object","properties":{"id":{"type":"string"},"quantity":{"type":"integer","x-nullable":true,"x-omitempty":true}}},"repo.ItemPath":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"$ref":"#/definitions/repo.ItemType"}}},"repo.ItemSummary":{"type":"object","properties":{"archived":{"type":"boolean"},"assetId":{"type":"string","example":"0"},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"imageId":{"type":"string","x-nullable":true,"x-omitempty":true},"insured":{"type":"boolean"},"labels":{"type":"array","items":{"$ref":"#/definitions/repo.LabelSummary"}},"location":{"description":"Edges","allOf":[{"$ref":"#/definitions/repo.LocationSummary"}],"x-nullable":true,"x-omitempty":true},"name":{"type":"string"},"purchasePrice":{"type":"number"},"quantity":{"type":"integer"},"soldTime":{"description":"Sale details","type":"string"},"thumbnailId":{"type":"string","x-nullable":true,"x-omitempty":true},"updatedAt":{"type":"string"}}},"repo.ItemType":{"type":"string","enum":["location","item"],"x-enum-varnames":["ItemTypeLocation","ItemTypeItem"]},"repo.ItemUpdate":{"type":"object","required":["name"],"properties":{"archived":{"type":"boolean"},"assetId":{"type":"string"},"description":{"type":"string","maxLength":1000},"fields":{"type":"array","items":{"$ref":"#/definitions/repo.ItemField"}},"id":{"type":"string"},"insured":{"type":"boolean"},"labelIds":{"type":"array","items":{"type":"string"}},"lifetimeWarranty":{"description":"Warranty","type":"boolean"},"locationId":{"description":"Edges","type":"string"},"manufacturer":{"type":"string"},"modelNumber":{"type":"string"},"name":{"type":"string","maxLength":255,"minLength":1},"notes":{"description":"Extras","type":"string"},"parentId":{"type":"string","x-nullable":true,"x-omitempty":true},"purchaseFrom":{"type":"string","maxLength":255},"purchasePrice":{"type":"number","x-nullable":true,"x-omitempty":true},"purchaseTime":{"description":"Purchase","type":"string"},"quantity":{"type":"integer"},"serialNumber":{"description":"Identifications","type":"string"},"soldNotes":{"type":"string"},"soldPrice":{"type":"number","x-nullable":true,"x-omitempty":true},"soldTime":{"description":"Sold","type":"string"},"soldTo":{"type":"string","maxLength":255},"syncChildItemsLocations":{"type":"boolean"},"warrantyDetails":{"type":"string"},"warrantyExpires":{"type":"string"}}},"repo.LabelCreate":{"type":"object","required":["name"],"properties":{"color":{"type":"string"},"description":{"type":"string","maxLength":255},"name":{"type":"string","maxLength":255,"minLength":1}}},"repo.LabelOut":{"type":"object","properties":{"color":{"type":"string"},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LabelSummary":{"type":"object","properties":{"color":{"type":"string"},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LocationCreate":{"type":"object","properties":{"description":{"type":"string"},"name":{"type":"string"},"parentId":{"type":"string","x-nullable":true}}},"repo.LocationOut":{"type":"object","properties":{"children":{"type":"array","items":{"$ref":"#/definitions/repo.LocationSummary"}},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"parent":{"$ref":"#/definitions/repo.LocationSummary"},"totalPrice":{"type":"number"},"updatedAt":{"type":"string"}}},"repo.LocationOutCount":{"type":"object","properties":{"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"itemCount":{"type":"integer"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LocationSummary":{"type":"object","properties":{"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LocationUpdate":{"type":"object","properties":{"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"parentId":{"type":"string","x-nullable":true}}},"repo.MaintenanceEntry":{"type":"object","properties":{"completedDate":{"type":"string"},"cost":{"type":"string","example":"0"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"scheduledDate":{"type":"string"}}},"repo.MaintenanceEntryCreate":{"type":"object","required":["name"],"properties":{"completedDate":{"type":"string"},"cost":{"type":"string","example":"0"},"description":{"type":"string"},"name":{"type":"string"},"scheduledDate":{"type":"string"}}},"repo.MaintenanceEntryUpdate":{"type":"object","properties":{"completedDate":{"type":"string"},"cost":{"type":"string","example":"0"},"description":{"type":"string"},"name":{"type":"string"},"scheduledDate":{"type":"string"}}},"repo.MaintenanceEntryWithDetails":{"type":"object","properties":{"completedDate":{"type":"string"},"cost":{"type":"string","example":"0"},"description":{"type":"string"},"id":{"type":"string"},"itemID":{"type":"string"},"itemName":{"type":"string"},"name":{"type":"string"},"scheduledDate":{"type":"string"}}},"repo.MaintenanceFilterStatus":{"type":"string","enum":["scheduled","completed","both"],"x-enum-varnames":["MaintenanceFilterStatusScheduled","MaintenanceFilterStatusCompleted","MaintenanceFilterStatusBoth"]},"repo.NotifierCreate":{"type":"object","required":["name","url"],"properties":{"isActive":{"type":"boolean"},"name":{"type":"string","maxLength":255,"minLength":1},"url":{"type":"string"}}},"repo.NotifierOut":{"type":"object","properties":{"createdAt":{"type":"string"},"groupId":{"type":"string"},"id":{"type":"string"},"isActive":{"type":"boolean"},"name":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"userId":{"type":"string"}}},"repo.NotifierUpdate":{"type":"object","required":["name"],"properties":{"isActive":{"type":"boolean"},"name":{"type":"string","maxLength":255,"minLength":1},"url":{"type":"string","x-nullable":true}}},"repo.PaginationResult-repo_ItemSummary":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/repo.ItemSummary"}},"page":{"type":"integer"},"pageSize":{"type":"integer"},"total":{"type":"integer"}}},"repo.TotalsByOrganizer":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"total":{"type":"number"}}},"repo.TreeItem":{"type":"object","properties":{"children":{"type":"array","items":{"$ref":"#/definitions/repo.TreeItem"}},"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"}}},"repo.UserOut":{"type":"object","properties":{"email":{"type":"string"},"groupId":{"type":"string"},"groupName":{"type":"string"},"id":{"type":"string"},"isOwner":{"type":"boolean"},"isSuperuser":{"type":"boolean"},"name":{"type":"string"}}},"repo.UserUpdate":{"type":"object","properties":{"email":{"type":"string"},"name":{"type":"string"}}},"repo.ValueOverTime":{"type":"object","properties":{"end":{"type":"string"},"entries":{"type":"array","items":{"$ref":"#/definitions/repo.ValueOverTimeEntry"}},"start":{"type":"string"},"valueAtEnd":{"type":"number"},"valueAtStart":{"type":"number"}}},"repo.ValueOverTimeEntry":{"type":"object","properties":{"date":{"type":"string"},"name":{"type":"string"},"value":{"type":"number"}}},"services.Latest":{"type":"object","properties":{"date":{"type":"string"},"version":{"type":"string"}}},"services.UserRegistration":{"type":"object","properties":{"email":{"type":"string"},"name":{"type":"string"},"password":{"type":"string"},"token":{"type":"string"}}},"user.Role":{"type":"string","enum":["user","user","owner"],"x-enum-varnames":["DefaultRole","RoleUser","RoleOwner"]},"v1.APISummary":{"type":"object","properties":{"allowRegistration":{"type":"boolean"},"build":{"$ref":"#/definitions/v1.Build"},"demo":{"type":"boolean"},"health":{"type":"boolean"},"labelPrinting":{"type":"boolean"},"latest":{"$ref":"#/definitions/services.Latest"},"message":{"type":"string"},"title":{"type":"string"},"versions":{"type":"array","items":{"type":"string"}}}},"v1.ActionAmountResult":{"type":"object","properties":{"completed":{"type":"integer"}}},"v1.Build":{"type":"object","properties":{"buildTime":{"type":"string"},"commit":{"type":"string"},"version":{"type":"string"}}},"v1.ChangePassword":{"type":"object","properties":{"current":{"type":"string"},"new":{"type":"string"}}},"v1.GroupInvitation":{"type":"object","properties":{"expiresAt":{"type":"string"},"token":{"type":"string"},"uses":{"type":"integer"}}},"v1.GroupInvitationCreate":{"type":"object","required":["uses"],"properties":{"expiresAt":{"type":"string"},"uses":{"type":"integer","maximum":100,"minimum":1}}},"v1.ItemAttachmentToken":{"type":"object","properties":{"token":{"type":"string"}}},"v1.LoginForm":{"type":"object","properties":{"password":{"type":"string","example":"admin"},"stayLoggedIn":{"type":"boolean"},"username":{"type":"string","example":"admin@admin.com"}}},"v1.TokenResponse":{"type":"object","properties":{"attachmentToken":{"type":"string"},"expiresAt":{"type":"string"},"token":{"type":"string"}}},"v1.Wrapped":{"type":"object","properties":{"item":{}}},"validate.ErrorResponse":{"type":"object","properties":{"error":{"type":"string"},"fields":{"type":"string"}}}},"securityDefinitions":{"Bearer":{"description":"\"Type 'Bearer TOKEN' to correctly set the API Key\"","type":"apiKey","name":"Authorization","in":"header"}}} \ No newline at end of file +{"schemes":["https","http"],"swagger":"2.0","info":{"description":"Track, Manage, and Organize your Things.","title":"Homebox API","contact":{"name":"Homebox Team","url":"https://discord.homebox.software"},"version":"1.0"},"host":"demo.homebox.software","basePath":"/api","paths":{"/v1/actions/create-missing-thumbnails":{"post":{"security":[{"Bearer":[]}],"description":"Creates thumbnails for items that are missing them","produces":["application/json"],"tags":["Actions"],"summary":"Create Missing Thumbnails","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/actions/ensure-asset-ids":{"post":{"security":[{"Bearer":[]}],"description":"Ensures all items in the database have an asset ID","produces":["application/json"],"tags":["Actions"],"summary":"Ensure Asset IDs","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/actions/ensure-import-refs":{"post":{"security":[{"Bearer":[]}],"description":"Ensures all items in the database have an import ref","produces":["application/json"],"tags":["Actions"],"summary":"Ensures Import Refs","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/actions/set-primary-photos":{"post":{"security":[{"Bearer":[]}],"description":"Sets the first photo of each item as the primary photo","produces":["application/json"],"tags":["Actions"],"summary":"Set Primary Photos","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/actions/zero-item-time-fields":{"post":{"security":[{"Bearer":[]}],"description":"Resets all item date fields to the beginning of the day","produces":["application/json"],"tags":["Actions"],"summary":"Zero Out Time Fields","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ActionAmountResult"}}}}},"/v1/assets/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Get Item by Asset ID","parameters":[{"type":"string","description":"Asset ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.PaginationResult-repo_ItemSummary"}}}}},"/v1/currency":{"get":{"produces":["application/json"],"tags":["Base"],"summary":"Currency","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/currencies.Currency"}}}}},"/v1/entities/{id}/attachments":{"post":{"security":[{"Bearer":[]}],"consumes":["multipart/form-data"],"produces":["application/json"],"tags":["Items Attachments"],"summary":"Create Item Attachment","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"file","description":"File attachment","name":"file","in":"formData","required":true},{"type":"string","description":"Type of file","name":"type","in":"formData"},{"type":"boolean","description":"Is this the primary attachment","name":"primary","in":"formData"},{"type":"string","description":"name of the file including extension","name":"name","in":"formData","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}},"422":{"description":"Unprocessable Entity","schema":{"$ref":"#/definitions/validate.ErrorResponse"}}}}},"/v1/entities/{id}/attachments/{attachment_id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/octet-stream"],"tags":["Items Attachments"],"summary":"Get Item Attachment","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ItemAttachmentToken"}}}},"put":{"security":[{"Bearer":[]}],"tags":["Items Attachments"],"summary":"Update Item Attachment","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true},{"description":"Attachment Update","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemAttachmentUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}},"delete":{"security":[{"Bearer":[]}],"tags":["Items Attachments"],"summary":"Delete Item Attachment","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/entities/{id}/maintenance":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Item Maintenance"],"summary":"Get Maintenance Log","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"enum":["scheduled","completed","both"],"type":"string","x-enum-varnames":["MaintenanceFilterStatusScheduled","MaintenanceFilterStatusCompleted","MaintenanceFilterStatusBoth"],"name":"status","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.MaintenanceEntryWithDetails"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Item Maintenance"],"summary":"Create Maintenance Entry","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"description":"Entry Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.MaintenanceEntryCreate"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/repo.MaintenanceEntry"}}}}},"/v1/groups":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Group"],"summary":"Get Group","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.Group"}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Group"],"summary":"Update Group","parameters":[{"description":"User Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.GroupUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.Group"}}}}},"/v1/groups/invitations":{"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Group"],"summary":"Create Group Invitation","parameters":[{"description":"User Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/v1.GroupInvitationCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.GroupInvitation"}}}}},"/v1/groups/statistics":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Statistics"],"summary":"Get Group Statistics","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.GroupStatistics"}}}}},"/v1/groups/statistics/labels":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Statistics"],"summary":"Get Label Statistics","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.TotalsByOrganizer"}}}}}},"/v1/groups/statistics/locations":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Statistics"],"summary":"Get Location Statistics","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.TotalsByOrganizer"}}}}}},"/v1/groups/statistics/purchase-price":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Statistics"],"summary":"Get Purchase Price Statistics","parameters":[{"type":"string","description":"start date","name":"start","in":"query"},{"type":"string","description":"end date","name":"end","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ValueOverTime"}}}}},"/v1/items":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Query All Items","deprecated":true,"parameters":[{"type":"string","description":"search string","name":"q","in":"query"},{"type":"integer","description":"page number","name":"page","in":"query"},{"type":"integer","description":"items per page","name":"pageSize","in":"query"},{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"label Ids","name":"labels","in":"query"},{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"location Ids","name":"locations","in":"query"},{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"parent Ids","name":"parentIds","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.PaginationResult-repo_ItemSummary"}}}},"post":{"security":[{"Bearer":[]}],"consumes":["application/json"],"produces":["application/json"],"tags":["Items"],"summary":"Create Item","deprecated":true,"parameters":[{"description":"Item Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemCreate"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/repo.ItemSummary"}}}}},"/v1/items/export":{"get":{"security":[{"Bearer":[]}],"tags":["Items"],"summary":"(Deprecated) Export Items","deprecated":true,"responses":{"200":{"description":"text/csv","schema":{"type":"string"}}}}},"/v1/items/fields":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Get All Custom Field Names","deprecated":true,"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"type":"string"}}}}}},"/v1/items/fields/values":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Get All Custom Field Values","deprecated":true,"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"type":"string"}}}}}},"/v1/items/import":{"post":{"security":[{"Bearer":[]}],"consumes":["multipart/form-data"],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Import Items","deprecated":true,"parameters":[{"type":"file","description":"Image to upload","name":"csv","in":"formData","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/items/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Get Item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Update Item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"description":"Item Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Delete Item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}},"patch":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Update Item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"description":"Item Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemPatch"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}}},"/v1/items/{id}/attachments":{"post":{"security":[{"Bearer":[]}],"consumes":["multipart/form-data"],"produces":["application/json"],"tags":["Items Attachments"],"summary":"Create Item Attachment","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"file","description":"File attachment","name":"file","in":"formData","required":true},{"type":"string","description":"Type of file","name":"type","in":"formData"},{"type":"boolean","description":"Is this the primary attachment","name":"primary","in":"formData"},{"type":"string","description":"name of the file including extension","name":"name","in":"formData","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}},"422":{"description":"Unprocessable Entity","schema":{"$ref":"#/definitions/validate.ErrorResponse"}}}}},"/v1/items/{id}/attachments/{attachment_id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/octet-stream"],"tags":["Items Attachments"],"summary":"Get Item Attachment","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.ItemAttachmentToken"}}}},"put":{"security":[{"Bearer":[]}],"tags":["Items Attachments"],"summary":"Update Item Attachment","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true},{"description":"Attachment Update","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.ItemAttachmentUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.ItemOut"}}}},"delete":{"security":[{"Bearer":[]}],"tags":["Items Attachments"],"summary":"Delete Item Attachment","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"string","description":"Attachment ID","name":"attachment_id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/items/{id}/maintenance":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Item Maintenance"],"summary":"Get Maintenance Log","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"enum":["scheduled","completed","both"],"type":"string","x-enum-varnames":["MaintenanceFilterStatusScheduled","MaintenanceFilterStatusCompleted","MaintenanceFilterStatusBoth"],"name":"status","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.MaintenanceEntryWithDetails"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Item Maintenance"],"summary":"Create Maintenance Entry","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"description":"Entry Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.MaintenanceEntryCreate"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/repo.MaintenanceEntry"}}}}},"/v1/items/{id}/path":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"(Deprecated) Get the full path of an item","deprecated":true,"parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.ItemPath"}}}}}},"/v1/labelmaker/assets/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Get Asset label","parameters":[{"type":"string","description":"Asset ID","name":"id","in":"path","required":true},{"type":"boolean","description":"Print this label, defaults to false","name":"print","in":"query"}],"responses":{"200":{"description":"image/png","schema":{"type":"string"}}}}},"/v1/labelmaker/item/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Get Item label","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"type":"boolean","description":"Print this label, defaults to false","name":"print","in":"query"}],"responses":{"200":{"description":"image/png","schema":{"type":"string"}}}}},"/v1/labelmaker/location/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"Get Location label","parameters":[{"type":"string","description":"Location ID","name":"id","in":"path","required":true},{"type":"boolean","description":"Print this label, defaults to false","name":"print","in":"query"}],"responses":{"200":{"description":"image/png","schema":{"type":"string"}}}}},"/v1/labels":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Get All Labels","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.LabelOut"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Create Label","parameters":[{"description":"Label Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.LabelCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LabelSummary"}}}}},"/v1/labels/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Get Label","parameters":[{"type":"string","description":"Label ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LabelOut"}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Update Label","parameters":[{"type":"string","description":"Label ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LabelOut"}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Labels"],"summary":"Delete Label","parameters":[{"type":"string","description":"Label ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/locations":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Get All Locations","deprecated":true,"parameters":[{"type":"boolean","description":"Filter locations with parents","name":"filterChildren","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.LocationOutCount"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Create Location","deprecated":true,"parameters":[{"description":"Location Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.LocationCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LocationSummary"}}}}},"/v1/locations/tree":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Get Locations Tree","deprecated":true,"parameters":[{"type":"boolean","description":"include items in response tree","name":"withItems","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.TreeItem"}}}}}},"/v1/locations/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Get Location","deprecated":true,"parameters":[{"type":"string","description":"Location ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LocationOut"}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Update Location","deprecated":true,"parameters":[{"type":"string","description":"Location ID","name":"id","in":"path","required":true},{"description":"Location Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.LocationUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.LocationOut"}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Locations"],"summary":"(Deprecated) Delete Location","deprecated":true,"parameters":[{"type":"string","description":"Location ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/maintenance":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Maintenance"],"summary":"Query All Maintenance","parameters":[{"enum":["scheduled","completed","both"],"type":"string","x-enum-varnames":["MaintenanceFilterStatusScheduled","MaintenanceFilterStatusCompleted","MaintenanceFilterStatusBoth"],"name":"status","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.MaintenanceEntryWithDetails"}}}}}},"/v1/maintenance/{id}":{"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Maintenance"],"summary":"Update Maintenance Entry","parameters":[{"type":"string","description":"Maintenance ID","name":"id","in":"path","required":true},{"description":"Entry Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.MaintenanceEntryUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.MaintenanceEntry"}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Maintenance"],"summary":"Delete Maintenance Entry","parameters":[{"type":"string","description":"Maintenance ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/notifiers":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Notifiers"],"summary":"Get Notifiers","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.NotifierOut"}}}}},"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Notifiers"],"summary":"Create Notifier","parameters":[{"description":"Notifier Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.NotifierCreate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.NotifierOut"}}}}},"/v1/notifiers/test":{"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Notifiers"],"summary":"Test Notifier","parameters":[{"type":"string","description":"URL","name":"url","in":"query","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/notifiers/{id}":{"put":{"security":[{"Bearer":[]}],"tags":["Notifiers"],"summary":"Update Notifier","parameters":[{"type":"string","description":"Notifier ID","name":"id","in":"path","required":true},{"description":"Notifier Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.NotifierUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.NotifierOut"}}}},"delete":{"security":[{"Bearer":[]}],"tags":["Notifiers"],"summary":"Delete a Notifier","parameters":[{"type":"string","description":"Notifier ID","name":"id","in":"path","required":true}],"responses":{"204":{"description":"No Content"}}}},"/v1/products/search-from-barcode":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Search EAN from Barcode","parameters":[{"type":"string","description":"barcode to be searched","name":"data","in":"query"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.BarcodeProduct"}}}}}},"/v1/qrcode":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Create QR Code","parameters":[{"type":"string","description":"data to be encoded into qrcode","name":"data","in":"query"}],"responses":{"200":{"description":"image/jpeg","schema":{"type":"string"}}}}},"/v1/reporting/bill-of-materials":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Reporting"],"summary":"Export Bill of Materials","responses":{"200":{"description":"text/csv","schema":{"type":"string"}}}}},"/v1/status":{"get":{"produces":["application/json"],"tags":["Base"],"summary":"Application Info","responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.APISummary"}}}}},"/v1/users/change-password":{"put":{"security":[{"Bearer":[]}],"tags":["User"],"summary":"Change Password","parameters":[{"description":"Password Payload","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/v1.ChangePassword"}}],"responses":{"204":{"description":"No Content"}}}},"/v1/users/login":{"post":{"consumes":["application/x-www-form-urlencoded","application/json"],"produces":["application/json"],"tags":["Authentication"],"summary":"User Login","parameters":[{"description":"Login Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/v1.LoginForm"}},{"type":"string","description":"auth provider","name":"provider","in":"query"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/v1.TokenResponse"}}}}},"/v1/users/logout":{"post":{"security":[{"Bearer":[]}],"tags":["Authentication"],"summary":"User Logout","responses":{"204":{"description":"No Content"}}}},"/v1/users/refresh":{"get":{"security":[{"Bearer":[]}],"description":"handleAuthRefresh returns a handler that will issue a new token from an existing token.\nThis does not validate that the user still exists within the database.","tags":["Authentication"],"summary":"User Token Refresh","responses":{"200":{"description":"OK"}}}},"/v1/users/register":{"post":{"produces":["application/json"],"tags":["User"],"summary":"Register New User","parameters":[{"description":"User Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/services.UserRegistration"}}],"responses":{"204":{"description":"No Content"}}}},"/v1/users/self":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["User"],"summary":"Get User Self","responses":{"200":{"description":"OK","schema":{"allOf":[{"$ref":"#/definitions/v1.Wrapped"},{"type":"object","properties":{"item":{"$ref":"#/definitions/repo.UserOut"}}}]}}}},"put":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["User"],"summary":"Update Account","parameters":[{"description":"User Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.UserUpdate"}}],"responses":{"200":{"description":"OK","schema":{"allOf":[{"$ref":"#/definitions/v1.Wrapped"},{"type":"object","properties":{"item":{"$ref":"#/definitions/repo.UserUpdate"}}}]}}}},"delete":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["User"],"summary":"Delete Account","responses":{"204":{"description":"No Content"}}}}},"definitions":{"attachment.Type":{"type":"string","enum":["attachment","photo","manual","warranty","attachment","receipt","thumbnail"],"x-enum-varnames":["DefaultType","TypePhoto","TypeManual","TypeWarranty","TypeAttachment","TypeReceipt","TypeThumbnail"]},"authroles.Role":{"type":"string","enum":["user","admin","user","attachments"],"x-enum-varnames":["DefaultRole","RoleAdmin","RoleUser","RoleAttachments"]},"currencies.Currency":{"type":"object","properties":{"code":{"type":"string"},"local":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"}}},"ent.Attachment":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the AttachmentQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.AttachmentEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"mime_type":{"description":"MimeType holds the value of the \"mime_type\" field.","type":"string"},"path":{"description":"Path holds the value of the \"path\" field.","type":"string"},"primary":{"description":"Primary holds the value of the \"primary\" field.","type":"boolean"},"title":{"description":"Title holds the value of the \"title\" field.","type":"string"},"type":{"description":"Type holds the value of the \"type\" field.","allOf":[{"$ref":"#/definitions/attachment.Type"}]},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.AttachmentEdges":{"type":"object","properties":{"entity":{"description":"Entity holds the value of the entity edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]},"thumbnail":{"description":"Thumbnail holds the value of the thumbnail edge.","allOf":[{"$ref":"#/definitions/ent.Attachment"}]}}},"ent.AuthRoles":{"type":"object","properties":{"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the AuthRolesQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.AuthRolesEdges"}]},"id":{"description":"ID of the ent.","type":"integer"},"role":{"description":"Role holds the value of the \"role\" field.","allOf":[{"$ref":"#/definitions/authroles.Role"}]}}},"ent.AuthRolesEdges":{"type":"object","properties":{"token":{"description":"Token holds the value of the token edge.","allOf":[{"$ref":"#/definitions/ent.AuthTokens"}]}}},"ent.AuthTokens":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the AuthTokensQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.AuthTokensEdges"}]},"expires_at":{"description":"ExpiresAt holds the value of the \"expires_at\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"token":{"description":"Token holds the value of the \"token\" field.","type":"array","items":{"type":"integer"}},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.AuthTokensEdges":{"type":"object","properties":{"roles":{"description":"Roles holds the value of the roles edge.","allOf":[{"$ref":"#/definitions/ent.AuthRoles"}]},"user":{"description":"User holds the value of the user edge.","allOf":[{"$ref":"#/definitions/ent.User"}]}}},"ent.Entity":{"type":"object","properties":{"archived":{"description":"Archived holds the value of the \"archived\" field.","type":"boolean"},"asset_id":{"description":"AssetID holds the value of the \"asset_id\" field.","type":"integer"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the EntityQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.EntityEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"import_ref":{"description":"ImportRef holds the value of the \"import_ref\" field.","type":"string"},"insured":{"description":"Insured holds the value of the \"insured\" field.","type":"boolean"},"lifetime_warranty":{"description":"LifetimeWarranty holds the value of the \"lifetime_warranty\" field.","type":"boolean"},"manufacturer":{"description":"Manufacturer holds the value of the \"manufacturer\" field.","type":"string"},"model_number":{"description":"ModelNumber holds the value of the \"model_number\" field.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"notes":{"description":"Notes holds the value of the \"notes\" field.","type":"string"},"purchase_from":{"description":"PurchaseFrom holds the value of the \"purchase_from\" field.","type":"string"},"purchase_price":{"description":"PurchasePrice holds the value of the \"purchase_price\" field.","type":"number"},"purchase_time":{"description":"PurchaseTime holds the value of the \"purchase_time\" field.","type":"string"},"quantity":{"description":"Quantity holds the value of the \"quantity\" field.","type":"integer"},"serial_number":{"description":"SerialNumber holds the value of the \"serial_number\" field.","type":"string"},"sold_notes":{"description":"SoldNotes holds the value of the \"sold_notes\" field.","type":"string"},"sold_price":{"description":"SoldPrice holds the value of the \"sold_price\" field.","type":"number"},"sold_time":{"description":"SoldTime holds the value of the \"sold_time\" field.","type":"string"},"sold_to":{"description":"SoldTo holds the value of the \"sold_to\" field.","type":"string"},"sync_child_entities_locations":{"description":"SyncChildEntitiesLocations holds the value of the \"sync_child_entities_locations\" field.","type":"boolean"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"},"warranty_details":{"description":"WarrantyDetails holds the value of the \"warranty_details\" field.","type":"string"},"warranty_expires":{"description":"WarrantyExpires holds the value of the \"warranty_expires\" field.","type":"string"}}},"ent.EntityEdges":{"type":"object","properties":{"attachments":{"description":"Attachments holds the value of the attachments edge.","type":"array","items":{"$ref":"#/definitions/ent.Attachment"}},"children":{"description":"Children holds the value of the children edge.","type":"array","items":{"$ref":"#/definitions/ent.Entity"}},"entity":{"description":"Entity holds the value of the entity edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]},"fields":{"description":"Fields holds the value of the fields edge.","type":"array","items":{"$ref":"#/definitions/ent.EntityField"}},"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]},"label":{"description":"Label holds the value of the label edge.","type":"array","items":{"$ref":"#/definitions/ent.Label"}},"location":{"description":"Location holds the value of the location edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]},"maintenance_entries":{"description":"MaintenanceEntries holds the value of the maintenance_entries edge.","type":"array","items":{"$ref":"#/definitions/ent.MaintenanceEntry"}},"parent":{"description":"Parent holds the value of the parent edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]},"type":{"description":"Type holds the value of the type edge.","allOf":[{"$ref":"#/definitions/ent.EntityType"}]}}},"ent.EntityField":{"type":"object","properties":{"boolean_value":{"description":"BooleanValue holds the value of the \"boolean_value\" field.","type":"boolean"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the EntityFieldQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.EntityFieldEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"number_value":{"description":"NumberValue holds the value of the \"number_value\" field.","type":"integer"},"text_value":{"description":"TextValue holds the value of the \"text_value\" field.","type":"string"},"time_value":{"description":"TimeValue holds the value of the \"time_value\" field.","type":"string"},"type":{"description":"Type holds the value of the \"type\" field.","allOf":[{"$ref":"#/definitions/entityfield.Type"}]},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.EntityFieldEdges":{"type":"object","properties":{"entity":{"description":"Entity holds the value of the entity edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]}}},"ent.EntityType":{"type":"object","properties":{"color":{"description":"Color holds the value of the \"color\" field.","type":"string"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the EntityTypeQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.EntityTypeEdges"}]},"icon":{"description":"Icon holds the value of the \"icon\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"is_location":{"description":"IsLocation holds the value of the \"is_location\" field.","type":"boolean"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.EntityTypeEdges":{"type":"object","properties":{"entities":{"description":"Entities holds the value of the entities edge.","type":"array","items":{"$ref":"#/definitions/ent.Entity"}},"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]}}},"ent.Group":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"currency":{"description":"Currency holds the value of the \"currency\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the GroupQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.GroupEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.GroupEdges":{"type":"object","properties":{"entities":{"description":"Entities holds the value of the entities edge.","type":"array","items":{"$ref":"#/definitions/ent.Entity"}},"entity_types":{"description":"EntityTypes holds the value of the entity_types edge.","type":"array","items":{"$ref":"#/definitions/ent.EntityType"}},"invitation_tokens":{"description":"InvitationTokens holds the value of the invitation_tokens edge.","type":"array","items":{"$ref":"#/definitions/ent.GroupInvitationToken"}},"labels":{"description":"Labels holds the value of the labels edge.","type":"array","items":{"$ref":"#/definitions/ent.Label"}},"notifiers":{"description":"Notifiers holds the value of the notifiers edge.","type":"array","items":{"$ref":"#/definitions/ent.Notifier"}},"users":{"description":"Users holds the value of the users edge.","type":"array","items":{"$ref":"#/definitions/ent.User"}}}},"ent.GroupInvitationToken":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the GroupInvitationTokenQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.GroupInvitationTokenEdges"}]},"expires_at":{"description":"ExpiresAt holds the value of the \"expires_at\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"token":{"description":"Token holds the value of the \"token\" field.","type":"array","items":{"type":"integer"}},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"},"uses":{"description":"Uses holds the value of the \"uses\" field.","type":"integer"}}},"ent.GroupInvitationTokenEdges":{"type":"object","properties":{"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]}}},"ent.Label":{"type":"object","properties":{"color":{"description":"Color holds the value of the \"color\" field.","type":"string"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the LabelQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.LabelEdges"}]},"id":{"description":"ID of the ent.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.LabelEdges":{"type":"object","properties":{"entities":{"description":"Entities holds the value of the entities edge.","type":"array","items":{"$ref":"#/definitions/ent.Entity"}},"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]}}},"ent.MaintenanceEntry":{"type":"object","properties":{"cost":{"description":"Cost holds the value of the \"cost\" field.","type":"number"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"date":{"description":"Date holds the value of the \"date\" field.","type":"string"},"description":{"description":"Description holds the value of the \"description\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the MaintenanceEntryQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.MaintenanceEntryEdges"}]},"entity_id":{"description":"EntityID holds the value of the \"entity_id\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"scheduled_date":{"description":"ScheduledDate holds the value of the \"scheduled_date\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.MaintenanceEntryEdges":{"type":"object","properties":{"entity":{"description":"Entity holds the value of the entity edge.","allOf":[{"$ref":"#/definitions/ent.Entity"}]}}},"ent.Notifier":{"type":"object","properties":{"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the NotifierQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.NotifierEdges"}]},"group_id":{"description":"GroupID holds the value of the \"group_id\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"is_active":{"description":"IsActive holds the value of the \"is_active\" field.","type":"boolean"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"},"user_id":{"description":"UserID holds the value of the \"user_id\" field.","type":"string"}}},"ent.NotifierEdges":{"type":"object","properties":{"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]},"user":{"description":"User holds the value of the user edge.","allOf":[{"$ref":"#/definitions/ent.User"}]}}},"ent.User":{"type":"object","properties":{"activated_on":{"description":"ActivatedOn holds the value of the \"activated_on\" field.","type":"string"},"created_at":{"description":"CreatedAt holds the value of the \"created_at\" field.","type":"string"},"edges":{"description":"Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the UserQuery when eager-loading is set.","allOf":[{"$ref":"#/definitions/ent.UserEdges"}]},"email":{"description":"Email holds the value of the \"email\" field.","type":"string"},"id":{"description":"ID of the ent.","type":"string"},"is_superuser":{"description":"IsSuperuser holds the value of the \"is_superuser\" field.","type":"boolean"},"name":{"description":"Name holds the value of the \"name\" field.","type":"string"},"role":{"description":"Role holds the value of the \"role\" field.","allOf":[{"$ref":"#/definitions/user.Role"}]},"superuser":{"description":"Superuser holds the value of the \"superuser\" field.","type":"boolean"},"updated_at":{"description":"UpdatedAt holds the value of the \"updated_at\" field.","type":"string"}}},"ent.UserEdges":{"type":"object","properties":{"auth_tokens":{"description":"AuthTokens holds the value of the auth_tokens edge.","type":"array","items":{"$ref":"#/definitions/ent.AuthTokens"}},"group":{"description":"Group holds the value of the group edge.","allOf":[{"$ref":"#/definitions/ent.Group"}]},"notifiers":{"description":"Notifiers holds the value of the notifiers edge.","type":"array","items":{"$ref":"#/definitions/ent.Notifier"}}}},"entityfield.Type":{"type":"string","enum":["text","number","boolean","time"],"x-enum-varnames":["TypeText","TypeNumber","TypeBoolean","TypeTime"]},"repo.BarcodeProduct":{"type":"object","properties":{"barcode":{"type":"string"},"imageBase64":{"type":"string"},"imageURL":{"type":"string"},"item":{"$ref":"#/definitions/repo.ItemCreate"},"manufacturer":{"type":"string"},"modelNumber":{"description":"Identifications","type":"string"},"notes":{"description":"Extras","type":"string"},"search_engine_name":{"type":"string"}}},"repo.Group":{"type":"object","properties":{"createdAt":{"type":"string"},"currency":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.GroupStatistics":{"type":"object","properties":{"totalItemPrice":{"type":"number"},"totalItems":{"type":"integer"},"totalLabels":{"type":"integer"},"totalLocations":{"type":"integer"},"totalUsers":{"type":"integer"},"totalWithWarranty":{"type":"integer"}}},"repo.GroupUpdate":{"type":"object","properties":{"currency":{"type":"string"},"name":{"type":"string"}}},"repo.ItemAttachment":{"type":"object","properties":{"createdAt":{"type":"string"},"id":{"type":"string"},"mimeType":{"type":"string"},"path":{"type":"string"},"primary":{"type":"boolean"},"thumbnail":{"$ref":"#/definitions/ent.Attachment"},"title":{"type":"string"},"type":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.ItemAttachmentUpdate":{"type":"object","properties":{"primary":{"type":"boolean"},"title":{"type":"string"},"type":{"type":"string"}}},"repo.ItemCreate":{"type":"object","required":["name"],"properties":{"description":{"type":"string","maxLength":1000},"labelIds":{"type":"array","items":{"type":"string"}},"locationId":{"description":"Edges","type":"string"},"name":{"type":"string","maxLength":255,"minLength":1},"parentId":{"type":"string","x-nullable":true},"quantity":{"type":"integer"}}},"repo.ItemField":{"type":"object","properties":{"booleanValue":{"type":"boolean"},"id":{"type":"string"},"name":{"type":"string"},"numberValue":{"type":"integer"},"textValue":{"type":"string"},"type":{"type":"string"}}},"repo.ItemOut":{"type":"object","properties":{"archived":{"type":"boolean"},"assetId":{"type":"string","example":"0"},"attachments":{"type":"array","items":{"$ref":"#/definitions/repo.ItemAttachment"}},"createdAt":{"type":"string"},"description":{"type":"string"},"fields":{"type":"array","items":{"$ref":"#/definitions/repo.ItemField"}},"id":{"type":"string"},"imageId":{"type":"string","x-nullable":true,"x-omitempty":true},"insured":{"type":"boolean"},"labels":{"type":"array","items":{"$ref":"#/definitions/repo.LabelSummary"}},"lifetimeWarranty":{"description":"Warranty","type":"boolean"},"location":{"description":"Edges","allOf":[{"$ref":"#/definitions/repo.LocationSummary"}],"x-nullable":true,"x-omitempty":true},"manufacturer":{"type":"string"},"modelNumber":{"type":"string"},"name":{"type":"string"},"notes":{"description":"Extras","type":"string"},"parent":{"allOf":[{"$ref":"#/definitions/repo.ItemSummary"}],"x-nullable":true,"x-omitempty":true},"purchaseFrom":{"type":"string"},"purchasePrice":{"type":"number"},"purchaseTime":{"description":"Purchase","type":"string"},"quantity":{"type":"integer"},"serialNumber":{"type":"string"},"soldNotes":{"type":"string"},"soldPrice":{"type":"number"},"soldTime":{"description":"Sold","type":"string"},"soldTo":{"type":"string"},"syncChildItemsLocations":{"type":"boolean"},"thumbnailId":{"type":"string","x-nullable":true,"x-omitempty":true},"updatedAt":{"type":"string"},"warrantyDetails":{"type":"string"},"warrantyExpires":{"type":"string"}}},"repo.ItemPatch":{"type":"object","properties":{"id":{"type":"string"},"quantity":{"type":"integer","x-nullable":true,"x-omitempty":true}}},"repo.ItemPath":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"$ref":"#/definitions/repo.ItemType"}}},"repo.ItemSummary":{"type":"object","properties":{"archived":{"type":"boolean"},"assetId":{"type":"string","example":"0"},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"imageId":{"type":"string","x-nullable":true,"x-omitempty":true},"insured":{"type":"boolean"},"labels":{"type":"array","items":{"$ref":"#/definitions/repo.LabelSummary"}},"location":{"description":"Edges","allOf":[{"$ref":"#/definitions/repo.LocationSummary"}],"x-nullable":true,"x-omitempty":true},"name":{"type":"string"},"purchasePrice":{"type":"number"},"quantity":{"type":"integer"},"soldTime":{"description":"Sale details","type":"string"},"thumbnailId":{"type":"string","x-nullable":true,"x-omitempty":true},"updatedAt":{"type":"string"}}},"repo.ItemType":{"type":"string","enum":["location","item"],"x-enum-varnames":["ItemTypeLocation","ItemTypeItem"]},"repo.ItemUpdate":{"type":"object","required":["name"],"properties":{"archived":{"type":"boolean"},"assetId":{"type":"string"},"description":{"type":"string","maxLength":1000},"fields":{"type":"array","items":{"$ref":"#/definitions/repo.ItemField"}},"id":{"type":"string"},"insured":{"type":"boolean"},"labelIds":{"type":"array","items":{"type":"string"}},"lifetimeWarranty":{"description":"Warranty","type":"boolean"},"locationId":{"description":"Edges","type":"string"},"manufacturer":{"type":"string"},"modelNumber":{"type":"string"},"name":{"type":"string","maxLength":255,"minLength":1},"notes":{"description":"Extras","type":"string"},"parentId":{"type":"string","x-nullable":true,"x-omitempty":true},"purchaseFrom":{"type":"string","maxLength":255},"purchasePrice":{"type":"number","x-nullable":true,"x-omitempty":true},"purchaseTime":{"description":"Purchase","type":"string"},"quantity":{"type":"integer"},"serialNumber":{"description":"Identifications","type":"string"},"soldNotes":{"type":"string"},"soldPrice":{"type":"number","x-nullable":true,"x-omitempty":true},"soldTime":{"description":"Sold","type":"string"},"soldTo":{"type":"string","maxLength":255},"syncChildItemsLocations":{"type":"boolean"},"warrantyDetails":{"type":"string"},"warrantyExpires":{"type":"string"}}},"repo.LabelCreate":{"type":"object","required":["name"],"properties":{"color":{"type":"string"},"description":{"type":"string","maxLength":255},"name":{"type":"string","maxLength":255,"minLength":1}}},"repo.LabelOut":{"type":"object","properties":{"color":{"type":"string"},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LabelSummary":{"type":"object","properties":{"color":{"type":"string"},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LocationCreate":{"type":"object","properties":{"description":{"type":"string"},"name":{"type":"string"},"parentId":{"type":"string","x-nullable":true}}},"repo.LocationOut":{"type":"object","properties":{"children":{"type":"array","items":{"$ref":"#/definitions/repo.LocationSummary"}},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"parent":{"$ref":"#/definitions/repo.LocationSummary"},"totalPrice":{"type":"number"},"updatedAt":{"type":"string"}}},"repo.LocationOutCount":{"type":"object","properties":{"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"itemCount":{"type":"integer"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LocationSummary":{"type":"object","properties":{"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LocationUpdate":{"type":"object","properties":{"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"parentId":{"type":"string","x-nullable":true}}},"repo.MaintenanceEntry":{"type":"object","properties":{"completedDate":{"type":"string"},"cost":{"type":"string","example":"0"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"scheduledDate":{"type":"string"}}},"repo.MaintenanceEntryCreate":{"type":"object","required":["name"],"properties":{"completedDate":{"type":"string"},"cost":{"type":"string","example":"0"},"description":{"type":"string"},"name":{"type":"string"},"scheduledDate":{"type":"string"}}},"repo.MaintenanceEntryUpdate":{"type":"object","properties":{"completedDate":{"type":"string"},"cost":{"type":"string","example":"0"},"description":{"type":"string"},"name":{"type":"string"},"scheduledDate":{"type":"string"}}},"repo.MaintenanceEntryWithDetails":{"type":"object","properties":{"completedDate":{"type":"string"},"cost":{"type":"string","example":"0"},"description":{"type":"string"},"id":{"type":"string"},"itemID":{"type":"string"},"itemName":{"type":"string"},"name":{"type":"string"},"scheduledDate":{"type":"string"}}},"repo.MaintenanceFilterStatus":{"type":"string","enum":["scheduled","completed","both"],"x-enum-varnames":["MaintenanceFilterStatusScheduled","MaintenanceFilterStatusCompleted","MaintenanceFilterStatusBoth"]},"repo.NotifierCreate":{"type":"object","required":["name","url"],"properties":{"isActive":{"type":"boolean"},"name":{"type":"string","maxLength":255,"minLength":1},"url":{"type":"string"}}},"repo.NotifierOut":{"type":"object","properties":{"createdAt":{"type":"string"},"groupId":{"type":"string"},"id":{"type":"string"},"isActive":{"type":"boolean"},"name":{"type":"string"},"updatedAt":{"type":"string"},"url":{"type":"string"},"userId":{"type":"string"}}},"repo.NotifierUpdate":{"type":"object","required":["name"],"properties":{"isActive":{"type":"boolean"},"name":{"type":"string","maxLength":255,"minLength":1},"url":{"type":"string","x-nullable":true}}},"repo.PaginationResult-repo_ItemSummary":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/repo.ItemSummary"}},"page":{"type":"integer"},"pageSize":{"type":"integer"},"total":{"type":"integer"}}},"repo.TotalsByOrganizer":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"total":{"type":"number"}}},"repo.TreeItem":{"type":"object","properties":{"children":{"type":"array","items":{"$ref":"#/definitions/repo.TreeItem"}},"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"}}},"repo.UserOut":{"type":"object","properties":{"email":{"type":"string"},"groupId":{"type":"string"},"groupName":{"type":"string"},"id":{"type":"string"},"isOwner":{"type":"boolean"},"isSuperuser":{"type":"boolean"},"name":{"type":"string"}}},"repo.UserUpdate":{"type":"object","properties":{"email":{"type":"string"},"name":{"type":"string"}}},"repo.ValueOverTime":{"type":"object","properties":{"end":{"type":"string"},"entries":{"type":"array","items":{"$ref":"#/definitions/repo.ValueOverTimeEntry"}},"start":{"type":"string"},"valueAtEnd":{"type":"number"},"valueAtStart":{"type":"number"}}},"repo.ValueOverTimeEntry":{"type":"object","properties":{"date":{"type":"string"},"name":{"type":"string"},"value":{"type":"number"}}},"services.Latest":{"type":"object","properties":{"date":{"type":"string"},"version":{"type":"string"}}},"services.UserRegistration":{"type":"object","properties":{"email":{"type":"string"},"name":{"type":"string"},"password":{"type":"string"},"token":{"type":"string"}}},"user.Role":{"type":"string","enum":["user","user","owner"],"x-enum-varnames":["DefaultRole","RoleUser","RoleOwner"]},"v1.APISummary":{"type":"object","properties":{"allowRegistration":{"type":"boolean"},"build":{"$ref":"#/definitions/v1.Build"},"demo":{"type":"boolean"},"health":{"type":"boolean"},"labelPrinting":{"type":"boolean"},"latest":{"$ref":"#/definitions/services.Latest"},"message":{"type":"string"},"title":{"type":"string"},"versions":{"type":"array","items":{"type":"string"}}}},"v1.ActionAmountResult":{"type":"object","properties":{"completed":{"type":"integer"}}},"v1.Build":{"type":"object","properties":{"buildTime":{"type":"string"},"commit":{"type":"string"},"version":{"type":"string"}}},"v1.ChangePassword":{"type":"object","properties":{"current":{"type":"string"},"new":{"type":"string"}}},"v1.GroupInvitation":{"type":"object","properties":{"expiresAt":{"type":"string"},"token":{"type":"string"},"uses":{"type":"integer"}}},"v1.GroupInvitationCreate":{"type":"object","required":["uses"],"properties":{"expiresAt":{"type":"string"},"uses":{"type":"integer","maximum":100,"minimum":1}}},"v1.ItemAttachmentToken":{"type":"object","properties":{"token":{"type":"string"}}},"v1.LoginForm":{"type":"object","properties":{"password":{"type":"string","example":"admin"},"stayLoggedIn":{"type":"boolean"},"username":{"type":"string","example":"admin@admin.com"}}},"v1.TokenResponse":{"type":"object","properties":{"attachmentToken":{"type":"string"},"expiresAt":{"type":"string"},"token":{"type":"string"}}},"v1.Wrapped":{"type":"object","properties":{"item":{}}},"validate.ErrorResponse":{"type":"object","properties":{"error":{"type":"string"},"fields":{"type":"string"}}}},"securityDefinitions":{"Bearer":{"description":"\"Type 'Bearer TOKEN' to correctly set the API Key\"","type":"apiKey","name":"Authorization","in":"header"}}} \ No newline at end of file diff --git a/docs/en/api/openapi-2.0.yaml b/docs/en/api/openapi-2.0.yaml index 9a123299..b14734bc 100644 --- a/docs/en/api/openapi-2.0.yaml +++ b/docs/en/api/openapi-2.0.yaml @@ -1580,6 +1580,181 @@ paths: summary: Currency tags: - Base + /v1/entities/{id}/attachments: + post: + consumes: + - multipart/form-data + parameters: + - description: Item ID + in: path + name: id + required: true + type: string + - description: File attachment + in: formData + name: file + required: true + type: file + - description: Type of file + in: formData + name: type + type: string + - description: Is this the primary attachment + in: formData + name: primary + type: boolean + - description: name of the file including extension + in: formData + name: name + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/repo.ItemOut' + "422": + description: Unprocessable Entity + schema: + $ref: '#/definitions/validate.ErrorResponse' + security: + - Bearer: [] + summary: Create Item Attachment + tags: + - Items Attachments + /v1/entities/{id}/attachments/{attachment_id}: + delete: + parameters: + - description: Item ID + in: path + name: id + required: true + type: string + - description: Attachment ID + in: path + name: attachment_id + required: true + type: string + responses: + "204": + description: No Content + security: + - Bearer: [] + summary: Delete Item Attachment + tags: + - Items Attachments + get: + parameters: + - description: Item ID + in: path + name: id + required: true + type: string + - description: Attachment ID + in: path + name: attachment_id + required: true + type: string + produces: + - application/octet-stream + responses: + "200": + description: OK + schema: + $ref: '#/definitions/v1.ItemAttachmentToken' + security: + - Bearer: [] + summary: Get Item Attachment + tags: + - Items Attachments + put: + parameters: + - description: Item ID + in: path + name: id + required: true + type: string + - description: Attachment ID + in: path + name: attachment_id + required: true + type: string + - description: Attachment Update + in: body + name: payload + required: true + schema: + $ref: '#/definitions/repo.ItemAttachmentUpdate' + responses: + "200": + description: OK + schema: + $ref: '#/definitions/repo.ItemOut' + security: + - Bearer: [] + summary: Update Item Attachment + tags: + - Items Attachments + /v1/entities/{id}/maintenance: + get: + parameters: + - description: Item ID + in: path + name: id + required: true + type: string + - enum: + - scheduled + - completed + - both + in: query + name: status + type: string + x-enum-varnames: + - MaintenanceFilterStatusScheduled + - MaintenanceFilterStatusCompleted + - MaintenanceFilterStatusBoth + produces: + - application/json + responses: + "200": + description: OK + schema: + items: + $ref: '#/definitions/repo.MaintenanceEntryWithDetails' + type: array + security: + - Bearer: [] + summary: Get Maintenance Log + tags: + - Item Maintenance + post: + parameters: + - description: Item ID + in: path + name: id + required: true + type: string + - description: Entry Data + in: body + name: payload + required: true + schema: + $ref: '#/definitions/repo.MaintenanceEntryCreate' + produces: + - application/json + responses: + "201": + description: Created + schema: + $ref: '#/definitions/repo.MaintenanceEntry' + security: + - Bearer: [] + summary: Create Maintenance Entry + tags: + - Item Maintenance /v1/groups: get: produces: @@ -1754,6 +1929,8 @@ paths: tags: - Items post: + consumes: + - application/json deprecated: true parameters: - description: Item Data @@ -1776,6 +1953,7 @@ paths: - Items /v1/items/{id}: delete: + deprecated: true parameters: - description: Item ID in: path @@ -1868,6 +2046,7 @@ paths: post: consumes: - multipart/form-data + deprecated: true parameters: - description: Item ID in: path @@ -1910,6 +2089,7 @@ paths: - Items Attachments /v1/items/{id}/attachments/{attachment_id}: delete: + deprecated: true parameters: - description: Item ID in: path @@ -1930,6 +2110,7 @@ paths: tags: - Items Attachments get: + deprecated: true parameters: - description: Item ID in: path @@ -1954,6 +2135,7 @@ paths: tags: - Items Attachments put: + deprecated: true parameters: - description: Item ID in: path @@ -1983,6 +2165,7 @@ paths: - Items Attachments /v1/items/{id}/maintenance: get: + deprecated: true parameters: - description: Item ID in: path @@ -2015,6 +2198,7 @@ paths: tags: - Item Maintenance post: + deprecated: true parameters: - description: Item ID in: path