پایتون
کاربر، غرفه و محصول

سرویس غرفه، کاربر و محصول (مرکزی)

مدیریت غرفه‌داران، محصولات، روش‌های ارسال، اطلاعات کاربران و موارد دیگر با استفاده از سرویس اصلی. این سرویس امکانات جامعی برای مدیریت موجودیت‌های اصلی کسب‌وکار فراهم می‌کند؛ از جمله ایجاد و مدیریت غرفه‌داران، مدیریت محصولات، روش‌های ارسال، احراز هویت و اطلاعات کاربران، حساب‌های بانکی و دسته‌بندی‌ها و ویژگی‌ها.

فهرست مطالب

متدهای غرفه و محصول

متدتوضیحاتپارامترها
create_vendor()ایجاد غرفه‌دار جدیدuser_id, request: CreateVendorSchema
update_vendor()بروزرسانی غرفه‌دارvendor_id, request: UpdateVendorSchema
get_vendor()دریافت جزئیات غرفه‌دارvendor_id, prefer
get_default_shipping_methods()دریافت روش‌های ارسال پیش‌فرضNone
get_shipping_methods()دریافت روش‌های ارسالids, vendor_ids, include_deleted, page, per_page
get_working_shipping_methods()دریافت روش‌های ارسال فعالvendor_id
update_shipping_methods()بروزرسانی روش‌های ارسالvendor_id, request: UpdateShippingMethodSchema
get_vendor_products()دریافت محصولات غرفه‌دارvendor_id, query_params: GetVendorProductsSchema
update_vendor_status()بروزرسانی وضعیت غرفه‌دارvendor_id, request: UpdateVendorStatusSchema
create_vendor_mobile_change_request()ایجاد درخواست تغییر موبایل غرفه‌دارvendor_id, request: ChangeVendorMobileRequestSchema
create_vendor_mobile_change_confirmation()تأیید تغییر موبایل غرفه‌دارvendor_id, request: ChangeVendorMobileConfirmSchema
create_product()ایجاد محصول جدید (پشتیبانی از آپلود فایل)vendor_id, request: ProductRequestSchema, photo_files, video_file
update_bulk_products()بروزرسانی چندین محصولvendor_id, request: BatchUpdateProductsRequest
update_product()بروزرسانی محصول (پشتیبانی از آپلود فایل)product_id, request: ProductRequestSchema, photo_files, video_file
get_product()دریافت جزئیات محصولproduct_id, prefer
get_products()دریافت لیست محصولاتquery_params: GetProductsQuerySchema, prefer
create_products_bulk_action_request()ایجاد بروزرسانی‌های انبوه محصولاتvendor_id, request: BulkProductsUpdateRequestSchema
update_product_variation()بروزرسانی تنوع محصولproduct_id, variation_id, request: UpdateProductVariationSchema
get_products_bulk_action_requests()دریافت وضعیت بروزرسانی انبوهvendor_id, page, per_page
get_products_bulk_action_requests_count()دریافت تعداد بروزرسانی‌های انبوهvendor_id
get_products_unsuccessful_bulk_action_requests()دریافت بروزرسانی‌های ناموفقrequest_id, page, per_page
get_product_shelves()دریافت قفسه‌های محصولproduct_id
create_discount()ایجاد تخفیف برای محصولاتvendor_id, request: CreateDiscountRequestSchema
delete_discount()حذف تخفیف برای محصولاتvendor_id, request: DeleteDiscountRequestSchema
get_current_user()دریافت اطلاعات کاربر فعلیNone
create_user_mobile_confirmation_request()ایجاد درخواست تأیید موبایلuser_id
verify_user_mobile_confirmation_request()تأیید موبایل کاربرuser_id, request: ConfirmCurrentUserMobileConfirmSchema
create_user_mobile_change_request()ایجاد درخواست تغییر موبایلuser_id, request: ChangeUserMobileRequestSchema
verify_user_mobile_change_request()تأیید تغییر موبایلuser_id, request: ChangeUserMobileConfirmSchema
get_user_bank_accounts()دریافت حساب‌های بانکی کاربرuser_id, prefer
create_user_bank_account()ایجاد حساب بانکی کاربرuser_id, request: UserCardsSchema, prefer
verify_user_bank_account_otp()تأیید رمز یکبار مصرف حساب بانکیuser_id, request: UserCardsOtpSchema
verify_user_bank_account()تأیید حساب‌های بانکیuser_id, request: UserVerifyBankInformationSchema
delete_user_bank_account()حذف حساب بانکیuser_id, bank_account_id
update_user_bank_account()بروزرسانی حساب بانکیbank_account_id, request: UpdateUserBankInformationSchema
update_user_verification()بروزرسانی تأیید کاربرuser_id, request: UserVerificationSchema
get_category_attributes()دریافت ویژگی‌های دسته‌بندیcategory_id, product_id, vendor_id, exclude_multi_selects
get_categories()دریافت همه دسته‌بندی‌هاNone
get_category()دریافت دسته‌بندی خاصcategory_id

