---
title: Katana MRP API Integration on Truto
slug: katanamrp
category: E-Commerce
canonical: "https://truto.one/integrations/detail/katanamrp/"
---

# Katana MRP API Integration on Truto



**Category:** E-Commerce  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 231 tools for Katana MRP that AI agents can call directly.

- **list_all_katana_mrp_additional_costs** — List additional costs in katanamrp, filterable by ids, name, date range, and deleted status. Returns: id, name, created_at, updated_at. Max 250 records per page.
- **update_a_katana_mrp_batch_stock_by_id** — Update a batch stock record in katanamrp by id. Returns: id, created_at, updated_at. Required: id.
- **list_all_katana_mrp_batch_stocks** — List batch stock records in katanamrp, filterable by batch, location, variant, barcode, and batch creation-date range. Returns: id, batch_id, batch_number, batch_barcode, location_id, variant_id, batch_created_at, created_at, updated_at.
- **create_a_katana_mrp_batch** — Create a new batch in katanamrp. Requires a CreateBatchDto JSON request body. Returns the created batch object on 200, including its id; the upstream docs reference the DTO and return value by $ref without enumerating fields. Required: batch_number, variant_id.
- **list_all_katana_mrp_bin_inventories** — List bin inventory in Katana. Returns paginated bin inventory records exposing each record's id and granularity-specific attributes; the attribute shape varies with the requested granularity (VARIANT, BATCH, or SERIAL_NUMBER).
- **update_a_katana_mrp_bin_location_by_id** — Update an existing bin location in katanamrp by id. Returns: id, created_at, updated_at. A JSON request body is required. Required: id, bin_name.
- **delete_a_katana_mrp_bin_location_by_id** — Delete a bin location in katanamrp by id. Returns: id, created_at, updated_at. Required: id.
- **list_all_katana_mrp_bin_locations** — List bin locations in katanamrp. Returns each bin location's id, bin_name, location_id, created_at, and updated_at.
- **create_a_katana_mrp_bin_location** — Create a bin location in katanamrp. Returns: id, created_at, updated_at. A JSON request body is required. Required: bin_name, location_id.
- **get_single_katana_mrp_bin_transfer_row_by_id** — Get a single bin transfer row in Katana by id. Returns: id, created_at, updated_at. Required: id.
- **update_a_katana_mrp_bin_transfer_row_by_id** — Update a bin transfer row in Katana by id. Returns the updated row: id, bin_transfer_id, variant_id, source_bin_location_id, target_bin_location_id, created_at, updated_at. Required: id.
- **delete_a_katana_mrp_bin_transfer_row_by_id** — Delete a bin transfer row in Katana by id. Returns the deleted row: id, bin_transfer_id, variant_id, source_bin_location_id, target_bin_location_id, created_at, updated_at. Required: id.
- **list_all_katana_mrp_bin_transfer_rows** — List bin transfer rows in Katana. Returns each row's id, bin_transfer_id, variant_id, source_bin_location_id, target_bin_location_id, created_at, and updated_at.
- **create_a_katana_mrp_bin_transfer_row** — Create a bin transfer row in Katana. Returns the created row: id, bin_transfer_id, variant_id, source_bin_location_id, target_bin_location_id, created_at, updated_at. Requires a JSON request body. Required: variant_id, quantity, bin_transfer_id.
- **katana_mrp_bin_transfer_status_bulk_update** — Update the status of a bin transfer in Katana MRP by its id. Returns: id, created_at, updated_at. Required: id, status.
- **get_single_katana_mrp_bin_transfer_by_id** — Get a single bin transfer in katanamrp by id. Returns: id, created_at, updated_at. Required: id.
- **update_a_katana_mrp_bin_transfer_by_id** — Update a bin transfer in katanamrp by id. Returns the updated bin transfer with id, bin_transfer_number, location_id, status, and created_at. Required: id.
- **delete_a_katana_mrp_bin_transfer_by_id** — Delete a bin transfer in katanamrp by id. Returns the deleted bin transfer with id, bin_transfer_number, location_id, status, and created_at. Required: id.
- **list_all_katana_mrp_bin_transfers** — List bin transfers in katanamrp, filterable by ids, bin_transfer_number, location_id, status (CREATED, IN_TRANSIT, DONE), include_deleted, and a date range. Returns: id, bin_transfer_number, location_id, status, created_at, updated_at.
- **create_a_katana_mrp_bin_transfer** — Create a bin transfer in katanamrp. Returns the created bin transfer with id, bin_transfer_number, location_id, status, and created_at. Requires a JSON body. Required: location_id.
- **create_a_katana_mrp_batch_create** — Create multiple BOM rows in a single batch call in katanamrp. Returns: id, created_at, updated_at. Requires a JSON request body matching Katana's CreateBomRowsBatchDto schema; the upstream docs do not enumerate its field names. Required: data.
- **update_a_katana_mrp_bom_row_by_id** — Update a BOM row in katanamrp by id. Returns the updated BOM row with its id, created_at, and updated_at. Requires a JSON request body; its field set follows the upstream BomRowUpdateDto schema. Required: id.
- **delete_a_katana_mrp_bom_row_by_id** — Delete a BOM row in katanamrp by id. Returns the deleted BOM row with its id, product_variant_id, product_item_id, ingredient_variant_id, created_at, and updated_at. Required: id.
- **list_all_katana_mrp_bom_rows** — List BOM rows in katanamrp. Returns each BOM row with its id, product_variant_id, product_item_id, ingredient_variant_id, created_at, and updated_at.
- **create_a_katana_mrp_bom_row** — Create a BOM row in katanamrp. Returns the created BOM row with its id, created_at, and updated_at. Requires a JSON request body; its field set follows the upstream BomRowCreateDto schema. Required: product_item_id, product_variant_id, ingredient_variant_id.
- **get_single_katana_mrp_custom_field_definition_by_id** — Get a custom field definition by id in katanamrp. Returns the definition including id, label, field_type, entity_type, created_at, and updated_at. Required: id.
- **update_a_katana_mrp_custom_field_definition_by_id** — Update a custom field definition by id in katanamrp. Returns the updated definition including id, created_at, and updated_at. Required: id.
- **delete_a_katana_mrp_custom_field_definition_by_id** — Delete a custom field definition by id in katanamrp. Returns the deleted definition including id, label, field_type, entity_type, created_at, and updated_at. Required: id.
- **list_all_katana_mrp_custom_field_definitions** — List custom field definitions in katanamrp. Returns definitions including id, label, field_type, entity_type, created_at, and updated_at.
- **create_a_katana_mrp_custom_field_definition** — Create a custom field definition in katanamrp. Returns the created definition including id, created_at, and updated_at. A JSON request body (CreateCustomFieldDefinitionDto) is required. Required: label, field_type, entity_type, source.
- **list_all_katana_mrp_custom_fields_collections** — List all custom fields collections configured in Katana. Returns each collection's id, created_at, and updated_at.
- **update_a_katana_mrp_customer_address_by_id** — Update a customer address in katanamrp by id. Returns the updated address record including its id, created_at, and updated_at. Requires a JSON request body per Katana's CustomerAddressUpdateDto schema. Required: id.
- **delete_a_katana_mrp_customer_address_by_id** — Delete a customer address in Katana by id. Returns the deleted address record including id, customer_id, entity_type, first_name, line_1, city, country, and updated_at. Required: id.
- **list_all_katana_mrp_customer_addresses** — List customer addresses in Katana. Returns address records including id, customer_id, entity_type, first_name, last_name, company, line_1, city, and zip.
- **create_a_katana_mrp_customer_address** — Create a customer address in katanamrp. Returns the created address record including its id, created_at, and updated_at. Requires a JSON request body following Katana's CustomerAddressCreateDto schema. Required: entity_type, customer_id.
- **update_a_katana_mrp_customer_by_id** — Update a customer in katanamrp by id. Returns the updated customer record identified by its integer id. Requires id and a required JSON body of customer attributes to change. Required: id.
- **delete_a_katana_mrp_customer_by_id** — Delete a customer in katanamrp by id. Returns the deleted customer record identified by its integer id. Requires id. Required: id.
- **list_all_katana_mrp_customers** — List customers in katanamrp. Returns customer records identified by their integer id, with optional attribute filters such as email, company, and name.
- **create_a_katana_mrp_customer** — Create a customer in katanamrp. Returns the created customer record identified by its integer id. Requires a JSON body with the new customer's attributes. Required: name.
- **list_all_katana_mrp_demand_forecasts** — List demand forecasts in Katana MRP for a specific product variant at a specific location. Returns: id, variant_id, location_id, created_at, updated_at. Required: variant_id, location_id.
- **create_a_katana_mrp_demand_forecast** — Create or update the demand forecast for a product variant at a location in Katana MRP. Returns: id, created_at, updated_at. Requires a JSON request body. Required: variant_id, location_id, periods.
- **katana_mrp_demand_forecasts_bulk_delete** — Clear the demand forecast for a product variant at a location in Katana MRP. Returns: id, created_at, updated_at. Requires a JSON request body. Required: variant_id, location_id, periods.
- **list_all_katana_mrp_factories** — List factory records in Katana. Returns each record's id, created_at, and updated_at.
- **list_all_katana_mrp_inventories** — List all current inventory records across Katana MRP locations. Returns an array of inventory entries, optionally extended with their related variant and location objects via the extend parameter.
- **list_all_katana_mrp_inventory_movements** — List inventory movements in Katana. Returns: id, location_id, variant_id, resource_type, resource_id, caused_by_order_no, caused_by_resource_id, created_at, updated_at.
- **create_a_katana_mrp_inventory_reorder_point** — Create an inventory reorder point in Katana for a product variant at a specific location. Returns the created reorder point including its id, location_id, variant_id, value, and created_at. Required: location_id, variant_id, value.
- **create_a_katana_mrp_inventory_safety_stock_level** — Create an inventory safety stock level in katanamrp for a specific variant at a specific location. Returns the created level including its id, location_id, variant_id, value, created_at, and updated_at. Requires location_id, variant_id, and value. Required: location_id, variant_id, value.
- **list_all_katana_mrp_inventory_signals** — List inventory signals in Katana, optionally filtered by variant_id and stock_risk (0-3). Returns each signal record with its id and the signal attributes defined by Katana.
- **get_single_katana_mrp_location_by_id** — Get a single Katana MRP location by id. Returns the location object including id, name, legal_name, is_primary, and its sales_allowed, manufacturing_allowed, and purchases_allowed flags. Required: id.
- **list_all_katana_mrp_locations** — List all locations in Katana MRP. Returns location objects including id, name, legal_name, is_primary, and the sales_allowed, manufacturing_allowed, and purchases_allowed flags. Supports filtering by ids, name, legal_name, address_id, is_primary, and include_deleted.
- **create_a_katana_mrp_manufacturing_order_make_to_order** — Create a make-to-order manufacturing order in Katana MRP. Returns the created manufacturing order record: id, created_at, updated_at. Required: sales_order_row_id.
- **get_single_katana_mrp_manufacturing_order_operation_row_by_id** — Get a single manufacturing order operation row in Katana by its id. Returns: id, created_at, updated_at. Required: id.
- **update_a_katana_mrp_manufacturing_order_operation_row_by_id** — Update a manufacturing order operation row in Katana by id. Returns the updated operation row including id, created_at, and updated_at. Required: id.
- **delete_a_katana_mrp_manufacturing_order_operation_row_by_id** — Delete a manufacturing order operation row in Katana by its id. Returns the deleted row including id, created_at, and updated_at. Required: id.
- **list_all_katana_mrp_manufacturing_order_operation_rows** — List manufacturing order operation rows in Katana, filterable by manufacturing_order_id, ids, status, and dateFilter. Returns rows with id, created_at, and updated_at.
- **create_a_katana_mrp_manufacturing_order_operation_row** — Create a manufacturing order operation row in Katana. Returns the created operation row including id, created_at, and updated_at. Requires a JSON request body (CreateManufacturingOrderOperationRowDto). Required: manufacturing_order_id, status.
- **update_manufacturing_order_production_ingredient_by_id** — Update a manufacturing order production ingredient in katanamrp by id. Requires a JSON request body. Returns the updated ingredient including id, created_at, and updated_at. Required: id.
- **list_all_katana_mrp_manufacturing_order_production_ingredients** — List manufacturing order production ingredients in katanamrp. Returns ingredient records including id, manufacturing_order_id, production_id, created_at, and updated_at.
- **get_single_katana_mrp_manufacturing_order_production_by_id** — Get a manufacturing order production in katanamrp by id. Returns the production record including its id, created_at, and updated_at. Required: id.
- **update_a_katana_mrp_manufacturing_order_production_by_id** — Update a manufacturing order production in katanamrp by id. Returns the updated production record including its id, created_at, and updated_at. The JSON request body must follow the UpdateManufacturingOrderProductionDto schema defined in Katana's OpenAPI specification. Required: id.
- **delete_a_katana_mrp_manufacturing_order_production_by_id** — Delete a manufacturing order production in katanamrp by id. Returns the deleted production record including its id, created_at, and updated_at. Required: id.
- **list_all_katana_mrp_manufacturing_order_productions** — List manufacturing order productions in katanamrp. Returns production records with id, created_at, and updated_at, filterable by ids, manufacturing_order_ids, dateFilter, and include_deleted.
- **create_a_katana_mrp_manufacturing_order_production** — Create a manufacturing order production in katanamrp to register a partial production completion on a manufacturing order. Returns the created production record including its id, created_at, and updated_at. The JSON request body must follow the CompletePartiallyMoDto schema defined in Katana's OpenAPI specification. Required: manufacturing_order_id, completed_quantity.
- **get_single_katana_mrp_manufacturing_order_recipe_row_by_id** — Get a single manufacturing order recipe row in katanamrp by id. Returns the recipe row record including its id, created_at, and updated_at. Required: id.
- **update_a_katana_mrp_manufacturing_order_recipe_row_by_id** — Update a manufacturing order recipe row in katanamrp by id. Returns the updated row record including its id, created_at, and updated_at. Requires id and a JSON request body. Required: id.
- **delete_a_katana_mrp_manufacturing_order_recipe_row_by_id** — Delete a manufacturing order recipe row in katanamrp by id. Returns the deleted row record including its id, created_at, and updated_at. Required: id.
- **list_all_katana_mrp_manufacturing_order_recipe_rows** — List manufacturing order recipe rows in katanamrp. Returns recipe row records including their id, created_at, and updated_at.
- **create_a_katana_mrp_manufacturing_order_recipe_row** — Create a manufacturing order recipe row in katanamrp. Returns the created row record including its id, created_at, and updated_at. Requires a JSON request body. Required: manufacturing_order_id, variant_id, planned_quantity_per_unit.
- **create_a_katana_mrp_manufacturing_order_rerank** — Rerank a manufacturing order in Katana via the make-to-order rerank action. Requires a JSON request body matching the upstream RerankManufacturingOrderDto schema (the docs reference this DTO without enumerating its fields). Returns a 200 success response whose payload shape is not enumerated upstream. Required: order_ids, place.
- **create_a_katana_mrp_manufacturing_order_unlink** — Unlink a make-to-order manufacturing order from its linked sales order in Katana. Returns a 200 response whose body shape is not enumerated in the upstream spec. Requires a JSON request body matching the UnlinkManufacturingOrderDto schema. Required: sales_order_row_id.
- **get_single_katana_mrp_manufacturing_order_by_id** — Get a single manufacturing order in Katana MRP by id. Returns the manufacturing order record including its id and attributes. Required: id.
- **update_a_katana_mrp_manufacturing_order_by_id** — Update an existing manufacturing order in Katana MRP by id. Returns the updated manufacturing order including its id. Requires a JSON request body matching the upstream UpdateManufacturingOrderDto schema. Required: id.
- **delete_a_katana_mrp_manufacturing_order_by_id** — Delete a manufacturing order in Katana MRP by id. Returns an empty 204 response on success. Required: id.
- **list_all_katana_mrp_manufacturing_orders** — List manufacturing orders in Katana MRP. Returns manufacturing order records including id and attributes.
- **create_a_katana_mrp_manufacturing_order** — Create a new manufacturing order in Katana MRP. Returns the created manufacturing order including its id. Requires a JSON request body matching the upstream CreateManufacturingOrderDto schema. Required: variant_id, planned_quantity, location_id.
- **get_single_katana_mrp_material_by_id** — Get a single material in Katana by id. Returns the material including id, name, uom, is_sellable, purchase_uom_conversion_rate, created_at, and updated_at. Required: id.
- **update_a_katana_mrp_material_by_id** — Update a material in Katana by id. Returns the updated material including id, name, created_at, and updated_at. Required: id.
- **delete_a_katana_mrp_material_by_id** — Delete a material in Katana by id. Returns a 200 response with the deleted material record including id, name, and uom. Required: id.
- **list_all_katana_mrp_materials** — List materials in Katana, filterable by name, category_name, ids, uom, is_sellable, batch_tracked, purchase_uom, and default_supplier_id. Returns materials with id, name, uom, is_sellable, purchase_uom_conversion_rate, created_at, and updated_at.
- **create_a_katana_mrp_material** — Create a material in Katana. Returns the created material including id, created_at, and updated_at. The request body is required. Required: name, variants.
- **list_all_katana_mrp_negative_stocks** — List negative stock records in Katana MRP. Returns records with an id and an attributes object holding the fields of Katana's negative stock latest-movement view.
- **list_all_katana_mrp_operators** — List operators in katanamrp. Returns a paginated collection of operator records — each record's id plus operator-specific attributes; the upstream API documentation does not enumerate the operator field set.
- **get_single_katana_mrp_outsourced_purchase_order_recipe_row_by_id** — Get an outsourced purchase order recipe row in Katana by id. Returns: id, created_at, updated_at. Required: id.
- **update_a_katana_mrp_outsourced_purchase_order_recipe_row_by_id** — Update an outsourced purchase order recipe row in Katana by id. Returns: id, created_at, updated_at. Required: id.
- **delete_a_katana_mrp_outsourced_purchase_order_recipe_row_by_id** — Delete an outsourced purchase order recipe row in Katana by id. Returns: id, created_at, updated_at. Required: id.
- **list_all_katana_mrp_outsourced_purchase_order_recipe_rows** — List outsourced purchase order recipe rows in Katana, filterable by purchase order, purchase order row, and ingredient variant. Returns: id, created_at, updated_at.
- **create_a_katana_mrp_outsourced_purchase_order_recipe_row** — Create an outsourced purchase order recipe row in Katana. Returns: id, created_at, updated_at. Requires a JSON request body. Required: purchase_order_row_id, ingredient_variant_id, planned_quantity_per_unit.
- **get_single_katana_mrp_po_additional_cost_row_by_id** — Get a purchase order additional cost row in Katana by id. Returns: id, created_at, updated_at. Required: id.
- **update_a_katana_mrp_po_additional_cost_row_by_id** — Update a purchase order additional cost row in Katana by id. Returns the updated row's id, group_id, additional_cost_id, distribution_method, tax_rate_id, currency, created_at, and updated_at. Required: id.
- **delete_a_katana_mrp_po_additional_cost_row_by_id** — Delete a purchase order additional cost row in Katana by id. Returns the deleted row's id, group_id, additional_cost_id, distribution_method, tax_rate_id, currency, created_at, and updated_at. Required: id.
- **list_all_katana_mrp_po_additional_cost_rows** — List purchase order additional cost rows in Katana. Returns rows with id, group_id, additional_cost_id, distribution_method, tax_rate_id, currency, created_at, and updated_at. Filterable by ids, group_id, additional_cost_id, distribution_method, tax_rate_id, currency, and include_deleted.
- **create_a_katana_mrp_po_additional_cost_row** — Create a purchase order additional cost row in Katana. Returns the created row's id, group_id, additional_cost_id, distribution_method, tax_rate_id, currency, created_at, and updated_at. Required: additional_cost_id, group_id, tax_rate_id, price.
- **get_single_katana_mrp_price_list_customer_by_id** — Get a price list customer in katanamrp by id. Returns: id, created_at, updated_at. Required: id.
- **update_a_katana_mrp_price_list_customer_by_id** — Update a price list customer in katanamrp by id. Returns: id, created_at, updated_at. Required: id, customer_id.
- **delete_a_katana_mrp_price_list_customer_by_id** — Delete a price list customer in katanamrp by id. Returns an empty 204 response on success. Required: id.
- **list_all_katana_mrp_price_list_customers** — List price list customers in katanamrp. Returns each record's id, customer_id, price_list_id, created_at, and updated_at.
- **create_a_katana_mrp_price_list_customer** — Create price list customers in katanamrp. Returns: id, created_at, updated_at. A request body is required; its fields are defined by the upstream CreatePriceListCustomersDto schema. Required: price_list_id, price_list_customers.
- **get_single_katana_mrp_price_list_row_by_id** — Get a single price list row by id in Katana. Returns the row's id, created_at, and updated_at. Required: id.
- **update_a_katana_mrp_price_list_row_by_id** — Update a price list row by id in Katana by sending a JSON request body. Returns the updated row's id, created_at, and updated_at. Required: id.
- **delete_a_katana_mrp_price_list_row_by_id** — Delete a price list row by id in Katana. Returns an empty 204 response on success. Required: id.
- **list_all_katana_mrp_price_list_rows** — List price list rows in Katana, optionally filtered by specific ids, variant_ids, or price_list_ids. Returns rows with id, variant_id, price_list_id, created_at, and updated_at.
- **create_a_katana_mrp_price_list_row** — Create price list rows in Katana by sending a JSON request body. Returns the created row's id, created_at, and updated_at. Required: price_list_id, price_list_rows.
- **get_single_katana_mrp_price_list_by_id** — Get a single katanamrp price list by id. Returns the price list record including its id, name, is_active, created_at, and updated_at. Required: id.
- **update_a_katana_mrp_price_list_by_id** — Update a katanamrp price list by id. Returns the updated price list record including its id, name, is_active, created_at, and updated_at. Required: id.
- **delete_a_katana_mrp_price_list_by_id** — Delete a katanamrp price list by id. Returns an empty 204 response on success. Required: id.
- **list_all_katana_mrp_price_lists** — List katanamrp price lists. Returns price list records including id, name, is_active, created_at, and updated_at.
- **create_a_katana_mrp_price_list** — Create a price list in katanamrp. Returns the created price list record including its id, name, is_active, created_at, and updated_at. Required: name.
- **create_a_katana_mrp_product_operation_rerank** — Re-rank a product operation row in katanamrp to change its ordering. Requires a JSON request body matching Katana's ProductOperationRowRankDto schema. Returns the rerank result; the response fields are not enumerated in Katana's API documentation. Required: rank_product_operation_id.
- **update_a_katana_mrp_product_operation_row_by_id** — Update a product operation row in katanamrp by id. Returns the updated row record with id, created_at, and updated_at; the full field set follows Katana's upstream OpenAPI schema. Required: id.
- **delete_a_katana_mrp_product_operation_row_by_id** — Delete a product operation row in katanamrp by id. Returns the deleted row record: id, operation_name, product_variant_id, resource_id, resource_name, created_at, updated_at. Required: id.
- **list_all_katana_mrp_product_operation_rows** — List product operation rows in katanamrp, with documented filters for product_id, product_variant_id, operation_id, operation_name, resource_id, and resource_name. Returns: id, created_at, updated_at.
- **create_a_katana_mrp_product_operation_row** — Create product operation rows in katanamrp. Returns the created row record with id, created_at, and updated_at; the full field set follows Katana's upstream OpenAPI schema. Requires a JSON body conforming to ProductOperationCreateDto. Required: rows.
- **get_single_katana_mrp_product_by_id** — Get a single katanamrp product by id. Returns the product record identified by its integer id; the upstream documentation does not enumerate the remaining product fields. Required: id.
- **update_a_katana_mrp_product_by_id** — Update a katanamrp product by id. Returns the updated product record including its id; the upstream documentation does not enumerate the remaining product fields. The request takes a JSON body defined upstream as the ProductUpdateDto schema, whose fields are not enumerated in the documentation. Required: id.
- **delete_a_katana_mrp_product_by_id** — Delete a katanamrp product by id. Required: id.
- **list_all_katana_mrp_products** — List katanamrp products. Returns the collection of products, each identified by its integer id; the upstream documentation does not enumerate the remaining product fields. Supports filtering and extend options.
- **create_a_katana_mrp_product** — Create a product in katanamrp. Returns the created product record including its id; the upstream documentation does not enumerate the remaining product fields. The request takes a JSON body defined upstream as the CreateProductDto schema, whose fields are not enumerated in the documentation. Required: name, variants.
- **list_all_katana_mrp_purchase_order_accounting_metadatas** — List purchase order accounting metadata records in Katana. Returns each record's id, purchase_order_id, received_items_group_id, created_at, and updated_at.
- **create_a_katana_mrp_purchase_order_receive** — Receive purchase order rows in Katana. Accepts either a single PurchaseOrderRowReceiveDto object or a JSON array of at least one such object as the request body. Returns the outcome of the partial receive operation; the upstream response body fields are not documented.
- **get_single_katana_mrp_purchase_order_row_by_id** — Get a single purchase order row in katanamrp by id. Returns the row object including its id, purchase_order_id, variant_id, tax_rate_id, and created_at/updated_at timestamps. Required: id.
- **update_a_katana_mrp_purchase_order_row_by_id** — Update a purchase order row in katanamrp by id. Returns the updated row object including its id, created_at, and updated_at. Required: id.
- **delete_a_katana_mrp_purchase_order_row_by_id** — Delete a purchase order row in katanamrp by id. Returns the deleted row object including its id, purchase_order_id, variant_id, and created_at/updated_at timestamps. Required: id.
- **list_all_katana_mrp_purchase_order_rows** — List purchase order rows in katanamrp. Returns rows with id, purchase_order_id, variant_id, tax_rate_id, and created_at/updated_at timestamps; filter by ids, purchase_order_id, variant_id, purchase_uom, location_id, and include_deleted.
- **create_a_katana_mrp_purchase_order_row** — Create a purchase order row in katanamrp attached to a parent purchase order. Returns the created row object including its id, created_at, and updated_at. Required: quantity, variant_id, price_per_unit, purchase_order_id.
- **get_single_katana_mrp_purchase_order_by_id** — Get a single purchase order in Katana MRP by id. Returns the purchase order's id, created_at, and updated_at. Required: id.
- **update_a_katana_mrp_purchase_order_by_id** — Update a purchase order in katanamrp by id. Returns the updated purchase order including id, created_at, and updated_at. Requires: id and a JSON body conforming to the upstream UpdatePurchaseOrderDto schema; the source docs reference the DTO without enumerating its fields. Required: id.
- **delete_a_katana_mrp_purchase_order_by_id** — Delete a purchase order in Katana MRP by id. Returns the deleted purchase order's id, created_at, and updated_at. Required: id.
- **list_all_katana_mrp_purchase_orders** — List purchase orders in katanamrp, filterable by supplier, location, status, receiving state, and billing state. Returns: id, created_at, updated_at.
- **create_a_katana_mrp_purchase_order** — Create a purchase order in katanamrp. Returns the created purchase order including id, created_at, and updated_at. Requires a JSON body conforming to the upstream CreatePurchaseOrderDto schema; the source docs reference the DTO without enumerating its fields — consult the katanamrp API reference for the field list. Required: supplier_id, location_id, purchase_order_rows.
- **update_a_katana_mrp_recipe_row_by_id** — Update a recipe row in katanamrp by id. Returns the updated recipe row including id, created_at, and updated_at. Requires the recipe row id and a JSON request body. Required: id.
- **delete_a_katana_mrp_recipe_row_by_id** — Delete a recipe row in katanamrp by id. Returns a 200 response with the deleted recipe row data including id, created_at, and updated_at. Required: id.
- **delete_a_katana_mrp_recipe_by_id** — Delete a recipe in katanamrp by id. Returns an empty 204 response on success. Required: id.
- **list_all_katana_mrp_recipes** — List recipes in katanamrp. Returns recipe records with id and content-type-specific attributes defined by the upstream Recipe schema.
- **create_a_katana_mrp_recipe** — Create recipe rows in katanamrp. Requires a JSON request body matching the upstream RecipeRowCreateManyDto schema. Returns the created record including its id; the upstream API reference is authoritative for the full body and response field list. Required: rows.
- **list_all_katana_mrp_sales_order_accounting_metadatas** — List sales order accounting metadata records in Katana. Returns the collection of metadata records, each with id, created_at, and updated_at.
- **update_a_katana_mrp_sales_order_address_by_id** — Update a sales order address in Katana by id. Returns: id, created_at, updated_at. Required: id.
- **delete_a_katana_mrp_sales_order_address_by_id** — Delete a sales order address in katanamrp by id. Returns the deleted address object including id, entity_type, first_name, city, zip, country, phone, created_at, and updated_at. Required: id.
- **list_all_katana_mrp_sales_order_addresses** — List sales order addresses in Katana. Returns address records with id, sales_order_id, entity_type, first_name, last_name, company, line_1, line_2, city, state, zip, country, phone, created_at, and updated_at. Filter by ids, sales_order_ids, or any address field.
- **create_a_katana_mrp_sales_order_address** — Create a sales order address in Katana. Returns: id, created_at, updated_at. Requires a JSON request body. Required: entity_type, sales_order_id.
- **get_single_katana_mrp_sales_order_fulfillment_by_id** — Get a single Katana sales order fulfillment by id. Returns the fulfillment record including its id and attributes (the schema-specific fulfillment fields). Required: id.
- **update_a_katana_mrp_sales_order_fulfillment_by_id** — Update a Katana sales order fulfillment by id. Requires a JSON body matching the upstream UpdateSalesOrderFulfillmentDto — see the Katana API reference for the field-level breakdown. Returns the updated fulfillment record including its id. Required: id.
- **delete_a_katana_mrp_sales_order_fulfillment_by_id** — Delete a Katana sales order fulfillment by id. Returns an empty 204 response on success. Required: id.
- **list_all_katana_mrp_sales_order_fulfillments** — List Katana sales order fulfillments. Returns each fulfillment record including its id and attributes (the schema-specific fulfillment fields).
- **create_a_katana_mrp_sales_order_fulfillment** — Create a sales order fulfillment in Katana. Requires a JSON body matching the upstream CreateSalesOrderFulfillmentDto — see the Katana API reference for the field-level breakdown. Returns the created fulfillment record including its id. Required: sales_order_id, status, sales_order_fulfillment_rows.
- **create_a_katana_mrp_sales_order_rerank** — Custom Sales Order Controller.rerank. Required: order_ids, place.
- **get_single_katana_mrp_sales_order_row_by_id** — Get a single sales order row in katanamrp by id. Returns the row record including its id, quantity, variant_id, price_per_unit, and tax_rate_id. Required: id.
- **update_a_katana_mrp_sales_order_row_by_id** — Update a sales order row in Katana MRP by id with a JSON body of the fields to change. Returns the updated row with id, quantity, variant_id, tax_rate_id, price_per_unit, and attributes. Required: id.
- **delete_a_katana_mrp_sales_order_row_by_id** — Delete a sales order row in katanamrp by id. Returns the deleted row record including its id, quantity, variant_id, price_per_unit, and tax_rate_id. Required: id.
- **list_all_katana_mrp_sales_order_rows** — List sales order rows in Katana MRP. Returns each row with id, quantity, variant_id, tax_rate_id, price_per_unit, and attributes. Filter by ids, sales_order_ids, variant_id, location_id, or product_availability, and set extend to variant to include variant details.
- **create_a_katana_mrp_sales_order_row** — Create a sales order row in Katana MRP on an existing sales order. Returns the created row with id, quantity, variant_id, tax_rate_id, price_per_unit, and attributes. Required: quantity, variant_id, sales_order_id.
- **get_single_katana_mrp_sales_order_shipping_fee_by_id** — Get a single sales order shipping fee in katanamrp by id. Returns the shipping fee record including its id, price, sales_order_id, tax_rate_id, and created_at / updated_at timestamps. Required: id.
- **update_a_katana_mrp_sales_order_shipping_fee_by_id** — Update an existing sales order shipping fee in katanamrp by id. Returns the updated shipping fee record including its id, created_at, and updated_at timestamps. Requires a JSON request body. Required: id, amount.
- **delete_a_katana_mrp_sales_order_shipping_fee_by_id** — Delete a sales order shipping fee in katanamrp by id. Returns an empty 200 response on success. Required: id.
- **list_all_katana_mrp_sales_order_shipping_fees** — List sales order shipping fees in katanamrp, optionally filtered by sales_order_id, a dateFilter object, or include_deleted. Returns shipping fee records including id, price, sales_order_id, tax_rate_id, and created_at / updated_at timestamps.
- **create_a_katana_mrp_sales_order_shipping_fee** — Create a shipping fee on a sales order in katanamrp. Returns the created shipping fee record including its id, created_at, and updated_at timestamps. Requires a JSON request body. Required: sales_order_id, amount.
- **get_single_katana_mrp_sales_order_by_id** — Get a single sales order from Katana by id. Returns the sales order object including id, order_no, status, delivery_date, customer_id, and its sales_order_rows line items. Required: id.
- **update_a_katana_mrp_sales_order_by_id** — Update a sales order in Katana by id. Returns the updated sales order object including id, order_no, customer_id, status, delivery_date, and its sales_order_rows line items. Requires id and a JSON body of the fields to update (UpdateSalesOrderDto). Required: id.
- **delete_a_katana_mrp_sales_order_by_id** — Delete a sales order in Katana by id. Returns the deleted sales order object including id, order_no, status, and sales_order_rows. Required: id.
- **list_all_katana_mrp_sales_orders** — List sales orders in katanamrp. Returns sales order objects including id, customer_id, order_no, status, delivery_date, and sales_order_rows. Filter by ids, order_no, customer_id, location_id, status, currency, invoicing_status, availability, and ecommerce fields.
- **create_a_katana_mrp_sales_order** — Create a sales order in Katana. Returns the created sales order object including id, order_no, customer_id, status, delivery_date, and its sales_order_rows line items (variant_id, quantity, price_per_unit). Requires a JSON request body following Katana's CreateSalesOrderDto schema. Required: customer_id, sales_order_rows.
- **list_all_katana_mrp_sales_order_returnable_items** — List the items on a Katana sales order that are eligible for return. Returns one record per returnable item with id, created_at, and updated_at; the upstream docs do not enumerate the remaining item fields. Required: sales_order_id.
- **list_all_sales_return_row_unassigned_batch_transactions** — List the batch transactions that are not yet assigned to a sales return row in Katana. Returns the unassigned batch transaction records for the row, including id, created_at, and updated_at (the full field set is batch-transaction-specific). Required: sales_return_row_id.
- **get_single_katana_mrp_sales_return_row_by_id** — Get a single sales return row in Katana by id. Returns the row's id, sales_return_id, variant_id, sales_order_row_id, reason_id, restock_location_id, created_at, and updated_at. Required: id.
- **update_a_katana_mrp_sales_return_row_by_id** — Update a sales return row in Katana by id. Returns the updated sales return row including id, created_at, and updated_at. The request body follows the upstream SalesReturnRowPatchDto schema. Required: id.
- **delete_a_katana_mrp_sales_return_row_by_id** — Delete a sales return row in Katana by id. Returns the deleted row including id, sales_return_id, variant_id, sales_order_row_id, reason_id, and restock_location_id. Required: id.
- **list_all_katana_mrp_sales_return_rows** — List sales return rows in Katana, filterable by ids, sales_return_id, variant_id, sales_order_row_id, reason_id, and restock_location_id. Returns rows with id, sales_return_id, variant_id, sales_order_row_id, reason_id, restock_location_id, created_at, and updated_at.
- **create_a_katana_mrp_sales_return_row** — Create a sales return row in Katana. Returns the created sales return row including id, created_at, and updated_at. The request body follows the upstream SalesReturnRowCreateDto schema. Required: sales_return_id, variant_id, fulfillment_row_id, quantity.
- **list_all_katana_mrp_sales_returns_return_reasons** — List the return reasons available in katanamrp that sales return rows can reference via reason_id. Returns each reason record with id, created_at, and updated_at.
- **get_single_katana_mrp_sales_return_by_id** — Get a sales return in katanamrp by id. Returns the sales return record: id, created_at, updated_at. Required: id.
- **update_a_katana_mrp_sales_return_by_id** — Update a sales return in katanamrp by id with a JSON body. Returns the updated sales return record: id, created_at, updated_at. Required: id.
- **delete_a_katana_mrp_sales_return_by_id** — Delete a sales return in katanamrp by id. Returns the deleted sales return record: id, created_at, updated_at. Required: id.
- **list_all_katana_mrp_sales_returns** — List sales returns in katanamrp. Returns sales return records: id, created_at, updated_at. Supports filters: ids, status, refund_status, order_no, sales_order_no, return_location_id, and date bounds. Max 250 per page.
- **create_a_katana_mrp_sales_return** — Create a sales return in katanamrp. Returns the created sales return record: id, created_at, updated_at. Requires a JSON body of sales return fields. Required: sales_order_id, return_location_id.
- **list_all_katana_mrp_serial_numbers_serial_numbers_stocks** — List serial number stock records in Katana MRP. Returns: id, created_at, updated_at.
- **list_all_katana_mrp_serial_numbers** — List serial numbers in Katana MRP. Returns serial number records including id, created_at, and updated_at.
- **create_a_katana_mrp_serial_number** — Add serial numbers to an entity in Katana MRP. Returns a record including id, created_at, and updated_at. Required: resource_id.
- **katana_mrp_serial_numbers_bulk_delete** — Remove serial numbers from an entity in Katana MRP. Returns a record including id, created_at, and updated_at. Required: resource_id, resource_type, ids.
- **list_all_katana_mrp_serial_numbers_stocks** — List serial number stock records in katanamrp. Returns each record's id, created_at, and updated_at. Results are paginated.
- **get_single_katana_mrp_service_by_id** — Get a service in katanamrp by id. Returns the service record with its id, created_at, and updated_at. Required: id.
- **update_a_katana_mrp_service_by_id** — Update an existing service in katanamrp by id using a JSON body of service attributes. Returns the updated service record with its id, created_at, and updated_at. Required: id.
- **delete_a_katana_mrp_service_by_id** — Delete a service in katanamrp by id. Returns the deleted service record with its id, created_at, and updated_at. Required: id.
- **list_all_katana_mrp_services** — List services in katanamrp. Returns service records with their id, created_at, and updated_at. Optional filters include ids, name, uom, category_name, and is_sellable.
- **create_a_katana_mrp_service** — Create a new service in katanamrp by submitting a JSON body of service attributes. Returns the created service record with its id, created_at, and updated_at. The service attribute fields follow Katana's CreateServiceDto; a request body is required. Required: name, variants.
- **update_a_katana_mrp_stock_adjustment_by_id** — Update a stock adjustment in katanamrp by id. Returns the updated stock adjustment record including id, created_at, and updated_at. Required: id.
- **delete_a_katana_mrp_stock_adjustment_by_id** — Delete a stock adjustment in katanamrp by id. Returns the deleted stock adjustment record including id, created_at, and updated_at. Required: id.
- **list_all_katana_mrp_stock_adjustments** — List stock adjustments in katanamrp. Returns each stock adjustment with id, stock_adjustment_number, location_id, created_at, and updated_at. Supports filtering by ids, stock_adjustment_number, location_id, include_deleted, and a dateFilter.
- **create_a_katana_mrp_stock_adjustment** — Create a stock adjustment in katanamrp. Returns the created stock adjustment record including id, created_at, and updated_at. Requires a JSON request body. Required: location_id, stock_adjustment_rows.
- **katana_mrp_stock_transfer_status_bulk_update** — Update the status of a stock transfer in Katana MRP by its id. Returns the updated stock transfer record including its id, created_at, and updated_at. Requires a JSON request body (UpdateStockTransferStatusDto);. Required: id.
- **update_a_katana_mrp_stock_transfer_by_id** — Update a stock transfer by id in Katana MRP with a JSON request body matching Katana's UpdateStockTransferDto (see Katana's API reference for the field-level contract). Returns: id, created_at, updated_at. Required: id.
- **delete_a_katana_mrp_stock_transfer_by_id** — Delete a stock transfer by id in Katana MRP. Returns the deleted transfer including id, stock_transfer_number, source_location_id, and target_location_id. Required: id.
- **list_all_katana_mrp_stock_transfers** — List stock transfers in Katana MRP. Returns each transfer's id, stock_transfer_number, source_location_id, target_location_id, created_at, and updated_at.
- **create_a_katana_mrp_stock_transfer** — Create a stock transfer in Katana MRP with a JSON request body matching Katana's CreateStockTransferDto (see Katana's API reference for the field-level contract). Returns: id, created_at, updated_at. Required: source_location_id, target_location_id, stock_transfer_rows.
- **update_a_katana_mrp_stocktake_row_by_id** — Update a stocktake row in katanamrp by id. Returns the updated stocktake row with id, created_at, and updated_at. Requires id and a JSON request body (documented upstream as UpdateStocktakeRowDto). Required: id.
- **delete_a_katana_mrp_stocktake_row_by_id** — Delete a stocktake row in katanamrp by id. Returns an empty 204 response on success. Required: id.
- **list_all_katana_mrp_stocktake_rows** — List stocktake rows in katanamrp, filterable by stocktake, variant, batch, and bin location. Returns: id, variant_id, batch_id, bin_location_id, created_at, updated_at.
- **create_a_katana_mrp_stocktake_row** — Create stocktake rows in katanamrp by posting a JSON request body (documented upstream as CreateStocktakeRowsDto). Returns the created stocktake row with id, created_at, and updated_at. Requires a JSON request body. Required: stocktake_id.
- **update_a_katana_mrp_stocktake_by_id** — Update a stocktake in Katana by id. Returns an empty 204 response on success. Required: id.
- **delete_a_katana_mrp_stocktake_by_id** — Delete a stocktake in Katana by id. Returns an empty 204 response on success. Required: id.
- **list_all_katana_mrp_stocktakes** — List stocktakes in Katana. Returns stocktake records including id, stocktake_number, status, location_id, stock_adjustment_id, and created_at.
- **create_a_katana_mrp_stocktake** — Create a stocktake in Katana. Returns the created stocktake record including its id, created_at, and updated_at. Requires a request body. Required: stocktake_number, location_id.
- **update_a_katana_mrp_supplier_address_by_id** — Update an existing supplier address by id in katanamrp. Returns: id, created_at, updated_at. Requires a JSON request body; its fields are defined by the upstream SupplierAddressPatchDto schema in katanamrp's OpenAPI specification. Required: id.
- **delete_a_katana_mrp_supplier_address_by_id** — Delete a supplier address in katanamrp by id. Returns the deleted address record including its id, supplier_id, line_1, city, country, and created_at. Required: id.
- **list_all_katana_mrp_supplier_addresses** — List supplier addresses in katanamrp. Returns each address's id, supplier_id, line_1, city, country, and created_at. Optional filters include ids, supplier_ids, line_1, line_2, city, state, zip, country, and include_deleted.
- **create_a_katana_mrp_supplier_address** — Create a supplier address in katanamrp. Returns: id, created_at, updated_at. Requires a JSON request body; its fields are defined by the upstream SupplierAddressCreateDto schema in katanamrp's OpenAPI specification. Required: supplier_id.
- **update_a_katana_mrp_supplier_by_id** — Update a supplier in katanamrp by id. Returns the updated supplier object including id, name, created_at, and updated_at. Required: id.
- **delete_a_katana_mrp_supplier_by_id** — Delete a supplier in katanamrp by id. Returns an empty 204 response on success. Required: id.
- **list_all_katana_mrp_suppliers** — List suppliers in katanamrp. Returns supplier records including id, name, email, phone, created_at, and updated_at.
- **create_a_katana_mrp_supplier** — Create a supplier in katanamrp. Returns the created supplier object including id, created_at, and updated_at. Requires a supplier payload in the JSON request body; the field set follows Katana's SupplierCreateDto. Required: name.
- **list_all_katana_mrp_tax_rates** — List tax rates in Katana MRP. Returns each tax rate's id, name, rate, default sales and purchases flags, and created_at and updated_at timestamps.
- **create_a_katana_mrp_tax_rate** — Create a tax rate in Katana MRP. Returns the created tax rate including id, created_at, and updated_at. Required: rate.
- **create_a_katana_mrp_unlink_variant_bin_location** — Bulk unlink bin locations from variants in Katana MRP by sending a bare JSON array of unlink entries (1 to 500 items per request). Returns an empty 204 response on success.
- **list_all_katana_mrp_user_infos** — Get the user info of the katanamrp account associated with the API credentials. Returns: id, attributes.
- **list_all_katana_mrp_users** — List users in Katana MRP. Returns each user's id, created_at, and updated_at.
- **create_a_katana_mrp_variant_bin_location** — Bulk create or update variant bin locations in Katana with a single request. Returns an array of the upserted variant bin location records, each including id, created_at, and updated_at.
- **get_single_katana_mrp_variant_by_id** — Get a single variant in Katana by id. Returns the variant object including id, sku, sales_price, purchase_price, type, and created_at/updated_at. Pass extend=product_or_material to include the parent product or material. Required: id.
- **update_a_katana_mrp_variant_by_id** — Update a variant in Katana by id. Returns the updated variant object including id, sku, sales_price, purchase_price, type, and created_at/updated_at. Required: id.
- **delete_a_katana_mrp_variant_by_id** — Delete a variant in Katana by id. Returns the deleted variant object including id, sku, sales_price, type, and created_at/updated_at. Required: id.
- **list_all_katana_mrp_variants** — List variants in Katana, filterable by ids, sku, product_id or material_id, barcodes, type, sales_price, purchase_price, abc_classification, and supplier_item_codes, with options to include deleted or archived records. Returns variant records including id, sku, sales_price, purchase_price, and type.
- **create_a_katana_mrp_variant** — Create a variant in Katana. Returns the created variant object including id, sku, sales_price, purchase_price, type, and created_at/updated_at. The request body follows the upstream CreateVariantDto schema.
- **create_a_katana_mrp_webhook_logs_export** — Request an export of webhook logs in Katana MRP. Returns the raw export payload produced by the API; Katana's documentation does not enumerate its fields. Requires a JSON request body defined upstream as WebhookLogsExportDto, whose properties are not listed in the available docs.
- **get_single_katana_mrp_webhook_by_id** — Get a webhook by id in Katana MRP. Returns the webhook object including its id, url, subscribed_events, description, and enabled status. Required: id.
- **update_a_katana_mrp_webhook_by_id** — Update an existing Katana MRP webhook by id. Returns the updated webhook including id, url, subscribed_events, and description. Required: id.
- **delete_a_katana_mrp_webhook_by_id** — Delete a Katana MRP webhook by id. Returns an empty 204 response on success. Required: id.
- **list_all_katana_mrp_webhooks** — List Katana MRP webhooks. Returns webhook records including id, url, subscribed_events, description, and enabled status.
- **create_a_katana_mrp_webhook** — Create a webhook in Katana MRP that subscribes an HTTPS endpoint to inventory and order events. Returns the created webhook including id, url, subscribed_events, and description. Requires url and at least one subscribed_events value. Required: url, subscribed_events.
- **list_all_katana_mrp_search_customers** — Search Katana (katanamrp) customers using a structured filter body with and/or condition groups, per-field operators (neq, gt, gte, lt, lte, inq, nin, between, like, ilike — a plain value matches exactly), custom_fields.<field> keys, and ordering. Returns matching customer records with id, name, first_name, last_name, company, email, and more. Max 200 per page.
- **list_all_katana_mrp_search_manufacturing_orders** — Search Katana manufacturing orders with structured filters. Returns matching manufacturing order records including id, order_no, status, location_id, planned_quantity, order_created_date, done_date, total_cost, created_at, and updated_at. Supports and/or filter combinators, sorting, and paging; max 200 results per page.
- **list_all_katana_mrp_search_purchase_orders** — Search Katana purchase orders by posting filter conditions (and/or groups; operators like neq, inq, like, ilike, between) on fields such as status, supplier_id, order_no, and custom_fields. Returns: id, order_no, entity_type, supplier_id, location_id, tracking_location_id, currency, status, billing_status, last_document_status, expected_arrival_date, order_created_date, created_at, updated_at,…
- **list_all_katana_mrp_search_sales_order_rows** — Search sales order rows in Katana via a POST filter query. Returns matching rows with id, quantity, variant_id, tax_rate_id, price_per_unit, and attributes. Filter on sales_order_id, variant_id, location_id, tax_rate_id, quantity, price_per_unit, total_discount, tax_rate, currency, product_availability, created_at, updated_at, delivery_date, shipping_date, and custom_fields.* keys; sort with…
- **list_all_katana_mrp_search_sales_orders** — Search Katana (katanamrp) sales orders with a structured filter, sorting, and pagination. Returns matching sales order objects with id, customer_id, order_no, status, delivery_date, invoicing_status, and nested sales_order_rows. Filter fields accept direct values or operator objects (e.g. neq, inq, between, ilike). Max 200 per page.
- **list_all_katana_mrp_search_variants** — Search katanamrp variants with a structured filter, sort order, and include options. Returns: id, sku, item_id, item_type, sales_price, purchase_price, minimum_order_quantity, lead_time, internal_barcode, registered_barcode, supplier_item_codes, abc_classification, custom_fields, created_at, updated_at, item. Supports include: item (parent item enrichment), archived, deleted. Max 200 per page.

