defmodule Stripe.Tax.Settings do use Stripe.Entity @moduledoc "You can use Tax `Settings` to manage configurations used by Stripe Tax calculations.\n\nRelated guide: [Using the Settings API](https://stripe.com/docs/tax/settings-api)" ( defstruct [:defaults, :head_office, :livemode, :object, :status, :status_details] @typedoc "The `tax.settings` type.\n\n * `defaults` \n * `head_office` The place where your business is located.\n * `livemode` Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.\n * `object` String representing the object's type. Objects of the same type share the same value.\n * `status` The `active` status indicates you have all required settings to calculate tax. A status can transition out of `active` when new required settings are introduced.\n * `status_details` \n" @type t :: %__MODULE__{ defaults: term, head_office: term | nil, livemode: boolean, object: binary, status: binary, status_details: term } ) ( @typedoc "The location of the business for tax purposes." @type address :: %{ optional(:city) => binary, optional(:country) => binary, optional(:line1) => binary, optional(:line2) => binary, optional(:postal_code) => binary, optional(:state) => binary } ) ( @typedoc "Default configuration to be used on Stripe Tax calculations." @type defaults :: %{ optional(:tax_behavior) => :exclusive | :inclusive | :inferred_by_currency, optional(:tax_code) => binary } ) ( @typedoc "The place where your business is located." @type head_office :: %{optional(:address) => address} ) ( nil @doc "

Retrieves Tax Settings for a merchant.

\n\n#### Details\n\n * Method: `get`\n * Path: `/v1/tax/settings`\n" ( @spec retrieve(params :: %{optional(:expand) => list(binary)}, opts :: Keyword.t()) :: {:ok, Stripe.Tax.Settings.t()} | {:error, Stripe.ApiErrors.t()} | {:error, term()} def retrieve(params \\ %{}, opts \\ []) do path = Stripe.OpenApi.Path.replace_path_params("/v1/tax/settings", [], []) Stripe.Request.new_request(opts) |> Stripe.Request.put_endpoint(path) |> Stripe.Request.put_params(params) |> Stripe.Request.put_method(:get) |> Stripe.Request.make_request() end ) ) ( nil @doc "

Updates Tax Settings parameters used in tax calculations. All parameters are editable but none can be removed once set.

\n\n#### Details\n\n * Method: `post`\n * Path: `/v1/tax/settings`\n" ( @spec update( params :: %{ optional(:defaults) => defaults, optional(:expand) => list(binary), optional(:head_office) => head_office }, opts :: Keyword.t() ) :: {:ok, Stripe.Tax.Settings.t()} | {:error, Stripe.ApiErrors.t()} | {:error, term()} def update(params \\ %{}, opts \\ []) do path = Stripe.OpenApi.Path.replace_path_params("/v1/tax/settings", [], []) Stripe.Request.new_request(opts) |> Stripe.Request.put_endpoint(path) |> Stripe.Request.put_params(params) |> Stripe.Request.put_method(:post) |> Stripe.Request.make_request() end ) ) end