katana_public_api_client.helpers.variants¶
katana_public_api_client.helpers.variants
¶
Variant catalog operations.
Classes¶
Variants(client)
¶
Bases: Base
Variant catalog management.
Provides CRUD operations and search for product variants in the Katana catalog.
Note: Caching is handled by the MCP server's CatalogCache (SQLite + FTS5), not by this client-level helper. The client is a pure API wrapper.
Example
async with KatanaClient() as client: ... variants = await client.variants.list() ... variant = await client.variants.get(123) ... results = await client.variants.search("fox fork")
Source code in katana_public_api_client/helpers/base.py
Functions¶
create(variant_data)
async
¶
Create a new variant.
Note: Clears the variant cache after creation.
Parameters:
-
variant_data(CreateVariantRequest) –CreateVariantRequest model with variant details.
Returns:
-
KatanaVariant–Created Variant object.
Example
from katana_public_api_client.models import CreateVariantRequest new_variant = await client.variants.create( ... CreateVariantRequest(name="Large", product_id=123) ... )
Source code in katana_public_api_client/helpers/variants.py
delete(variant_id)
async
¶
Delete a variant.
Note: Clears the variant cache after deletion.
Parameters:
-
variant_id(int) –The variant ID to delete.
Example
await client.variants.delete(123)
Source code in katana_public_api_client/helpers/variants.py
get(variant_id)
async
¶
Get a specific variant by ID.
Parameters:
-
variant_id(int) –The variant ID.
Returns:
-
KatanaVariant–KatanaVariant object.
Example
variant = await client.variants.get(123) print(variant.get_display_name()) print(f"Profit margin: {variant.profit_margin}%")
Source code in katana_public_api_client/helpers/variants.py
list(**filters)
async
¶
List all variants with optional filters.
Parameters:
-
**filters(Any, default:{}) –Filtering parameters.
Returns:
-
list[KatanaVariant]–List of KatanaVariant objects.
Example
variants = await client.variants.list(limit=100) for v in variants: ... print(f"{v.get_display_name()}: {v.profit_margin}%")
Source code in katana_public_api_client/helpers/variants.py
search(query, limit=50)
async
¶
Search variants by SKU or name with tokenization and fuzzy matching.
Fetches all variants from the API and searches client-side. For cached/persistent search, use the MCP server's CatalogCache.
Parameters:
-
query(str) –Search query (e.g., "fox fork 160")
-
limit(int, default:50) –Maximum number of results to return
Returns:
-
list[KatanaVariant]–List of matching Variant objects, sorted by relevance
Example
variants = await client.variants.search("fox fork", limit=10) for variant in variants: ... print(f"{variant.sku}: {variant.product_or_material_name}")
Source code in katana_public_api_client/helpers/variants.py
update(variant_id, variant_data)
async
¶
Update an existing variant.
Note: Clears the variant cache after update.
Parameters:
-
variant_id(int) –The variant ID to update.
-
variant_data(UpdateVariantRequest) –UpdateVariantRequest model with fields to update.
Returns:
-
KatanaVariant–Updated Variant object.
Example
from katana_public_api_client.models import UpdateVariantRequest updated = await client.variants.update( ... 123, UpdateVariantRequest(name="XL") ... )