## How it works

1. **Link your customer's Katana MRP account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Katana MRP.** The Proxy API is a 1-to-1 mapping of the Katana MRP API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Embed Katana sync in your e-commerce or POS platform** — Let merchants using your storefront push sales orders into Katana and reflect live stock levels back to prevent overselling. Truto handles auth and pagination so you can ship a bi-directional product and inventory sync without maintaining Katana-specific code.
- **Power AI-driven demand forecasting and replenishment** — Ingest inventory movements and sales history from your users' Katana accounts to train forecasting models, then write back safety stock levels, reorder points, and demand forecasts programmatically. This turns your analytics product into an active planning tool for physical-goods brands.
- **Offer a shop-floor or QA companion app** — Build a tablet-based operator app that reads open manufacturing orders and lets workers complete operation rows, log productions, and assign serial numbers to finished goods. Truto normalizes access to Katana's granular production endpoints so you can focus on the workflow, not the API.
- **Automate accounting and 3PL fulfillment workflows** — Pull done sales orders and received purchase orders from Katana to generate invoices, bills, and shipping labels, then push fulfillment status back. Ideal for accounting, AP automation, and shipping SaaS looking to serve manufacturers natively.
- **Launch a B2B wholesale ordering portal** — Read Katana price lists, customer-specific pricing, and variant catalogs to render negotiated pricing for wholesale buyers, then submit orders back as Katana sales orders. Removes the need for your customers to manually re-key B2B orders.

