{ "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" }, "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/wipe-inventory": { "post": { "security": [ { "Bearer": [] } ], "description": "Deletes all items in the inventory", "produces": [ "application/json" ], "tags": [ "Actions" ], "summary": "Wipe Inventory", "parameters": [ { "description": "Wipe options", "name": "options", "in": "body", "schema": { "$ref": "#/definitions/v1.WipeInventoryOptions" } } ], "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_EntitySummary" } } } } }, "/v1/currencies": { "get": { "produces": [ "application/json" ], "tags": [ "Base" ], "summary": "Currency", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/currencies.Currency" } } } } }, "/v1/entities": { "get": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Entities" ], "summary": "Query All Entities", "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": "tags Ids", "name": "tags", "in": "query" }, { "type": "array", "items": { "type": "string" }, "collectionFormat": "multi", "description": "parent Ids", "name": "parentIds", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/repo.EntityListResult" } } } }, "post": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Entities" ], "summary": "Create Entity", "parameters": [ { "description": "Entity Data", "name": "payload", "in": "body", "required": true, "schema": { "$ref": "#/definitions/repo.EntityCreate" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/repo.EntityOut" } } } } }, "/v1/entities/export": { "get": { "security": [ { "Bearer": [] } ], "tags": [ "Entities" ], "summary": "Export Entities", "responses": { "200": { "description": "text/csv", "schema": { "type": "string" } } } } }, "/v1/entities/fields": { "get": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Entities" ], "summary": "Get All Custom Field Names", "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "type": "string" } } } } } }, "/v1/entities/fields/values": { "get": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Entities" ], "summary": "Get All Custom Field Values", "parameters": [ { "type": "string", "description": "Field name", "name": "field", "in": "query", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "type": "string" } } } } } }, "/v1/entities/import": { "post": { "security": [ { "Bearer": [] } ], "consumes": [ "multipart/form-data" ], "produces": [ "application/json" ], "tags": [ "Entities" ], "summary": "Import Entities", "parameters": [ { "type": "file", "description": "CSV file to upload", "name": "csv", "in": "formData", "required": true } ], "responses": { "204": { "description": "No Content" } } } }, "/v1/entities/tree": { "get": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Entities" ], "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/entities/{id}": { "get": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Entities" ], "summary": "Get Entity", "parameters": [ { "type": "string", "description": "Entity ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/repo.EntityOut" } } } }, "put": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Entities" ], "summary": "Update Entity", "parameters": [ { "type": "string", "description": "Entity ID", "name": "id", "in": "path", "required": true }, { "description": "Entity Data", "name": "payload", "in": "body", "required": true, "schema": { "$ref": "#/definitions/repo.EntityUpdate" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/repo.EntityOut" } } } }, "delete": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Entities" ], "summary": "Delete Entity", "parameters": [ { "type": "string", "description": "Entity ID", "name": "id", "in": "path", "required": true } ], "responses": { "204": { "description": "No Content" } } }, "patch": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Entities" ], "summary": "Patch Entity", "parameters": [ { "type": "string", "description": "Entity ID", "name": "id", "in": "path", "required": true }, { "description": "Entity Data", "name": "payload", "in": "body", "required": true, "schema": { "$ref": "#/definitions/repo.EntityPatch" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/repo.EntityOut" } } } } }, "/v1/entities/{id}/attachments": { "post": { "security": [ { "Bearer": [] } ], "consumes": [ "multipart/form-data" ], "produces": [ "application/json" ], "tags": [ "Entities Attachments" ], "summary": "Create Entity Attachment", "parameters": [ { "type": "string", "description": "Entity 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": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/repo.EntityOut" } }, "422": { "description": "Unprocessable Entity", "schema": { "$ref": "#/definitions/validate.ErrorResponse" } } } } }, "/v1/entities/{id}/attachments/external": { "post": { "security": [ { "Bearer": [] } ], "description": "Links an entity to a document or URL in an external system without copying", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Entities Attachments" ], "summary": "Create External Link Attachment", "parameters": [ { "type": "string", "description": "Entity ID", "name": "id", "in": "path", "required": true }, { "description": "External document reference", "name": "payload", "in": "body", "required": true, "schema": { "$ref": "#/definitions/v1.externalAttachmentRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/repo.EntityOut" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/validate.ErrorResponse" } } } } }, "/v1/entities/{id}/attachments/{attachment_id}": { "get": { "security": [ { "Bearer": [] } ], "produces": [ "application/octet-stream" ], "tags": [ "Entities Attachments" ], "summary": "Get Entity Attachment", "parameters": [ { "type": "string", "description": "Entity ID", "name": "id", "in": "path", "required": true }, { "type": "string", "description": "Attachment ID", "name": "attachment_id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "file" } } } }, "put": { "security": [ { "Bearer": [] } ], "tags": [ "Entities Attachments" ], "summary": "Update Entity Attachment", "parameters": [ { "type": "string", "description": "Entity 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.EntityOut" } } } }, "delete": { "security": [ { "Bearer": [] } ], "tags": [ "Entities Attachments" ], "summary": "Delete Entity Attachment", "parameters": [ { "type": "string", "description": "Entity 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}/duplicate": { "post": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Entities" ], "summary": "Duplicate Entity", "parameters": [ { "type": "string", "description": "Entity 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.EntityOut" } } } } }, "/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/entities/{id}/path": { "get": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Entities" ], "summary": "Get the full path of an entity", "parameters": [ { "type": "string", "description": "Entity ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/repo.EntityPath" } } } } } }, "/v1/entity-types": { "get": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Entity Types" ], "summary": "Get All Entity Types", "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/repo.EntityTypeSummary" } } } } }, "post": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Entity Types" ], "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.EntityTypeSummary" } } } } }, "/v1/entity-types/{id}": { "put": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Entity Types" ], "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.EntityTypeSummary" } } } }, "delete": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Entity Types" ], "summary": "Delete Entity Type", "parameters": [ { "type": "string", "description": "Entity Type ID", "name": "id", "in": "path", "required": true } ], "responses": { "204": { "description": "No Content" } } } }, "/v1/group/exports": { "get": { "security": [ { "Bearer": [] } ], "description": "Returns export job rows for the caller's group, newest first.", "produces": [ "application/json" ], "tags": [ "Group" ], "summary": "List Collection Exports", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/v1.Results-repo_ExportOut" } } } }, "post": { "security": [ { "Bearer": [] } ], "description": "Creates a pending export row and enqueues the build job. Poll the listing endpoint or watch the WebSocket for completion.", "produces": [ "application/json" ], "tags": [ "Group" ], "summary": "Start a Collection Export", "responses": { "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/repo.ExportOut" } } } } }, "/v1/group/exports/{id}": { "get": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Group" ], "summary": "Get an Export", "parameters": [ { "type": "string", "description": "Export ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/repo.ExportOut" } } } }, "delete": { "security": [ { "Bearer": [] } ], "description": "Deletes the export row and its blob artifact.", "tags": [ "Group" ], "summary": "Delete an Export", "parameters": [ { "type": "string", "description": "Export ID", "name": "id", "in": "path", "required": true } ], "responses": { "204": { "description": "No Content" } } } }, "/v1/group/exports/{id}/download": { "get": { "security": [ { "Bearer": [] } ], "produces": [ "application/zip" ], "tags": [ "Group" ], "summary": "Download an Export Artifact", "parameters": [ { "type": "string", "description": "Export ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "file" } } } } }, "/v1/group/import": { "post": { "security": [ { "Bearer": [] } ], "description": "Uploads a collection-export zip and enqueues the import job. The destination group must be empty. Returns the tracked import row so clients can poll for progress.", "consumes": [ "multipart/form-data" ], "produces": [ "application/json" ], "tags": [ "Group" ], "summary": "Import a Collection Zip", "parameters": [ { "type": "file", "description": "Export zip", "name": "file", "in": "formData", "required": true } ], "responses": { "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/repo.ExportOut" } } } } }, "/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" } } } }, "post": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Group" ], "summary": "Create Group", "parameters": [ { "description": "Create group request", "name": "payload", "in": "body", "required": true, "schema": { "$ref": "#/definitions/v1.CreateRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/repo.Group" } } } }, "delete": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Group" ], "summary": "Delete Group", "responses": { "204": { "description": "No Content" } } } }, "/v1/groups/all": { "get": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Group" ], "summary": "Get All Groups", "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/repo.Group" } } } } } }, "/v1/groups/invitations": { "get": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Group" ], "summary": "Get All Group Invitations", "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/repo.GroupInvitation" } } } } }, "post": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Group" ], "summary": "Create Group Invitation", "operationId": "groupInvitationCreate", "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/invitations/{id}": { "post": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Group" ], "summary": "Accept Group Invitation", "operationId": "groupInvitationAccept", "parameters": [ { "type": "string", "description": "Invitation Token", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/v1.GroupAcceptInvitationResponse" } } } }, "delete": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Group" ], "summary": "Delete Group Invitation", "parameters": [ { "type": "string", "description": "Invitation ID", "name": "id", "in": "path", "required": true } ], "responses": { "204": { "description": "No Content" } } } }, "/v1/groups/members": { "get": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Group" ], "summary": "Get All Group Members", "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/repo.UserSummary" } } } } } }, "/v1/groups/members/{user_id}": { "delete": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Group" ], "summary": "Remove User from Group", "parameters": [ { "type": "string", "description": "User ID", "name": "user_id", "in": "path", "required": true } ], "responses": { "204": { "description": "No Content" } } } }, "/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/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/groups/statistics/tags": { "get": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Statistics" ], "summary": "Get Tags Statistics", "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/repo.TotalsByOrganizer" } } } } } }, "/v1/labelmaker/asset/{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/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/tags": { "get": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Tags" ], "summary": "Get All Tags", "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/repo.TagSummary" } } } } }, "post": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Tags" ], "summary": "Create Tag", "parameters": [ { "description": "Tag Data", "name": "payload", "in": "body", "required": true, "schema": { "$ref": "#/definitions/repo.TagCreate" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/repo.TagOut" } } } } }, "/v1/tags/{id}": { "get": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Tags" ], "summary": "Get Tag", "parameters": [ { "type": "string", "description": "Tag ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/repo.TagOut" } } } }, "put": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Tags" ], "summary": "Update Tag", "parameters": [ { "type": "string", "description": "Tag ID", "name": "id", "in": "path", "required": true }, { "description": "Tag Data", "name": "payload", "in": "body", "required": true, "schema": { "$ref": "#/definitions/repo.TagUpdate" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/repo.TagOut" } } } }, "delete": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Tags" ], "summary": "Delete Tag", "parameters": [ { "type": "string", "description": "Tag ID", "name": "id", "in": "path", "required": true } ], "responses": { "204": { "description": "No Content" } } } }, "/v1/templates": { "get": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Entity Templates" ], "summary": "Get All Entity Templates", "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/repo.EntityTemplateSummary" } } } } }, "post": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Entity Templates" ], "summary": "Create Entity Template", "parameters": [ { "description": "Template Data", "name": "payload", "in": "body", "required": true, "schema": { "$ref": "#/definitions/repo.EntityTemplateCreate" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/repo.EntityTemplateOut" } } } } }, "/v1/templates/{id}": { "get": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Entity Templates" ], "summary": "Get Entity Template", "parameters": [ { "type": "string", "description": "Template ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/repo.EntityTemplateOut" } } } }, "put": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Entity Templates" ], "summary": "Update Entity Template", "parameters": [ { "type": "string", "description": "Template ID", "name": "id", "in": "path", "required": true }, { "description": "Template Data", "name": "payload", "in": "body", "required": true, "schema": { "$ref": "#/definitions/repo.EntityTemplateUpdate" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/repo.EntityTemplateOut" } } } }, "delete": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Entity Templates" ], "summary": "Delete Entity Template", "parameters": [ { "type": "string", "description": "Template ID", "name": "id", "in": "path", "required": true } ], "responses": { "204": { "description": "No Content" } } } }, "/v1/templates/{id}/create-item": { "post": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "Entity Templates" ], "summary": "Create Entity from Template", "parameters": [ { "type": "string", "description": "Template ID", "name": "id", "in": "path", "required": true }, { "description": "Entity Data", "name": "payload", "in": "body", "required": true, "schema": { "$ref": "#/definitions/v1.EntityTemplateCreateItemRequest" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/repo.EntityOut" } } } } }, "/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/forgot-password": { "post": { "description": "Sends a password reset email if the address is associated with a local account.\nAlways returns 204 on success to avoid leaking whether the email is registered.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Authentication" ], "summary": "Request Password Reset", "parameters": [ { "description": "Email", "name": "payload", "in": "body", "required": true, "schema": { "$ref": "#/definitions/v1.ForgotPasswordRequest" } } ], "responses": { "204": { "description": "No Content" }, "400": { "description": "missing or invalid request body, or empty email field", "schema": { "type": "string" } }, "403": { "description": "demo mode is enabled or local login is disabled", "schema": { "type": "string" } }, "500": { "description": "internal error while processing the request", "schema": { "type": "string" } } } } }, "/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/login/oidc": { "get": { "produces": [ "application/json" ], "tags": [ "Authentication" ], "summary": "OIDC Login Initiation", "responses": { "302": { "description": "Found" } } } }, "/v1/users/login/oidc/callback": { "get": { "tags": [ "Authentication" ], "summary": "OIDC Callback Handler", "parameters": [ { "type": "string", "description": "Authorization code", "name": "code", "in": "query", "required": true }, { "type": "string", "description": "State parameter", "name": "state", "in": "query", "required": true } ], "responses": { "302": { "description": "Found" } } } }, "/v1/users/logout": { "post": { "security": [ { "Bearer": [] } ], "tags": [ "Authentication" ], "summary": "User Logout", "responses": { "204": { "description": "No Content" } } } }, "/v1/users/logout/all": { "post": { "security": [ { "Bearer": [] } ], "description": "Revokes every session token for the authenticated user across all\ndevices, including the current one. Use this to invalidate a session\ntoken that may have been leaked or stolen. API keys are stored\nseparately and are not affected; revoke them from the API keys page.", "tags": [ "Authentication" ], "summary": "Log Out Of All Sessions", "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" }, "403": { "description": "Local login is not enabled", "schema": { "type": "string" } } } } }, "/v1/users/reset-password": { "post": { "description": "Consumes a single-use reset token and changes the user's password.\nOn success, all existing sessions for the user are revoked.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Authentication" ], "summary": "Reset Password", "parameters": [ { "description": "Token + new password", "name": "payload", "in": "body", "required": true, "schema": { "$ref": "#/definitions/v1.ResetPasswordRequest" } } ], "responses": { "204": { "description": "No Content" }, "400": { "description": "invalid request body, password shorter than the minimum length, or token that is invalid / expired / already used", "schema": { "type": "string" } }, "403": { "description": "demo mode is enabled or local login is disabled", "schema": { "type": "string" } }, "500": { "description": "internal error while processing the request", "schema": { "type": "string" } } } } }, "/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" } } } }, "/v1/users/self/api-keys": { "get": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "User" ], "summary": "List API Keys", "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/repo.APIKeyOut" } } } } }, "post": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "User" ], "summary": "Create API Key", "parameters": [ { "description": "API Key Data", "name": "payload", "in": "body", "required": true, "schema": { "$ref": "#/definitions/repo.APIKeyCreate" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/repo.APIKeyCreatedOut" } } } } }, "/v1/users/self/api-keys/{id}": { "delete": { "security": [ { "Bearer": [] } ], "tags": [ "User" ], "summary": "Delete API Key", "parameters": [ { "type": "string", "description": "API Key ID", "name": "id", "in": "path", "required": true } ], "responses": { "204": { "description": "No Content" } } } }, "/v1/users/self/settings": { "get": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "User" ], "summary": "Get user settings", "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/v1.Wrapped" }, { "type": "object", "properties": { "item": { "type": "object", "additionalProperties": true } } } ] } } } }, "put": { "security": [ { "Bearer": [] } ], "produces": [ "application/json" ], "tags": [ "User" ], "summary": "Update user settings", "parameters": [ { "description": "Settings Data", "name": "payload", "in": "body", "required": true, "schema": { "type": "object", "additionalProperties": true } } ], "responses": { "200": { "description": "OK", "schema": { "allOf": [ { "$ref": "#/definitions/v1.Wrapped" }, { "type": "object", "properties": { "item": { "type": "object", "additionalProperties": true } } } ] } } } } } }, "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" }, "decimals": { "type": "integer" }, "local": { "type": "string" }, "name": { "type": "string" }, "symbol": { "type": "string" } } }, "ent.APIKey": { "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 APIKeyQuery when eager-loading is set.", "allOf": [ { "$ref": "#/definitions/ent.APIKeyEdges" } ] }, "expires_at": { "description": "ExpiresAt holds the value of the \"expires_at\" field.", "type": "string" }, "id": { "description": "ID of the ent.", "type": "string" }, "last_used_at": { "description": "LastUsedAt holds the value of the \"last_used_at\" field.", "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" }, "user_id": { "description": "UserID holds the value of the \"user_id\" field.", "type": "string" } } }, "ent.APIKeyEdges": { "type": "object", "properties": { "user": { "description": "User holds the value of the user edge.", "allOf": [ { "$ref": "#/definitions/ent.User" } ] } } }, "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_date": { "description": "PurchaseDate holds the value of the \"purchase_date\" 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" }, "quantity": { "description": "Quantity holds the value of the \"quantity\" field.", "type": "number" }, "serial_number": { "description": "SerialNumber holds the value of the \"serial_number\" field.", "type": "string" }, "sold_date": { "description": "SoldDate holds the value of the \"sold_date\" 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_to": { "description": "SoldTo holds the value of the \"sold_to\" field.", "type": "string" }, "sync_child_entity_locations": { "description": "SyncChildEntityLocations holds the value of the \"sync_child_entity_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_type": { "description": "EntityType holds the value of the entity_type edge.", "allOf": [ { "$ref": "#/definitions/ent.EntityType" } ] }, "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" } ] }, "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" } ] }, "tag": { "description": "Tag holds the value of the tag edge.", "type": "array", "items": { "$ref": "#/definitions/ent.Tag" } } } }, "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.EntityTemplate": { "type": "object", "properties": { "created_at": { "description": "CreatedAt holds the value of the \"created_at\" field.", "type": "string" }, "default_description": { "description": "Default description for items created from this template", "type": "string" }, "default_insured": { "description": "DefaultInsured holds the value of the \"default_insured\" field.", "type": "boolean" }, "default_lifetime_warranty": { "description": "DefaultLifetimeWarranty holds the value of the \"default_lifetime_warranty\" field.", "type": "boolean" }, "default_manufacturer": { "description": "DefaultManufacturer holds the value of the \"default_manufacturer\" field.", "type": "string" }, "default_model_number": { "description": "Default model number for items created from this template", "type": "string" }, "default_name": { "description": "Default name template for items (can use placeholders)", "type": "string" }, "default_quantity": { "description": "DefaultQuantity holds the value of the \"default_quantity\" field.", "type": "number" }, "default_tag_ids": { "description": "Default tag IDs for items created from this template", "type": "array", "items": { "type": "string" } }, "default_warranty_details": { "description": "DefaultWarrantyDetails holds the value of the \"default_warranty_details\" 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 EntityTemplateQuery when eager-loading is set.", "allOf": [ { "$ref": "#/definitions/ent.EntityTemplateEdges" } ] }, "id": { "description": "ID of the ent.", "type": "string" }, "include_purchase_fields": { "description": "Whether to include purchase fields in items created from this template", "type": "boolean" }, "include_sold_fields": { "description": "Whether to include sold fields in items created from this template", "type": "boolean" }, "include_warranty_fields": { "description": "Whether to include warranty fields in items created from this template", "type": "boolean" }, "name": { "description": "Name holds the value of the \"name\" field.", "type": "string" }, "notes": { "description": "Notes holds the value of the \"notes\" field.", "type": "string" }, "updated_at": { "description": "UpdatedAt holds the value of the \"updated_at\" field.", "type": "string" } } }, "ent.EntityTemplateEdges": { "type": "object", "properties": { "fields": { "description": "Fields holds the value of the fields edge.", "type": "array", "items": { "$ref": "#/definitions/ent.TemplateField" } }, "group": { "description": "Group holds the value of the group edge.", "allOf": [ { "$ref": "#/definitions/ent.Group" } ] }, "location": { "description": "Location holds the value of the location edge.", "allOf": [ { "$ref": "#/definitions/ent.Entity" } ] } } }, "ent.EntityType": { "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 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": { "default_template": { "description": "DefaultTemplate holds the value of the default_template edge.", "allOf": [ { "$ref": "#/definitions/ent.EntityTemplate" } ] }, "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.Export": { "type": "object", "properties": { "artifact_path": { "description": "ArtifactPath holds the value of the \"artifact_path\" 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 ExportQuery when eager-loading is set.", "allOf": [ { "$ref": "#/definitions/ent.ExportEdges" } ] }, "error": { "description": "Error holds the value of the \"error\" field.", "type": "string" }, "group_id": { "description": "GroupID holds the value of the \"group_id\" field.", "type": "string" }, "id": { "description": "ID of the ent.", "type": "string" }, "kind": { "description": "Kind holds the value of the \"kind\" field.", "allOf": [ { "$ref": "#/definitions/export.Kind" } ] }, "progress": { "description": "Progress holds the value of the \"progress\" field.", "type": "integer" }, "size_bytes": { "description": "SizeBytes holds the value of the \"size_bytes\" field.", "type": "integer" }, "status": { "description": "Status holds the value of the \"status\" field.", "allOf": [ { "$ref": "#/definitions/export.Status" } ] }, "updated_at": { "description": "UpdatedAt holds the value of the \"updated_at\" field.", "type": "string" } } }, "ent.ExportEdges": { "type": "object", "properties": { "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_templates": { "description": "EntityTemplates holds the value of the entity_templates edge.", "type": "array", "items": { "$ref": "#/definitions/ent.EntityTemplate" } }, "entity_types": { "description": "EntityTypes holds the value of the entity_types edge.", "type": "array", "items": { "$ref": "#/definitions/ent.EntityType" } }, "exports": { "description": "Exports holds the value of the exports edge.", "type": "array", "items": { "$ref": "#/definitions/ent.Export" } }, "invitation_tokens": { "description": "InvitationTokens holds the value of the invitation_tokens edge.", "type": "array", "items": { "$ref": "#/definitions/ent.GroupInvitationToken" } }, "notifiers": { "description": "Notifiers holds the value of the notifiers edge.", "type": "array", "items": { "$ref": "#/definitions/ent.Notifier" } }, "tags": { "description": "Tags holds the value of the tags edge.", "type": "array", "items": { "$ref": "#/definitions/ent.Tag" } }, "user_groups": { "description": "UserGroups holds the value of the user_groups edge.", "type": "array", "items": { "$ref": "#/definitions/ent.UserGroup" } }, "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.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.PasswordResetTokens": { "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 PasswordResetTokensQuery when eager-loading is set.", "allOf": [ { "$ref": "#/definitions/ent.PasswordResetTokensEdges" } ] }, "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" }, "used_at": { "description": "UsedAt holds the value of the \"used_at\" field.", "type": "string" }, "user_id": { "description": "UserID holds the value of the \"user_id\" field.", "type": "string" } } }, "ent.PasswordResetTokensEdges": { "type": "object", "properties": { "user": { "description": "User holds the value of the user edge.", "allOf": [ { "$ref": "#/definitions/ent.User" } ] } } }, "ent.Tag": { "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 TagQuery when eager-loading is set.", "allOf": [ { "$ref": "#/definitions/ent.TagEdges" } ] }, "icon": { "description": "Icon holds the value of the \"icon\" field.", "type": "string" }, "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.TagEdges": { "type": "object", "properties": { "children": { "description": "Children holds the value of the children edge.", "type": "array", "items": { "$ref": "#/definitions/ent.Tag" } }, "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" } ] }, "parent": { "description": "Parent holds the value of the parent edge.", "allOf": [ { "$ref": "#/definitions/ent.Tag" } ] } } }, "ent.TemplateField": { "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 TemplateFieldQuery when eager-loading is set.", "allOf": [ { "$ref": "#/definitions/ent.TemplateFieldEdges" } ] }, "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/templatefield.Type" } ] }, "updated_at": { "description": "UpdatedAt holds the value of the \"updated_at\" field.", "type": "string" } } }, "ent.TemplateFieldEdges": { "type": "object", "properties": { "entity_template": { "description": "EntityTemplate holds the value of the entity_template edge.", "allOf": [ { "$ref": "#/definitions/ent.EntityTemplate" } ] } } }, "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" }, "default_group_id": { "description": "DefaultGroupID holds the value of the \"default_group_id\" 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" }, "oidc_issuer": { "description": "OidcIssuer holds the value of the \"oidc_issuer\" field.", "type": "string" }, "oidc_subject": { "description": "OidcSubject holds the value of the \"oidc_subject\" field.", "type": "string" }, "settings": { "description": "Settings holds the value of the \"settings\" field.", "type": "object", "additionalProperties": true }, "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": { "api_keys": { "description": "APIKeys holds the value of the api_keys edge.", "type": "array", "items": { "$ref": "#/definitions/ent.APIKey" } }, "auth_tokens": { "description": "AuthTokens holds the value of the auth_tokens edge.", "type": "array", "items": { "$ref": "#/definitions/ent.AuthTokens" } }, "groups": { "description": "Groups holds the value of the groups edge.", "type": "array", "items": { "$ref": "#/definitions/ent.Group" } }, "notifiers": { "description": "Notifiers holds the value of the notifiers edge.", "type": "array", "items": { "$ref": "#/definitions/ent.Notifier" } }, "password_reset_tokens": { "description": "PasswordResetTokens holds the value of the password_reset_tokens edge.", "type": "array", "items": { "$ref": "#/definitions/ent.PasswordResetTokens" } }, "user_groups": { "description": "UserGroups holds the value of the user_groups edge.", "type": "array", "items": { "$ref": "#/definitions/ent.UserGroup" } } } }, "ent.UserGroup": { "type": "object", "properties": { "edges": { "description": "Edges holds the relations/edges for other nodes in the graph.\nThe values are being populated by the UserGroupQuery when eager-loading is set.", "allOf": [ { "$ref": "#/definitions/ent.UserGroupEdges" } ] }, "group_id": { "description": "GroupID holds the value of the \"group_id\" field.", "type": "string" }, "role": { "description": "Role holds the value of the \"role\" field.", "allOf": [ { "$ref": "#/definitions/usergroup.Role" } ] }, "user_id": { "description": "UserID holds the value of the \"user_id\" field.", "type": "string" } } }, "ent.UserGroupEdges": { "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" } ] } } }, "entityfield.Type": { "type": "string", "enum": [ "text", "number", "boolean", "time" ], "x-enum-varnames": [ "TypeText", "TypeNumber", "TypeBoolean", "TypeTime" ] }, "export.Kind": { "type": "string", "enum": [ "export", "export", "import" ], "x-enum-varnames": [ "DefaultKind", "KindExport", "KindImport" ] }, "export.Status": { "type": "string", "enum": [ "pending", "pending", "running", "completed", "failed" ], "x-enum-varnames": [ "DefaultStatus", "StatusPending", "StatusRunning", "StatusCompleted", "StatusFailed" ] }, "repo.APIKeyCreate": { "type": "object", "required": [ "name" ], "properties": { "expiresAt": { "type": "string", "x-nullable": true }, "name": { "type": "string", "maxLength": 255, "minLength": 1 } } }, "repo.APIKeyCreatedOut": { "type": "object", "properties": { "createdAt": { "type": "string" }, "expiresAt": { "type": "string", "x-nullable": true }, "id": { "type": "string" }, "lastUsedAt": { "type": "string", "x-nullable": true }, "name": { "type": "string" }, "token": { "type": "string" }, "userId": { "type": "string" } } }, "repo.APIKeyOut": { "type": "object", "properties": { "createdAt": { "type": "string" }, "expiresAt": { "type": "string", "x-nullable": true }, "id": { "type": "string" }, "lastUsedAt": { "type": "string", "x-nullable": true }, "name": { "type": "string" }, "userId": { "type": "string" } } }, "repo.BarcodeProduct": { "type": "object", "properties": { "barcode": { "type": "string" }, "imageBase64": { "type": "string" }, "imageURL": { "type": "string" }, "item": { "$ref": "#/definitions/repo.EntityCreate" }, "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.EntityCreate": { "type": "object", "required": [ "name" ], "properties": { "description": { "type": "string", "maxLength": 1000 }, "entityTypeId": { "type": "string" }, "manufacturer": { "type": "string", "maxLength": 255, "x-nullable": true, "x-omitempty": true }, "modelNumber": { "description": "Identifications — optional at create time; populated e.g. by the\nbarcode product-search import flow (#1578).", "type": "string", "maxLength": 255, "x-nullable": true, "x-omitempty": true }, "name": { "type": "string", "maxLength": 255, "minLength": 1 }, "parentId": { "type": "string", "x-nullable": true }, "quantity": { "type": "number" }, "tagIds": { "description": "Edges", "type": "array", "items": { "type": "string" } } } }, "repo.EntityFieldData": { "type": "object", "properties": { "booleanValue": { "type": "boolean" }, "id": { "type": "string" }, "name": { "type": "string" }, "numberValue": { "type": "integer" }, "textValue": { "type": "string" }, "type": { "type": "string" } } }, "repo.EntityListResult": { "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/definitions/repo.EntitySummary" } }, "page": { "type": "integer" }, "pageSize": { "type": "integer" }, "total": { "type": "integer" }, "totalPrice": { "type": "number" } } }, "repo.EntityOut": { "type": "object", "properties": { "archived": { "type": "boolean" }, "assetId": { "type": "string", "example": "0" }, "attachments": { "type": "array", "items": { "$ref": "#/definitions/repo.ItemAttachment" } }, "children": { "description": "Container-specific fields (for entities whose entity_type.is_location = true)", "type": "array", "items": { "$ref": "#/definitions/repo.EntitySummary" } }, "createdAt": { "type": "string" }, "description": { "type": "string" }, "entityType": { "allOf": [ { "$ref": "#/definitions/repo.EntityTypeSummary" } ], "x-nullable": true, "x-omitempty": true }, "fields": { "type": "array", "items": { "$ref": "#/definitions/repo.EntityFieldData" } }, "id": { "type": "string" }, "imageId": { "type": "string", "x-nullable": true, "x-omitempty": true }, "insured": { "type": "boolean" }, "itemCount": { "description": "Container-specific (populated when querying locations)", "type": "number" }, "lifetimeWarranty": { "description": "Warranty", "type": "boolean" }, "location": { "description": "Location is the nearest ancestor whose entity type is a location.\nWhen the direct parent is already a location it equals Parent; when\nthe entity is nested inside other items it is the location those\nitems ultimately live in. Nil for top-level entities.", "allOf": [ { "$ref": "#/definitions/repo.EntitySummary" } ], "x-nullable": true, "x-omitempty": true }, "manufacturer": { "type": "string" }, "modelNumber": { "type": "string" }, "name": { "type": "string" }, "notes": { "description": "Extras", "type": "string" }, "parent": { "description": "Edges", "allOf": [ { "$ref": "#/definitions/repo.EntitySummary" } ], "x-nullable": true, "x-omitempty": true }, "purchaseDate": { "description": "Purchase", "type": "string" }, "purchaseFrom": { "type": "string" }, "purchasePrice": { "type": "number" }, "quantity": { "type": "number" }, "serialNumber": { "type": "string" }, "soldDate": { "description": "Sold", "type": "string" }, "soldNotes": { "type": "string" }, "soldPrice": { "type": "number" }, "soldTo": { "type": "string" }, "syncChildEntityLocations": { "type": "boolean" }, "tags": { "type": "array", "items": { "$ref": "#/definitions/repo.TagSummary" } }, "thumbnailId": { "type": "string", "x-nullable": true, "x-omitempty": true }, "totalPrice": { "type": "number" }, "updatedAt": { "type": "string" }, "warrantyDetails": { "type": "string" }, "warrantyExpires": { "type": "string" } } }, "repo.EntityPatch": { "type": "object", "properties": { "entityTypeId": { "type": "string", "x-nullable": true, "x-omitempty": true }, "id": { "type": "string" }, "parentId": { "type": "string", "x-nullable": true, "x-omitempty": true }, "quantity": { "type": "number", "x-nullable": true, "x-omitempty": true }, "tagIds": { "type": "array", "items": { "type": "string" }, "x-nullable": true, "x-omitempty": true } } }, "repo.EntityPath": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "type": { "$ref": "#/definitions/repo.EntityPathType" } } }, "repo.EntityPathType": { "type": "string", "enum": [ "location", "item" ], "x-enum-varnames": [ "EntityPathTypeLocation", "EntityPathTypeItem" ] }, "repo.EntitySummary": { "type": "object", "properties": { "archived": { "type": "boolean" }, "assetId": { "type": "string", "example": "0" }, "createdAt": { "type": "string" }, "description": { "type": "string" }, "entityType": { "allOf": [ { "$ref": "#/definitions/repo.EntityTypeSummary" } ], "x-nullable": true, "x-omitempty": true }, "id": { "type": "string" }, "imageId": { "type": "string", "x-nullable": true, "x-omitempty": true }, "insured": { "type": "boolean" }, "itemCount": { "description": "Container-specific (populated when querying locations)", "type": "number" }, "name": { "type": "string" }, "parent": { "description": "Edges", "allOf": [ { "$ref": "#/definitions/repo.EntitySummary" } ], "x-nullable": true, "x-omitempty": true }, "purchasePrice": { "type": "number" }, "quantity": { "type": "number" }, "soldDate": { "description": "Sale details", "type": "string" }, "tags": { "type": "array", "items": { "$ref": "#/definitions/repo.TagSummary" } }, "thumbnailId": { "type": "string", "x-nullable": true, "x-omitempty": true }, "updatedAt": { "type": "string" } } }, "repo.EntityTemplateCreate": { "type": "object", "required": [ "name" ], "properties": { "defaultDescription": { "type": "string", "maxLength": 1000, "x-nullable": true }, "defaultInsured": { "type": "boolean" }, "defaultLifetimeWarranty": { "type": "boolean" }, "defaultLocationId": { "description": "Default location and tags", "type": "string", "x-nullable": true }, "defaultManufacturer": { "type": "string", "maxLength": 255, "x-nullable": true }, "defaultModelNumber": { "type": "string", "maxLength": 255, "x-nullable": true }, "defaultName": { "type": "string", "maxLength": 255, "x-nullable": true }, "defaultQuantity": { "description": "Default values for entities", "type": "number", "x-nullable": true }, "defaultTagIds": { "type": "array", "items": { "type": "string" }, "x-nullable": true }, "defaultWarrantyDetails": { "type": "string", "maxLength": 1000, "x-nullable": true }, "description": { "type": "string", "maxLength": 1000 }, "fields": { "description": "Custom fields", "type": "array", "items": { "$ref": "#/definitions/repo.TemplateField" } }, "includePurchaseFields": { "type": "boolean" }, "includeSoldFields": { "type": "boolean" }, "includeWarrantyFields": { "description": "Metadata flags", "type": "boolean" }, "name": { "type": "string", "maxLength": 255, "minLength": 1 }, "notes": { "type": "string", "maxLength": 1000 } } }, "repo.EntityTemplateOut": { "type": "object", "properties": { "createdAt": { "type": "string" }, "defaultDescription": { "type": "string" }, "defaultInsured": { "type": "boolean" }, "defaultLifetimeWarranty": { "type": "boolean" }, "defaultLocation": { "description": "Default location and tags", "allOf": [ { "$ref": "#/definitions/repo.TemplateLocationSummary" } ] }, "defaultManufacturer": { "type": "string" }, "defaultModelNumber": { "type": "string" }, "defaultName": { "type": "string" }, "defaultQuantity": { "description": "Default values for entities", "type": "number" }, "defaultTags": { "type": "array", "items": { "$ref": "#/definitions/repo.TemplateTagSummary" } }, "defaultWarrantyDetails": { "type": "string" }, "description": { "type": "string" }, "fields": { "description": "Custom fields", "type": "array", "items": { "$ref": "#/definitions/repo.TemplateField" } }, "id": { "type": "string" }, "includePurchaseFields": { "type": "boolean" }, "includeSoldFields": { "type": "boolean" }, "includeWarrantyFields": { "description": "Metadata flags", "type": "boolean" }, "name": { "type": "string" }, "notes": { "type": "string" }, "updatedAt": { "type": "string" } } }, "repo.EntityTemplateSummary": { "type": "object", "properties": { "createdAt": { "type": "string" }, "description": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "updatedAt": { "type": "string" } } }, "repo.EntityTemplateUpdate": { "type": "object", "required": [ "name" ], "properties": { "defaultDescription": { "type": "string", "maxLength": 1000, "x-nullable": true }, "defaultInsured": { "type": "boolean" }, "defaultLifetimeWarranty": { "type": "boolean" }, "defaultLocationId": { "description": "Default location and tags", "type": "string", "x-nullable": true }, "defaultManufacturer": { "type": "string", "maxLength": 255, "x-nullable": true }, "defaultModelNumber": { "type": "string", "maxLength": 255, "x-nullable": true }, "defaultName": { "type": "string", "maxLength": 255, "x-nullable": true }, "defaultQuantity": { "description": "Default values for entities", "type": "number", "x-nullable": true }, "defaultTagIds": { "type": "array", "items": { "type": "string" }, "x-nullable": true }, "defaultWarrantyDetails": { "type": "string", "maxLength": 1000, "x-nullable": true }, "description": { "type": "string", "maxLength": 1000 }, "fields": { "description": "Custom fields", "type": "array", "items": { "$ref": "#/definitions/repo.TemplateField" } }, "id": { "type": "string" }, "includePurchaseFields": { "type": "boolean" }, "includeSoldFields": { "type": "boolean" }, "includeWarrantyFields": { "description": "Metadata flags", "type": "boolean" }, "name": { "type": "string", "maxLength": 255, "minLength": 1 }, "notes": { "type": "string", "maxLength": 1000 } } }, "repo.EntityTypeCreate": { "type": "object", "properties": { "defaultTemplateId": { "type": "string" }, "icon": { "type": "string" }, "isLocation": { "type": "boolean" }, "name": { "type": "string" } } }, "repo.EntityTypeSummary": { "type": "object", "properties": { "createdAt": { "type": "string" }, "defaultTemplate": { "$ref": "#/definitions/repo.EntityTemplateSummary" }, "defaultTemplateId": { "type": "string" }, "description": { "type": "string" }, "icon": { "type": "string" }, "id": { "type": "string" }, "isLocation": { "type": "boolean" }, "name": { "type": "string" }, "updatedAt": { "type": "string" } } }, "repo.EntityTypeUpdate": { "type": "object", "properties": { "defaultTemplateId": { "type": "string" }, "icon": { "type": "string" }, "id": { "type": "string" }, "isLocation": { "type": "boolean" }, "name": { "type": "string" } } }, "repo.EntityUpdate": { "type": "object", "required": [ "name" ], "properties": { "archived": { "type": "boolean" }, "assetId": { "type": "string" }, "description": { "type": "string", "maxLength": 1000 }, "entityTypeId": { "type": "string" }, "fields": { "type": "array", "items": { "$ref": "#/definitions/repo.EntityFieldData" } }, "id": { "type": "string" }, "insured": { "type": "boolean" }, "lifetimeWarranty": { "description": "Warranty", "type": "boolean" }, "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 }, "purchaseDate": { "description": "Purchase", "type": "string" }, "purchaseFrom": { "type": "string", "maxLength": 255 }, "purchasePrice": { "type": "number", "x-nullable": true, "x-omitempty": true }, "quantity": { "type": "number" }, "serialNumber": { "description": "Identifications", "type": "string" }, "soldDate": { "description": "Sold", "type": "string" }, "soldNotes": { "type": "string" }, "soldPrice": { "type": "number", "x-nullable": true, "x-omitempty": true }, "soldTo": { "type": "string", "maxLength": 255 }, "syncChildEntityLocations": { "type": "boolean" }, "tagIds": { "description": "Edges", "type": "array", "items": { "type": "string" } }, "warrantyDetails": { "type": "string" }, "warrantyExpires": { "type": "string" } } }, "repo.ExportOut": { "type": "object", "properties": { "artifactPath": { "type": "string" }, "createdAt": { "type": "string" }, "error": { "type": "string" }, "groupId": { "type": "string" }, "id": { "type": "string" }, "kind": { "description": "Kind is \"export\" for server-produced backup artifacts, \"import\" for\nuser-uploaded restore zips. The lifecycle fields below behave the\nsame for both.", "type": "string" }, "progress": { "type": "integer" }, "sizeBytes": { "type": "integer" }, "status": { "type": "string" }, "updatedAt": { "type": "string" } } }, "repo.Group": { "type": "object", "properties": { "createdAt": { "type": "string" }, "currency": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "updatedAt": { "type": "string" } } }, "repo.GroupInvitation": { "type": "object", "properties": { "expiresAt": { "type": "string" }, "group": { "$ref": "#/definitions/repo.Group" }, "id": { "type": "string" }, "uses": { "type": "integer" } } }, "repo.GroupStatistics": { "type": "object", "properties": { "totalItemPrice": { "type": "number" }, "totalItems": { "type": "integer" }, "totalLocations": { "type": "integer" }, "totalTags": { "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.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_EntitySummary": { "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/definitions/repo.EntitySummary" } }, "page": { "type": "integer" }, "pageSize": { "type": "integer" }, "total": { "type": "integer" } } }, "repo.TagCreate": { "type": "object", "required": [ "name" ], "properties": { "color": { "type": "string" }, "description": { "type": "string", "maxLength": 1000 }, "icon": { "type": "string", "maxLength": 255 }, "name": { "type": "string", "maxLength": 255, "minLength": 1 }, "parentId": { "type": "string", "x-nullable": true } } }, "repo.TagOut": { "type": "object", "properties": { "children": { "type": "array", "items": { "$ref": "#/definitions/repo.TagSummary" } }, "color": { "type": "string" }, "createdAt": { "type": "string" }, "description": { "type": "string" }, "icon": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "parent": { "allOf": [ { "$ref": "#/definitions/repo.TagSummary" } ], "x-nullable": true }, "parentId": { "type": "string", "x-nullable": true }, "updatedAt": { "type": "string" } } }, "repo.TagSummary": { "type": "object", "properties": { "color": { "type": "string" }, "createdAt": { "type": "string" }, "description": { "type": "string" }, "icon": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "parentId": { "type": "string", "x-nullable": true }, "updatedAt": { "type": "string" } } }, "repo.TagUpdate": { "type": "object", "required": [ "name" ], "properties": { "color": { "type": "string" }, "description": { "type": "string", "maxLength": 1000 }, "icon": { "type": "string", "maxLength": 255 }, "id": { "type": "string" }, "name": { "type": "string", "maxLength": 255, "minLength": 1 }, "parentId": { "type": "string", "x-nullable": true } } }, "repo.TemplateField": { "type": "object", "properties": { "booleanValue": { "type": "boolean" }, "id": { "type": "string" }, "name": { "type": "string" }, "numberValue": { "type": "integer" }, "textValue": { "type": "string" }, "timeValue": { "type": "string" }, "type": { "type": "string" } } }, "repo.TemplateLocationSummary": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } } }, "repo.TemplateTagSummary": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } } }, "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": { "defaultGroupId": { "type": "string" }, "email": { "type": "string" }, "groupIds": { "type": "array", "items": { "type": "string" } }, "id": { "type": "string" }, "isSuperuser": { "type": "boolean" }, "name": { "type": "string" }, "oidcIssuer": { "type": "string" }, "oidcSubject": { "type": "string" } } }, "repo.UserSummary": { "type": "object", "properties": { "email": { "type": "string" }, "id": { "type": "string" }, "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" } } }, "templatefield.Type": { "type": "string", "enum": [ "text", "number", "boolean", "time" ], "x-enum-varnames": [ "TypeText", "TypeNumber", "TypeBoolean", "TypeTime" ] }, "usergroup.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" }, "oidc": { "$ref": "#/definitions/v1.OIDCStatus" }, "telemetry": { "$ref": "#/definitions/v1.TelemetryStatus" }, "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.CreateRequest": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string" } } }, "v1.EntityTemplateCreateItemRequest": { "type": "object", "required": [ "name", "parentId" ], "properties": { "description": { "type": "string", "maxLength": 1000 }, "entityTypeId": { "description": "EntityTypeID is the entity type selected by the user. When set it takes\nprecedence; when empty the repository falls back to the group's default.", "type": "string" }, "name": { "type": "string", "maxLength": 255, "minLength": 1 }, "parentId": { "type": "string" }, "quantity": { "type": "number" }, "tagIds": { "type": "array", "items": { "type": "string" } } } }, "v1.ForgotPasswordRequest": { "type": "object", "required": [ "email" ], "properties": { "email": { "type": "string", "example": "user@example.com" } } }, "v1.GroupAcceptInvitationResponse": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } } }, "v1.GroupInvitation": { "type": "object", "properties": { "expiresAt": { "type": "string" }, "id": { "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.LoginForm": { "type": "object", "properties": { "password": { "type": "string", "example": "admin" }, "stayLoggedIn": { "type": "boolean" }, "username": { "type": "string", "example": "admin@admin.com" } } }, "v1.OIDCStatus": { "type": "object", "properties": { "allowLocal": { "type": "boolean" }, "autoRedirect": { "type": "boolean" }, "buttonText": { "type": "string" }, "enabled": { "type": "boolean" } } }, "v1.ResetPasswordRequest": { "type": "object", "required": [ "password", "token" ], "properties": { "password": { "type": "string", "minLength": 6 }, "token": { "type": "string", "minLength": 20 } } }, "v1.Results-repo_ExportOut": { "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/definitions/repo.ExportOut" } } } }, "v1.TelemetryStatus": { "type": "object", "properties": { "enabled": { "type": "boolean" } } }, "v1.TokenResponse": { "type": "object", "properties": { "attachmentToken": { "type": "string" }, "expiresAt": { "type": "string" }, "token": { "type": "string" } } }, "v1.WipeInventoryOptions": { "type": "object", "properties": { "wipeLocations": { "type": "boolean" }, "wipeMaintenance": { "type": "boolean" }, "wipeTags": { "type": "boolean" } } }, "v1.Wrapped": { "type": "object", "properties": { "item": {} } }, "v1.externalAttachmentRequest": { "type": "object", "properties": { "attachment_type": { "type": "string" }, "external_id": { "type": "string" }, "source_type": { "type": "string" }, "title": { "type": "string" } } }, "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" } } }