use super::common::*;
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct Address {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`autonomous_community`](Address::autonomous_community)."
)
)]
pub autonomous_community: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`city`](Address::city).")
)]
pub city: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`commune`](Address::commune).")
)]
pub commune: Option<String>,
#[builder(setter(into, doc = "Sets [`country`](Address::country)."))]
pub country: CountryCode,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`county`](Address::county).")
)]
pub county: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`department`](Address::department).")
)]
pub department: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`district`](Address::district).")
)]
pub district: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`eircode`](Address::eircode).")
)]
pub eircode: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`municipality`](Address::municipality)."
)
)]
pub municipality: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`neighborhood`](Address::neighborhood)."
)
)]
pub neighborhood: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`post_code`](Address::post_code).")
)]
pub post_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`post_town`](Address::post_town).")
)]
pub post_town: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`province`](Address::province).")
)]
pub province: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`region`](Address::region).")
)]
pub region: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`state`](Address::state).")
)]
pub state: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`street_address`](Address::street_address)."
)
)]
pub street_address: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`zip_code`](Address::zip_code).")
)]
pub zip_code: Option<String>,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct BasePerson {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, doc = "Sets [`address`](BasePerson::address).")
)]
pub address: Option<Address>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, doc = "Sets [`birthdate`](BasePerson::birthdate).")
)]
pub birthdate: Option<crate::datetime::Date>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`change_status`](BasePerson::change_status)."
)
)]
pub change_status: Option<ChangeStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`citizenship`](BasePerson::citizenship)."
)
)]
pub citizenship: Option<CountryCode>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "crate::nullable::deserialize"
)]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`country_of_residence`](BasePerson::country_of_residence)."
)
)]
pub country_of_residence: Option<crate::Nullable<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`family_name`](BasePerson::family_name)."
)
)]
pub family_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`given_name`](BasePerson::given_name)."
)
)]
pub given_name: Option<String>,
#[builder(setter(into, doc = "Sets [`id`](BasePerson::id)."))]
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, doc = "Sets [`identifiers`](BasePerson::identifiers).")
)]
pub identifiers: Option<PersonalIdentifiers>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`middle_name`](BasePerson::middle_name)."
)
)]
pub middle_name: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "crate::nullable::deserialize"
)]
#[builder(
default,
setter(strip_option, doc = "Sets [`nationality`](BasePerson::nationality).")
)]
pub nationality: Option<crate::Nullable<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, doc = "Sets [`ownership`](BasePerson::ownership).")
)]
pub ownership: Option<Ownership>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`phone_number`](BasePerson::phone_number)."
)
)]
pub phone_number: Option<PhoneNumber>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`relationships`](BasePerson::relationships)."
)
)]
pub relationships: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`user_id`](BasePerson::user_id).")
)]
pub user_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`version`](BasePerson::version).")
)]
pub version: Option<Version>,
}
#[derive(
Debug,
Clone,
Default,
PartialEq,
serde::Serialize,
serde::Deserialize,
typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct Branding {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`background_color`](Branding::background_color)."
)
)]
pub background_color: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`footer_text`](Branding::footer_text)."
)
)]
pub footer_text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`hero`](Branding::hero).")
)]
pub hero: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`icon`](Branding::icon).")
)]
pub icon: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`logo`](Branding::logo).")
)]
pub logo: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`primary_color`](Branding::primary_color)."
)
)]
pub primary_color: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`primary_color_fg`](Branding::primary_color_fg)."
)
)]
pub primary_color_fg: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`secondary_color`](Branding::secondary_color)."
)
)]
pub secondary_color: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`secondary_color_fg`](Branding::secondary_color_fg)."
)
)]
pub secondary_color_fg: Option<String>,
}
#[derive(
Debug,
Clone,
Default,
PartialEq,
serde::Serialize,
serde::Deserialize,
typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct BusinessProfile {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, doc = "Sets [`address`](BusinessProfile::address).")
)]
pub address: Option<Address>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, doc = "Sets [`branding`](BusinessProfile::branding).")
)]
pub branding: Option<Branding>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`dynamic_descriptor`](BusinessProfile::dynamic_descriptor)."
)
)]
pub dynamic_descriptor: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`email`](BusinessProfile::email).")
)]
pub email: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`name`](BusinessProfile::name).")
)]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`phone_number`](BusinessProfile::phone_number)."
)
)]
pub phone_number: Option<PhoneNumber>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`website`](BusinessProfile::website)."
)
)]
pub website: Option<String>,
}
pub type ChangeStatus = String;
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct ClassicMerchantIdentifiers {
#[deprecated]
#[builder(setter(doc = "Sets [`id`](ClassicMerchantIdentifiers::id)."))]
pub id: i64,
}
#[derive(
Debug,
Clone,
Default,
PartialEq,
serde::Serialize,
serde::Deserialize,
typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct Company {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, doc = "Sets [`address`](Company::address).")
)]
pub address: Option<Address>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, doc = "Sets [`attributes`](Company::attributes).")
)]
pub attributes: Option<Attributes>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, doc = "Sets [`identifiers`](Company::identifiers).")
)]
pub identifiers: Option<CompanyIdentifiers>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`legal_type`](Company::legal_type).")
)]
pub legal_type: Option<LegalType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`merchant_category_code`](Company::merchant_category_code)."
)
)]
pub merchant_category_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`name`](Company::name).")
)]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`phone_number`](Company::phone_number)."
)
)]
pub phone_number: Option<PhoneNumber>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`trading_address`](Company::trading_address)."
)
)]
pub trading_address: Option<Address>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`website`](Company::website).")
)]
pub website: Option<String>,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct CompanyIdentifier {
#[serde(rename = "ref")]
#[builder(setter(into, doc = "Sets [`r#ref`](CompanyIdentifier::r#ref)."))]
pub r#ref: String,
#[builder(setter(into, doc = "Sets [`value`](CompanyIdentifier::value)."))]
pub value: String,
}
pub type CompanyIdentifiers = Vec<CompanyIdentifier>;
pub type CountryCode = String;
pub type LegalType = String;
#[derive(
Debug,
Clone,
Default,
PartialEq,
serde::Serialize,
serde::Deserialize,
typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct ListPersonsResponseBody {
#[builder(setter(doc = "Sets [`items`](ListPersonsResponseBody::items)."))]
pub items: Vec<Person>,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct Merchant {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`alias`](Merchant::alias).")
)]
pub alias: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`avatar`](Merchant::avatar).")
)]
pub avatar: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`business_profile`](Merchant::business_profile)."
)
)]
pub business_profile: Option<BusinessProfile>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`business_type`](Merchant::business_type)."
)
)]
pub business_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`change_status`](Merchant::change_status)."
)
)]
pub change_status: Option<ChangeStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, doc = "Sets [`classic`](Merchant::classic).")
)]
pub classic: Option<ClassicMerchantIdentifiers>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, doc = "Sets [`company`](Merchant::company).")
)]
pub company: Option<Company>,
#[builder(setter(into, doc = "Sets [`country`](Merchant::country)."))]
pub country: CountryCode,
#[builder(setter(doc = "Sets [`created_at`](Merchant::created_at)."))]
pub created_at: crate::datetime::DateTime,
#[builder(setter(into, doc = "Sets [`default_currency`](Merchant::default_currency)."))]
pub default_currency: String,
#[builder(setter(into, doc = "Sets [`default_locale`](Merchant::default_locale)."))]
pub default_locale: String,
#[builder(setter(into, doc = "Sets [`merchant_code`](Merchant::merchant_code)."))]
pub merchant_code: String,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default, setter(strip_option, doc = "Sets [`meta`](Merchant::meta)."))]
pub meta: Option<Meta>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`organization_id`](Merchant::organization_id)."
)
)]
pub organization_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, doc = "Sets [`sandbox`](Merchant::sandbox).")
)]
pub sandbox: Option<bool>,
#[builder(setter(doc = "Sets [`updated_at`](Merchant::updated_at)."))]
pub updated_at: crate::datetime::DateTime,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`version`](Merchant::version).")
)]
pub version: Option<Version>,
}
#[derive(
Debug,
Clone,
Default,
PartialEq,
serde::Serialize,
serde::Deserialize,
typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct Meta {
#[serde(
flatten,
default,
skip_serializing_if = "std::collections::HashMap::is_empty"
)]
#[builder(
default,
setter(doc = "Sets [`additional_properties`](Meta::additional_properties).")
)]
pub additional_properties: std::collections::HashMap<String, String>,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct Ownership {
#[builder(setter(doc = "Sets [`share`](Ownership::share)."))]
pub share: i32,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct Person {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, doc = "Sets [`address`](Person::address).")
)]
pub address: Option<Address>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, doc = "Sets [`birthdate`](Person::birthdate).")
)]
pub birthdate: Option<crate::datetime::Date>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`change_status`](Person::change_status)."
)
)]
pub change_status: Option<ChangeStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`citizenship`](Person::citizenship).")
)]
pub citizenship: Option<CountryCode>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "crate::nullable::deserialize"
)]
#[builder(
default,
setter(
strip_option,
doc = "Sets [`country_of_residence`](Person::country_of_residence)."
)
)]
pub country_of_residence: Option<crate::Nullable<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`family_name`](Person::family_name).")
)]
pub family_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`given_name`](Person::given_name).")
)]
pub given_name: Option<String>,
#[builder(setter(into, doc = "Sets [`id`](Person::id)."))]
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, doc = "Sets [`identifiers`](Person::identifiers).")
)]
pub identifiers: Option<PersonalIdentifiers>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`middle_name`](Person::middle_name).")
)]
pub middle_name: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
deserialize_with = "crate::nullable::deserialize"
)]
#[builder(
default,
setter(strip_option, doc = "Sets [`nationality`](Person::nationality).")
)]
pub nationality: Option<crate::Nullable<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, doc = "Sets [`ownership`](Person::ownership).")
)]
pub ownership: Option<Ownership>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(
strip_option,
into,
doc = "Sets [`phone_number`](Person::phone_number)."
)
)]
pub phone_number: Option<PhoneNumber>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, doc = "Sets [`relationships`](Person::relationships).")
)]
pub relationships: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`user_id`](Person::user_id).")
)]
pub user_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(
default,
setter(strip_option, into, doc = "Sets [`version`](Person::version).")
)]
pub version: Option<Version>,
}
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct PersonalIdentifier {
#[serde(rename = "ref")]
#[builder(setter(into, doc = "Sets [`r#ref`](PersonalIdentifier::r#ref)."))]
pub r#ref: String,
#[builder(setter(into, doc = "Sets [`value`](PersonalIdentifier::value)."))]
pub value: String,
}
pub type PersonalIdentifiers = Vec<PersonalIdentifier>;
pub type PhoneNumber = String;
#[derive(
Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, typed_builder::TypedBuilder,
)]
#[builder(doc)]
pub struct Timestamps {
#[builder(setter(doc = "Sets [`created_at`](Timestamps::created_at)."))]
pub created_at: crate::datetime::DateTime,
#[builder(setter(doc = "Sets [`updated_at`](Timestamps::updated_at)."))]
pub updated_at: crate::datetime::DateTime,
}
pub type Version = String;
use crate::client::Client;
#[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 ListPersonsErrorBody {
NotFound(Problem),
}
impl crate::error::ProblemDetails for ListPersonsErrorBody {
fn problem(&self) -> Option<&crate::resources::common::Problem> {
match self {
Self::NotFound(problem) => Some(problem),
}
}
}
#[derive(Debug, PartialEq)]
pub enum GetPersonErrorBody {
NotFound(Problem),
}
impl crate::error::ProblemDetails for GetPersonErrorBody {
fn problem(&self) -> Option<&crate::resources::common::Problem> {
match self {
Self::NotFound(problem) => Some(problem),
}
}
}
#[derive(Debug)]
pub struct MerchantsClient<'a> {
client: &'a Client,
}
impl<'a> MerchantsClient<'a> {
pub(crate) fn new(client: &'a Client) -> Self {
Self { client }
}
pub fn client(&self) -> &Client {
self.client
}
pub async fn get(
&self,
merchant_code: impl AsRef<str>,
) -> crate::error::SdkResult<Merchant, GetErrorBody> {
let path = format!("/v1/merchants/{}", 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: Merchant = 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 list_persons(
&self,
merchant_code: impl AsRef<str>,
) -> crate::error::SdkResult<ListPersonsResponseBody, ListPersonsErrorBody> {
let path = format!("/v1/merchants/{}/persons", 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: ListPersonsResponseBody = response.json().await?;
Ok(data)
}
reqwest::StatusCode::NOT_FOUND => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw).map(ListPersonsErrorBody::NotFound)
})
.await)
}
_ => Err(crate::error::SdkError::unexpected_response(response).await),
}
}
pub async fn get_person(
&self,
merchant_code: impl AsRef<str>,
person_id: impl AsRef<str>,
) -> crate::error::SdkResult<Person, GetPersonErrorBody> {
let path = format!(
"/v1/merchants/{}/persons/{}",
merchant_code.as_ref(),
person_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: Person = response.json().await?;
Ok(data)
}
reqwest::StatusCode::NOT_FOUND => {
Err(crate::error::SdkError::from_response(response, |raw| {
serde_json::from_slice::<Problem>(raw).map(GetPersonErrorBody::NotFound)
})
.await)
}
_ => Err(crate::error::SdkError::unexpected_response(response).await),
}
}
}