مثال‌ها

پیکربندی اولیه

from basalam_sdk import BasalamClient, PersonalToken
 
auth = PersonalToken(
    token="your_access_token",
    refresh_token="your_refresh_token"
)
client = BasalamClient(auth=auth)

ایجاد غرفه‌دار

from basalam_sdk.core.models import CreateVendorSchema
 
async def create_vendor_example():
    vendor = await client.create_vendor(
        user_id=123,
        request=CreateVendorSchema(
            title="My Store",
            identifier="store123",
            category_type=1,
            city=1,
            summary="A great store for all your needs"
        )
    )
 
    return vendor

به‌روزرسانی غرفه‌دار

from basalam_sdk.core.models import UpdateVendorSchema
 
async def update_vendor_example():
    updated_vendor = await client.update_vendor(
        vendor_id=456,
        request=UpdateVendorSchema(
            title="Updated Store Name",
            summary="Updated description",
        )
    )
 
    return updated_vendor

دریافت غرفه‌دار

async def get_vendor_example():
    vendor = await client.get_vendor(
        vendor_id=456,
        prefer="return=minimal"
    )
 
    return vendor

دریافت روش‌های ارسال پیش‌فرض

async def get_default_shipping_methods_example():
    shipping_methods = await client.get_default_shipping_methods()
 
    return shipping_methods

دریافت روش‌های ارسال

async def get_shipping_methods_example():
    shipping_methods = await client.get_shipping_methods()
 
    return shipping_methods

دریافت روش‌های ارسال فعال

async def get_working_shipping_methods_example():
    working_methods = await client.get_working_shipping_methods(
        vendor_id=456
    )
 
    return working_methods

پاسخ نمونه

[
  ShippingMethodResponse(
    id=6124304, method=ShippingMethodInfo(name='سفارشی', value=3197, description=None),
    base_cost=460000, additional_cost=105000, is_private=False, additional_dimensions_cost=None, vendor_id=None, deleted_at=None
  ), 
  ShippingMethodResponse(
    id=6124301, method=ShippingMethodInfo(name='پیشتاز', value=3198, description=None),
    base_cost=570000, additional_cost=120000, is_private=False, additional_dimensions_cost=None, vendor_id=None, deleted_at=None
  ), 
  ShippingMethodResponse(
    id=6124305, method=ShippingMethodInfo(name='پیک', value=3259, description=None), 
    base_cost=320000, additional_cost=35000, is_private=False, additional_dimensions_cost=None, vendor_id=None, deleted_at=None
  )
]

به‌روزرسانی روش‌های ارسال

from basalam_sdk.core.models import UpdateShippingMethodSchema
 