## What you can build

- **Two-way product and variant catalog sync** — Keep products, variants, materials, and BOMs aligned between your app and Katana using the products, variants, materials, bom_rows, and recipes endpoints.
- **Live inventory and stock-level mirroring** — Stream current stock via list_all_katana_mrp_inventories and inventory_movements to keep storefronts, dashboards, or forecasting models in sync in near real time.
- **Sales order ingestion and fulfillment write-back** — Create sales orders from external channels using create_a_katana_mrp_sales_order and push fulfillment updates and shipping fees back with the sales_order_fulfillments endpoints.
- **Make-to-order production triggers** — Automatically spin up a manufacturing order tied to a customer sales order via create_a_katana_mrp_manufacturing_order_make_to_order when a deal closes or a custom-configured product is ordered.
- **Purchase order and supplier automation** — Create suppliers, issue purchase orders, add PO rows and additional costs, and mark receipts using create_a_katana_mrp_purchase_order_receive to automate procurement flows.
- **Event-driven updates via webhooks** — Register Katana webhooks with create_a_katana_mrp_webhook so your product reacts to inventory, order, and production changes without polling.

## FAQs

### How do end users authenticate their Katana MRP account?

Katana uses API key authentication. Through Truto's connection flow, your end users paste their Katana API key once and Truto securely stores and injects it on every request, so you never handle credentials directly.

### Can I query large catalogs efficiently instead of paginating through everything?

Yes. Katana exposes dedicated search endpoints for sales orders, purchase orders, manufacturing orders, variants, sales order rows, and customers. These support structured filters with operators like neq, between, and ilike, which Truto passes through so you can target only the records you need.

### Does the integration support real-time updates or is it polling-based?

Both are supported. You can subscribe to Katana events using create_a_katana_mrp_webhook for real-time push, or poll list endpoints and inventory_movements on your own schedule. Most integrations combine webhooks for hot data with periodic reconciliation.

### Can I read and write custom fields defined by the user in Katana?

Yes. Truto exposes the full custom_field_definitions and custom_fields_collections endpoints, so you can discover user-defined fields at runtime and read or write their values on supported resources.

### What warehouse-level operations are supported?

The full set of granular warehouse primitives is available, including bin_locations, bin_inventories, bin_transfers, stock_transfers, stock_adjustments, stocktakes, batch_stocks, and serial_numbers. This is enough to power traceability, cycle counts, and multi-location logistics.

### How does Truto handle Katana's rate limits and API quirks?

Truto manages retries, backoff, and pagination for Katana's endpoints automatically. If Katana returns a rate-limit response, requests are queued and retried transparently so your integration remains stable under load.
