ebarimt_pos_sdk.resources package

Subpackages

Submodules

ebarimt_pos_sdk.resources.resource module

Module contents

Endpoints of Ebarimt as resources.

class ebarimt_pos_sdk.resources.BankAccountsResource(*, sync: SyncTransport, async_: AsyncTransport, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None)[source]

Bases: BaseResource

async aread(tin: str, *, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None) list[BankAccount][source]
read(tin: str, *, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None) list[BankAccount][source]
class ebarimt_pos_sdk.resources.BarCodeType(*values)[source]

Bases: str, Enum

Barcode standard used to identify the item.

GS1 = 'GS1'
ISBN = 'ISBN'
UNDEFINED = 'UNDEFINED'
class ebarimt_pos_sdk.resources.BranchInfo(*, branchCode: str, branchName: str, subBranchCode: str, subBranchName: str)[source]

Bases: BaseEbarimtModel

branch_code: str
branch_name: str
model_config = {'alias_generator': <function alias_generator>, 'extra': 'ignore', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

sub_branch_code: str
sub_branch_name: str
class ebarimt_pos_sdk.resources.BunaResource(*, sync: SyncTransport, async_: AsyncTransport, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None)[source]

Bases: BaseResource

БҮНА (Бараа, Үйлчилгээний Нэгдсэн Ангилал) classification lookup.

Wraps GET /api/info/check/barcode/v2[/{code}...]. The endpoint is hierarchical: call read() (no segments) to get the top-level "Салбар" list, then drill down by passing the code at each level as the next segment. Codes nest as prefixes:

read() -> Салбар read("0") -> Дэд салбар of "0" read("0", "01") -> Бүлэг of "01" read("0", "01", "011") -> Анги read("0", "01", "011",

"0111") -> Дэд анги

read("0", "01", "011",

"0111", "01111") -> БҮНА код

read("0", "01", "011",

"0111", "01111", "0111100") -> Баркод list

Note on the OpenAPI spec: the path template is documented as {p4}/{p5}/{p1}/{p2}/{p3}/{p6} with all six segments — that is a Stoplight modeling artifact, not the real call shape. The live API is variable-depth (0..6 segments) and segments go in logical top-down order, as verified directly against the production server:

Each segment is just the code of the level you are expanding; the parameter names p1..p6 in the spec are labels for "depth N" in logical order (p1=Салбар, p2=Дэд салбар, …, p6=БҮНА код), regardless of how they appear in the URL template.

async aread(*segments: str, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None) GetBunaResponse[source]
read(*segments: str, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None) GetBunaResponse[source]
class ebarimt_pos_sdk.resources.CreateReceiptRequest(*, branchNo: str, totalAmount: Decimal | int | float, merchantTin: str, posNo: str, type: ReceiptType | Literal['B2C_RECEIPT', 'B2B_RECEIPT', 'B2C_INVOICE', 'B2B_INVOICE'], totalVAT: Decimal | int | float | None = None, totalCityTax: Decimal | int | float | None = None, districtCode: str | None = None, customerTin: str | None = None, consumerNo: str | None = None, inactiveId: str | None = None, invoiceId: str | None = None, reportMonth: str | None = None, data: dict[str, Any] | None = None, payments: list[Payment] | None = None, billIdSuffix: str, receipts: list[SubReceipt])[source]

Bases: _CreateReceiptBase

Request payload for creating a new receipt.

bill_id_suffix: str
model_config = {'alias_generator': <function alias_generator>, 'extra': 'ignore', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

receipts: list[SubReceipt]
class ebarimt_pos_sdk.resources.CreateReceiptResponse(*, branchNo: str, totalAmount: Decimal | int | float, merchantTin: str, posNo: str, type: ReceiptType | Literal['B2C_RECEIPT', 'B2B_RECEIPT', 'B2C_INVOICE', 'B2B_INVOICE'], totalVAT: Decimal | int | float | None = None, totalCityTax: Decimal | int | float | None = None, districtCode: str | None = None, customerTin: str | None = None, consumerNo: str | None = None, inactiveId: str | None = None, invoiceId: str | None = None, reportMonth: str | None = None, data: dict[str, Any] | None = None, payments: list[Payment] | None = None, id: str, version: str, posId: int, status: ReceiptCreateStatus | Literal['SUCCESS', 'ERROR', 'PAYMENT'], qrData: str, lottery: str, date: datetime, easy: bool, receipts: list[SubReceiptResponse])[source]

Bases: _CreateReceiptBase

Response returned after receipt creation.

date: datetime
easy: bool
id: str
lottery: str
model_config = {'alias_generator': <function alias_generator>, 'extra': 'ignore', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

classmethod parse_date(v: str | datetime) datetime[source]
pos_id: int
qr_data: str
receipts: list[SubReceiptResponse]
status: _ReceiptCreateStatus
version: str
class ebarimt_pos_sdk.resources.DeleteReceiptRequest(*, id: str, date: datetime | None = None)[source]

Bases: BaseEbarimtModel

Request payload for deleting an existing receipt.

date: datetime | None
id: str
model_config = {'alias_generator': <function alias_generator>, 'extra': 'ignore', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

serialize_date(value: datetime | None) str | None[source]
class ebarimt_pos_sdk.resources.DistrictCodeResource(*, sync: SyncTransport, async_: AsyncTransport, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None)[source]

Bases: BaseResource

async aread(*, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None) GetDistrictCodeResponse[source]
read(*, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None) GetDistrictCodeResponse[source]
class ebarimt_pos_sdk.resources.GetBunaResponse(root: RootModelRootType = PydanticUndefined)[source]

Bases: RootModel[list[list[str]]]

Hierarchical БҮНА (Бараа, Үйлчилгээний Нэгдсэн Ангилал) lookup.

The response is a JSON array of rows. Each row is itself an array of strings whose shape depends on the level returned:

  • Classification rows (Салбар / Дэд салбар / Бүлэг / Анги / Дэд анги / БҮНА код): [code, name]

  • Barcode rows (leaf level): [barcode, name, registered_date]

Per the SDK's "validate structure, not policy" rule we only assert that each row is a list of strings — interpretation is left to the caller.

model_config = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class ebarimt_pos_sdk.resources.GetDistrictCodeResponse(*, msg: str, status: int, data: list[BranchInfo])[source]

Bases: BaseEbarimtModel

data: list[BranchInfo]
model_config = {'alias_generator': <function alias_generator>, 'extra': 'ignore', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

msg: str
status: int
class ebarimt_pos_sdk.resources.GetInfoResponse(*, msg: str, status: int, data: MerchantInfo | None = None)[source]

Bases: BaseEbarimtModel

data: MerchantInfo | None
model_config = {'alias_generator': <function alias_generator>, 'extra': 'ignore', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

msg: str
status: int
class ebarimt_pos_sdk.resources.GetProductTaxCodeResponse(*, msg: str, status: int, data: list[ProductTaxCode])[source]

Bases: BaseEbarimtModel

data: list[ProductTaxCode]
model_config = {'alias_generator': <function alias_generator>, 'extra': 'ignore', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

msg: str
status: int
class ebarimt_pos_sdk.resources.GetTinInfoResponse(*, msg: str, status: int, data: str)[source]

Bases: BaseEbarimtModel

data: str
classmethod ensure_string(v: Any) str[source]
model_config = {'alias_generator': <function alias_generator>, 'extra': 'ignore', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

msg: str
status: int
class ebarimt_pos_sdk.resources.InfoResource(*, sync: SyncTransport, async_: AsyncTransport, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None)[source]

Bases: BaseResource

async aread(*, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None) ReadInfoResponse[source]
read(*, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None) ReadInfoResponse[source]
class ebarimt_pos_sdk.resources.Item(*, name: str, measureUnit: str, qty: Decimal | int | float, unitPrice: Decimal | int | float, totalAmount: Decimal | int | float, barCode: str | None = None, barCodeType: BarCodeType | Literal['UNDEFINED', 'GS1', 'ISBN'] | None = None, classificationCode: str | None = None, taxProductCode: str | None = None, totalVAT: Decimal | int | float | None = None, totalCityTax: Decimal | int | float | None = None, data: ReceiptItemData | None = None)[source]

Bases: BaseEbarimtModel

Single product or service included in a receipt.

bar_code: str | None
bar_code_type: _BarCodeType | None
classification_code: str | None
data: ReceiptItemData | None
measure_unit: str
model_config = {'alias_generator': <function alias_generator>, 'extra': 'ignore', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str
qty: Number
tax_product_code: str | None
total_amount: Number
total_city_tax: Number | None
total_vat: Number | None
unit_price: Number
classmethod validate_positive(v: Decimal | int | float) Decimal | int | float[source]
class ebarimt_pos_sdk.resources.MerchantInfoResource(*, sync: SyncTransport, async_: AsyncTransport, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None)[source]

Bases: BaseResource

async aread(tin: str, *, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None) GetInfoResponse[source]
read(tin: str, *, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None) GetInfoResponse[source]
class ebarimt_pos_sdk.resources.Payment(*, code: PaymentCode | Literal['CASH', 'PAYMENT_CARD'], status: PaymentStatus | Literal['PAID', 'PAY', 'REVERSED', 'ERROR'], paidAmount: Decimal | int | float, exchangeCode: str | None = None, data: PaymentCardData | None = None)[source]

Bases: BaseEbarimtModel

Payment information associated with a receipt.

code: _PaymentCode
data: PaymentCardData | None
exchange_code: str | None
model_config = {'alias_generator': <function alias_generator>, 'extra': 'ignore', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

paid_amount: Number
status: _PaymentStatus
class ebarimt_pos_sdk.resources.PaymentCardData(*, terminalID: str, rrn: str, maskedCardNumber: str, easy: bool, bankCode: str | None = None)[source]

Bases: BaseEbarimtModel

Card payment metadata when using PAYMENT_CARD.

bank_code: str | None
easy: bool
masked_card_number: str
model_config = {'alias_generator': <function alias_generator>, 'extra': 'ignore', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

rrn: str
terminal_id: str
class ebarimt_pos_sdk.resources.PaymentCode(*values)[source]

Bases: str, Enum

Payment method used for the transaction.

CASH = 'CASH'
PAYMENT_CARD = 'PAYMENT_CARD'
class ebarimt_pos_sdk.resources.PaymentStatus(*values)[source]

Bases: str, Enum

Current status of the payment.

ERROR = 'ERROR'
PAID = 'PAID'
PAY = 'PAY'
REVERSED = 'REVERSED'
class ebarimt_pos_sdk.resources.ProductTaxCode(*, startDate: datetime, endDate: datetime | None = None, taxProductCode: str, taxProductName: str, taxTypeCode: int, taxTypeName: TaxType)[source]

Bases: BaseEbarimtModel

end_date: datetime | None
model_config = {'alias_generator': <function alias_generator>, 'extra': 'ignore', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

start_date: datetime
tax_product_code: str
tax_product_name: str
tax_type_code: int
tax_type_name: TaxType
class ebarimt_pos_sdk.resources.ProductTaxCodeResource(*, sync: SyncTransport, async_: AsyncTransport, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None)[source]

Bases: BaseResource

async aread(*, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None) GetProductTaxCodeResponse[source]
read(*, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None) GetProductTaxCodeResponse[source]
class ebarimt_pos_sdk.resources.ReceiptCreateStatus(*values)[source]

Bases: str, Enum

Result status returned after creating a receipt.

ERROR = 'ERROR'
PAYMENT = 'PAYMENT'
SUCCESS = 'SUCCESS'
class ebarimt_pos_sdk.resources.ReceiptItemData(*, lotNo: str | None = None, stockQR: list[str] | None = None)[source]

Bases: BaseEbarimtModel

items[].data Note: docs show lotNo + stockQR, but examples also show nested "data": {"stockQR":[...]} sometimes. This model follows the schema: lotNo, stockQR directly under data.

lotNo: str | None
model_config = {'alias_generator': <function alias_generator>, 'extra': 'ignore', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

stockQR: list[str] | None
class ebarimt_pos_sdk.resources.ReceiptResource(*, sync: SyncTransport, async_: AsyncTransport, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None)[source]

Bases: BaseResource

async acreate(payload: CreateReceiptRequest | dict[str, Any], *, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None) CreateReceiptResponse[source]
async adelete(payload: DeleteReceiptRequest | dict[str, Any], *, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None) None[source]
create(payload: CreateReceiptRequest | dict[str, Any], *, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None) CreateReceiptResponse[source]
delete(payload: DeleteReceiptRequest | dict[str, Any], *, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None) None[source]
class ebarimt_pos_sdk.resources.ReceiptType(*values)[source]

Bases: str, Enum

Type of receipt or invoice issued to consumer or business.

B2B_INVOICE = 'B2B_INVOICE'
B2B_RECEIPT = 'B2B_RECEIPT'
B2C_INVOICE = 'B2C_INVOICE'
B2C_RECEIPT = 'B2C_RECEIPT'
class ebarimt_pos_sdk.resources.SendDataResource(*, sync: SyncTransport, async_: AsyncTransport, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None)[source]

Bases: BaseResource

async asend(headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None) None[source]
send(headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None) None[source]
class ebarimt_pos_sdk.resources.SubReceipt(*, totalAmount: Decimal | int | float, taxType: TaxType | Literal['VAT_ABLE', 'VAT_FREE', 'VAT_ZERO', 'NOT_VAT'], merchantTin: str, items: list[Item], totalVAT: Decimal | int | float | None = None, totalCityTax: Decimal | int | float | None = None, customerTin: str | None = None, bankAccountNo: str | None = None, iBan: str | None = None, invoiceId: str | None = None, data: dict[str, Any] | None = None)[source]

Bases: BaseEbarimtModel

Sub-receipt containing items, tax info, and seller details.

bank_account_no: str | None
customer_tin: str | None
data: dict[str, Any] | None
iban: str | None
invoice_id: str | None
items: list[Item]
merchant_tin: str
model_config = {'alias_generator': <function alias_generator>, 'extra': 'ignore', 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

tax_type: _TaxType
total_amount: Number
total_city_tax: Number | None
total_vat: Number | None
classmethod validate_items_not_empty(v: list[Item]) list[Item][source]
class ebarimt_pos_sdk.resources.TaxType(*values)[source]

Bases: str, Enum

VAT applicability of the receipt items.

NO_VAT = 'NO_VAT'
VAT_ABLE = 'VAT_ABLE'
VAT_FREE = 'VAT_FREE'
VAT_ZERO = 'VAT_ZERO'
class ebarimt_pos_sdk.resources.TinInfoResource(*, sync: SyncTransport, async_: AsyncTransport, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None)[source]

Bases: BaseResource

async aread(reg_no: str, *, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None) GetTinInfoResponse[source]
read(reg_no: str, *, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None) GetTinInfoResponse[source]