async def update_shipping_methods_example():
    updated_methods = await client.update_shipping_methods(
        vendor_id=456,
        request=UpdateShippingMethodSchema(
            shipping_methods=[
                {
                    "method_id": 3198,
                    "is_customized": True,
                    "base_cost": 50000
                }
            ]
        )
    )
 
    return updated_methods

دریافت محصولات غرفه‌دار

from basalam_sdk.core.models import GetVendorProductsSchema, ProductStatusInputEnum
 
async def get_vendor_products_example():
    products = await client.get_vendor_products(
        vendor_id=456,
        query_params=GetVendorProductsSchema(
            statuses=[ProductStatusInputEnum.PUBLISHED],
            page=1,
            per_page=10
        )
    )
 
    return products

به‌روزرسانی وضعیت غرفه‌دار

from basalam_sdk.core.models import UpdateVendorStatusSchema
 
async def update_vendor_status_example():
    status_update = await client.update_vendor_status(
        vendor_id=456,
        request=UpdateVendorStatusSchema(
            status=VendorStatusInputEnum.SEMI_ACTIVE,
            description="Vendor is Semi Active"
        )
    )
 
    return status_update

ایجاد درخواست تغییر موبایل غرفه‌دار

from basalam_sdk.core.models import ChangeVendorMobileRequestSchema
async def create_vendor_mobile_change_request_example():
    result = await client.create_vendor_mobile_change_request(
        vendor_id=456,
        request=ChangeVendorMobileRequestSchema(
            mobile="09123456789"
        )
    )
 
    return result

تایید تغییر موبایل غرفه‌دار

from basalam_sdk.core.models import ChangeVendorMobileConfirmSchema
 
async def create_vendor_mobile_change_confirmation_example():
    result = await client.create_vendor_mobile_change_confirmation(
        vendor_id=456,
        request=ChangeVendorMobileConfirmSchema(
            mobile="09123456789",
            verification_code=123456
        )
    )
 
    return result

ایجاد محصول

from basalam_sdk.core.models import ProductRequestSchema, ProductStatusInputEnum, UnitTypeInputEnum
import io
 
async def create_product_example():
    try:
    with open("test1.png", "rb") as photo1, \
         open("test2.png", "rb") as photo2:
        request = ProductRequestSchema(
            name="Product 01",
            description="The material of this product is very high quality and made of silk.",
            category_id=238,
            primary_price=100000,
            weight=300,
            package_weight=500,
            stock=10,
            status=ProductStatusInputEnum.PUBLISHED,
            unit_quantity= 10,
            unit_type= UnitTypeInputEnum.NUMERIC
        )
        product = await client.core.create_product(456, request, photo_files=[photo1,photo2])
 
    return product

به‌روزرسانی چندین محصول

from basalam_sdk.core.models import BatchUpdateProductsRequest, UpdateProductRequestItem
 
async def update_bulk_products_example():
    updated_products = await client.core.update_bulk_products(
        vendor_id=456,
        request=BatchUpdateProductsRequest(
            data=[
                UpdateProductRequestItem(
                    id=1,
                    name="Updated Product 01",
                    stock=25
                ),
                UpdateProductRequestItem(
                    id=1,
                    stock=5,
                    primary_price=21000
                )
            ]
        )
    )
 
    return updated_products

به‌روزرسانی یک محصول

from basalam_sdk.core.models import ProductRequestSchema
 
import io
async def update_product_example():
    updated_product = await client.update_product(
        product_id=789,
        request=ProductRequestSchema(
            status=3790,
            product_attribute = [
              {
                "attribute_id": 219,
                "value": "Suitable for formal ceremonies",
              },
              {
                "attribute_id": 221,
                "value": "Silk",
              },
              {
                "attribute_id": 222,
                "value": "Burgundy, Black, Turquoise",
              },
              {
                "attribute_id": 1319,
                "value": "Due to its sensitivity, this fabric should be hand washed gently with cold water.",
              }
            ]
        )
    )
 
    return updated_product

