{"status":"testing","version":"1.0.0","endpoints":[{"path":"/v1","methods":["GET"],"name":"list_api_endpoint","summary":null,"tags":["System"],"description":"Return API status and list of all available endpoints.\n\nUsed for discovering available routes and system health monitoring.\nResponse includes API version, status, and full endpoint details."},{"path":"/v1/health","methods":["GET"],"name":"health_check_endpoint","summary":null,"tags":["System"],"description":"Check the health of the API and system resources.\n\nReturns CPU usage, memory usage, and process memory statistics.\nUsed for liveness probes and monitoring."},{"path":"/v1/token","methods":["POST"],"name":"get_access_token_endpoint","summary":"User Authentication","tags":["Access Token"],"description":"Secure staff authentication with Coopenomics signature verification and token issuance.\n\nThe user must:\n1. Get account info from Coopenomics\n2. Create a message (current datetime string) to sign\n3. Sign the message with their private key\n4. Submit account, public key, signature, and message\n\nReturns access and refresh tokens on success."},{"path":"/v1/token/refresh","methods":["POST"],"name":"refresh_token_endpoint","summary":"Refresh Access Token","tags":["Access Token"],"description":"Exchange a valid refresh token for new access + refresh tokens.\nSubmit a valid (non-revoked) access token to receive new tokens.\n\n**Security:**\n- Refresh token must be non-revoked and non-expired\n- Old refresh token is revoked (rotation)\n- New tokens issued with updated context"},{"path":"/v1/auth/me","methods":["GET"],"name":"get_current_user_endpoint","summary":"Current user info","tags":["Authentication"],"description":"Get information about the current authenticated user."},{"path":"/v1/auth","methods":["GET"],"name":"current_user_endpoint","summary":"Current user info (legacy)","tags":["Authentication"],"description":"Legacy endpoint for current user info.\nUse GET /me instead."},{"path":"/v1/auth/token","methods":["GET"],"name":"current_token_endpoint","summary":"Information about the current token","tags":["Authentication"],"description":"Get full information about the current token."},{"path":"/v1/auth/token","methods":["DELETE"],"name":"revoke_token","summary":"Revoke specific token","tags":["Authentication"],"description":"Revoke a specific token by ID.\n\nPOST Args:\n        token: Token ID or Access Token\n\nRequires CHAIRMAN position or token owner.\nUsed for administrative token management."},{"path":"/v1/auth/token/all","methods":["DELETE"],"name":"clear_tokens_endpoint","summary":"Revoke all other tokens","tags":["Authentication"],"description":"Revoke other user tokens except the current one."},{"path":"/v1/auth/logout","methods":["POST"],"name":"logout_endpoint","summary":"Revoke current token","tags":["Authentication"],"description":"Revoke the current access token.\n\nNote: This only revokes the specific token provided.\nFor full logout (all devices), use /auth/logout/all."},{"path":"/v1/auth/logout/all","methods":["POST"],"name":"revoke_tokens_endpoint","summary":"Revoke all tokens","tags":["Authentication"],"description":"Revoke all tokens for the authenticated user.\n\nUse when:\n- User changes password\n- Security breach suspected\n- User logs out from all devices"},{"path":"/v1/division","methods":["POST"],"name":"create_division_endpoint","summary":"Create division","tags":["Division Management"],"description":"Create a new division within an organization.\n\nRequirements:\n- User must have at least MANAGER access to the organization\n- Slug must be unique"},{"path":"/v1/division","methods":["GET"],"name":"list_divisions_endpoint","summary":"Division List","tags":["Division Management"],"description":"List all divisions accessible to the authenticated user.\n\nQuery params:\n- include_inactive: include deactivated divisions\n- skip: pagination offset\n- limit: max results per page\nReturns divisions with basic information."},{"path":"/v1/division/search","methods":["POST"],"name":"search_divisions_endpoint","summary":"Search Division","tags":["Division Management"],"description":"Search divisions by filter criteria with advanced options.\n\nSupported search filters via payload:\n- staff_id: filter divisions containing specific staff member\n- user_id: filter divisions for a specific user\n- shop_id: filter divisions containing a specific shop\nRequires appropriate permissions based on filters used."},{"path":"/v1/division/{identifier}","methods":["GET"],"name":"get_division_endpoint","summary":"Get Division Info","tags":["Division Management"],"description":"Get division information by identifier.\n\nArgs:\nidentifier: UUID or slug of the division"},{"path":"/v1/division/{identifier}","methods":["PUT"],"name":"update_division_endpoint","summary":"Update division","tags":["Division Management"],"description":"Update an existing division.\n\nArgs:\nidentifier: UUID or slug of the organization"},{"path":"/v1/division/{identifier}/members","methods":["GET"],"name":"member_list_by_division_endpoint","summary":"Delete division","tags":["Division Management"],"description":"List all staff members belonging to a division.\n\nPath param: identifier - UUID or slug of the division\nReturns list of staff with their positions and roles within the division."},{"path":"/v1/division/{identifier}","methods":["DELETE"],"name":"deactivate_division_endpoint","summary":"Delete division","tags":["Division Management"],"description":"Deactivate a division (soft delete) by identifier.\n\nPath param: identifier - UUID or slug of the division\nDivision is marked inactive but retained for historical records.\nRequires CHAIRMAN permissions in the division."},{"path":"/v1/organization","methods":["POST"],"name":"create_organization_endpoint","summary":"Create Organization","tags":["Organization"],"description":"Create a new organization.\nAuthenticated user will automatically get CHAIRMAN access rights."},{"path":"/v1/organization","methods":["GET"],"name":"list_organizations_endpoint","summary":"Organization list","tags":["Organization"],"description":"Get all organizations."},{"path":"/v1/organization/search","methods":["POST"],"name":"search_organizations_endpoint","summary":"Search Organization","tags":["Organization"],"description":"Search all user's organizations.\n\nMay apply additional filters:\n        - `date_from`: Organization registration date start period\n        - `date_to`: Organization registration date end period\n        - `staff_id`: Search organizations for specific staff\n        - `user_id`: Search organizations for specific user\n        - `organization_id`: Search only within the certain Organization\n        - `division_id`: Search only within the certain Division of organization\n        - `shop_id`: Search only within the certain Shop within Division"},{"path":"/v1/organization/{identifier}","methods":["GET"],"name":"get_organization_endpoint","summary":"Get Organization info","tags":["Organization"],"description":"Get detailed information on organization.\n\nArgs:\n        identifier: UUID or slug of the organization"},{"path":"/v1/organization/{identifier}","methods":["PUT"],"name":"update_organization_endpoint","summary":"Update Organization","tags":["Organization"],"description":"Update organization by identifier.\n\nArgs:\n        identifier: UUID or slug of the organization"},{"path":"/v1/organization/{identifier}","methods":["DELETE"],"name":"deactivate_organization_endpoint","summary":"Delete Organization","tags":["Organization"],"description":"Delete organization by identifier.\nOrganization deactivated but remains in database for compatability\n\nArgs:\n        identifier: UUID or slug of the organization"},{"path":"/v1/staff","methods":["POST"],"name":"create_staff_endpoint","summary":"Create Staff","tags":["Staff Management"],"description":"Create a new staff."},{"path":"/v1/staff","methods":["GET"],"name":"list_staff_endpoint","summary":"Staff list","tags":["Staff Management"],"description":"Get all staff."},{"path":"/v1/staff/search","methods":["POST"],"name":"search_staff_endpoint","summary":"Search Staff","tags":["Staff Management"],"description":"Search all staff position in organizations.\n\nMay apply additional filters:\n        - `staff_id`: Search organizations for specific staff\n        - `organization_id`: Search only within the certain Organization\n        - `division_id`: Search only within the certain Division of organization\n        - `shop_id`: Search only within the certain Shop within Division"},{"path":"/v1/staff/{identifier}","methods":["GET"],"name":"get_staff_endpoint","summary":"Get Staff info","tags":["Staff Management"],"description":"Get detailed information on staff.\n\nArgs:\n        identifier: UUID or slug of the staff"},{"path":"/v1/staff/{identifier}","methods":["PUT"],"name":"update_staff_endpoint","summary":"Update Staff","tags":["Staff Management"],"description":"Update staff by identifier.\n\nArgs:\n        identifier: UUID or slug of the staff"},{"path":"/v1/staff/{identifier}","methods":["DELETE"],"name":"deactivate_staff_endpoint","summary":"Delete Staff","tags":["Staff Management"],"description":"Delete staff by identifier.\nStaff deactivated but remains in database for compatability\n\nArgs:\n        identifier: UUID or slug of the staff"},{"path":"/v1/staff/{identifier}/position","methods":["POST"],"name":"set_staff_position","summary":"Change Staff Position","tags":["Staff Management"],"description":"Change staff position.\n\nArgs:\n        identifier: UUID or slug of the staff\n\nPayload:\n        position: one of the Staff position"},{"path":"/v1/translate/supported","methods":["GET"],"name":"get_supported_translations_endpoint","summary":"Get supported translatable models and fields","tags":["Translations"],"description":"Get a list of all supported models and their translatable fields."},{"path":"/v1/translate/{model}/{field}/{record_id}","methods":["GET"],"name":"list_translations_endpoint","summary":"Get translations for a specific field","tags":["Translations"],"description":"Get translations for a specific field of a model instance.\n\n- **model**: Model name (e.g., 'organization', 'product', 'category')\n- **field**: Field name (e.g., 'shortname', 'name', 'title')\n- **record_id**: UUID of the record"},{"path":"/v1/translate/{model}/{field}/{record_id}","methods":["POST"],"name":"update_translations_endpoint","summary":"Merge/update translations for a field","tags":["Translations"],"description":"Merge new translations with existing ones for a specific field.\n\n- **model**: Model name (e.g., 'organization', 'product', 'category')\n- **field**: Field name (e.g., 'shortname', 'name', 'title')\n- **record_id**: UUID of the record\n- **translations**: Dictionary of language codes to translation strings"},{"path":"/v1/translate/{model}/{field}/{record_id}","methods":["PUT"],"name":"replace_translations_endpoint","summary":"Replace all translations for a field","tags":["Translations"],"description":"Replace all translations for a specific field (does not merge).\nNote: 'ru' key will always be preserved or set to empty string if not provided.\n\n- **model**: Model name (e.g., 'organization', 'product', 'category')\n- **field**: Field name (e.g., 'shortname', 'name', 'title')\n- **record_id**: UUID of the record\n- **translations**: Dictionary of language codes to translation strings"},{"path":"/v1/translate/{model}/{field}/{record_id}","methods":["DELETE"],"name":"delete_translation_endpoint","summary":"Delete a specific language translation","tags":["Translations"],"description":"Delete a specific language translation from a field.\nNote: The default 'ru' language cannot be deleted.\n\n- **model**: Model name (e.g., 'organization', 'product', 'category')\n- **field**: Field name (e.g., 'shortname', 'name', 'title')\n- **record_id**: UUID of the record\n- **lang**: Language code to delete (query parameter)"},{"path":"/v1/addresses","methods":["POST"],"name":"create_address_endpoint","summary":"Create Address","tags":["Address"],"description":"Create a new address for an organization, division, shop, or staff member.\n\nRequires authentication. Address can be tagged as primary for its entity.\nReturns the created address with assigned UUID."},{"path":"/v1/addresses","methods":["GET"],"name":"list_addresses_endpoint","summary":"List Addresses","tags":["Address"],"description":"List all addresses with optional pagination and active filtering.\n\nQuery params:\n- include_inactive: whether to return deactivated addresses\n- skip: pagination offset\n- limit: maximum results per page"},{"path":"/v1/addresses/{identifier}","methods":["GET"],"name":"get_address_endpoint","summary":"Get Address","tags":["Address"],"description":"Get full address details by UUID or slug.\n\nPath param: identifier - UUID or slug of the address"},{"path":"/v1/addresses/{identifier}","methods":["PUT"],"name":"update_address_endpoint","summary":"Update Address","tags":["Address"],"description":"Update an existing address by UUID or slug.\n\nPath param: identifier - UUID or slug of the address\nBody: updated address fields (all optional)"},{"path":"/v1/addresses/search","methods":["GET"],"name":"search_address_endpoint","summary":"Search addresses","tags":["Address"],"description":"Search and filter addresses using complex criteria.\n\nRequest body supports filtering by entity type, entity ID, address type,\nand pagination with include_inactive option."},{"path":"/v1/addresses/{identifier}","methods":["DELETE"],"name":"delete_address_endpoint","summary":"Delete Address","tags":["Address"],"description":"Deactivate an address (soft delete) by UUID or slug.\n\nPath param: identifier - UUID or slug of the address\nRequires CHAIRMAN position on the associated entity."},{"path":"/v1/brands","methods":["POST"],"name":"create_brand_endpoint","summary":"Create Brand","tags":["Brand Management"],"description":"Create a new brand.\n\nRequirements:\n- Staff must have MANAGER position or higher\n- Brand name must be unique"},{"path":"/v1/brands","methods":["GET"],"name":"list_brands_endpoint","summary":"List Brands","tags":["Brand Management"],"description":"List all brands with optional pagination.\n\nQuery params:\n- include_inactive: include deactivated brands\n- skip: pagination offset\n- limit: max results returned"},{"path":"/v1/brands/search","methods":["POST"],"name":"search_brands_endpoint","summary":"Search Brands","tags":["Brand Management"],"description":"Search and filter brands by criteria."},{"path":"/v1/brands/{identifier}","methods":["GET"],"name":"get_brand_endpoint","summary":"Get Brand Info","tags":["Brand Management"],"description":"Get brand information by identifier (UUID or name)."},{"path":"/v1/brands/{identifier}","methods":["PUT"],"name":"update_brand_endpoint","summary":"Update Brand","tags":["Brand Management"],"description":"Update an existing brand.\n\nRequirements:\n- Staff must have MANAGER position or higher"},{"path":"/v1/brands/{identifier}","methods":["DELETE"],"name":"delete_brand_endpoint","summary":"Delete Brand","tags":["Brand Management"],"description":"Delete a brand. Requires CHAIRMAN permissions."},{"path":"/v1/manufacturers","methods":["POST"],"name":"create_manufacturer_endpoint","summary":"Create Manufacturer","tags":["Manufacturer"],"description":"Create a new manufacturer."},{"path":"/v1/manufacturers","methods":["GET"],"name":"list_manufacturers_endpoint","summary":"List Manufacturers","tags":["Manufacturer"],"description":"List manufacturers with optional organization filter."},{"path":"/v1/manufacturers/search","methods":["GET"],"name":"search_manufaturer_endpoint","summary":"Search manufacturer","tags":["Manufacturer"],"description":"Search and filter manufacturers using complex criteria.\n\nRequest body supports filtering by entity type, entity ID, address type,\nand pagination with include_inactive option."},{"path":"/v1/manufacturers/{identifier}","methods":["GET"],"name":"get_manufacturer_endpoint","summary":"Get Manufacturer","tags":["Manufacturer"],"description":"Get detailed information on manufacturer.\n\nArgs:\n        identifier: UUID or slug of the manufacturer"},{"path":"/v1/manufacturers/{identifier}","methods":["PUT"],"name":"update_manufacturer_endpoint","summary":"Update Manufacturer","tags":["Manufacturer"],"description":"Update an existing manufacturer by UUID or slug.\n\nPath param: identifier - UUID or slug of the manufacturer\nBody: updated manufacturer fields\nRequires MANAGER position or higher."},{"path":"/v1/manufacturers/{identifier}","methods":["DELETE"],"name":"delete_manufacturer_endpoint","summary":"Delete Manufacturer","tags":["Manufacturer"],"description":"Delete manufacturer. Requires CHAIRMAN position."},{"path":"/v1/phones","methods":["POST"],"name":"create_phone_endpoint","summary":"Create Phone","tags":["Phone"],"description":"Create a new phone number."},{"path":"/v1/phones","methods":["GET"],"name":"list_phones_endpoint","summary":"List Phones","tags":["Phone"],"description":"List phone numbers with optional filters."},{"path":"/v1/phonessearch","methods":["POST"],"name":"search_phones_endpoint","summary":"Search phones","tags":["Phone"],"description":"List phones with optional pagination and active filtering.\n\nQuery params:\n- include_inactive: include voided/cancelled invoices\n- skip: pagination offset\n- limit: max results per page\nReturns phones sorted by creation date (newest first)."},{"path":"/v1/phones/{phone_id}","methods":["GET"],"name":"get_phone_endpoint","summary":"Get Phone","tags":["Phone"],"description":"Get phone by UUID."},{"path":"/v1/phones/{phone_id}","methods":["PUT"],"name":"update_phone_endpoint","summary":"Update Phone","tags":["Phone"],"description":"Update phone by UUID."},{"path":"/v1/phones/{phone_id}/primary","methods":["POST"],"name":"set_phone_primary_endpoint","summary":"Set Primary Phone","tags":["Phone"],"description":"Set phone as primary for its organization."},{"path":"/v1/phones/{phone_id}","methods":["DELETE"],"name":"delete_phone","summary":"Delete Phone","tags":["Phone"],"description":"Deactivate phone by UUID."},{"path":"/v1/socials","methods":["POST"],"name":"create_social_endpoint","summary":"Create Social","tags":["Social"],"description":"Create a new social media account link."},{"path":"/v1/socials","methods":["GET"],"name":"list_socials_endpoint","summary":"List Socials","tags":["Social"],"description":"List social accounts with optional filters."},{"path":"/v1/socials/{identifier}","methods":["GET"],"name":"get_social_endpoint","summary":"Get Social","tags":["Social"],"description":"Get detailed information on social account.\n\nArgs:\n        identifier: UUID or slug of the idenitifier in the format `username@socnet`, where:\n                - `username`: identificator of the user in the social network, account, username and so on.\n                - `socnet`: social network definition, e.g: 'facebook', 'goggle', 'github'."},{"path":"/v1/socials/{identifier}","methods":["PUT"],"name":"update_social_endpoint","summary":"Update Social","tags":["Social"],"description":"Update an existing social media account link by UUID or slug.\n\nPath param: identifier - UUID or slug of the social account\nBody: updated social fields (username, network, profile URL)\nUsed to correct typos or update linked account after rebranding."},{"path":"/v1/socials/search","methods":["POST"],"name":"search_socials_endpoint","summary":"Search Socials","tags":["Social"],"description":"Search socials by filter."},{"path":"/v1/socials/{identifier}","methods":["DELETE"],"name":"delete_social_endpoint","summary":"Delete Social","tags":["Social"],"description":"Remove a social media account link by UUID or slug.\n\nPath param: identifier - UUID or slug of the social account\nSoft deletes the link; account association is removed from staff profile.\nDoes not affect the actual social media account."},{"path":"/v1/shops","methods":["POST"],"name":"create_shop_endpoint","summary":"Create Shop","tags":["Shop"],"description":"Create a new shop. Requires CHAIRMAN position."},{"path":"/v1/shops","methods":["GET"],"name":"list_shops_endpoint","summary":"List Shops","tags":["Shop"],"description":"List all shops with optional pagination and filtering.\n\nQuery params:\n- include_inactive: include deactivated shops\n- skip: pagination offset\n- limit: max results per page\nReturns shops with basic organization/division association."},{"path":"/v1/shops/search","methods":["POST"],"name":"search_shops_endpoint","summary":"Search Shops","tags":["Shop"],"description":"Search shops by filter."},{"path":"/v1/shops/{identifier}","methods":["GET"],"name":"get_shop_endpoint","summary":"Get Shop","tags":["Shop"],"description":"Get full details of a Shop.\n\nArgs:\n        identifier: UUID of the shop or slug\nReturns shop with associated organization, division, address, and contact info."},{"path":"/v1/shops/{identifier}","methods":["PUT"],"name":"update_shop_endpoint","summary":"Update Shop","tags":["Shop"],"description":"Update an existing shop by UUID or slug.\n\nPath param: identifier - UUID or slug of the shop\nBody: updated shop fields (name, address, contact info, etc.)\nRequires CHAIRMAN position on the parent organization."},{"path":"/v1/shops/{identifier}","methods":["DELETE"],"name":"delete_shop_endpoint","summary":"Delete Shop","tags":["Shop"],"description":"Deactivate a shop (soft delete) by UUID or slug.\n\nPath param: identifier - UUID or slug of the shop\nDoes not delete associated inventory or orders (they remain for audit).\nRequires CHAIRMAN position on parent organization."},{"path":"/v1/products","methods":["POST"],"name":"create_product_endpoint","summary":"Create Product","tags":["Product"],"description":"Create a new product."},{"path":"/v1/products","methods":["GET"],"name":"list_products_endpoint","summary":"List Products","tags":["Product"],"description":"List products with optional filters."},{"path":"/v1/products/search","methods":["POST"],"name":"search_products_endpoint","summary":"Search Products","tags":["Product"],"description":"Search products by filter."},{"path":"/v1/products/{identifier}","methods":["GET"],"name":"get_product_endpoint","summary":"Get Product","tags":["Product"],"description":"Get detailed information on product.\n\nArgs:\n        identifier: UUID or slug of the product"},{"path":"/v1/products/{identifier}","methods":["PUT"],"name":"update_product_endpoint","summary":"Update Product","tags":["Product"],"description":"Update an existing product by UUID or slug.\n\nPath param: identifier - UUID or slug of the product\nBody: updated product fields (name, description, category, etc.)\nRequires MANAGER or higher position in the product's shop."},{"path":"/v1/products/{identifier}","methods":["DELETE"],"name":"delete_product_endpoint","summary":"Delete Product","tags":["Product"],"description":"Deactivate product. Requires CHAIRMAN position."},{"path":"/v1/stocks","methods":["POST"],"name":"create_stock_endpoint","summary":"Create Stock","tags":["Stock"],"description":"Create a new stock entry for a product at a location.\n\nStock represents physical inventory at a specific shop/warehouse.\nTracks SKU, serial numbers, barcodes, and quantity on hand.\nAlso records cost price and batch/lot information if applicable."},{"path":"/v1/stocks","methods":["GET"],"name":"list_stocks_endpoint","summary":"List Stocks","tags":["Stock"],"description":"List stock entries with optional pagination.\n\nQuery params:\n- include_inactive: include deactivated stock records\n- skip: pagination offset\n- limit: max results per page\nReturns stock items sorted by creation date."},{"path":"/v1/stocks/search","methods":["POST"],"name":"search_stocks_endpoint","summary":"Search Stocks","tags":["Stock"],"description":"Search stocks by filter."},{"path":"/v1/stocks/{identifier}","methods":["GET"],"name":"get_stock_endpoint","summary":"Get Stock","tags":["Stock"],"description":"Get full stock details including quantity and reservations.\n\nPath param: identifier - UUID of stock, or search by SKU/serial/barcode\nReturns stock with current quantity, reserved amount, location, and product info.\nIdentifier can be: UUID, SKU number, serial number, or barcode data."},{"path":"/v1/stocks/{identifier}","methods":["PUT"],"name":"update_stock_endpoint","summary":"Update Stock","tags":["Stock"],"description":"Update stock metadata by UUID or identifier.\n\nPath param: identifier - UUID of stock record\nBody: updated stock fields (location, SKU, serial, barcode, cost price)\nQuantity itself should be adjusted via dedicated /adjust endpoint."},{"path":"/v1/stocks/{identifier}/adjust","methods":["POST"],"name":"set_stor_quantity_endpoint","summary":"Adjust Stock Quantity","tags":["Stock"],"description":"Adjust stock quantity (positive to add, negative to subtract)."},{"path":"/v1/stocks/{identifier}/reserve","methods":["POST"],"name":"reserve_stock_qty_endpoint","summary":"Reserve Stock","tags":["Stock"],"description":"Reserve a quantity of stock for an order."},{"path":"/v1/stocks/{identifier}/release","methods":["POST"],"name":"release_stock_qty_endpoint","summary":"Release Stock Reserve","tags":["Stock"],"description":"Release a previously reserved stock quantity."},{"path":"/v1/stocks/{identifier}","methods":["DELETE"],"name":"delete_stock_endpoint","summary":"Delete Stock","tags":["Stock"],"description":"Permanently delete stock entry. Requires CHAIRMAN position."},{"path":"/v1/prices","methods":["POST"],"name":"create_price_endpoint","summary":"Create Price","tags":["Price"],"description":"Create a new price for a product.\n\nPrice can be tied to a specific product, variant, or catalog.\nSupports effective date ranges and currency specification.\nMultiple prices per product allowed with different validity periods."},{"path":"/v1/prices","methods":["GET"],"name":"list_prices_endpoint","summary":"List Prices","tags":["Price"],"description":"List all prices with optional pagination and filtering.\n\nQuery params:\n- include_inactive: include prices not currently effective\n- skip: pagination offset\n- limit: max results per page\nReturns prices sorted by effective date (most recent first)."},{"path":"/v1/pricessearch","methods":["POST"],"name":"search_prices_endpoint","summary":"Search prices","tags":["Price"],"description":"List prices with optional pagination and active filtering.\n\nQuery params:\n- include_inactive: include voided/cancelled invoices\n- skip: pagination offset\n- limit: max results per page\nReturns prices sorted by creation date (newest first)."},{"path":"/v1/prices/{price_id}","methods":["GET"],"name":"get_price_endpoint","summary":"Get Price","tags":["Price"],"description":"Get full price details including product and validity period.\n\nPath param: price_id - UUID of the price record\nReturns price with linked product, currency, and effective date range."},{"path":"/v1/prices/{price_id}","methods":["PUT"],"name":"update_price_endpoint","summary":"Update Price","tags":["Price"],"description":"Update an existing price record by UUID.\n\nPath param: price_id - UUID of the price\nBody: updated price fields (amount, currency, validity period)\nRequires MANAGER or higher position."},{"path":"/v1/prices/{price_id}","methods":["DELETE"],"name":"delete_price_endpoint","summary":"Delete Price","tags":["Price"],"description":"Delete a price record by UUID.\n\nPath param: price_id - UUID of the price\nPrice can only be deleted if it hasn't been used in any transactions.\nRequires CHAIRMAN position."},{"path":"/v1/inventories","methods":["POST"],"name":"create_inventory_endpoint","summary":"Create Inventory","tags":["Inventory"],"description":"Record a new inventory movement (write-off, receipt, etc.)."},{"path":"/v1/inventories","methods":["GET"],"name":"list_inventories_endpoint","summary":"List Inventory","tags":["Inventory"],"description":"List inventory records with optional pagination.\n\nInventory records track stock movements (receipts, write-offs, transfers).\nQuery params: include_inactive, skip, limit."},{"path":"/v1/inventories/{identifier}","methods":["GET"],"name":"get_inventory_endpoint","summary":"Get Inventory","tags":["Inventory"],"description":"Get detailed information on inventory.\n\nArgs:\n        identifier: UUID or invid of the inventory"},{"path":"/v1/inventories/{identifier}","methods":["PUT"],"name":"update_inventory_endpoint","summary":"Update Inventory","tags":["Inventory"],"description":"Update an inventory record by UUID.\n\nPath param: identifier - UUID of inventory record\nBody: updated inventory fields (typically limited to notes/comments)\nUpdating is restricted to certain fields and requires appropriate permissions."},{"path":"/v1/inventories/search","methods":["GET"],"name":"search_inventory_endpoint","summary":"Search inventory","tags":["Inventory"],"description":"Search and filter inventories using complex criteria."},{"path":"/v1/inventories/{identifier}","methods":["DELETE"],"name":"delete_inventory_endpoint","summary":"Delete Inventory","tags":["Inventory"],"description":"Delete inventory record. Requires CHAIRMAN position."},{"path":"/v1/orders","methods":["POST"],"name":"create_order_endpoint","summary":"Create Order","tags":["Order"],"description":"Create a new customer order.\n\nOrder contains line items referencing products and their quantities.\nCreates inventory reservations and calculates totals.\nRequires appropriate staff permissions in the shop."},{"path":"/v1/orders","methods":["GET"],"name":"list_orders_endpoint","summary":"List Orders","tags":["Order"],"description":"List orders with optional pagination and active status filtering.\n\nQuery params:\n- include_inactive: include cancelled/deleted orders\n- skip: pagination offset\n- limit: max results per page\nReturns orders sorted by creation date descending."},{"path":"/v1/orders/search","methods":["GET"],"name":"search_orders_endpoint","summary":"Search catalogs","tags":["Order"],"description":"Search and filter all orders."},{"path":"/v1/orders/{order_id}","methods":["GET"],"name":"get_order_endpoint","summary":"Get Order","tags":["Order"],"description":"Get full order details including line items and payment status.\n\nPath param: order_id - UUID of the order\nReturns order with products, quantities, totals, and fulfillment status."},{"path":"/v1/orders/{order_id}","methods":["PUT"],"name":"update_order_endpoint","summary":"Update Order","tags":["Order"],"description":"Update an existing order by UUID.\n\nPath param: order_id - UUID of the order\nBody: updated order fields (typically limited to metadata after creation)\nModifying line items may be restricted after order is processed."},{"path":"/v1/orders/{order_id}/paid","methods":["POST"],"name":"set_order_paid_endpoint","summary":"Mark Order Paid","tags":["Order"],"description":"Mark an order as paid."},{"path":"/v1/orders/{order_id}","methods":["DELETE"],"name":"delete_order_endpoint","summary":"Delete Order","tags":["Order"],"description":"Permanently delete order. Requires CHAIRMAN position."},{"path":"/v1/invoices","methods":["POST"],"name":"create_invoice_endpoint","summary":"Create Invoice","tags":["Invoice"],"description":"Create a new invoice for a shop's sales or purchases.\n\nInvoice tracks financial transactions between shop and customers/suppliers.\nIncludes line items, totals, tax calculations, and payment status."},{"path":"/v1/invoices","methods":["GET"],"name":"list_invoices_endpoint","summary":"List Invoices","tags":["Invoice"],"description":"List invoices with optional pagination and active filtering.\n\nQuery params:\n- include_inactive: include voided/cancelled invoices\n- skip: pagination offset\n- limit: max results per page\nReturns invoices sorted by creation date (newest first)."},{"path":"/v1/invoicessearch","methods":["POST"],"name":"search_invoices_endpoint","summary":"List Invoices","tags":["Invoice"],"description":"List invoices with optional pagination and active filtering.\n\nQuery params:\n- include_inactive: include voided/cancelled invoices\n- skip: pagination offset\n- limit: max results per page\nReturns invoices sorted by creation date (newest first)."},{"path":"/v1/invoices/{identifier}","methods":["GET"],"name":"get_invoice_endpoint","summary":"Get Invoice","tags":["Invoice"],"description":"Get full invoice details including line items and totals.\n\nPath param: identifier - UUID or invoice number\nReturns complete invoice with items, taxes, payment status, and metadata."},{"path":"/v1/invoices/{identifier}","methods":["PUT"],"name":"update_invoice_endpoint","summary":"Update Invoice","tags":["Invoice"],"description":"Update an existing invoice by UUID or number.\n\nPath param: identifier - UUID or invoice number\nBody: updated invoice fields (typically notes or metadata)\nMost fields are restricted after creation to maintain audit trail."},{"path":"/v1/invoices/{identifier}/complete","methods":["POST"],"name":"complete_invoice_endpoint","summary":"Mark Invoice Complete","tags":["Invoice"],"description":"Mark an invoice as complete (all items delivered/purchased).\n\nPath param: identifier - UUID or invoice number\nAdvances invoice status to 'complete'. Cannot be undone.\nRequires that all inventory has been allocated/delivered."},{"path":"/v1/invoices/{identifier}/delivered","methods":["POST"],"name":"deliver_invoice_endpoint","summary":"Mark Invoice Delivered","tags":["Invoice"],"description":"Mark an invoice as delivered (for sales) or received (for purchases).\n\nPath param: identifier - UUID or invoice number\nRecords delivery/receipt date and updates inventory reservations.\nTypically called after shipping confirmation or goods receipt."},{"path":"/v1/invoices/{identifier}","methods":["DELETE"],"name":"delete_invoice_endpoint","summary":"Delete Invoice","tags":["Invoice"],"description":"Void/delete an invoice permanently.\n\nPath param: identifier - UUID or invoice number\nOnly invoices without completed payments or deliveries can be deleted.\nRequires CHAIRMAN position."},{"path":"/v1/payments","methods":["POST"],"name":"create_payment_endpoint","summary":"Create Payment","tags":["Payment"],"description":"Create a new payment record for an invoice or order.\n\nPayment records financial transaction details (method, amount, reference).\nAutomatically updates related invoice/order payment status on success."},{"path":"/v1/payments","methods":["GET"],"name":"list_payments_endpoint","summary":"List Payments","tags":["Payment"],"description":"List payment records with optional pagination and filtering.\n\nQuery params:\n- include_inactive: include voided/reversed payments\n- skip: pagination offset\n- limit: max results per page\nReturns payments sorted by creation date."},{"path":"/v1/paymentssearch","methods":["POST"],"name":"search_payments_endpoint","summary":"Search payments","tags":["Payment"],"description":"List payments with optional pagination and active filtering.\n\nQuery params:\n- include_inactive: include voided/cancelled invoices\n- skip: pagination offset\n- limit: max results per page\nReturns payments sorted by creation date (newest first)."},{"path":"/v1/payments/{payment_id}","methods":["GET"],"name":"get_payment_endpoint","summary":"Get Payment","tags":["Payment"],"description":"Get payment details by UUID.\n\nPath param: payment_id - UUID of the payment record\nReturns payment with linked invoice/order and transaction metadata."},{"path":"/v1/payments/{payment_id}","methods":["PUT"],"name":"update_payment_endpoint","summary":"Update Payment","tags":["Payment"],"description":"Update payment metadata by UUID.\n\nPath param: payment_id - UUID of the payment\nBody: updated payment fields (typically notes or references only)\nCore payment fields (amount, method) are immutable after creation."},{"path":"/v1/payments/{payment_id}/status","methods":["POST"],"name":"set_payment_status_endpoint","summary":"Update Payment Status","tags":["Payment"],"description":"Update the status of a payment.\n\nPath param: payment_id - UUID of the payment\nBody: new status (pending, completed, failed, refunded, etc.)\nStatus changes may trigger downstream actions (invoice status update)."},{"path":"/v1/payments/{payment_id}","methods":["DELETE"],"name":"delete_payment_endpoint","summary":"Delete Payment","tags":["Payment"],"description":"Void/delete a payment record.\n\nPath param: payment_id - UUID of the payment\nCan only delete payments that haven't been settled or reconciled.\nRequires CHAIRMAN position."},{"path":"/v1/shippings","methods":["POST"],"name":"create_shipping_endpoint","summary":"Create Shipping","tags":["Shipping"],"description":"Create a new shipping record for an order or invoice.\n\nShipping tracks physical delivery of goods including carrier,\ntracking number, shipping address, and estimated/actual dates."},{"path":"/v1/shippings","methods":["GET"],"name":"list_shippings_endpoint","summary":"List Shippings","tags":["Shipping"],"description":"List shipping records with optional filtering and pagination.\n\nQuery params:\n- include_inactive: include cancelled/completed shipments\n- skip: pagination offset\n- limit: max results per page\nReturns shippings sorted by creation date."},{"path":"/v1/shippingssearch","methods":["POST"],"name":"search_shipping_endpoint","summary":"List Shippings","tags":["Shipping"],"description":"List shippings with optional pagination and active filtering.\n\nQuery params:\n- include_inactive: include voided/cancelled invoices\n- skip: pagination offset\n- limit: max results per page\nReturns shippings sorted by creation date (newest first)."},{"path":"/v1/shippings/{identifier}","methods":["GET"],"name":"get_shipping_endpoint","summary":"Get Shipping","tags":["Shipping"],"description":"Get detailed information on shipping.\n\nArgs:\n        identifier: UUID or actual number of the shipping"},{"path":"/v1/shippings/{identifier}","methods":["PUT"],"name":"update_shipping_endpoint","summary":"Update Shipping","tags":["Shipping"],"description":"Update shipping metadata by UUID.\n\nPath param: identifier - UUID of the shipping record\nBody: updated shipping fields (address, carrier, tracking updates)\nStatus changes are handled via dedicated status endpoint."},{"path":"/v1/shippings/{identifier}/status","methods":["POST"],"name":"set_shipping_status_endpoint","summary":"Update Shipping Status","tags":["Shipping"],"description":"Update the status of a shipping record.\n\nPath param: identifier - UUID of the shipping\nBody: new status (pending, in_transit, delivered, returned, etc.)\nStatus transitions may validate business rules (e.g. cannot mark undelivered as delivered)."},{"path":"/v1/shippings/{identifier}","methods":["DELETE"],"name":"delete_shipping_endpoint","summary":"Delete Shipping","tags":["Shipping"],"description":"Cancel/delete a shipping record.\n\nPath param: identifier - UUID of the shipping\nOnly pending shippings can be cancelled. Completed deliveries cannot be deleted.\nRequires appropriate permissions on the related order."},{"path":"/v1/trackings","methods":["POST"],"name":"create_tracking_endpoint","summary":"Create Tracking","tags":["Tracking"],"description":"Create a new tracking record for an order or shipment.\n\nTracking monitors the progress of orders through fulfillment stages.\nStores current stage, timestamps, and associated order reference."},{"path":"/v1/trackings","methods":["GET"],"name":"list_trackings_endpoint","summary":"List Trackings","tags":["Tracking"],"description":"List tracking records with optional filtering.\n\nQuery params:\n- include_inactive: include completed/archived tracking\n- skip: pagination offset\n- limit: max results per page\nReturns trackings sorted by creation date, newest first."},{"path":"/v1/trackingssearch","methods":["POST"],"name":"search_trackings_endpoint","summary":"List Trackings","tags":["Tracking"],"description":"List trackings with optional pagination and active filtering.\n\nQuery params:\n- include_inactive: include voided/cancelled invoices\n- skip: pagination offset\n- limit: max results per page\nReturns trackings sorted by creation date (newest first)."},{"path":"/v1/trackings/{identifier}","methods":["GET"],"name":"get_tracking_endpoint","summary":"Get Tracking","tags":["Tracking"],"description":"Get full tracking details including stage history.\n\nPath param: identifier - UUID of tracking record or tracking number\nReturns current stage, timestamps, and associated order/shipment info."},{"path":"/v1/trackings/{identifier}","methods":["PUT"],"name":"update_tracking_endpoint","summary":"Update Tracking","tags":["Tracking"],"description":"Update tracking metadata by UUID.\n\nPath param: identifier - UUID of tracking record\nBody: updated tracking fields (notes, references)\nStage progression handled via dedicated /advance endpoint."},{"path":"/v1/trackings/{tracking_id}/advance","methods":["POST"],"name":"advance_stage_endpoint","summary":"Advance Tracking Stage","tags":["Tracking"],"description":"Advance a tracking record to the next fulfillment stage.\n\nPath param: identifier - UUID of tracking record\nBody: target stage (e.g., confirmed, packed, shipped, delivered)\nValidates stage transition rules and updates stage timestamp."},{"path":"/v1/trackings/{identifier}","methods":["DELETE"],"name":"delete_tracking_endpoint","summary":"Delete Tracking","tags":["Tracking"],"description":"Archive/cancel a tracking record.\n\nPath param: identifier - UUID of tracking record\nUsed when an order is cancelled or tracking is no longer needed.\nDoes not delete associated order data."},{"path":"/","methods":["GET"],"name":"template_auto_index.html","summary":null,"tags":[],"description":""},{"path":"/{lang}","methods":["GET"],"name":"template_locale_index.html","summary":null,"tags":[],"description":""},{"path":"/menu","methods":["GET"],"name":"template_auto_menu.html","summary":null,"tags":[],"description":""},{"path":"/{lang}/menu","methods":["GET"],"name":"template_locale_menu.html","summary":null,"tags":[],"description":""},{"path":"/graphdoc/queries","methods":["GET"],"name":"template_auto_graphdoc_queries.html","summary":null,"tags":[],"description":""},{"path":"/{lang}/graphdoc/queries","methods":["GET"],"name":"template_locale_graphdoc_queries.html","summary":null,"tags":[],"description":""},{"path":"/graphdoc/enums","methods":["GET"],"name":"template_auto_graphdoc_enums.html","summary":null,"tags":[],"description":""},{"path":"/{lang}/graphdoc/enums","methods":["GET"],"name":"template_locale_graphdoc_enums.html","summary":null,"tags":[],"description":""},{"path":"/graphdoc","methods":["GET"],"name":"template_auto_graphdoc_index.html","summary":null,"tags":[],"description":""},{"path":"/{lang}/graphdoc","methods":["GET"],"name":"template_locale_graphdoc_index.html","summary":null,"tags":[],"description":""},{"path":"/graphdoc/objects","methods":["GET"],"name":"template_auto_graphdoc_objects.html","summary":null,"tags":[],"description":""},{"path":"/{lang}/graphdoc/objects","methods":["GET"],"name":"template_locale_graphdoc_objects.html","summary":null,"tags":[],"description":""},{"path":"/graphdoc/about","methods":["GET"],"name":"template_auto_graphdoc_about.html","summary":null,"tags":[],"description":""},{"path":"/{lang}/graphdoc/about","methods":["GET"],"name":"template_locale_graphdoc_about.html","summary":null,"tags":[],"description":""},{"path":"/graphdoc/interfaces","methods":["GET"],"name":"template_auto_graphdoc_interfaces.html","summary":null,"tags":[],"description":""},{"path":"/{lang}/graphdoc/interfaces","methods":["GET"],"name":"template_locale_graphdoc_interfaces.html","summary":null,"tags":[],"description":""},{"path":"/graphdoc/scalars","methods":["GET"],"name":"template_auto_graphdoc_scalars.html","summary":null,"tags":[],"description":""},{"path":"/{lang}/graphdoc/scalars","methods":["GET"],"name":"template_locale_graphdoc_scalars.html","summary":null,"tags":[],"description":""},{"path":"/graphdoc/mutations","methods":["GET"],"name":"template_auto_graphdoc_mutations.html","summary":null,"tags":[],"description":""},{"path":"/{lang}/graphdoc/mutations","methods":["GET"],"name":"template_locale_graphdoc_mutations.html","summary":null,"tags":[],"description":""},{"path":"/graphdoc/unions","methods":["GET"],"name":"template_auto_graphdoc_unions.html","summary":null,"tags":[],"description":""},{"path":"/{lang}/graphdoc/unions","methods":["GET"],"name":"template_locale_graphdoc_unions.html","summary":null,"tags":[],"description":""},{"path":"/graphdoc/input_objects","methods":["GET"],"name":"template_auto_graphdoc_input_objects.html","summary":null,"tags":[],"description":""},{"path":"/{lang}/graphdoc/input_objects","methods":["GET"],"name":"template_locale_graphdoc_input_objects.html","summary":null,"tags":[],"description":""},{"path":"/tutorial","methods":["GET"],"name":"template_auto_tutorial_index.html","summary":null,"tags":[],"description":""},{"path":"/{lang}/tutorial","methods":["GET"],"name":"template_locale_tutorial_index.html","summary":null,"tags":[],"description":""},{"path":"/tutorial/base","methods":["GET"],"name":"template_auto_tutorial_base.html","summary":null,"tags":[],"description":""},{"path":"/{lang}/tutorial/base","methods":["GET"],"name":"template_locale_tutorial_base.html","summary":null,"tags":[],"description":""},{"path":"/tutorial/ru/order","methods":["GET"],"name":"template_auto_tutorial_ru_order.html","summary":null,"tags":[],"description":""},{"path":"/{lang}/tutorial/ru/order","methods":["GET"],"name":"template_locale_tutorial_ru_order.html","summary":null,"tags":[],"description":""},{"path":"/tutorial/ru/production","methods":["GET"],"name":"template_auto_tutorial_ru_production.html","summary":null,"tags":[],"description":""},{"path":"/{lang}/tutorial/ru/production","methods":["GET"],"name":"template_locale_tutorial_ru_production.html","summary":null,"tags":[],"description":""},{"path":"/tutorial/ru/inventory","methods":["GET"],"name":"template_auto_tutorial_ru_inventory.html","summary":null,"tags":[],"description":""},{"path":"/{lang}/tutorial/ru/inventory","methods":["GET"],"name":"template_locale_tutorial_ru_inventory.html","summary":null,"tags":[],"description":""},{"path":"/tutorial/ru","methods":["GET"],"name":"template_auto_tutorial_ru_index.html","summary":null,"tags":[],"description":""},{"path":"/{lang}/tutorial/ru","methods":["GET"],"name":"template_locale_tutorial_ru_index.html","summary":null,"tags":[],"description":""},{"path":"/tutorial/ru/catalog","methods":["GET"],"name":"template_auto_tutorial_ru_catalog.html","summary":null,"tags":[],"description":""},{"path":"/{lang}/tutorial/ru/catalog","methods":["GET"],"name":"template_locale_tutorial_ru_catalog.html","summary":null,"tags":[],"description":""},{"path":"/tutorial/ru/product","methods":["GET"],"name":"template_auto_tutorial_ru_product.html","summary":null,"tags":[],"description":""},{"path":"/{lang}/tutorial/ru/product","methods":["GET"],"name":"template_locale_tutorial_ru_product.html","summary":null,"tags":[],"description":""},{"path":"/tutorial/ru/auth","methods":["GET"],"name":"template_auto_tutorial_ru_auth.html","summary":null,"tags":[],"description":""},{"path":"/{lang}/tutorial/ru/auth","methods":["GET"],"name":"template_locale_tutorial_ru_auth.html","summary":null,"tags":[],"description":""},{"path":"/tutorial/ru/entity","methods":["GET"],"name":"template_auto_tutorial_ru_entity.html","summary":null,"tags":[],"description":""},{"path":"/{lang}/tutorial/ru/entity","methods":["GET"],"name":"template_locale_tutorial_ru_entity.html","summary":null,"tags":[],"description":""},{"path":"/tutorial/ru/logistics","methods":["GET"],"name":"template_auto_tutorial_ru_logistics.html","summary":null,"tags":[],"description":""},{"path":"/{lang}/tutorial/ru/logistics","methods":["GET"],"name":"template_locale_tutorial_ru_logistics.html","summary":null,"tags":[],"description":""},{"path":"/tutorial/ru/orders","methods":["GET"],"name":"template_auto_tutorial_ru_orders.html","summary":null,"tags":[],"description":""},{"path":"/{lang}/tutorial/ru/orders","methods":["GET"],"name":"template_locale_tutorial_ru_orders.html","summary":null,"tags":[],"description":""},{"path":"/tutorial/ru/brand","methods":["GET"],"name":"template_auto_tutorial_ru_brand.html","summary":null,"tags":[],"description":""},{"path":"/{lang}/tutorial/ru/brand","methods":["GET"],"name":"template_locale_tutorial_ru_brand.html","summary":null,"tags":[],"description":""}],"details":null}