diff --git a/backend/app/api/handlers/v1/v1_ctrl_entitytypes.go b/backend/app/api/handlers/v1/v1_ctrl_entitytypes.go new file mode 100644 index 00000000..4bf4c966 --- /dev/null +++ b/backend/app/api/handlers/v1/v1_ctrl_entitytypes.go @@ -0,0 +1,81 @@ +package v1 + +import ( + "net/http" + + "github.com/google/uuid" + "github.com/hay-kot/httpkit/errchain" + "github.com/sysadminsmedia/homebox/backend/internal/core/services" + "github.com/sysadminsmedia/homebox/backend/internal/data/repo" + "github.com/sysadminsmedia/homebox/backend/internal/web/adapters" +) + +// HandleEntityTypesGetAll godoc +// +// @Summary Query All Entity Types +// @Tags EntityTypes +// @Produce json +// @Success 200 {array} repo.EntityType[] +// @Router /v1/entitytype [GET] +// @Security Bearer +func (ctrl *V1Controller) HandleEntityTypesGetAll() errchain.HandlerFunc { + fn := func(r *http.Request) ([]repo.EntityType, error) { + auth := services.NewContext(r.Context()) + return ctrl.repo.EntityType.GetEntityTypesByGroupID(auth, auth.GID) + } + return adapters.Command(fn, http.StatusOK) +} + +// HandleEntityTypeGetOne godoc +// +// @Summary Get One Entity Type +// @Tags EntityTypes +// @Produce json +// @Param id path string true "Entity Type ID" +// @Success 200 {object} repo.EntityType +// @Router /v1/entitytype/{id} [GET] +// @Security Bearer +func (ctrl *V1Controller) HandleEntityTypeGetOne() errchain.HandlerFunc { + fn := func(r *http.Request, entityTypeID uuid.UUID) (repo.EntityType, error) { + auth := services.NewContext(r.Context()) + return ctrl.repo.EntityType.GetOneByGroup(auth, auth.GID, entityTypeID) + } + return adapters.CommandID("id", fn, http.StatusOK) +} + +// HandleEntityTypeCreate godoc +// +// @Summary Create Entity Type +// @Tags EntityTypes +// @Accept json +// @Produce json +// @Param payload body repo.EntityTypeCreate true "Entity Type Data" +// @Success 201 {object} repo.EntityType +// @Router /v1/entitytype [POST] +// @Security Bearer +func (ctrl *V1Controller) HandleEntityTypeCreate() errchain.HandlerFunc { + fn := func(r *http.Request, body repo.EntityTypeCreate) (repo.EntityType, error) { + auth := services.NewContext(r.Context()) + return ctrl.repo.EntityType.CreateEntityType(auth, auth.GID, body) + } + return adapters.Action(fn, http.StatusCreated) +} + +// HandleEntityTypeUpdate godoc +// +// @Summary Update Entity Type +// @Tags EntityTypes +// @Accept json +// @Produce json +// @Param id path string true "Entity Type ID" +// @Param payload body repo.EntityTypeUpdate true "Entity Type Data" +// @Success 200 {object} repo.EntityType +// @Router /v1/entitytype/{id} [PUT] +// @Security Bearer +func (ctrl *V1Controller) HandleEntityTypeUpdate() errchain.HandlerFunc { + fn := func(r *http.Request, entityTypeID uuid.UUID, body repo.EntityTypeUpdate) (repo.EntityType, error) { + auth := services.NewContext(r.Context()) + return ctrl.repo.EntityType.UpdateEntityType(auth, auth.GID, entityTypeID, body) + } + return adapters.ActionID("id", fn, http.StatusOK) +} diff --git a/backend/app/api/routes.go b/backend/app/api/routes.go index c5af00bb..2a2dca17 100644 --- a/backend/app/api/routes.go +++ b/backend/app/api/routes.go @@ -185,6 +185,12 @@ func (a *app) mountRoutes(r *chi.Mux, chain *errchain.ErrChain, repos *repo.AllR // Reporting Services r.Get("/reporting/bill-of-materials", chain.ToHandlerFunc(v1Ctrl.HandleBillOfMaterialsExport(), userMW...)) + // Entity Types + r.Get("/entitytype", chain.ToHandlerFunc(v1Ctrl.HandleEntityTypesGetAll(), userMW...)) + r.Post("/entitytype", chain.ToHandlerFunc(v1Ctrl.HandleEntityTypeCreate(), userMW...)) + r.Get("/entitytype/{id}", chain.ToHandlerFunc(v1Ctrl.HandleEntityTypeGetOne(), userMW...)) + r.Put("/entitytype/{id}", chain.ToHandlerFunc(v1Ctrl.HandleEntityTypeUpdate(), userMW...)) + r.NotFound(http.NotFound) }) diff --git a/backend/app/api/static/docs/docs.go b/backend/app/api/static/docs/docs.go index 843aebf9..5d6f73d2 100644 --- a/backend/app/api/static/docs/docs.go +++ b/backend/app/api/static/docs/docs.go @@ -1,4379 +1,11 @@ -// Package docs Code generated by swaggo/swag. DO NOT EDIT +// Code generated by swaggo/swag. DO NOT EDIT. + package docs -import "github.com/swaggo/swag" +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": "Query All Items", - "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", - "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": "Export Items", - "responses": { - "200": { - "description": "text/csv", - "schema": { - "type": "string" - } - } - } - } - }, - "/v1/items/fields": { - "get": { - "security": [ - { - "Bearer": [] - } - ], - "produces": [ - "application/json" - ], - "tags": [ - "Items" - ], - "summary": "Get All Custom Field Names", - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "/v1/items/fields/values": { - "get": { - "security": [ - { - "Bearer": [] - } - ], - "produces": [ - "application/json" - ], - "tags": [ - "Items" - ], - "summary": "Get All Custom Field Values", - "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": "Import Items", - "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": "Get Item", - "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": "Update Item", - "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": "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": "Update Item", - "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}/duplicate": { - "post": { - "security": [ - { - "Bearer": [] - } - ], - "produces": [ - "application/json" - ], - "tags": [ - "Items" - ], - "summary": "Duplicate Item", - "parameters": [ - { - "type": "string", - "description": "Item ID", - "name": "id", - "in": "path", - "required": true - }, - { - "description": "Duplicate Options", - "name": "payload", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/repo.DuplicateOptions" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/repo.ItemOut" - } - } - } - } - }, - "/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": "Get the full path of an item", - "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": "Get All Locations", - "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": "Create Location", - "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": "Get Locations Tree", - "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": "Get Location", - "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": "Update Location", - "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": "Delete Location", - "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": { - "item": { - "description": "Item holds the value of the item edge.", - "allOf": [ - { - "$ref": "#/definitions/ent.Item" - } - ] - }, - "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.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": { - "invitation_tokens": { - "description": "InvitationTokens holds the value of the invitation_tokens edge.", - "type": "array", - "items": { - "$ref": "#/definitions/ent.GroupInvitationToken" - } - }, - "items": { - "description": "Items holds the value of the items edge.", - "type": "array", - "items": { - "$ref": "#/definitions/ent.Item" - } - }, - "labels": { - "description": "Labels holds the value of the labels edge.", - "type": "array", - "items": { - "$ref": "#/definitions/ent.Label" - } - }, - "locations": { - "description": "Locations holds the value of the locations edge.", - "type": "array", - "items": { - "$ref": "#/definitions/ent.Location" - } - }, - "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.Item": { - "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 ItemQuery when eager-loading is set.", - "allOf": [ - { - "$ref": "#/definitions/ent.ItemEdges" - } - ] - }, - "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_items_locations": { - "description": "SyncChildItemsLocations holds the value of the \"sync_child_items_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.ItemEdges": { - "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.Item" - } - }, - "fields": { - "description": "Fields holds the value of the fields edge.", - "type": "array", - "items": { - "$ref": "#/definitions/ent.ItemField" - } - }, - "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.Location" - } - ] - }, - "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.Item" - } - ] - } - } - }, - "ent.ItemField": { - "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 ItemFieldQuery when eager-loading is set.", - "allOf": [ - { - "$ref": "#/definitions/ent.ItemFieldEdges" - } - ] - }, - "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/itemfield.Type" - } - ] - }, - "updated_at": { - "description": "UpdatedAt holds the value of the \"updated_at\" field.", - "type": "string" - } - } - }, - "ent.ItemFieldEdges": { - "type": "object", - "properties": { - "item": { - "description": "Item holds the value of the item edge.", - "allOf": [ - { - "$ref": "#/definitions/ent.Item" - } - ] - } - } - }, - "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": { - "group": { - "description": "Group holds the value of the group edge.", - "allOf": [ - { - "$ref": "#/definitions/ent.Group" - } - ] - }, - "items": { - "description": "Items holds the value of the items edge.", - "type": "array", - "items": { - "$ref": "#/definitions/ent.Item" - } - } - } - }, - "ent.Location": { - "type": "object", - "properties": { - "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 LocationQuery when eager-loading is set.", - "allOf": [ - { - "$ref": "#/definitions/ent.LocationEdges" - } - ] - }, - "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.LocationEdges": { - "type": "object", - "properties": { - "children": { - "description": "Children holds the value of the children edge.", - "type": "array", - "items": { - "$ref": "#/definitions/ent.Location" - } - }, - "group": { - "description": "Group holds the value of the group edge.", - "allOf": [ - { - "$ref": "#/definitions/ent.Group" - } - ] - }, - "items": { - "description": "Items holds the value of the items edge.", - "type": "array", - "items": { - "$ref": "#/definitions/ent.Item" - } - }, - "parent": { - "description": "Parent holds the value of the parent edge.", - "allOf": [ - { - "$ref": "#/definitions/ent.Location" - } - ] - } - } - }, - "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" - } - ] - }, - "id": { - "description": "ID of the ent.", - "type": "string" - }, - "item_id": { - "description": "ItemID holds the value of the \"item_id\" field.", - "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": { - "item": { - "description": "Item holds the value of the item edge.", - "allOf": [ - { - "$ref": "#/definitions/ent.Item" - } - ] - } - } - }, - "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" - } - } - } - }, - "itemfield.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.DuplicateOptions": { - "type": "object", - "properties": { - "copyAttachments": { - "type": "boolean" - }, - "copyCustomFields": { - "type": "boolean" - }, - "copyMaintenance": { - "type": "boolean" - }, - "copyPrefix": { - "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": 1000 - }, - "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.EntityAttachmentUpdate"}}],"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/entitytype":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["EntityTypes"],"summary":"Query All Entity Types","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.EntityType"}}}}},"post":{"security":[{"Bearer":[]}],"consumes":["application/json"],"produces":["application/json"],"tags":["EntityTypes"],"summary":"Create Entity Type","parameters":[{"description":"Entity Type Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.EntityTypeCreate"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/repo.EntityType"}}}}},"/v1/entitytype/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["EntityTypes"],"summary":"Get One Entity Type","parameters":[{"type":"string","description":"Entity Type ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.EntityType"}}}},"put":{"security":[{"Bearer":[]}],"consumes":["application/json"],"produces":["application/json"],"tags":["EntityTypes"],"summary":"Update Entity Type","parameters":[{"type":"string","description":"Entity Type ID","name":"id","in":"path","required":true},{"description":"Entity Type Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.EntityTypeUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.EntityType"}}}}},"/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.EntityAttachmentUpdate"}}],"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}/duplicate":{"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Duplicate Item","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"description":"Duplicate Options","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.DuplicateOptions"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/repo.ItemOut"}}}}},"/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.","type":"array","items":{"$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.DuplicateOptions":{"type":"object","properties":{"copyAttachments":{"type":"boolean"},"copyCustomFields":{"type":"boolean"},"copyMaintenance":{"type":"boolean"},"copyPrefix":{"type":"string"}}},"repo.EntityAttachment":{"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.EntityAttachmentUpdate":{"type":"object","properties":{"primary":{"type":"boolean"},"title":{"type":"string"},"type":{"type":"string"}}},"repo.EntityType":{"type":"object","properties":{"color":{"type":"string"},"description":{"type":"string"},"icon":{"type":"string"},"isLocation":{"type":"boolean"},"name":{"type":"string"}}},"repo.EntityTypeCreate":{"type":"object","required":["isLocation","name"],"properties":{"color":{"type":"string"},"description":{"type":"string"},"icon":{"type":"string"},"isLocation":{"type":"boolean"},"name":{"type":"string"}}},"repo.EntityTypeUpdate":{"type":"object","properties":{"color":{"type":"string"},"description":{"type":"string"},"icon":{"type":"string"},"name":{"type":"string","minLength":1}}},"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.ItemCreate":{"type":"object","required":["entityType","name"],"properties":{"description":{"type":"string","maxLength":1000},"entityType":{"type":"string"},"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.EntityAttachment"}},"createdAt":{"type":"string"},"description":{"type":"string"},"entityType":{"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"},"entityType":{"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":["entityType","name"],"properties":{"archived":{"type":"boolean"},"assetId":{"type":"string"},"description":{"type":"string","maxLength":1000},"entityType":{"type":"string"},"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":1000},"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","required":["entityType"],"properties":{"description":{"type":"string"},"entityType":{"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"},"entityType":{"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"},"entityType":{"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"},"entityType":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LocationUpdate":{"type":"object","required":["entityType"],"properties":{"description":{"type":"string"},"entityType":{"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 c62359b9..7e3f5770 100644 --- a/backend/app/api/static/docs/swagger.json +++ b/backend/app/api/static/docs/swagger.json @@ -1,4374 +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": "Query All Items", - "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", - "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": "Export Items", - "responses": { - "200": { - "description": "text/csv", - "schema": { - "type": "string" - } - } - } - } - }, - "/v1/items/fields": { - "get": { - "security": [ - { - "Bearer": [] - } - ], - "produces": [ - "application/json" - ], - "tags": [ - "Items" - ], - "summary": "Get All Custom Field Names", - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "/v1/items/fields/values": { - "get": { - "security": [ - { - "Bearer": [] - } - ], - "produces": [ - "application/json" - ], - "tags": [ - "Items" - ], - "summary": "Get All Custom Field Values", - "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": "Import Items", - "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": "Get Item", - "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": "Update Item", - "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": "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": "Update Item", - "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}/duplicate": { - "post": { - "security": [ - { - "Bearer": [] - } - ], - "produces": [ - "application/json" - ], - "tags": [ - "Items" - ], - "summary": "Duplicate Item", - "parameters": [ - { - "type": "string", - "description": "Item ID", - "name": "id", - "in": "path", - "required": true - }, - { - "description": "Duplicate Options", - "name": "payload", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/repo.DuplicateOptions" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/repo.ItemOut" - } - } - } - } - }, - "/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": "Get the full path of an item", - "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": "Get All Locations", - "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": "Create Location", - "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": "Get Locations Tree", - "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": "Get Location", - "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": "Update Location", - "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": "Delete Location", - "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": { - "item": { - "description": "Item holds the value of the item edge.", - "allOf": [ - { - "$ref": "#/definitions/ent.Item" - } - ] - }, - "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.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": { - "invitation_tokens": { - "description": "InvitationTokens holds the value of the invitation_tokens edge.", - "type": "array", - "items": { - "$ref": "#/definitions/ent.GroupInvitationToken" - } - }, - "items": { - "description": "Items holds the value of the items edge.", - "type": "array", - "items": { - "$ref": "#/definitions/ent.Item" - } - }, - "labels": { - "description": "Labels holds the value of the labels edge.", - "type": "array", - "items": { - "$ref": "#/definitions/ent.Label" - } - }, - "locations": { - "description": "Locations holds the value of the locations edge.", - "type": "array", - "items": { - "$ref": "#/definitions/ent.Location" - } - }, - "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.Item": { - "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 ItemQuery when eager-loading is set.", - "allOf": [ - { - "$ref": "#/definitions/ent.ItemEdges" - } - ] - }, - "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_items_locations": { - "description": "SyncChildItemsLocations holds the value of the \"sync_child_items_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.ItemEdges": { - "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.Item" - } - }, - "fields": { - "description": "Fields holds the value of the fields edge.", - "type": "array", - "items": { - "$ref": "#/definitions/ent.ItemField" - } - }, - "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.Location" - } - ] - }, - "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.Item" - } - ] - } - } - }, - "ent.ItemField": { - "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 ItemFieldQuery when eager-loading is set.", - "allOf": [ - { - "$ref": "#/definitions/ent.ItemFieldEdges" - } - ] - }, - "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/itemfield.Type" - } - ] - }, - "updated_at": { - "description": "UpdatedAt holds the value of the \"updated_at\" field.", - "type": "string" - } - } - }, - "ent.ItemFieldEdges": { - "type": "object", - "properties": { - "item": { - "description": "Item holds the value of the item edge.", - "allOf": [ - { - "$ref": "#/definitions/ent.Item" - } - ] - } - } - }, - "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": { - "group": { - "description": "Group holds the value of the group edge.", - "allOf": [ - { - "$ref": "#/definitions/ent.Group" - } - ] - }, - "items": { - "description": "Items holds the value of the items edge.", - "type": "array", - "items": { - "$ref": "#/definitions/ent.Item" - } - } - } - }, - "ent.Location": { - "type": "object", - "properties": { - "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 LocationQuery when eager-loading is set.", - "allOf": [ - { - "$ref": "#/definitions/ent.LocationEdges" - } - ] - }, - "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.LocationEdges": { - "type": "object", - "properties": { - "children": { - "description": "Children holds the value of the children edge.", - "type": "array", - "items": { - "$ref": "#/definitions/ent.Location" - } - }, - "group": { - "description": "Group holds the value of the group edge.", - "allOf": [ - { - "$ref": "#/definitions/ent.Group" - } - ] - }, - "items": { - "description": "Items holds the value of the items edge.", - "type": "array", - "items": { - "$ref": "#/definitions/ent.Item" - } - }, - "parent": { - "description": "Parent holds the value of the parent edge.", - "allOf": [ - { - "$ref": "#/definitions/ent.Location" - } - ] - } - } - }, - "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" - } - ] - }, - "id": { - "description": "ID of the ent.", - "type": "string" - }, - "item_id": { - "description": "ItemID holds the value of the \"item_id\" field.", - "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": { - "item": { - "description": "Item holds the value of the item edge.", - "allOf": [ - { - "$ref": "#/definitions/ent.Item" - } - ] - } - } - }, - "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" - } - } - } - }, - "itemfield.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.DuplicateOptions": { - "type": "object", - "properties": { - "copyAttachments": { - "type": "boolean" - }, - "copyCustomFields": { - "type": "boolean" - }, - "copyMaintenance": { - "type": "boolean" - }, - "copyPrefix": { - "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": 1000 - }, - "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.EntityAttachmentUpdate"}}],"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/entitytype":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["EntityTypes"],"summary":"Query All Entity Types","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.EntityType"}}}}},"post":{"security":[{"Bearer":[]}],"consumes":["application/json"],"produces":["application/json"],"tags":["EntityTypes"],"summary":"Create Entity Type","parameters":[{"description":"Entity Type Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.EntityTypeCreate"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/repo.EntityType"}}}}},"/v1/entitytype/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["EntityTypes"],"summary":"Get One Entity Type","parameters":[{"type":"string","description":"Entity Type ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.EntityType"}}}},"put":{"security":[{"Bearer":[]}],"consumes":["application/json"],"produces":["application/json"],"tags":["EntityTypes"],"summary":"Update Entity Type","parameters":[{"type":"string","description":"Entity Type ID","name":"id","in":"path","required":true},{"description":"Entity Type Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.EntityTypeUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.EntityType"}}}}},"/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.EntityAttachmentUpdate"}}],"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}/duplicate":{"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Duplicate Item","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"description":"Duplicate Options","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.DuplicateOptions"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/repo.ItemOut"}}}}},"/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.","type":"array","items":{"$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.DuplicateOptions":{"type":"object","properties":{"copyAttachments":{"type":"boolean"},"copyCustomFields":{"type":"boolean"},"copyMaintenance":{"type":"boolean"},"copyPrefix":{"type":"string"}}},"repo.EntityAttachment":{"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.EntityAttachmentUpdate":{"type":"object","properties":{"primary":{"type":"boolean"},"title":{"type":"string"},"type":{"type":"string"}}},"repo.EntityType":{"type":"object","properties":{"color":{"type":"string"},"description":{"type":"string"},"icon":{"type":"string"},"isLocation":{"type":"boolean"},"name":{"type":"string"}}},"repo.EntityTypeCreate":{"type":"object","required":["isLocation","name"],"properties":{"color":{"type":"string"},"description":{"type":"string"},"icon":{"type":"string"},"isLocation":{"type":"boolean"},"name":{"type":"string"}}},"repo.EntityTypeUpdate":{"type":"object","properties":{"color":{"type":"string"},"description":{"type":"string"},"icon":{"type":"string"},"name":{"type":"string","minLength":1}}},"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.ItemCreate":{"type":"object","required":["entityType","name"],"properties":{"description":{"type":"string","maxLength":1000},"entityType":{"type":"string"},"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.EntityAttachment"}},"createdAt":{"type":"string"},"description":{"type":"string"},"entityType":{"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"},"entityType":{"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":["entityType","name"],"properties":{"archived":{"type":"boolean"},"assetId":{"type":"string"},"description":{"type":"string","maxLength":1000},"entityType":{"type":"string"},"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":1000},"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","required":["entityType"],"properties":{"description":{"type":"string"},"entityType":{"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"},"entityType":{"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"},"entityType":{"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"},"entityType":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LocationUpdate":{"type":"object","required":["entityType"],"properties":{"description":{"type":"string"},"entityType":{"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 cf1289d8..e2726467 100644 --- a/backend/app/api/static/docs/swagger.yaml +++ b/backend/app/api/static/docs/swagger.yaml @@ -244,9 +244,10 @@ definitions: $ref: '#/definitions/ent.Entity' type: array entity: - allOf: - - $ref: '#/definitions/ent.Entity' description: Entity holds the value of the entity edge. + items: + $ref: '#/definitions/ent.Entity' + type: array fields: description: Fields holds the value of the fields edge. items: @@ -686,6 +687,77 @@ definitions: copyPrefix: type: string type: object + repo.EntityAttachment: + 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 + type: object + repo.EntityAttachmentUpdate: + properties: + primary: + type: boolean + title: + type: string + type: + type: string + type: object + repo.EntityType: + properties: + color: + type: string + description: + type: string + icon: + type: string + isLocation: + type: boolean + name: + type: string + type: object + repo.EntityTypeCreate: + properties: + color: + type: string + description: + type: string + icon: + type: string + isLocation: + type: boolean + name: + type: string + required: + - isLocation + - name + type: object + repo.EntityTypeUpdate: + properties: + color: + type: string + description: + type: string + icon: + type: string + name: + minLength: 1 + type: string + type: object repo.Group: properties: createdAt: @@ -721,41 +793,13 @@ definitions: name: type: string type: object - repo.ItemAttachment: - 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 - type: object - repo.ItemAttachmentUpdate: - properties: - primary: - type: boolean - title: - type: string - type: - type: string - type: object repo.ItemCreate: properties: description: maxLength: 1000 type: string + entityType: + type: string labelIds: items: type: string @@ -773,6 +817,7 @@ definitions: quantity: type: integer required: + - entityType - name type: object repo.ItemField: @@ -799,12 +844,14 @@ definitions: type: string attachments: items: - $ref: '#/definitions/repo.ItemAttachment' + $ref: '#/definitions/repo.EntityAttachment' type: array createdAt: type: string description: type: string + entityType: + type: string fields: items: $ref: '#/definitions/repo.ItemField' @@ -906,6 +953,8 @@ definitions: type: string description: type: string + entityType: + type: string id: type: string imageId: @@ -957,6 +1006,8 @@ definitions: description: maxLength: 1000 type: string + entityType: + type: string fields: items: $ref: '#/definitions/repo.ItemField' @@ -1024,6 +1075,7 @@ definitions: warrantyExpires: type: string required: + - entityType - name type: object repo.LabelCreate: @@ -1074,11 +1126,15 @@ definitions: properties: description: type: string + entityType: + type: string name: type: string parentId: type: string x-nullable: true + required: + - entityType type: object repo.LocationOut: properties: @@ -1090,6 +1146,8 @@ definitions: type: string description: type: string + entityType: + type: string id: type: string name: @@ -1107,6 +1165,8 @@ definitions: type: string description: type: string + entityType: + type: string id: type: string itemCount: @@ -1122,6 +1182,8 @@ definitions: type: string description: type: string + entityType: + type: string id: type: string name: @@ -1133,6 +1195,8 @@ definitions: properties: description: type: string + entityType: + type: string id: type: string name: @@ -1140,6 +1204,8 @@ definitions: parentId: type: string x-nullable: true + required: + - entityType type: object repo.MaintenanceEntry: properties: @@ -1697,7 +1763,7 @@ paths: name: payload required: true schema: - $ref: '#/definitions/repo.ItemAttachmentUpdate' + $ref: '#/definitions/repo.EntityAttachmentUpdate' responses: "200": description: OK @@ -1766,6 +1832,91 @@ paths: summary: Create Maintenance Entry tags: - Item Maintenance + /v1/entitytype: + get: + produces: + - application/json + responses: + "200": + description: OK + schema: + items: + $ref: '#/definitions/repo.EntityType' + type: array + security: + - Bearer: [] + summary: Query All Entity Types + tags: + - EntityTypes + post: + consumes: + - application/json + parameters: + - description: Entity Type Data + in: body + name: payload + required: true + schema: + $ref: '#/definitions/repo.EntityTypeCreate' + produces: + - application/json + responses: + "201": + description: Created + schema: + $ref: '#/definitions/repo.EntityType' + security: + - Bearer: [] + summary: Create Entity Type + tags: + - EntityTypes + /v1/entitytype/{id}: + get: + parameters: + - description: Entity Type ID + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/repo.EntityType' + security: + - Bearer: [] + summary: Get One Entity Type + tags: + - EntityTypes + put: + consumes: + - application/json + parameters: + - description: Entity Type ID + in: path + name: id + required: true + type: string + - description: Entity Type Data + in: body + name: payload + required: true + schema: + $ref: '#/definitions/repo.EntityTypeUpdate' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/repo.EntityType' + security: + - Bearer: [] + summary: Update Entity Type + tags: + - EntityTypes /v1/groups: get: produces: @@ -2163,7 +2314,7 @@ paths: name: payload required: true schema: - $ref: '#/definitions/repo.ItemAttachmentUpdate' + $ref: '#/definitions/repo.EntityAttachmentUpdate' responses: "200": description: OK diff --git a/backend/internal/core/services/service_user.go b/backend/internal/core/services/service_user.go index a54711a7..5b7b6f23 100644 --- a/backend/internal/core/services/service_user.go +++ b/backend/internal/core/services/service_user.go @@ -105,7 +105,7 @@ func (svc *UserService) RegisterUser(ctx context.Context, data UserRegistration) } log.Debug().Msg("creating default entity types") - err := svc.repos.EntityType.CreateDefaultEntities(ctx, usr.GroupID) + err := svc.repos.EntityType.CreateDefaultEntityTypes(ctx, usr.GroupID) if err != nil { return repo.UserOut{}, err } diff --git a/backend/internal/data/repo/repo_entity_types.go b/backend/internal/data/repo/repo_entity_types.go index 9c4ab38c..c04c6f79 100644 --- a/backend/internal/data/repo/repo_entity_types.go +++ b/backend/internal/data/repo/repo_entity_types.go @@ -2,9 +2,12 @@ package repo import ( "context" + "github.com/google/uuid" "github.com/sysadminsmedia/homebox/backend/internal/core/services/reporting/eventbus" "github.com/sysadminsmedia/homebox/backend/internal/data/ent" + "github.com/sysadminsmedia/homebox/backend/internal/data/ent/entitytype" + "github.com/sysadminsmedia/homebox/backend/internal/data/ent/group" ) type EntityTypeRepository struct { @@ -12,7 +15,32 @@ type EntityTypeRepository struct { bus *eventbus.EventBus } -func (e *EntityTypeRepository) CreateDefaultEntities(ctx context.Context, gid uuid.UUID) error { +type ( + EntityType struct { + Name string `json:"name"` + IsLocation bool `json:"isLocation"` + Description string `json:"description" extension:"x-nullable"` + Icon string `json:"icon" extension:"x-nullable"` + Color string `json:"color" extension:"x-nullable"` + } + + EntityTypeCreate struct { + Name string `json:"name" validate:"required"` + IsLocation bool `json:"isLocation" validate:"required"` + Description string `json:"description" extension:"x-nullable"` + Icon string `json:"icon" extension:"x-nullable"` + Color string `json:"color" extension:"x-nullable"` + } + + EntityTypeUpdate struct { + Name string `json:"name" validate:"omitempty,min=1"` + Description string `json:"description" extension:"x-nullable"` + Icon string `json:"icon" extension:"x-nullable"` + Color string `json:"color" extension:"x-nullable"` + } +) + +func (e *EntityTypeRepository) CreateDefaultEntityTypes(ctx context.Context, gid uuid.UUID) error { _, err := e.db.EntityType.Create().SetIsLocation(true).SetName("Location").SetGroupID(gid).Save(ctx) if err != nil { return err @@ -23,3 +51,85 @@ func (e *EntityTypeRepository) CreateDefaultEntities(ctx context.Context, gid uu } return nil } + +func (e *EntityTypeRepository) GetOneByGroup(ctx context.Context, gid uuid.UUID, id uuid.UUID) (EntityType, error) { + entityType, err := e.db.EntityType.Query().Where(entitytype.HasGroupWith(group.ID(gid)), entitytype.ID(id)).Only(ctx) + if err != nil { + return EntityType{}, err + } + return EntityType{ + Name: entityType.Name, + IsLocation: entityType.IsLocation, + Description: entityType.Description, + Icon: entityType.Icon, + Color: entityType.Color, + }, nil +} + +func (e *EntityTypeRepository) GetEntityTypesByGroupID(ctx context.Context, gid uuid.UUID) ([]EntityType, error) { + entityTypes, err := e.db.EntityType.Query().Where(entitytype.HasGroupWith(group.ID(gid))).All(ctx) + if err != nil { + return nil, err + } + result := make([]EntityType, 0, len(entityTypes)) + for _, et := range entityTypes { + result = append(result, EntityType{ + Name: et.Name, + IsLocation: et.IsLocation, + Description: et.Description, + Icon: et.Icon, + Color: et.Color, + }) + } + return result, nil +} + +func (e *EntityTypeRepository) CreateEntityType(ctx context.Context, gid uuid.UUID, data EntityTypeCreate) (EntityType, error) { + entityType, err := e.db.EntityType.Create(). + SetGroupID(gid). + SetName(data.Name). + SetIsLocation(data.IsLocation). + SetDescription(data.Description). + SetIcon(data.Icon). + SetColor(data.Color). + Save(ctx) + if err != nil { + return EntityType{}, err + } + return EntityType{ + Name: entityType.Name, + IsLocation: entityType.IsLocation, + Description: entityType.Description, + Icon: entityType.Icon, + Color: entityType.Color, + }, nil +} + +func (e *EntityTypeRepository) UpdateEntityType(ctx context.Context, gid uuid.UUID, id uuid.UUID, data EntityTypeUpdate) (EntityType, error) { + et, err := e.GetOneByGroup(ctx, gid, id) + if err != nil { + return EntityType{}, err + } + update := e.db.EntityType.Update().Where(entitytype.ID(id)) + if data.Name != "" { + update = update.SetName(data.Name) + et.Name = data.Name + } + if data.Description != "" { + update = update.SetDescription(data.Description) + et.Description = data.Description + } + if data.Icon != "" { + update = update.SetIcon(data.Icon) + et.Icon = data.Icon + } + if data.Color != "" { + update = update.SetColor(data.Color) + et.Color = data.Color + } + _, err = update.Save(ctx) + if err != nil { + return EntityType{}, err + } + return et, nil +} diff --git a/backend/internal/data/repo/repo_items.go b/backend/internal/data/repo/repo_items.go index 288e2e71..ae6b874f 100644 --- a/backend/internal/data/repo/repo_items.go +++ b/backend/internal/data/repo/repo_items.go @@ -73,6 +73,7 @@ type ( Quantity int `json:"quantity"` Description string `json:"description" validate:"max=1000"` AssetID AssetID `json:"-"` + EntityType uuid.UUID `json:"entityType" validate:"required,uuid"` // Edges LocationID uuid.UUID `json:"locationId"` @@ -89,6 +90,7 @@ type ( Insured bool `json:"insured"` Archived bool `json:"archived"` SyncChildItemsLocations bool `json:"syncChildItemsLocations"` + EntityType uuid.UUID `json:"entityType" validate:"required,uuid"` // Edges LocationID uuid.UUID `json:"locationId"` @@ -137,6 +139,7 @@ type ( Archived bool `json:"archived"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` + EntityType uuid.UUID `json:"entityType"` PurchasePrice float64 `json:"purchasePrice"` @@ -219,6 +222,11 @@ func mapItemSummary(item *ent.Entity) ItemSummary { } } + var typeID uuid.UUID + if item.Edges.Type != nil { + typeID = item.Edges.Type.ID + } + return ItemSummary{ ID: item.ID, AssetID: AssetID(item.AssetID), @@ -230,6 +238,7 @@ func mapItemSummary(item *ent.Entity) ItemSummary { UpdatedAt: item.UpdatedAt, Archived: item.Archived, PurchasePrice: item.PurchasePrice, + EntityType: typeID, // Edges Location: location, @@ -327,6 +336,7 @@ func (e *ItemsRepository) getOne(ctx context.Context, where ...predicate.Entity) WithGroup(). WithParent(). WithAttachments(). + WithType(). Only(ctx), ) } @@ -496,6 +506,7 @@ func (e *ItemsRepository) QueryByGroup(ctx context.Context, gid uuid.UUID, q Ite qb = qb. WithLabel(). WithLocation(). + WithType(). WithAttachments(func(aq *ent.AttachmentQuery) { aq.Where( attachment.Primary(true), @@ -542,6 +553,7 @@ func (e *ItemsRepository) QueryByAssetID(ctx context.Context, gid uuid.UUID, ass qb.Order(ent.Asc(entity.FieldName)). WithLabel(). WithLocation(). + WithType(). All(ctx), ) if err != nil { @@ -563,6 +575,7 @@ func (e *ItemsRepository) GetAll(ctx context.Context, gid uuid.UUID) ([]ItemOut, WithLabel(). WithLocation(). WithFields(). + WithType(). All(ctx)) } @@ -613,6 +626,7 @@ func (e *ItemsRepository) Create(ctx context.Context, gid uuid.UUID, data ItemCr SetDescription(data.Description). SetGroupID(gid). SetAssetID(int(data.AssetID)). + SetTypeID(data.EntityType). SetLocationID(data.LocationID) if data.ParentID != uuid.Nil { @@ -680,6 +694,7 @@ func (e *ItemsRepository) UpdateByGroup(ctx context.Context, gid uuid.UUID, data SetWarrantyDetails(data.WarrantyDetails). SetQuantity(data.Quantity). SetAssetID(int(data.AssetID)). + SetTypeID(data.EntityType). SetSyncChildEntitiesLocations(data.SyncChildItemsLocations) currentLabels, err := e.db.Entity.Query().Where(entity.ID(data.ID), entity.HasTypeWith(entitytype.IsLocationEQ(false))).QueryLabel().All(ctx) @@ -1081,6 +1096,7 @@ func (e *ItemsRepository) Duplicate(ctx context.Context, gid, id uuid.UUID, opti SetNotes(originalItem.Notes). SetInsured(originalItem.Insured). SetArchived(originalItem.Archived). + SetTypeID(originalItem.EntityType). SetSyncChildEntitiesLocations(originalItem.SyncChildItemsLocations) if originalItem.Parent != nil { diff --git a/backend/internal/data/repo/repo_locations.go b/backend/internal/data/repo/repo_locations.go index 5f8a26a8..3a939afd 100644 --- a/backend/internal/data/repo/repo_locations.go +++ b/backend/internal/data/repo/repo_locations.go @@ -24,6 +24,7 @@ type ( Name string `json:"name"` ParentID uuid.UUID `json:"parentId" extensions:"x-nullable"` Description string `json:"description"` + EntityType uuid.UUID `json:"entityType" validate:"required"` } LocationUpdate struct { @@ -31,6 +32,7 @@ type ( ID uuid.UUID `json:"id"` Name string `json:"name"` Description string `json:"description"` + EntityType uuid.UUID `json:"entityType" validate:"required"` } LocationSummary struct { @@ -39,6 +41,7 @@ type ( Description string `json:"description"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` + EntityType uuid.UUID `json:"entityType"` } LocationOutCount struct { @@ -55,12 +58,17 @@ type ( ) func mapLocationSummary(location *ent.Entity) LocationSummary { + var typeID uuid.UUID + if location.Edges.Type != nil { + typeID = location.Edges.Type.ID + } return LocationSummary{ ID: location.ID, Name: location.Name, Description: location.Description, CreatedAt: location.CreatedAt, UpdatedAt: location.UpdatedAt, + EntityType: typeID, } } @@ -169,6 +177,7 @@ func (r *LocationRepository) getOne(ctx context.Context, where ...predicate.Enti Where(entity.HasTypeWith(entitytype.IsLocationEQ(true))). WithGroup(). WithParent(). + WithType(). WithChildren(func(lq *ent.EntityQuery) { lq.Order(entity.ByName()) }). @@ -188,7 +197,7 @@ func (r *LocationRepository) Create(ctx context.Context, gid uuid.UUID, data Loc SetName(data.Name). SetDescription(data.Description). SetGroupID(gid). - SetType(r.db.EntityType.Query().Where(entitytype.IsLocationEQ(true)).FirstX(ctx)) + SetTypeID(data.EntityType) if data.ParentID != uuid.Nil { q.SetParentID(data.ParentID) @@ -208,7 +217,8 @@ func (r *LocationRepository) update(ctx context.Context, data LocationUpdate, wh q := r.db.Entity.Update(). Where(where...). SetName(data.Name). - SetDescription(data.Description) + SetDescription(data.Description). + SetTypeID(data.EntityType) if data.ParentID != uuid.Nil { q.SetParentID(data.ParentID) diff --git a/docs/en/api/openapi-2.0.json b/docs/en/api/openapi-2.0.json index c62359b9..7e3f5770 100644 --- a/docs/en/api/openapi-2.0.json +++ b/docs/en/api/openapi-2.0.json @@ -1,4374 +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": "Query All Items", - "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", - "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": "Export Items", - "responses": { - "200": { - "description": "text/csv", - "schema": { - "type": "string" - } - } - } - } - }, - "/v1/items/fields": { - "get": { - "security": [ - { - "Bearer": [] - } - ], - "produces": [ - "application/json" - ], - "tags": [ - "Items" - ], - "summary": "Get All Custom Field Names", - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "/v1/items/fields/values": { - "get": { - "security": [ - { - "Bearer": [] - } - ], - "produces": [ - "application/json" - ], - "tags": [ - "Items" - ], - "summary": "Get All Custom Field Values", - "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": "Import Items", - "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": "Get Item", - "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": "Update Item", - "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": "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": "Update Item", - "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}/duplicate": { - "post": { - "security": [ - { - "Bearer": [] - } - ], - "produces": [ - "application/json" - ], - "tags": [ - "Items" - ], - "summary": "Duplicate Item", - "parameters": [ - { - "type": "string", - "description": "Item ID", - "name": "id", - "in": "path", - "required": true - }, - { - "description": "Duplicate Options", - "name": "payload", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/repo.DuplicateOptions" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/repo.ItemOut" - } - } - } - } - }, - "/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": "Get the full path of an item", - "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": "Get All Locations", - "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": "Create Location", - "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": "Get Locations Tree", - "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": "Get Location", - "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": "Update Location", - "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": "Delete Location", - "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": { - "item": { - "description": "Item holds the value of the item edge.", - "allOf": [ - { - "$ref": "#/definitions/ent.Item" - } - ] - }, - "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.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": { - "invitation_tokens": { - "description": "InvitationTokens holds the value of the invitation_tokens edge.", - "type": "array", - "items": { - "$ref": "#/definitions/ent.GroupInvitationToken" - } - }, - "items": { - "description": "Items holds the value of the items edge.", - "type": "array", - "items": { - "$ref": "#/definitions/ent.Item" - } - }, - "labels": { - "description": "Labels holds the value of the labels edge.", - "type": "array", - "items": { - "$ref": "#/definitions/ent.Label" - } - }, - "locations": { - "description": "Locations holds the value of the locations edge.", - "type": "array", - "items": { - "$ref": "#/definitions/ent.Location" - } - }, - "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.Item": { - "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 ItemQuery when eager-loading is set.", - "allOf": [ - { - "$ref": "#/definitions/ent.ItemEdges" - } - ] - }, - "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_items_locations": { - "description": "SyncChildItemsLocations holds the value of the \"sync_child_items_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.ItemEdges": { - "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.Item" - } - }, - "fields": { - "description": "Fields holds the value of the fields edge.", - "type": "array", - "items": { - "$ref": "#/definitions/ent.ItemField" - } - }, - "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.Location" - } - ] - }, - "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.Item" - } - ] - } - } - }, - "ent.ItemField": { - "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 ItemFieldQuery when eager-loading is set.", - "allOf": [ - { - "$ref": "#/definitions/ent.ItemFieldEdges" - } - ] - }, - "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/itemfield.Type" - } - ] - }, - "updated_at": { - "description": "UpdatedAt holds the value of the \"updated_at\" field.", - "type": "string" - } - } - }, - "ent.ItemFieldEdges": { - "type": "object", - "properties": { - "item": { - "description": "Item holds the value of the item edge.", - "allOf": [ - { - "$ref": "#/definitions/ent.Item" - } - ] - } - } - }, - "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": { - "group": { - "description": "Group holds the value of the group edge.", - "allOf": [ - { - "$ref": "#/definitions/ent.Group" - } - ] - }, - "items": { - "description": "Items holds the value of the items edge.", - "type": "array", - "items": { - "$ref": "#/definitions/ent.Item" - } - } - } - }, - "ent.Location": { - "type": "object", - "properties": { - "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 LocationQuery when eager-loading is set.", - "allOf": [ - { - "$ref": "#/definitions/ent.LocationEdges" - } - ] - }, - "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.LocationEdges": { - "type": "object", - "properties": { - "children": { - "description": "Children holds the value of the children edge.", - "type": "array", - "items": { - "$ref": "#/definitions/ent.Location" - } - }, - "group": { - "description": "Group holds the value of the group edge.", - "allOf": [ - { - "$ref": "#/definitions/ent.Group" - } - ] - }, - "items": { - "description": "Items holds the value of the items edge.", - "type": "array", - "items": { - "$ref": "#/definitions/ent.Item" - } - }, - "parent": { - "description": "Parent holds the value of the parent edge.", - "allOf": [ - { - "$ref": "#/definitions/ent.Location" - } - ] - } - } - }, - "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" - } - ] - }, - "id": { - "description": "ID of the ent.", - "type": "string" - }, - "item_id": { - "description": "ItemID holds the value of the \"item_id\" field.", - "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": { - "item": { - "description": "Item holds the value of the item edge.", - "allOf": [ - { - "$ref": "#/definitions/ent.Item" - } - ] - } - } - }, - "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" - } - } - } - }, - "itemfield.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.DuplicateOptions": { - "type": "object", - "properties": { - "copyAttachments": { - "type": "boolean" - }, - "copyCustomFields": { - "type": "boolean" - }, - "copyMaintenance": { - "type": "boolean" - }, - "copyPrefix": { - "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": 1000 - }, - "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.EntityAttachmentUpdate"}}],"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/entitytype":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["EntityTypes"],"summary":"Query All Entity Types","responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/repo.EntityType"}}}}},"post":{"security":[{"Bearer":[]}],"consumes":["application/json"],"produces":["application/json"],"tags":["EntityTypes"],"summary":"Create Entity Type","parameters":[{"description":"Entity Type Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.EntityTypeCreate"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/repo.EntityType"}}}}},"/v1/entitytype/{id}":{"get":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["EntityTypes"],"summary":"Get One Entity Type","parameters":[{"type":"string","description":"Entity Type ID","name":"id","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.EntityType"}}}},"put":{"security":[{"Bearer":[]}],"consumes":["application/json"],"produces":["application/json"],"tags":["EntityTypes"],"summary":"Update Entity Type","parameters":[{"type":"string","description":"Entity Type ID","name":"id","in":"path","required":true},{"description":"Entity Type Data","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.EntityTypeUpdate"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/repo.EntityType"}}}}},"/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.EntityAttachmentUpdate"}}],"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}/duplicate":{"post":{"security":[{"Bearer":[]}],"produces":["application/json"],"tags":["Items"],"summary":"Duplicate Item","parameters":[{"type":"string","description":"Item ID","name":"id","in":"path","required":true},{"description":"Duplicate Options","name":"payload","in":"body","required":true,"schema":{"$ref":"#/definitions/repo.DuplicateOptions"}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/repo.ItemOut"}}}}},"/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.","type":"array","items":{"$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.DuplicateOptions":{"type":"object","properties":{"copyAttachments":{"type":"boolean"},"copyCustomFields":{"type":"boolean"},"copyMaintenance":{"type":"boolean"},"copyPrefix":{"type":"string"}}},"repo.EntityAttachment":{"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.EntityAttachmentUpdate":{"type":"object","properties":{"primary":{"type":"boolean"},"title":{"type":"string"},"type":{"type":"string"}}},"repo.EntityType":{"type":"object","properties":{"color":{"type":"string"},"description":{"type":"string"},"icon":{"type":"string"},"isLocation":{"type":"boolean"},"name":{"type":"string"}}},"repo.EntityTypeCreate":{"type":"object","required":["isLocation","name"],"properties":{"color":{"type":"string"},"description":{"type":"string"},"icon":{"type":"string"},"isLocation":{"type":"boolean"},"name":{"type":"string"}}},"repo.EntityTypeUpdate":{"type":"object","properties":{"color":{"type":"string"},"description":{"type":"string"},"icon":{"type":"string"},"name":{"type":"string","minLength":1}}},"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.ItemCreate":{"type":"object","required":["entityType","name"],"properties":{"description":{"type":"string","maxLength":1000},"entityType":{"type":"string"},"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.EntityAttachment"}},"createdAt":{"type":"string"},"description":{"type":"string"},"entityType":{"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"},"entityType":{"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":["entityType","name"],"properties":{"archived":{"type":"boolean"},"assetId":{"type":"string"},"description":{"type":"string","maxLength":1000},"entityType":{"type":"string"},"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":1000},"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","required":["entityType"],"properties":{"description":{"type":"string"},"entityType":{"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"},"entityType":{"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"},"entityType":{"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"},"entityType":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updatedAt":{"type":"string"}}},"repo.LocationUpdate":{"type":"object","required":["entityType"],"properties":{"description":{"type":"string"},"entityType":{"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 cf1289d8..e2726467 100644 --- a/docs/en/api/openapi-2.0.yaml +++ b/docs/en/api/openapi-2.0.yaml @@ -244,9 +244,10 @@ definitions: $ref: '#/definitions/ent.Entity' type: array entity: - allOf: - - $ref: '#/definitions/ent.Entity' description: Entity holds the value of the entity edge. + items: + $ref: '#/definitions/ent.Entity' + type: array fields: description: Fields holds the value of the fields edge. items: @@ -686,6 +687,77 @@ definitions: copyPrefix: type: string type: object + repo.EntityAttachment: + 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 + type: object + repo.EntityAttachmentUpdate: + properties: + primary: + type: boolean + title: + type: string + type: + type: string + type: object + repo.EntityType: + properties: + color: + type: string + description: + type: string + icon: + type: string + isLocation: + type: boolean + name: + type: string + type: object + repo.EntityTypeCreate: + properties: + color: + type: string + description: + type: string + icon: + type: string + isLocation: + type: boolean + name: + type: string + required: + - isLocation + - name + type: object + repo.EntityTypeUpdate: + properties: + color: + type: string + description: + type: string + icon: + type: string + name: + minLength: 1 + type: string + type: object repo.Group: properties: createdAt: @@ -721,41 +793,13 @@ definitions: name: type: string type: object - repo.ItemAttachment: - 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 - type: object - repo.ItemAttachmentUpdate: - properties: - primary: - type: boolean - title: - type: string - type: - type: string - type: object repo.ItemCreate: properties: description: maxLength: 1000 type: string + entityType: + type: string labelIds: items: type: string @@ -773,6 +817,7 @@ definitions: quantity: type: integer required: + - entityType - name type: object repo.ItemField: @@ -799,12 +844,14 @@ definitions: type: string attachments: items: - $ref: '#/definitions/repo.ItemAttachment' + $ref: '#/definitions/repo.EntityAttachment' type: array createdAt: type: string description: type: string + entityType: + type: string fields: items: $ref: '#/definitions/repo.ItemField' @@ -906,6 +953,8 @@ definitions: type: string description: type: string + entityType: + type: string id: type: string imageId: @@ -957,6 +1006,8 @@ definitions: description: maxLength: 1000 type: string + entityType: + type: string fields: items: $ref: '#/definitions/repo.ItemField' @@ -1024,6 +1075,7 @@ definitions: warrantyExpires: type: string required: + - entityType - name type: object repo.LabelCreate: @@ -1074,11 +1126,15 @@ definitions: properties: description: type: string + entityType: + type: string name: type: string parentId: type: string x-nullable: true + required: + - entityType type: object repo.LocationOut: properties: @@ -1090,6 +1146,8 @@ definitions: type: string description: type: string + entityType: + type: string id: type: string name: @@ -1107,6 +1165,8 @@ definitions: type: string description: type: string + entityType: + type: string id: type: string itemCount: @@ -1122,6 +1182,8 @@ definitions: type: string description: type: string + entityType: + type: string id: type: string name: @@ -1133,6 +1195,8 @@ definitions: properties: description: type: string + entityType: + type: string id: type: string name: @@ -1140,6 +1204,8 @@ definitions: parentId: type: string x-nullable: true + required: + - entityType type: object repo.MaintenanceEntry: properties: @@ -1697,7 +1763,7 @@ paths: name: payload required: true schema: - $ref: '#/definitions/repo.ItemAttachmentUpdate' + $ref: '#/definitions/repo.EntityAttachmentUpdate' responses: "200": description: OK @@ -1766,6 +1832,91 @@ paths: summary: Create Maintenance Entry tags: - Item Maintenance + /v1/entitytype: + get: + produces: + - application/json + responses: + "200": + description: OK + schema: + items: + $ref: '#/definitions/repo.EntityType' + type: array + security: + - Bearer: [] + summary: Query All Entity Types + tags: + - EntityTypes + post: + consumes: + - application/json + parameters: + - description: Entity Type Data + in: body + name: payload + required: true + schema: + $ref: '#/definitions/repo.EntityTypeCreate' + produces: + - application/json + responses: + "201": + description: Created + schema: + $ref: '#/definitions/repo.EntityType' + security: + - Bearer: [] + summary: Create Entity Type + tags: + - EntityTypes + /v1/entitytype/{id}: + get: + parameters: + - description: Entity Type ID + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/repo.EntityType' + security: + - Bearer: [] + summary: Get One Entity Type + tags: + - EntityTypes + put: + consumes: + - application/json + parameters: + - description: Entity Type ID + in: path + name: id + required: true + type: string + - description: Entity Type Data + in: body + name: payload + required: true + schema: + $ref: '#/definitions/repo.EntityTypeUpdate' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/repo.EntityType' + security: + - Bearer: [] + summary: Update Entity Type + tags: + - EntityTypes /v1/groups: get: produces: @@ -2163,7 +2314,7 @@ paths: name: payload required: true schema: - $ref: '#/definitions/repo.ItemAttachmentUpdate' + $ref: '#/definitions/repo.EntityAttachmentUpdate' responses: "200": description: OK diff --git a/frontend/lib/api/types/data-contracts.ts b/frontend/lib/api/types/data-contracts.ts index 055591b4..891b9140 100644 --- a/frontend/lib/api/types/data-contracts.ts +++ b/frontend/lib/api/types/data-contracts.ts @@ -196,7 +196,7 @@ export interface EntEntityEdges { /** Children holds the value of the children edge. */ children: EntEntity[]; /** Entity holds the value of the entity edge. */ - entity: EntEntity; + entity: EntEntity[]; /** Fields holds the value of the fields edge. */ fields: EntEntityField[]; /** Group holds the value of the group edge. */ @@ -477,6 +477,48 @@ export interface DuplicateOptions { copyPrefix: string; } +export interface EntityAttachment { + createdAt: Date | string; + id: string; + mimeType: string; + path: string; + primary: boolean; + thumbnail: EntAttachment; + title: string; + type: string; + updatedAt: Date | string; +} + +export interface EntityAttachmentUpdate { + primary: boolean; + title: string; + type: string; +} + +export interface EntityType { + color: string; + description: string; + icon: string; + isLocation: boolean; + name: string; +} + +export interface EntityTypeCreate { + color: string; + description: string; + icon: string; + isLocation: boolean; + name: string; +} + +export interface EntityTypeUpdate { + color: string; + description: string; + icon: string; + /** @minLength 1 */ + name: string; +} + export interface Group { createdAt: Date | string; currency: string; @@ -499,27 +541,10 @@ export interface GroupUpdate { name: string; } -export interface ItemAttachment { - createdAt: Date | string; - id: string; - mimeType: string; - path: string; - primary: boolean; - thumbnail: EntAttachment; - title: string; - type: string; - updatedAt: Date | string; -} - -export interface ItemAttachmentUpdate { - primary: boolean; - title: string; - type: string; -} - export interface ItemCreate { /** @maxLength 1000 */ description: string; + entityType: string; labelIds: string[]; /** Edges */ locationId: string; @@ -545,9 +570,10 @@ export interface ItemOut { archived: boolean; /** @example "0" */ assetId: string; - attachments: ItemAttachment[]; + attachments: EntityAttachment[]; createdAt: Date | string; description: string; + entityType: string; fields: ItemField[]; id: string; imageId?: string | null; @@ -598,6 +624,7 @@ export interface ItemSummary { assetId: string; createdAt: Date | string; description: string; + entityType: string; id: string; imageId?: string | null; insured: boolean; @@ -618,6 +645,7 @@ export interface ItemUpdate { assetId: string; /** @maxLength 1000 */ description: string; + entityType: string; fields: ItemField[]; id: string; insured: boolean; @@ -686,6 +714,7 @@ export interface LabelSummary { export interface LocationCreate { description: string; + entityType: string; name: string; parentId?: string | null; } @@ -694,6 +723,7 @@ export interface LocationOut { children: LocationSummary[]; createdAt: Date | string; description: string; + entityType: string; id: string; name: string; parent: LocationSummary; @@ -704,6 +734,7 @@ export interface LocationOut { export interface LocationOutCount { createdAt: Date | string; description: string; + entityType: string; id: string; itemCount: number; name: string; @@ -713,6 +744,7 @@ export interface LocationOutCount { export interface LocationSummary { createdAt: Date | string; description: string; + entityType: string; id: string; name: string; updatedAt: Date | string; @@ -720,6 +752,7 @@ export interface LocationSummary { export interface LocationUpdate { description: string; + entityType: string; id: string; name: string; parentId?: string | null;