ebay_client/ebay_client/inventory/client.py

50 lines
1.7 KiB
Python

from __future__ import annotations
from ebay_client.core.http.transport import ApiTransport
from ebay_client.generated.inventory.models import (
InventoryItemWithSkuLocaleGroupid,
InventoryItems,
OfferResponseWithListingId,
Offers,
)
INVENTORY_READ_SCOPE = "https://api.ebay.com/oauth/api_scope/sell.inventory.readonly"
class InventoryClient:
def __init__(self, transport: ApiTransport) -> None:
self.transport = transport
def get_inventory_item(self, sku: str) -> InventoryItemWithSkuLocaleGroupid:
return self.transport.request_model(
InventoryItemWithSkuLocaleGroupid,
"GET",
f"/sell/inventory/v1/inventory_item/{sku}",
scopes=[INVENTORY_READ_SCOPE],
)
def get_inventory_items(self, *, limit: int | None = None, offset: int | None = None) -> InventoryItems:
return self.transport.request_model(
InventoryItems,
"GET",
"/sell/inventory/v1/inventory_item",
scopes=[INVENTORY_READ_SCOPE],
params={"limit": limit, "offset": offset},
)
def get_offer(self, offer_id: str) -> OfferResponseWithListingId:
return self.transport.request_model(
OfferResponseWithListingId,
"GET",
f"/sell/inventory/v1/offer/{offer_id}",
scopes=[INVENTORY_READ_SCOPE],
)
def get_offers(self, *, limit: int | None = None, offset: int | None = None, sku: str | None = None) -> Offers:
return self.transport.request_model(
Offers,
"GET",
"/sell/inventory/v1/offer",
scopes=[INVENTORY_READ_SCOPE],
params={"limit": limit, "offset": offset, "sku": sku},
)