use super::common::*;
#[derive(Debug, Clone)]
pub enum ReaderCreated {}
impl crate::event::private::Sealed for ReaderCreated {}
impl crate::events::EventSpec for ReaderCreated {
const EVENT_TYPE: &'static str = "readers.created";
type FetchedObject = Reader;
}
pub type ReaderCreatedEvent = crate::events::Event<ReaderCreated>;
#[derive(Debug, Clone)]
pub enum ReaderDeleted {}
impl crate::event::private::Sealed for ReaderDeleted {}
impl crate::events::EventSpec for ReaderDeleted {
const EVENT_TYPE: &'static str = "readers.deleted";
type FetchedObject = Reader;
}
pub type ReaderDeletedEvent = crate::events::Event<ReaderDeleted>;
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct Affiliate {
#[builder(setter(into, doc = "Sets [`app_id`](Affiliate::app_id)."))]
pub app_id: String,
#[builder(setter(into, doc = "Sets [`key`](Affiliate::key)."))]
pub key: String,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct Amount {
#[builder(setter(into, doc = "Sets [`currency`](Amount::currency)."))]
pub currency: String,
#[builder(setter(doc = "Sets [`value`](Amount::value)."))]
pub value: i64,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct CreateReaderCheckoutRequest {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`aade`](CreateReaderCheckoutRequest::aade)."
)
)]
pub aade: Option<CreateReaderCheckoutRequestAade>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "crate::nullable::deserialize"
)]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`affiliate`](CreateReaderCheckoutRequest::affiliate)."
)
)]
pub affiliate: Option<crate::Nullable<CreateReaderCheckoutRequestAffiliate>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`card_type`](CreateReaderCheckoutRequest::card_type)."
)
)]
pub card_type: Option<CreateReaderCheckoutRequestCardType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`description`](CreateReaderCheckoutRequest::description)."
)
)]
pub description: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "crate::nullable::deserialize"
)]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`installments`](CreateReaderCheckoutRequest::installments)."
)
)]
pub installments: Option<crate::Nullable<i64>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`payment_type`](CreateReaderCheckoutRequest::payment_type)."
)
)]
pub payment_type: Option<CreateReaderCheckoutRequestPaymentType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`return_url`](CreateReaderCheckoutRequest::return_url)."
)
)]
pub return_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`tip_rates`](CreateReaderCheckoutRequest::tip_rates)."
)
)]
pub tip_rates: Option<Vec<f32>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`tip_timeout`](CreateReaderCheckoutRequest::tip_timeout)."
)
)]
pub tip_timeout: Option<i64>,
#[builder(setter(doc = "Sets [`total_amount`](CreateReaderCheckoutRequest::total_amount)."))]
pub total_amount: CreateReaderCheckoutRequestTotalAmount,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct CreateReaderCheckoutResponse {
#[builder(setter(doc = "Sets [`data`](CreateReaderCheckoutResponse::data)."))]
pub data: CreateReaderCheckoutResponseData,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct GetReaderCheckoutResponse {
#[builder(setter(doc = "Sets [`data`](GetReaderCheckoutResponse::data)."))]
pub data: GetReaderCheckoutResponseData,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct GetReaderSettingsResponse {
#[builder(setter(doc = "Sets [`data`](GetReaderSettingsResponse::data)."))]
pub data: GetReaderSettingsResponseData,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct Reader {
#[builder(setter(doc = "Sets [`created_at`](Reader::created_at)."))]
pub created_at: crate::datetime::DateTime,
#[builder(setter(doc = "Sets [`device`](Reader::device)."))]
pub device: ReaderDevice,
#[builder(setter(into, doc = "Sets [`id`](Reader::id)."))]
pub id: ReaderId,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, doc = "Sets [`metadata`](Reader::metadata).")
)]
pub metadata: Option<Metadata>,
#[builder(setter(into, doc = "Sets [`name`](Reader::name)."))]
pub name: ReaderName,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`service_account_id`](Reader::service_account_id)."
)
)]
pub service_account_id: Option<String>,
#[builder(setter(doc = "Sets [`status`](Reader::status)."))]
pub status: ReaderStatus,
#[builder(setter(doc = "Sets [`updated_at`](Reader::updated_at)."))]
pub updated_at: crate::datetime::DateTime,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct ReaderDevice {
#[builder(setter(into, doc = "Sets [`identifier`](ReaderDevice::identifier)."))]
pub identifier: String,
#[builder(setter(doc = "Sets [`model`](ReaderDevice::model)."))]
pub model: ReaderDeviceModel,
}
pub type ReaderId = String;
pub type ReaderName = String;
pub type ReaderPairingCode = String;
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct ReaderPaymentRequestParams {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`affiliate`](ReaderPaymentRequestParams::affiliate)."
)
)]
pub affiliate: Option<ReaderPaymentRequestParamsAffiliate>,
#[builder(setter(
into,
doc = "Sets [`client_transaction_id`](ReaderPaymentRequestParams::client_transaction_id)."
))]
pub client_transaction_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`tip_amount`](ReaderPaymentRequestParams::tip_amount)."
)
)]
pub tip_amount: Option<i64>,
#[builder(setter(doc = "Sets [`total_amount`](ReaderPaymentRequestParams::total_amount)."))]
pub total_amount: Amount,
}
#[derive(
Debug,
Clone,
Default,
PartialEq,
serde::Serialize,
serde::Deserialize,
typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct ReaderPaymentResponse {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, doc = "Sets [`data`](ReaderPaymentResponse::data).")
)]
pub data: Option<ReaderPaymentResponseData>,
}
#[derive(
Debug,
Clone,
Default,
PartialEq,
serde::Serialize,
serde::Deserialize,
typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct ReaderPaymentResponseData {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`client_transaction_id`](ReaderPaymentResponseData::client_transaction_id)."
)
)]
pub client_transaction_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`transaction_code`](ReaderPaymentResponseData::transaction_code)."
)
)]
pub transaction_code: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum ReaderStatus {
#[serde(rename = "unknown")]
Unknown,
#[serde(rename = "processing")]
Processing,
#[serde(rename = "paired")]
Paired,
#[serde(rename = "expired")]
Expired,
#[serde(untagged)]
Other(String),
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct StatusResponse {
#[builder(setter(doc = "Sets [`data`](StatusResponse::data)."))]
pub data: StatusResponseData,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct UpdateReaderSettingsRequest {
#[builder(setter(doc = "Sets [`menu_lock`](UpdateReaderSettingsRequest::menu_lock)."))]
pub menu_lock: UpdateReaderSettingsRequestMenuLock,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct UpdateReaderSettingsResponse {
#[builder(setter(doc = "Sets [`data`](UpdateReaderSettingsResponse::data)."))]
pub data: UpdateReaderSettingsResponseData,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct CreateReaderCheckoutRequestAade {
#[builder(setter(
into,
doc = "Sets [`provider_id`](CreateReaderCheckoutRequestAade::provider_id)."
))]
pub provider_id: String,
#[builder(setter(
into,
doc = "Sets [`signature`](CreateReaderCheckoutRequestAade::signature)."
))]
pub signature: String,
#[builder(setter(
into,
doc = "Sets [`signature_data`](CreateReaderCheckoutRequestAade::signature_data)."
))]
pub signature_data: String,
}
#[derive(
Debug,
Clone,
Default,
PartialEq,
serde::Serialize,
serde::Deserialize,
typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct CreateReaderCheckoutRequestAffiliateTags {
#[serde(
flatten,
default,
skip_serializing_if = "std::collections::HashMap::is_empty"
)]
#[builder(
default,
setter(
doc = "Sets [`additional_properties`](CreateReaderCheckoutRequestAffiliateTags::additional_properties)."
)
)]
pub additional_properties: std::collections::HashMap<String, serde_json::Value>,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct CreateReaderCheckoutRequestAffiliate {
#[builder(setter(
into,
doc = "Sets [`app_id`](CreateReaderCheckoutRequestAffiliate::app_id)."
))]
pub app_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`foreign_transaction_id`](CreateReaderCheckoutRequestAffiliate::foreign_transaction_id)."
)
)]
pub foreign_transaction_id: Option<String>,
#[builder(setter(into, doc = "Sets [`key`](CreateReaderCheckoutRequestAffiliate::key)."))]
pub key: String,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`tags`](CreateReaderCheckoutRequestAffiliate::tags)."
)
)]
pub tags: Option<serde_json::Value>,
}
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum CreateReaderCheckoutRequestCardType {
#[serde(rename = "credit")]
Credit,
#[serde(rename = "debit")]
Debit,
#[serde(untagged)]
Other(String),
}
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum CreateReaderCheckoutRequestPaymentType {
#[serde(rename = "card")]
Card,
#[serde(rename = "pix")]
Pix,
#[serde(untagged)]
Other(String),
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct CreateReaderCheckoutRequestTotalAmount {
#[builder(setter(
into,
doc = "Sets [`currency`](CreateReaderCheckoutRequestTotalAmount::currency)."
))]
pub currency: String,
#[builder(setter(
doc = "Sets [`minor_unit`](CreateReaderCheckoutRequestTotalAmount::minor_unit)."
))]
pub minor_unit: i64,
#[builder(setter(doc = "Sets [`value`](CreateReaderCheckoutRequestTotalAmount::value)."))]
pub value: i64,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct CreateReaderCheckoutResponseData {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`checkout_id`](CreateReaderCheckoutResponseData::checkout_id)."
)
)]
pub checkout_id: Option<String>,
#[builder(setter(
into,
doc = "Sets [`client_transaction_id`](CreateReaderCheckoutResponseData::client_transaction_id)."
))]
pub client_transaction_id: String,
}
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum GetReaderCheckoutResponseDataCardType {
#[serde(rename = "credit")]
Credit,
#[serde(rename = "debit")]
Debit,
#[serde(untagged)]
Other(String),
}
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum GetReaderCheckoutResponseDataPaymentType {
#[serde(rename = "card")]
Card,
#[serde(rename = "pix")]
Pix,
#[serde(untagged)]
Other(String),
}
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum GetReaderCheckoutResponseDataStatus {
#[serde(rename = "pending")]
Pending,
#[serde(rename = "successful")]
Successful,
#[serde(rename = "failed")]
Failed,
#[serde(rename = "cancelled")]
Cancelled,
#[serde(untagged)]
Other(String),
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct GetReaderCheckoutResponseDataTotalAmount {
#[builder(setter(
into,
doc = "Sets [`currency`](GetReaderCheckoutResponseDataTotalAmount::currency)."
))]
pub currency: String,
#[builder(setter(
doc = "Sets [`minor_unit`](GetReaderCheckoutResponseDataTotalAmount::minor_unit)."
))]
pub minor_unit: i64,
#[builder(setter(doc = "Sets [`value`](GetReaderCheckoutResponseDataTotalAmount::value)."))]
pub value: i64,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct GetReaderCheckoutResponseData {
#[builder(setter(doc = "Sets [`card_type`](GetReaderCheckoutResponseData::card_type)."))]
pub card_type: GetReaderCheckoutResponseDataCardType,
#[builder(setter(
into,
doc = "Sets [`checkout_id`](GetReaderCheckoutResponseData::checkout_id)."
))]
pub checkout_id: String,
#[builder(setter(
into,
doc = "Sets [`client_transaction_id`](GetReaderCheckoutResponseData::client_transaction_id)."
))]
pub client_transaction_id: String,
#[builder(setter(doc = "Sets [`created_at`](GetReaderCheckoutResponseData::created_at)."))]
pub created_at: crate::datetime::DateTime,
#[builder(setter(
doc = "Sets [`installments`](GetReaderCheckoutResponseData::installments)."
))]
pub installments: i64,
#[builder(setter(
into,
doc = "Sets [`payment_failure_reason`](GetReaderCheckoutResponseData::payment_failure_reason)."
))]
pub payment_failure_reason: String,
#[builder(setter(
into,
doc = "Sets [`payment_status`](GetReaderCheckoutResponseData::payment_status)."
))]
pub payment_status: String,
#[builder(setter(
doc = "Sets [`payment_type`](GetReaderCheckoutResponseData::payment_type)."
))]
pub payment_type: GetReaderCheckoutResponseDataPaymentType,
#[builder(setter(
into,
doc = "Sets [`reader_firmware_version`](GetReaderCheckoutResponseData::reader_firmware_version)."
))]
pub reader_firmware_version: String,
#[builder(setter(
into,
doc = "Sets [`reader_serial_number`](GetReaderCheckoutResponseData::reader_serial_number)."
))]
pub reader_serial_number: String,
#[builder(setter(doc = "Sets [`status`](GetReaderCheckoutResponseData::status)."))]
pub status: GetReaderCheckoutResponseDataStatus,
#[builder(setter(
doc = "Sets [`total_amount`](GetReaderCheckoutResponseData::total_amount)."
))]
pub total_amount: GetReaderCheckoutResponseDataTotalAmount,
#[builder(setter(doc = "Sets [`updated_at`](GetReaderCheckoutResponseData::updated_at)."))]
pub updated_at: crate::datetime::DateTime,
#[builder(setter(doc = "Sets [`valid_until`](GetReaderCheckoutResponseData::valid_until)."))]
pub valid_until: crate::datetime::DateTime,
}
#[derive(
Debug,
Clone,
Default,
PartialEq,
serde::Serialize,
serde::Deserialize,
typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct GetReaderSettingsResponseDataMenuLock {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`enabled`](GetReaderSettingsResponseDataMenuLock::enabled)."
)
)]
pub enabled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`passcode`](GetReaderSettingsResponseDataMenuLock::passcode)."
)
)]
pub passcode: Option<crate::secret::Secret>,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct GetReaderSettingsResponseData {
#[builder(setter(doc = "Sets [`menu_lock`](GetReaderSettingsResponseData::menu_lock)."))]
pub menu_lock: GetReaderSettingsResponseDataMenuLock,
}
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum ReaderDeviceModel {
#[serde(rename = "solo")]
Solo,
#[serde(rename = "virtual-solo")]
VirtualSolo,
#[serde(untagged)]
Other(String),
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct ReaderPaymentRequestParamsAffiliate {
#[builder(setter(
into,
doc = "Sets [`app_id`](ReaderPaymentRequestParamsAffiliate::app_id)."
))]
pub app_id: String,
#[builder(setter(into, doc = "Sets [`key`](ReaderPaymentRequestParamsAffiliate::key)."))]
pub key: String,
}
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum StatusResponseDataConnectionType {
#[serde(rename = "btle")]
Btle,
#[serde(rename = "edge")]
Edge,
#[serde(rename = "gprs")]
Gprs,
#[serde(rename = "lte")]
Lte,
#[serde(rename = "umts")]
Umts,
#[serde(rename = "usb")]
Usb,
#[serde(rename = "Wi-Fi")]
WiFi,
#[serde(untagged)]
Other(String),
}
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum StatusResponseDataState {
#[serde(rename = "IDLE")]
Idle,
#[serde(rename = "SELECTING_TIP")]
SelectingTip,
#[serde(rename = "WAITING_FOR_CARD")]
WaitingForCard,
#[serde(rename = "WAITING_FOR_PIN")]
WaitingForPin,
#[serde(rename = "WAITING_FOR_SIGNATURE")]
WaitingForSignature,
#[serde(rename = "UPDATING_FIRMWARE")]
UpdatingFirmware,
#[serde(untagged)]
Other(String),
}
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum StatusResponseDataStatus {
#[serde(rename = "ONLINE")]
Online,
#[serde(rename = "OFFLINE")]
Offline,
#[serde(untagged)]
Other(String),
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct StatusResponseData {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`battery_level`](StatusResponseData::battery_level)."
)
)]
pub battery_level: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`battery_temperature`](StatusResponseData::battery_temperature)."
)
)]
pub battery_temperature: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`connection_type`](StatusResponseData::connection_type)."
)
)]
pub connection_type: Option<StatusResponseDataConnectionType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`firmware_version`](StatusResponseData::firmware_version)."
)
)]
pub firmware_version: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`last_activity`](StatusResponseData::last_activity)."
)
)]
pub last_activity: Option<crate::datetime::DateTime>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, doc = "Sets [`state`](StatusResponseData::state).")
)]
pub state: Option<StatusResponseDataState>,
#[builder(setter(doc = "Sets [`status`](StatusResponseData::status)."))]
pub status: StatusResponseDataStatus,
}
#[derive(
Debug,
Clone,
Default,
PartialEq,
serde::Serialize,
serde::Deserialize,
typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct UpdateReaderSettingsRequestMenuLock {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`enabled`](UpdateReaderSettingsRequestMenuLock::enabled)."
)
)]
pub enabled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`passcode`](UpdateReaderSettingsRequestMenuLock::passcode)."
)
)]
pub passcode: Option<crate::secret::Secret>,
}
#[derive(
Debug,
Clone,
Default,
PartialEq,
serde::Serialize,
serde::Deserialize,
typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct UpdateReaderSettingsResponseDataMenuLock {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`enabled`](UpdateReaderSettingsResponseDataMenuLock::enabled)."
)
)]
pub enabled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`passcode`](UpdateReaderSettingsResponseDataMenuLock::passcode)."
)
)]
pub passcode: Option<crate::secret::Secret>,
}
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum UpdateReaderSettingsResponseDataStatus {
#[serde(rename = "applied")]
Applied,
#[serde(untagged)]
Other(String),
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct UpdateReaderSettingsResponseData {
#[builder(setter(doc = "Sets [`menu_lock`](UpdateReaderSettingsResponseData::menu_lock)."))]
pub menu_lock: UpdateReaderSettingsResponseDataMenuLock,
#[builder(setter(doc = "Sets [`status`](UpdateReaderSettingsResponseData::status)."))]
pub status: UpdateReaderSettingsResponseDataStatus,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct CreateCheckoutRequestAade {
#[builder(setter(
into,
doc = "Sets [`provider_id`](CreateCheckoutRequestAade::provider_id)."
))]
pub provider_id: String,
#[builder(setter(
into,
doc = "Sets [`signature`](CreateCheckoutRequestAade::signature)."
))]
pub signature: String,
#[builder(setter(
into,
doc = "Sets [`signature_data`](CreateCheckoutRequestAade::signature_data)."
))]
pub signature_data: String,
}
#[derive(
Debug,
Clone,
Default,
PartialEq,
serde::Serialize,
serde::Deserialize,
typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct CreateCheckoutRequestAffiliateTags {
#[serde(
flatten,
default,
skip_serializing_if = "std::collections::HashMap::is_empty"
)]
#[builder(
default,
setter(
doc = "Sets [`additional_properties`](CreateCheckoutRequestAffiliateTags::additional_properties)."
)
)]
pub additional_properties: std::collections::HashMap<String, serde_json::Value>,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct CreateCheckoutRequestAffiliate {
#[builder(setter(into, doc = "Sets [`app_id`](CreateCheckoutRequestAffiliate::app_id)."))]
pub app_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`foreign_transaction_id`](CreateCheckoutRequestAffiliate::foreign_transaction_id)."
)
)]
pub foreign_transaction_id: Option<String>,
#[builder(setter(into, doc = "Sets [`key`](CreateCheckoutRequestAffiliate::key)."))]
pub key: String,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`tags`](CreateCheckoutRequestAffiliate::tags)."
)
)]
pub tags: Option<serde_json::Value>,
}
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum CreateCheckoutRequestCardType {
#[serde(rename = "credit")]
Credit,
#[serde(rename = "debit")]
Debit,
#[serde(untagged)]
Other(String),
}
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum CreateCheckoutRequestPaymentType {
#[serde(rename = "card")]
Card,
#[serde(rename = "pix")]
Pix,
#[serde(untagged)]
Other(String),
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct CreateCheckoutRequestTotalAmount {
#[builder(setter(
into,
doc = "Sets [`currency`](CreateCheckoutRequestTotalAmount::currency)."
))]
pub currency: String,
#[builder(setter(doc = "Sets [`minor_unit`](CreateCheckoutRequestTotalAmount::minor_unit)."))]
pub minor_unit: i64,
#[builder(setter(doc = "Sets [`value`](CreateCheckoutRequestTotalAmount::value)."))]
pub value: i64,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct CreateGoCheckoutRequestAffiliate {
#[builder(setter(
into,
doc = "Sets [`app_id`](CreateGoCheckoutRequestAffiliate::app_id)."
))]
pub app_id: String,
#[builder(setter(into, doc = "Sets [`key`](CreateGoCheckoutRequestAffiliate::key)."))]
pub key: String,
}
#[derive(
Debug,
Clone,
Default,
PartialEq,
serde::Serialize,
serde::Deserialize,
typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct ListResponse {
#[builder(setter(doc = "Sets [`items`](ListResponse::items)."))]
pub items: Vec<Reader>,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct CreateRequest {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, doc = "Sets [`metadata`](CreateRequest::metadata).")
)]
pub metadata: Option<Metadata>,
#[builder(setter(into, doc = "Sets [`name`](CreateRequest::name)."))]
pub name: ReaderName,
#[builder(setter(into, doc = "Sets [`pairing_code`](CreateRequest::pairing_code)."))]
pub pairing_code: ReaderPairingCode,
}
#[derive(
Debug,
Clone,
Default,
PartialEq,
serde::Serialize,
serde::Deserialize,
typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct UpdateRequest {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, doc = "Sets [`metadata`](UpdateRequest::metadata).")
)]
pub metadata: Option<Metadata>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`name`](UpdateRequest::name).")
)]
pub name: Option<ReaderName>,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct CreateCheckoutRequest {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, doc = "Sets [`aade`](CreateCheckoutRequest::aade).")
)]
pub aade: Option<CreateCheckoutRequestAade>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "crate::nullable::deserialize"
)]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`affiliate`](CreateCheckoutRequest::affiliate)."
)
)]
pub affiliate: Option<crate::Nullable<CreateCheckoutRequestAffiliate>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`card_type`](CreateCheckoutRequest::card_type)."
)
)]
pub card_type: Option<CreateCheckoutRequestCardType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`description`](CreateCheckoutRequest::description)."
)
)]
pub description: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "crate::nullable::deserialize"
)]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`installments`](CreateCheckoutRequest::installments)."
)
)]
pub installments: Option<crate::Nullable<i64>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`payment_type`](CreateCheckoutRequest::payment_type)."
)
)]
pub payment_type: Option<CreateCheckoutRequestPaymentType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`return_url`](CreateCheckoutRequest::return_url)."
)
)]
pub return_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`tip_rates`](CreateCheckoutRequest::tip_rates)."
)
)]
pub tip_rates: Option<Vec<f32>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`tip_timeout`](CreateCheckoutRequest::tip_timeout)."
)
)]
pub tip_timeout: Option<i64>,
#[builder(setter(doc = "Sets [`total_amount`](CreateCheckoutRequest::total_amount)."))]
pub total_amount: CreateCheckoutRequestTotalAmount,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct CreateGoCheckoutRequest {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`affiliate`](CreateGoCheckoutRequest::affiliate)."
)
)]
pub affiliate: Option<CreateGoCheckoutRequestAffiliate>,
#[builder(setter(
into,
doc = "Sets [`client_transaction_id`](CreateGoCheckoutRequest::client_transaction_id)."
))]
pub client_transaction_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`tip_amount`](CreateGoCheckoutRequest::tip_amount)."
)
)]
pub tip_amount: Option<i64>,
#[builder(setter(doc = "Sets [`total_amount`](CreateGoCheckoutRequest::total_amount)."))]
pub total_amount: Amount,
}
use crate::client::Client;
#[derive(Debug, PartialEq)]
pub enum ListErrorBody {
Unauthorized(Problem),
}
impl crate::error::ProblemDetails for ListErrorBody {
fn problem(&self) -> Option<&crate::resources::common::Problem> {
match self {
Self::Unauthorized(problem) => Some(problem),
}
}
}
#[derive(Debug, PartialEq)]
pub enum CreateErrorBody {
BadRequest(Problem),
NotFound(Problem),
Conflict(Problem),
}
impl crate::error::ProblemDetails for CreateErrorBody {
fn problem(&self) -> Option<&crate::resources::common::Problem> {
match self {
Self::BadRequest(problem) => Some(problem),
Self::NotFound(problem) => Some(problem),
Self::Conflict(problem) => Some(problem),
}
}
}
#[derive(Debug, PartialEq)]
pub enum DeleteErrorBody {
NotFound(Problem),
}
impl crate::error::ProblemDetails for DeleteErrorBody {
fn problem(&self) -> Option<&crate::resources::common::Problem> {
match self {
Self::NotFound(problem) => Some(problem),
}
}
}
#[derive(Debug, PartialEq)]
pub enum GetErrorBody {
NotFound(Problem),
}
impl crate::error::ProblemDetails for GetErrorBody {
fn problem(&self) -> Option<&crate::resources::common::Problem> {
match self {
Self::NotFound(problem) => Some(problem),
}
}
}
#[derive(Debug, PartialEq)]
pub enum UpdateErrorBody {
Forbidden(Problem),
NotFound(Problem),
}
impl crate::error::ProblemDetails for UpdateErrorBody {
fn problem(&self) -> Option<&crate::resources::common::Problem> {
match self {
Self::Forbidden(problem) => Some(problem),
Self::NotFound(problem) => Some(problem),
}
}
}
#[derive(Debug, PartialEq)]
pub enum CreateCheckoutErrorBody {
BadRequest(Problem),
Unauthorized(Problem),
NotFound(Problem),
UnprocessableEntity(Problem),
}
impl crate::error::ProblemDetails for CreateCheckoutErrorBody {
fn problem(&self) -> Option<&crate::resources::common::Problem> {
match self {
Self::BadRequest(problem) => Some(problem),
Self::Unauthorized(problem) => Some(problem),
Self::NotFound(problem) => Some(problem),
Self::UnprocessableEntity(problem) => Some(problem),
}
}
}
#[derive(Debug, PartialEq)]
pub enum GetCheckoutErrorBody {
Unauthorized(Problem),
NotFound(Problem),
}
impl crate::error::ProblemDetails for GetCheckoutErrorBody {
fn problem(&self) -> Option<&crate::resources::common::Problem> {
match self {
Self::Unauthorized(problem) => Some(problem),
Self::NotFound(problem) => Some(problem),
}
}
}
#[derive(Debug, PartialEq)]
pub enum GetReaderSettingsErrorBody {
Unauthorized(Problem),
NotFound(Problem),
UnprocessableEntity(Problem),
}
impl crate::error::ProblemDetails for GetReaderSettingsErrorBody {
fn problem(&self) -> Option<&crate::resources::common::Problem> {
match self {
Self::Unauthorized(problem) => Some(problem),
Self::NotFound(problem) => Some(problem),
Self::UnprocessableEntity(problem) => Some(problem),
}
}
}
#[derive(Debug, PartialEq)]
pub enum UpdateReaderSettingsErrorBody {
BadRequest(Problem),
Unauthorized(Problem),
NotFound(Problem),
UnprocessableEntity(Problem),
}
impl crate::error::ProblemDetails for UpdateReaderSettingsErrorBody {
fn problem(&self) -> Option<&crate::resources::common::Problem> {
match self {
Self::BadRequest(problem) => Some(problem),
Self::Unauthorized(problem) => Some(problem),
Self::NotFound(problem) => Some(problem),
Self::UnprocessableEntity(problem) => Some(problem),
}
}
}
#[derive(Debug, PartialEq)]
pub enum GetStatusErrorBody {
BadRequest(Problem),
Unauthorized(Problem),
NotFound(Problem),
}
impl crate::error::ProblemDetails for GetStatusErrorBody {
fn problem(&self) -> Option<&crate::resources::common::Problem> {
match self {
Self::BadRequest(problem) => Some(problem),
Self::Unauthorized(problem) => Some(problem),
Self::NotFound(problem) => Some(problem),
}
}
}
#[derive(Debug, PartialEq)]
pub enum TerminateCheckoutErrorBody {
BadRequest(Problem),
Unauthorized(Problem),
NotFound(Problem),
UnprocessableEntity(Problem),
}
impl crate::error::ProblemDetails for TerminateCheckoutErrorBody {
fn problem(&self) -> Option<&crate::resources::common::Problem> {
match self {
Self::BadRequest(problem) => Some(problem),
Self::Unauthorized(problem) => Some(problem),
Self::NotFound(problem) => Some(problem),
Self::UnprocessableEntity(problem) => Some(problem),
}
}
}
#[derive(Debug, PartialEq)]
pub enum CreateGoCheckoutErrorBody {
BadRequest(Problem),
Unauthorized(Problem),
NotFound(Problem),
UnprocessableEntity(Problem),
}
impl crate::error::ProblemDetails for CreateGoCheckoutErrorBody {
fn problem(&self) -> Option<&crate::resources::common::Problem> {
match self {
Self::BadRequest(problem) => Some(problem),
Self::Unauthorized(problem) => Some(problem),
Self::NotFound(problem) => Some(problem),
Self::UnprocessableEntity(problem) => Some(problem),
}
}
}
#[derive(Debug)]
pub struct ReadersClient<'a> {
client: &'a Client,
}
impl<'a> ReadersClient<'a> {
pub(crate) fn new(client: &'a Client) -> Self {
Self { client }
}
pub fn client(&self) -> &Client {
self.client
}
pub async fn list(
&self,
merchant_code: impl AsRef<str>,
) -> crate::error::SdkResult<ListResponse, ListErrorBody> {
let path = format!("/v0.1/merchants/{}/readers", merchant_code.as_ref());
let url = format!("{}{}", self.client.base_url(), path);
let mut request = self
.client
.http_client()
.get(&url)
.header("User-Agent", crate::version::user_agent())
.timeout(self.client.timeout());
if let Some(authorization) = self.client.authorization() {
request = request.header("Authorization", format!("Bearer {}", authorization));
}
for (header_name, header_value) in self.client.runtime_headers() {
request = request.header(*header_name, header_value);
}
let response = request.send().await?;
let status = response.status();
match status {
reqwest::StatusCode::OK => {
let data: ListResponse = response.json().await?;
Ok(data)
}
reqwest::StatusCode::UNAUTHORIZED => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw).map(ListErrorBody::Unauthorized)
})
.await)
}
_ => Err(crate::error::SdkError::unexpected_response(response).await),
}
}
pub async fn create(
&self,
merchant_code: impl AsRef<str>,
body: CreateRequest,
) -> crate::error::SdkResult<Reader, CreateErrorBody> {
let path = format!("/v0.1/merchants/{}/readers", merchant_code.as_ref());
let url = format!("{}{}", self.client.base_url(), path);
let mut request = self
.client
.http_client()
.post(&url)
.header("User-Agent", crate::version::user_agent())
.timeout(self.client.timeout())
.json(&body);
if let Some(authorization) = self.client.authorization() {
request = request.header("Authorization", format!("Bearer {}", authorization));
}
for (header_name, header_value) in self.client.runtime_headers() {
request = request.header(*header_name, header_value);
}
let response = request.send().await?;
let status = response.status();
match status {
reqwest::StatusCode::CREATED => {
let data: Reader = response.json().await?;
Ok(data)
}
reqwest::StatusCode::BAD_REQUEST => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw).map(CreateErrorBody::BadRequest)
})
.await)
}
reqwest::StatusCode::NOT_FOUND => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw).map(CreateErrorBody::NotFound)
})
.await)
}
reqwest::StatusCode::CONFLICT => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw).map(CreateErrorBody::Conflict)
})
.await)
}
_ => Err(crate::error::SdkError::unexpected_response(response).await),
}
}
pub async fn delete(
&self,
merchant_code: impl AsRef<str>,
reader_id: impl AsRef<str>,
) -> crate::error::SdkResult<(), DeleteErrorBody> {
let path = format!(
"/v0.1/merchants/{}/readers/{}",
merchant_code.as_ref(),
reader_id.as_ref()
);
let url = format!("{}{}", self.client.base_url(), path);
let mut request = self
.client
.http_client()
.delete(&url)
.header("User-Agent", crate::version::user_agent())
.timeout(self.client.timeout());
if let Some(authorization) = self.client.authorization() {
request = request.header("Authorization", format!("Bearer {}", authorization));
}
for (header_name, header_value) in self.client.runtime_headers() {
request = request.header(*header_name, header_value);
}
let response = request.send().await?;
let status = response.status();
match status {
reqwest::StatusCode::OK => Ok(()),
reqwest::StatusCode::NOT_FOUND => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw).map(DeleteErrorBody::NotFound)
})
.await)
}
_ => Err(crate::error::SdkError::unexpected_response(response).await),
}
}
pub async fn get(
&self,
merchant_code: impl AsRef<str>,
reader_id: impl AsRef<str>,
) -> crate::error::SdkResult<Reader, GetErrorBody> {
let path = format!(
"/v0.1/merchants/{}/readers/{}",
merchant_code.as_ref(),
reader_id.as_ref()
);
let url = format!("{}{}", self.client.base_url(), path);
let mut request = self
.client
.http_client()
.get(&url)
.header("User-Agent", crate::version::user_agent())
.timeout(self.client.timeout());
if let Some(authorization) = self.client.authorization() {
request = request.header("Authorization", format!("Bearer {}", authorization));
}
for (header_name, header_value) in self.client.runtime_headers() {
request = request.header(*header_name, header_value);
}
let response = request.send().await?;
let status = response.status();
match status {
reqwest::StatusCode::OK => {
let data: Reader = response.json().await?;
Ok(data)
}
reqwest::StatusCode::NOT_FOUND => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw).map(GetErrorBody::NotFound)
})
.await)
}
_ => Err(crate::error::SdkError::unexpected_response(response).await),
}
}
pub async fn update(
&self,
merchant_code: impl AsRef<str>,
reader_id: impl AsRef<str>,
body: UpdateRequest,
) -> crate::error::SdkResult<Reader, UpdateErrorBody> {
let path = format!(
"/v0.1/merchants/{}/readers/{}",
merchant_code.as_ref(),
reader_id.as_ref()
);
let url = format!("{}{}", self.client.base_url(), path);
let mut request = self
.client
.http_client()
.patch(&url)
.header("User-Agent", crate::version::user_agent())
.timeout(self.client.timeout())
.json(&body);
if let Some(authorization) = self.client.authorization() {
request = request.header("Authorization", format!("Bearer {}", authorization));
}
for (header_name, header_value) in self.client.runtime_headers() {
request = request.header(*header_name, header_value);
}
let response = request.send().await?;
let status = response.status();
match status {
reqwest::StatusCode::OK => {
let data: Reader = response.json().await?;
Ok(data)
}
reqwest::StatusCode::FORBIDDEN => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw).map(UpdateErrorBody::Forbidden)
})
.await)
}
reqwest::StatusCode::NOT_FOUND => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw).map(UpdateErrorBody::NotFound)
})
.await)
}
_ => Err(crate::error::SdkError::unexpected_response(response).await),
}
}
pub async fn create_checkout(
&self,
merchant_code: impl AsRef<str>,
reader_id: impl AsRef<str>,
body: CreateCheckoutRequest,
) -> crate::error::SdkResult<CreateReaderCheckoutResponse, CreateCheckoutErrorBody> {
let path = format!(
"/v0.1/merchants/{}/readers/{}/checkout",
merchant_code.as_ref(),
reader_id.as_ref()
);
let url = format!("{}{}", self.client.base_url(), path);
let mut request = self
.client
.http_client()
.post(&url)
.header("User-Agent", crate::version::user_agent())
.timeout(self.client.timeout())
.json(&body);
if let Some(authorization) = self.client.authorization() {
request = request.header("Authorization", format!("Bearer {}", authorization));
}
for (header_name, header_value) in self.client.runtime_headers() {
request = request.header(*header_name, header_value);
}
let response = request.send().await?;
let status = response.status();
match status {
reqwest::StatusCode::CREATED => {
let data: CreateReaderCheckoutResponse = response.json().await?;
Ok(data)
}
reqwest::StatusCode::BAD_REQUEST => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw).map(CreateCheckoutErrorBody::BadRequest)
})
.await)
}
reqwest::StatusCode::UNAUTHORIZED => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw)
.map(CreateCheckoutErrorBody::Unauthorized)
})
.await)
}
reqwest::StatusCode::NOT_FOUND => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw).map(CreateCheckoutErrorBody::NotFound)
})
.await)
}
reqwest::StatusCode::UNPROCESSABLE_ENTITY => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw)
.map(CreateCheckoutErrorBody::UnprocessableEntity)
})
.await)
}
_ => Err(crate::error::SdkError::unexpected_response(response).await),
}
}
pub async fn get_checkout(
&self,
merchant_code: impl AsRef<str>,
reader_id: impl AsRef<str>,
checkout_id: impl AsRef<str>,
) -> crate::error::SdkResult<GetReaderCheckoutResponse, GetCheckoutErrorBody> {
let path = format!(
"/v0.1/merchants/{}/readers/{}/checkout/{}",
merchant_code.as_ref(),
reader_id.as_ref(),
checkout_id.as_ref()
);
let url = format!("{}{}", self.client.base_url(), path);
let mut request = self
.client
.http_client()
.get(&url)
.header("User-Agent", crate::version::user_agent())
.timeout(self.client.timeout());
if let Some(authorization) = self.client.authorization() {
request = request.header("Authorization", format!("Bearer {}", authorization));
}
for (header_name, header_value) in self.client.runtime_headers() {
request = request.header(*header_name, header_value);
}
let response = request.send().await?;
let status = response.status();
match status {
reqwest::StatusCode::OK => {
let data: GetReaderCheckoutResponse = response.json().await?;
Ok(data)
}
reqwest::StatusCode::UNAUTHORIZED => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw).map(GetCheckoutErrorBody::Unauthorized)
})
.await)
}
reqwest::StatusCode::NOT_FOUND => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw).map(GetCheckoutErrorBody::NotFound)
})
.await)
}
_ => Err(crate::error::SdkError::unexpected_response(response).await),
}
}
pub async fn get_reader_settings(
&self,
merchant_code: impl AsRef<str>,
reader_id: impl AsRef<str>,
) -> crate::error::SdkResult<GetReaderSettingsResponse, GetReaderSettingsErrorBody> {
let path = format!(
"/v0.1/merchants/{}/readers/{}/settings",
merchant_code.as_ref(),
reader_id.as_ref()
);
let url = format!("{}{}", self.client.base_url(), path);
let mut request = self
.client
.http_client()
.get(&url)
.header("User-Agent", crate::version::user_agent())
.timeout(self.client.timeout());
if let Some(authorization) = self.client.authorization() {
request = request.header("Authorization", format!("Bearer {}", authorization));
}
for (header_name, header_value) in self.client.runtime_headers() {
request = request.header(*header_name, header_value);
}
let response = request.send().await?;
let status = response.status();
match status {
reqwest::StatusCode::OK => {
let data: GetReaderSettingsResponse = response.json().await?;
Ok(data)
}
reqwest::StatusCode::UNAUTHORIZED => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw)
.map(GetReaderSettingsErrorBody::Unauthorized)
})
.await)
}
reqwest::StatusCode::NOT_FOUND => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw).map(GetReaderSettingsErrorBody::NotFound)
})
.await)
}
reqwest::StatusCode::UNPROCESSABLE_ENTITY => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw)
.map(GetReaderSettingsErrorBody::UnprocessableEntity)
})
.await)
}
_ => Err(crate::error::SdkError::unexpected_response(response).await),
}
}
pub async fn update_reader_settings(
&self,
merchant_code: impl AsRef<str>,
reader_id: impl AsRef<str>,
body: UpdateReaderSettingsRequest,
) -> crate::error::SdkResult<UpdateReaderSettingsResponse, UpdateReaderSettingsErrorBody> {
let path = format!(
"/v0.1/merchants/{}/readers/{}/settings",
merchant_code.as_ref(),
reader_id.as_ref()
);
let url = format!("{}{}", self.client.base_url(), path);
let mut request = self
.client
.http_client()
.patch(&url)
.header("User-Agent", crate::version::user_agent())
.timeout(self.client.timeout())
.json(&body);
if let Some(authorization) = self.client.authorization() {
request = request.header("Authorization", format!("Bearer {}", authorization));
}
for (header_name, header_value) in self.client.runtime_headers() {
request = request.header(*header_name, header_value);
}
let response = request.send().await?;
let status = response.status();
match status {
reqwest::StatusCode::OK => {
let data: UpdateReaderSettingsResponse = response.json().await?;
Ok(data)
}
reqwest::StatusCode::BAD_REQUEST => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw)
.map(UpdateReaderSettingsErrorBody::BadRequest)
})
.await)
}
reqwest::StatusCode::UNAUTHORIZED => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw)
.map(UpdateReaderSettingsErrorBody::Unauthorized)
})
.await)
}
reqwest::StatusCode::NOT_FOUND => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw)
.map(UpdateReaderSettingsErrorBody::NotFound)
})
.await)
}
reqwest::StatusCode::UNPROCESSABLE_ENTITY => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw)
.map(UpdateReaderSettingsErrorBody::UnprocessableEntity)
})
.await)
}
_ => Err(crate::error::SdkError::unexpected_response(response).await),
}
}
pub async fn get_status(
&self,
merchant_code: impl AsRef<str>,
reader_id: impl AsRef<str>,
) -> crate::error::SdkResult<StatusResponse, GetStatusErrorBody> {
let path = format!(
"/v0.1/merchants/{}/readers/{}/status",
merchant_code.as_ref(),
reader_id.as_ref()
);
let url = format!("{}{}", self.client.base_url(), path);
let mut request = self
.client
.http_client()
.get(&url)
.header("User-Agent", crate::version::user_agent())
.timeout(self.client.timeout());
if let Some(authorization) = self.client.authorization() {
request = request.header("Authorization", format!("Bearer {}", authorization));
}
for (header_name, header_value) in self.client.runtime_headers() {
request = request.header(*header_name, header_value);
}
let response = request.send().await?;
let status = response.status();
match status {
reqwest::StatusCode::OK => {
let data: StatusResponse = response.json().await?;
Ok(data)
}
reqwest::StatusCode::BAD_REQUEST => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw).map(GetStatusErrorBody::BadRequest)
})
.await)
}
reqwest::StatusCode::UNAUTHORIZED => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw).map(GetStatusErrorBody::Unauthorized)
})
.await)
}
reqwest::StatusCode::NOT_FOUND => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw).map(GetStatusErrorBody::NotFound)
})
.await)
}
_ => Err(crate::error::SdkError::unexpected_response(response).await),
}
}
pub async fn terminate_checkout(
&self,
merchant_code: impl AsRef<str>,
reader_id: impl AsRef<str>,
) -> crate::error::SdkResult<(), TerminateCheckoutErrorBody> {
let path = format!(
"/v0.1/merchants/{}/readers/{}/terminate",
merchant_code.as_ref(),
reader_id.as_ref()
);
let url = format!("{}{}", self.client.base_url(), path);
let mut request = self
.client
.http_client()
.post(&url)
.header("User-Agent", crate::version::user_agent())
.timeout(self.client.timeout());
if let Some(authorization) = self.client.authorization() {
request = request.header("Authorization", format!("Bearer {}", authorization));
}
for (header_name, header_value) in self.client.runtime_headers() {
request = request.header(*header_name, header_value);
}
let response = request.send().await?;
let status = response.status();
match status {
reqwest::StatusCode::ACCEPTED => Ok(()),
reqwest::StatusCode::BAD_REQUEST => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw)
.map(TerminateCheckoutErrorBody::BadRequest)
})
.await)
}
reqwest::StatusCode::UNAUTHORIZED => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw)
.map(TerminateCheckoutErrorBody::Unauthorized)
})
.await)
}
reqwest::StatusCode::NOT_FOUND => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw).map(TerminateCheckoutErrorBody::NotFound)
})
.await)
}
reqwest::StatusCode::UNPROCESSABLE_ENTITY => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw)
.map(TerminateCheckoutErrorBody::UnprocessableEntity)
})
.await)
}
_ => Err(crate::error::SdkError::unexpected_response(response).await),
}
}
pub async fn create_go_checkout(
&self,
merchant_code: impl AsRef<str>,
reader_id: impl AsRef<str>,
body: CreateGoCheckoutRequest,
) -> crate::error::SdkResult<ReaderPaymentResponse, CreateGoCheckoutErrorBody> {
let path = format!(
"/v0/merchants/{}/readers/{}/go-checkout",
merchant_code.as_ref(),
reader_id.as_ref()
);
let url = format!("{}{}", self.client.base_url(), path);
let mut request = self
.client
.http_client()
.post(&url)
.header("User-Agent", crate::version::user_agent())
.timeout(self.client.timeout())
.json(&body);
if let Some(authorization) = self.client.authorization() {
request = request.header("Authorization", format!("Bearer {}", authorization));
}
for (header_name, header_value) in self.client.runtime_headers() {
request = request.header(*header_name, header_value);
}
let response = request.send().await?;
let status = response.status();
match status {
reqwest::StatusCode::OK => {
let data: ReaderPaymentResponse = response.json().await?;
Ok(data)
}
reqwest::StatusCode::BAD_REQUEST => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw)
.map(CreateGoCheckoutErrorBody::BadRequest)
})
.await)
}
reqwest::StatusCode::UNAUTHORIZED => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw)
.map(CreateGoCheckoutErrorBody::Unauthorized)
})
.await)
}
reqwest::StatusCode::NOT_FOUND => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw).map(CreateGoCheckoutErrorBody::NotFound)
})
.await)
}
reqwest::StatusCode::UNPROCESSABLE_ENTITY => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw)
.map(CreateGoCheckoutErrorBody::UnprocessableEntity)
})
.await)
}
_ => Err(crate::error::SdkError::unexpected_response(response).await),
}
}
}