ebarimt_pos_sdk package
Subpackages
- ebarimt_pos_sdk.resources package
- Subpackages
- Submodules
- ebarimt_pos_sdk.resources.resource module
- Module contents
BankAccountsResourceBarCodeTypeBranchInfoBunaResourceCreateReceiptRequestCreateReceiptResponseCreateReceiptResponse.dateCreateReceiptResponse.easyCreateReceiptResponse.idCreateReceiptResponse.lotteryCreateReceiptResponse.model_configCreateReceiptResponse.parse_date()CreateReceiptResponse.pos_idCreateReceiptResponse.qr_dataCreateReceiptResponse.receiptsCreateReceiptResponse.statusCreateReceiptResponse.version
DeleteReceiptRequestDistrictCodeResourceGetBunaResponseGetDistrictCodeResponseGetInfoResponseGetProductTaxCodeResponseGetTinInfoResponseInfoResourceItemMerchantInfoResourcePaymentPaymentCardDataPaymentCodePaymentStatusProductTaxCodeProductTaxCodeResourceReceiptCreateStatusReceiptItemDataReceiptResourceReceiptTypeSendDataResourceSubReceiptTaxTypeTinInfoResource
- ebarimt_pos_sdk.transport package
Submodules
ebarimt_pos_sdk.client module
ebarimt_pos_sdk.errors module
Ebarimt Pos API sdk errors.
- exception ebarimt_pos_sdk.errors.PosApiBusinessError(message: str, *, status: str | None = None, code: str | int | None = None, request: Request | None = None, response: Response | None = None)[source]
Bases:
PosApiError2xx HTTP but domain-level failure indicated by payload fields (e.g. {"status":"ERROR", "message":"..."}).
- exception ebarimt_pos_sdk.errors.PosApiDecodeError(message: str, *, request: Request | None = None, response: Response | None = None, cause: Exception | None = None)[source]
Bases:
PosApiErrorResponse body was not valid JSON when JSON was expected.
- exception ebarimt_pos_sdk.errors.PosApiError(message: str, *, request: Request | None = None, response: Response | None = None, cause: Exception | None = None)[source]
Bases:
ExceptionBase error for the SDK.
- exception ebarimt_pos_sdk.errors.PosApiHttpError(*, status: str | int | None = None, message: str, date: datetime | None = None, request: Request, response: Response, cause: Exception | None = None)[source]
Bases:
PosApiErrorNon-2xx response from server.
- exception ebarimt_pos_sdk.errors.PosApiTransportError(message: str, *, request: Request | None = None, response: Response | None = None, cause: Exception | None = None)[source]
Bases:
PosApiErrorNetwork / timeout / DNS / TLS errors.
- exception ebarimt_pos_sdk.errors.PosApiValidationError(*, stage: Literal['request', 'response'], model: type | str, validation_error: ValidationError, request: Request | None = None, response: Response | None = None)[source]
Bases:
PosApiErrorPydantic validation errors (request or response).
- property errors: list
Return Pydantic-style validation errors.
ebarimt_pos_sdk.settings module
Settings for Ebarimt clients.
- class ebarimt_pos_sdk.settings.ApiClientSettings(base_url: str, timeout_s: float = 10.0, verify_tls: bool = True, headers: HeaderTypes | None = None, retry: RetrySettings = <factory>, *, token_url: str | None = None, refresh_url: str | None = None, client_id: str | None = None, client_secret: str | None = None, username: str | None = None, password: str | None = None, scope: str | None = None, skew_seconds: float = 30)[source]
Bases:
BaseSettingsSettings for API client.
The public ebarimt info endpoints (district codes, TIN info, merchant info, product tax codes, BÜNA classification) do not require auth, so every credential field below is optional. They remain for forward compatibility with endpoints that may require OAuth2 in the future.
- client_id: str | None = None
- client_secret: str | None = None
- property normalized_refresh_url: str | None
- property normalized_token_url: str | None
- password: str | None = None
- refresh_url: str | None = None
- scope: str | None = None
- skew_seconds: float = 30
- token_url: str | None = None
- username: str | None = None
- class ebarimt_pos_sdk.settings.RestClientSettings(base_url: str, timeout_s: float = 10.0, verify_tls: bool = True, headers: HeaderTypes | None = None, retry: RetrySettings = <factory>)[source]
Bases:
BaseSettingsSettings for REST client.
- class ebarimt_pos_sdk.settings.RetrySettings(*, max_retries: int = 3, retryable_statuses: frozenset[int] = <factory>, backoff_base_seconds: float = 1.0)[source]
Bases:
objectConfiguration for transport retry behaviour.
- backoff_base_seconds: float = 1.0
- max_retries: int = 3
- retryable_statuses: frozenset[int]
Module contents
- class ebarimt_pos_sdk.ApiClientSettings(base_url: str, timeout_s: float = 10.0, verify_tls: bool = True, headers: HeaderTypes | None = None, retry: RetrySettings = <factory>, *, token_url: str | None = None, refresh_url: str | None = None, client_id: str | None = None, client_secret: str | None = None, username: str | None = None, password: str | None = None, scope: str | None = None, skew_seconds: float = 30)[source]
Bases:
BaseSettingsSettings for API client.
The public ebarimt info endpoints (district codes, TIN info, merchant info, product tax codes, BÜNA classification) do not require auth, so every credential field below is optional. They remain for forward compatibility with endpoints that may require OAuth2 in the future.
- client_id: str | None = None
- client_secret: str | None = None
- property normalized_refresh_url: str | None
- property normalized_token_url: str | None
- password: str | None = None
- refresh_url: str | None = None
- scope: str | None = None
- skew_seconds: float = 30
- token_url: str | None = None
- username: str | None = None
- class ebarimt_pos_sdk.BarCodeType(*values)[source]
Bases:
str,EnumBarcode standard used to identify the item.
- GS1 = 'GS1'
- ISBN = 'ISBN'
- UNDEFINED = 'UNDEFINED'
- class ebarimt_pos_sdk.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:
_CreateReceiptBaseRequest 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.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:
_CreateReceiptBaseResponse 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].
- pos_id: int
- qr_data: str
- receipts: list[SubReceiptResponse]
- status: _ReceiptCreateStatus
- version: str
- class ebarimt_pos_sdk.DeleteReceiptRequest(*, id: str, date: datetime | None = None)[source]
Bases:
BaseEbarimtModelRequest 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].
- class ebarimt_pos_sdk.EbarimtApiClient(settings: ApiClientSettings, *, sync_client: Client | None = None, async_client: AsyncClient | None = None, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None)[source]
Bases:
EbarimtBaseClient
- class ebarimt_pos_sdk.EbarimtRestClient(settings: RestClientSettings, *, sync_client: Client | None = None, async_client: AsyncClient | None = None, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None)[source]
Bases:
EbarimtBaseClientEbarimt REST api client.
- class ebarimt_pos_sdk.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:
BaseEbarimtModelSingle 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
- class ebarimt_pos_sdk.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:
BaseEbarimtModelPayment 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.PaymentCardData(*, terminalID: str, rrn: str, maskedCardNumber: str, easy: bool, bankCode: str | None = None)[source]
Bases:
BaseEbarimtModelCard 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.PaymentCode(*values)[source]
Bases:
str,EnumPayment method used for the transaction.
- CASH = 'CASH'
- PAYMENT_CARD = 'PAYMENT_CARD'
- class ebarimt_pos_sdk.PaymentStatus(*values)[source]
Bases:
str,EnumCurrent status of the payment.
- ERROR = 'ERROR'
- PAID = 'PAID'
- PAY = 'PAY'
- REVERSED = 'REVERSED'
- exception ebarimt_pos_sdk.PosApiBusinessError(message: str, *, status: str | None = None, code: str | int | None = None, request: Request | None = None, response: Response | None = None)[source]
Bases:
PosApiError2xx HTTP but domain-level failure indicated by payload fields (e.g. {"status":"ERROR", "message":"..."}).
- exception ebarimt_pos_sdk.PosApiDecodeError(message: str, *, request: Request | None = None, response: Response | None = None, cause: Exception | None = None)[source]
Bases:
PosApiErrorResponse body was not valid JSON when JSON was expected.
- exception ebarimt_pos_sdk.PosApiError(message: str, *, request: Request | None = None, response: Response | None = None, cause: Exception | None = None)[source]
Bases:
ExceptionBase error for the SDK.
- exception ebarimt_pos_sdk.PosApiHttpError(*, status: str | int | None = None, message: str, date: datetime | None = None, request: Request, response: Response, cause: Exception | None = None)[source]
Bases:
PosApiErrorNon-2xx response from server.
- exception ebarimt_pos_sdk.PosApiTransportError(message: str, *, request: Request | None = None, response: Response | None = None, cause: Exception | None = None)[source]
Bases:
PosApiErrorNetwork / timeout / DNS / TLS errors.
- exception ebarimt_pos_sdk.PosApiValidationError(*, stage: Literal['request', 'response'], model: type | str, validation_error: ValidationError, request: Request | None = None, response: Response | None = None)[source]
Bases:
PosApiErrorPydantic validation errors (request or response).
- property errors: list
Return Pydantic-style validation errors.
- class ebarimt_pos_sdk.ReceiptCreateStatus(*values)[source]
Bases:
str,EnumResult status returned after creating a receipt.
- ERROR = 'ERROR'
- PAYMENT = 'PAYMENT'
- SUCCESS = 'SUCCESS'
- class ebarimt_pos_sdk.ReceiptItemData(*, lotNo: str | None = None, stockQR: list[str] | None = None)[source]
Bases:
BaseEbarimtModelitems[].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.ReceiptType(*values)[source]
Bases:
str,EnumType 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.RestClientSettings(base_url: str, timeout_s: float = 10.0, verify_tls: bool = True, headers: HeaderTypes | None = None, retry: RetrySettings = <factory>)[source]
Bases:
BaseSettingsSettings for REST client.
- class ebarimt_pos_sdk.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:
BaseEbarimtModelSub-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
- 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
- class ebarimt_pos_sdk.TaxType(*values)[source]
Bases:
str,EnumVAT applicability of the receipt items.
- NO_VAT = 'NO_VAT'
- VAT_ABLE = 'VAT_ABLE'
- VAT_FREE = 'VAT_FREE'
- VAT_ZERO = 'VAT_ZERO'
- ebarimt_pos_sdk.create_api_settings(env: Environment, *, client_id: str | None = None, username: str | None = None, password: str | None = None, client_secret: str | None = None, scope: str | None = None, timeout_s: float = 10.0, verify_tls: bool = True, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[tuple[str, str]] | Sequence[tuple[bytes, bytes]] | None = None, skew_seconds: float = 30) ApiClientSettings[source]
Ebarimt api settings factory.
The public ebarimt info endpoints don't require OAuth2, so credentials are optional. They are preserved for forward-compat with any endpoint that may later require token auth.