از این متد برای دریافت لیست ویژگی‌های دسته‌بندی استفاده کنید.

دریافت جزئیات محصول

async def get_product_example():
    product = await client.get_product(
        product_id=24835037,
        prefer="return=minimal"
    )
 
    return product

دریافت لیست محصولات

from basalam_sdk.core.models import GetProductsQuerySchema
 
async def get_products_example():
    products = await client.get_products(
        query_params=GetProductsQuerySchema(
            page=1,
            per_page=20,
            sort="price:asc"
        )
    )
 
    return products

ایجاد درخواست به‌روزرسانی دسته‌ای محصولات

from basalam_sdk.core.models import (
    BulkProductsUpdateRequestSchema,
    ProductFilterSchema,
    BulkActionItem,
    RangeFilterItem,
    ProductBulkActionTypeEnum,
    ProductBulkFieldInputEnum
)
 
async def create_products_bulk_action_request_example():
    bulk_request = await client.core.create_products_bulk_action_request(
        vendor_id=456,
        request=BulkProductsUpdateRequestSchema(
            product_filter=ProductFilterSchema(
                stock=RangeFilterItem(
                    start=1,
                    end=5
                )
            ),
            action=[
                BulkActionItem(
                    field=ProductBulkFieldInputEnum.STOCK,
                    action=ProductBulkActionTypeEnum.SET,
                    value=50
                )
            ]
        )
    )
 
    return bulk_request

به‌روزرسانی تنوع محصول

from basalam_sdk.core.models import UpdateProductVariationSchema
 
async def update_product_variation_example():
    updated_variation = await client.update_product_variation(
        product_id=789,
        variation_id=6639697,
        request=UpdateProductVariationSchema(
            primary_price=150000,
            stock=100
        )
    )
 
    return updated_variation

دریافت وضعیت به‌روزرسانی دسته‌ای

async def get_products_bulk_action_requests_example():
    bulk_requests = await client.get_products_bulk_action_requests(
        vendor_id=456,
        page=1,
        per_page=30
    )
 
    return bulk_requests

دریافت تعداد به‌روزرسانی‌های دسته‌ای

async def get_products_bulk_action_requests_count_example():
    counts = await client.get_products_bulk_action_requests_count(
        vendor_id=456
    )
 
    return counts

دریافت به‌روزرسانی‌های ناموفق

async def get_products_unsuccessful_bulk_action_requests_example():
    unsuccessful_products = await client.get_products_unsuccessful_bulk_action_requests(
        request_id=123
    )
 
    return unsuccessful_products

دریافت قفسه‌های محصول

async def get_product_shelves_example():
    shelves = await client.get_product_shelves(
        product_id=789
    )
 
    return shelves

ایجاد تخفیف

from basalam_sdk.core.models import CreateDiscountRequestSchema, DiscountProductFilterSchema
 
async def create_discount_example():
    discount = await client.create_discount(
        vendor_id=456,
        request=CreateDiscountRequestSchema(
            product_filter=DiscountProductFilterSchema(
                product_ids=[25010883, 24835037],
            ),
        discount_percent=20,
        active_days=5
        )
    )
 
    return discount

حذف تخفیف

from basalam_sdk.core.models import DeleteDiscountRequestSchema, DiscountProductFilterSchema
 
async def delete_discount_example():
    result = await client.create_discount(
        vendor_id=456,
        request=DeleteDiscountRequestSchema(
            product_filter=DiscountProductFilterSchema(
                product_ids=[25010883],
            )
        )
    )
 
    return result

دریافت اطلاعات کاربر جاری

async def get_current_user_example():
    user = await client.get_current_user()
 
    return user

ایجاد درخواست تایید موبایل کاربر

async def create_user_mobile_confirmation_request_example():
    result = await client.create_user_mobile_confirmation_request(
        user_id=123
    )
 
    return result

تایید درخواست تایید موبایل کاربر

from basalam_sdk.core.models import ConfirmCurrentUserMobileConfirmSchema
 
async def verify_user_mobile_confirmation_request_example():
    result = await client.verify_user_mobile_confirmation_request(
        user_id=123,
        request=ConfirmCurrentUserMobileConfirmSchema(
            verification_code=123456
        )
    )
 
    return result

ایجاد درخواست تغییر موبایل کاربر

from basalam_sdk.core.models import ChangeUserMobileRequestSchema
 
async def create_user_mobile_change_request_example():
    result = await client.create_user_mobile_change_request(
        user_id=123,
        request=ChangeUserMobileRequestSchema(
            mobile="09123456789"
        )
    )
 
    return result

تایید درخواست تغییر موبایل کاربر

from basalam_sdk.core.models import ChangeUserMobileConfirmSchema
 
async def verify_user_mobile_change_request_example():
    result = await client.verify_user_mobile_change_request(
        user_id=123,
        request=ChangeUserMobileConfirmSchema(
            mobile="09123456789",
            verification_code=123456
        )
    )
 
    return result

دریافت حساب‌های بانکی کاربر

async def get_user_bank_accounts_example():
    bank_accounts = await client.get_user_bank_accounts(
        user_id=123
    )
 
    return bank_accounts

ایجاد حساب بانکی کاربر

from basalam_sdk.core.models import UserCardsSchema
 
async def create_user_bank_account_example():
    bank_account = await client.create_user_bank_account(
        user_id=123,
        request=UserCardsSchema(
            card_number="1234567890123456"
        )
    )
 
    return bank_account

تایید حساب بانکی کاربر OTP

from basalam_sdk.core.models import UserCardsOtpSchema
 
async def verify_user_bank_account_otp_example():
    result = await client.verify_user_bank_account_otp(
        user_id=123,
        request=UserCardsOtpSchema(
            card_number="1234567890123456",
            otp_code="123456"
        )
    )
 
    return result

تایید حساب بانکی کاربر

bank_information_id در خروجی متد verify_user_bank_account_otp قرار دارد و باید به متد verify_user_bank_account ارسال شود تا اطلاعات بانکی جدید که به‌تازگی اضافه شده است، تأیید گردد.

from basalam_sdk.core.models import UserVerifyBankInformationSchema
 
async def verify_user_bank_account_example():
    result = await client.verify_user_bank_account(
        user_id=123,
        request=UserVerifyBankInformationSchema(
            bank_information_id=1,
            national_code="1234567890",
            birthday="1990-01-01"
        )
    )
 
    return result

حذف حساب بانکی کاربر

async def delete_user_bank_account_example():
    result = await client.delete_user_bank_account(
        user_id=123,
        bank_account_id=1
    )
 
    return result

به‌روزرسانی حساب بانکی کاربر

from basalam_sdk.core.models import UpdateUserBankInformationSchema
 
async def update_user_bank_account_example():
    result = await client.update_user_bank_account(
        bank_account_id=1,
        request=UpdateUserBankInformationSchema(
            user_id=123
        )
    )
 
    return result

به‌روزرسانی تایید کاربر

from basalam_sdk.core.models import UserVerificationSchema
 
async def update_user_verification_example():
    user = await client.update_user_verification(
        user_id=123,
        request=UserVerificationSchema(
            national_code="1234567890",
            birthday="1990-01-01"
        )
    )
 
    return user

دریافت ویژگی‌های یک دسته‌بندی

async def get_category_attributes_example():
    attributes = await client.get_category_attributes(
        category_id=1066
    )
 
    return attributes

دریافت دسته‌بندی‌ها

async def get_categories_example():
    categories = await client.get_categories()
 
    return categories

دریافت جزئیات یک دسته‌بندی

async def get_category_example():
    category = await client.get_category(
        category_id=1066
    )
 
    return category