DodoPayments.Discounts (dodo_payments v0.1.0)

Copy Markdown View Source

Discount lifecycle and code lookup operations.

Summary

Types

Parameters for discount_customers_attach. Exact fields use atom keys; string-keyed and mixed-key maps remain supported. Source: Dodo OpenAPI schema (the upstream TypeScript endpoint is schema-first).

Parameters for discounts_create. Exact fields use atom keys; string-keyed and mixed-key maps remain supported. Source: locked upstream resources/discounts.ts declaration DiscountCreateParams.

Parameters for discount_customers_list. Exact fields use atom keys; string-keyed and mixed-key maps remain supported. Source: Dodo OpenAPI schema (the upstream TypeScript endpoint is schema-first).

Parameters for discounts_list. Exact fields use atom keys; string-keyed and mixed-key maps remain supported. Source: locked upstream resources/discounts.ts declaration DiscountListParams.

Parameters for discounts_update. Exact fields use atom keys; string-keyed and mixed-key maps remain supported. Source: locked upstream resources/discounts.ts declaration DiscountUpdateParams.

Functions

Calls Dodo operation discount_customers_attach (POST /discounts/{discount_id}/customers). Required parameters: :customer_ids.

Calls Dodo operation discount_customers_attach (POST /discounts/{discount_id}/customers). Required parameters: :customer_ids.

Calls Dodo operation discounts_create (POST /discounts). Required parameters: :type, :amount.

Calls Dodo operation discounts_create (POST /discounts). Required parameters: :type, :amount.

Calls Dodo operation discounts_delete (DELETE /discounts/{discount_id}). Required parameters: none.

Calls Dodo operation discount_customers_detach (DELETE /discounts/{discount_id}/customers/{customer_id}). Required parameters: none.

Calls Dodo operation discounts_list (GET /discounts). Required parameters: none. Numbered pagination is zero-based.

Calls Dodo operation discounts_list (GET /discounts). Required parameters: none. Numbered pagination is zero-based.

Calls Dodo operation discounts_list (GET /discounts). Required parameters: none. Numbered pagination is zero-based.

Calls Dodo operation discount_customers_list (GET /discounts/{discount_id}/customers). Required parameters: none. Numbered pagination is zero-based.

Calls Dodo operation discount_customers_list (GET /discounts/{discount_id}/customers). Required parameters: none. Numbered pagination is zero-based.

Calls Dodo operation discount_customers_list (GET /discounts/{discount_id}/customers). Required parameters: none. Numbered pagination is zero-based.

Calls Dodo operation discounts_retrieve (GET /discounts/{discount_id}). Required parameters: none.

Calls Dodo operation discounts_retrieve_by_code (GET /discounts/code/{code}). Required parameters: none.

Calls Dodo operation discounts_update (PATCH /discounts/{discount_id}). Required parameters: none.

Calls Dodo operation discounts_update (PATCH /discounts/{discount_id}). Required parameters: none.

Calls Dodo operation discounts_update (PATCH /discounts/{discount_id}). Required parameters: none.

Types

attach_customers_params()

@type attach_customers_params() ::
  %{
    :customer_ids => [String.t()],
    optional(String.t()) => DodoPayments.RequestTypes.input_value()
  }
  | DodoPayments.RequestTypes.compatibility_params()

Parameters for discount_customers_attach. Exact fields use atom keys; string-keyed and mixed-key maps remain supported. Source: Dodo OpenAPI schema (the upstream TypeScript endpoint is schema-first).

create_params()

@type create_params() ::
  %{
    :amount => number(),
    :type => DodoPayments.Enums.discount_type(),
    optional(:code) => String.t(),
    optional(:currency_options) => [
      DodoPayments.RequestTypes.discount_currency_option()
    ],
    optional(:customer_eligibility) =>
      DodoPayments.Enums.customer_eligibility(),
    optional(:expires_at) => String.t(),
    optional(:metadata) => DodoPayments.RequestTypes.flat_metadata(),
    optional(:name) => String.t(),
    optional(:per_customer_usage_limit) => number(),
    optional(:preserve_on_plan_change) => boolean(),
    optional(:restricted_to) => [String.t()],
    optional(:starts_at) => String.t(),
    optional(:subscription_cycles) => number(),
    optional(:usage_limit) => number(),
    optional(String.t()) => DodoPayments.RequestTypes.input_value()
  }
  | DodoPayments.RequestTypes.compatibility_params()

Parameters for discounts_create. Exact fields use atom keys; string-keyed and mixed-key maps remain supported. Source: locked upstream resources/discounts.ts declaration DiscountCreateParams.

list_customers_params()

@type list_customers_params() ::
  %{
    optional(:page_number) => number(),
    optional(:page_size) => number(),
    optional(String.t()) => DodoPayments.RequestTypes.input_value()
  }
  | DodoPayments.RequestTypes.compatibility_params()

Parameters for discount_customers_list. Exact fields use atom keys; string-keyed and mixed-key maps remain supported. Source: Dodo OpenAPI schema (the upstream TypeScript endpoint is schema-first).

list_params()

@type list_params() ::
  %{
    optional(:page_number) => number(),
    optional(:page_size) => number(),
    optional(:active) => boolean(),
    optional(:code) => String.t(),
    optional(:discount_type) => DodoPayments.Enums.discount_type(),
    optional(:product_id) => String.t(),
    optional(String.t()) => DodoPayments.RequestTypes.input_value()
  }
  | DodoPayments.RequestTypes.compatibility_params()

Parameters for discounts_list. Exact fields use atom keys; string-keyed and mixed-key maps remain supported. Source: locked upstream resources/discounts.ts declaration DiscountListParams.

update_params()

@type update_params() ::
  %{
    optional(:amount) => number(),
    optional(:code) => String.t(),
    optional(:currency_options) => [
      DodoPayments.RequestTypes.discount_currency_option()
    ],
    optional(:customer_eligibility) =>
      DodoPayments.Enums.customer_eligibility(),
    optional(:expires_at) => String.t(),
    optional(:metadata) => DodoPayments.RequestTypes.flat_metadata(),
    optional(:name) => String.t(),
    optional(:per_customer_usage_limit) => number(),
    optional(:preserve_on_plan_change) => boolean(),
    optional(:restricted_to) => [String.t()],
    optional(:starts_at) => String.t(),
    optional(:subscription_cycles) => number(),
    optional(:type) => DodoPayments.Enums.discount_type(),
    optional(:usage_limit) => number(),
    optional(String.t()) => DodoPayments.RequestTypes.input_value()
  }
  | DodoPayments.RequestTypes.compatibility_params()

Parameters for discounts_update. Exact fields use atom keys; string-keyed and mixed-key maps remain supported. Source: locked upstream resources/discounts.ts declaration DiscountUpdateParams.

Functions

attach_customers(client, discount_id, params)

Calls Dodo operation discount_customers_attach (POST /discounts/{discount_id}/customers). Required parameters: :customer_ids.

API parameters must be supplied as a map.

attach_customers(client, discount_id, params, opts)

Calls Dodo operation discount_customers_attach (POST /discounts/{discount_id}/customers). Required parameters: :customer_ids.

The final argument contains request-local options.

create(client, params)

@spec create(DodoPayments.Client.t(), create_params()) ::
  {:ok, DodoPayments.Discount.t()} | {:error, Exception.t()}

Calls Dodo operation discounts_create (POST /discounts). Required parameters: :type, :amount.

API parameters must be supplied as a map.

create(client, params, opts)

Calls Dodo operation discounts_create (POST /discounts). Required parameters: :type, :amount.

The final argument contains request-local options.

delete(client, discount_id, opts \\ [])

@spec delete(DodoPayments.Client.t(), String.t() | integer(), keyword()) ::
  {:ok, nil | DodoPayments.Response.t(nil)} | {:error, Exception.t()}

Calls Dodo operation discounts_delete (DELETE /discounts/{discount_id}). Required parameters: none.

Options are request-local.

detach_customer(client, discount_id, customer_id, opts \\ [])

@spec detach_customer(
  DodoPayments.Client.t(),
  String.t() | integer(),
  String.t() | integer(),
  keyword()
) :: {:ok, nil | DodoPayments.Response.t(nil)} | {:error, Exception.t()}

Calls Dodo operation discount_customers_detach (DELETE /discounts/{discount_id}/customers/{customer_id}). Required parameters: none.

Options are request-local.

list(client)

Calls Dodo operation discounts_list (GET /discounts). Required parameters: none. Numbered pagination is zero-based.

Calls the operation with an empty parameter map.

list(client, opts)

Calls Dodo operation discounts_list (GET /discounts). Required parameters: none. Numbered pagination is zero-based.

Pass a map for Dodo parameters or a keyword list for request-local options.

list(client, params, opts)

Calls Dodo operation discounts_list (GET /discounts). Required parameters: none. Numbered pagination is zero-based.

Accepts both a Dodo parameter map and request-local options.

list_customers(client, discount_id)

Calls Dodo operation discount_customers_list (GET /discounts/{discount_id}/customers). Required parameters: none. Numbered pagination is zero-based.

Calls the operation with an empty parameter map.

list_customers(client, discount_id, opts)

Calls Dodo operation discount_customers_list (GET /discounts/{discount_id}/customers). Required parameters: none. Numbered pagination is zero-based.

Pass a map for Dodo parameters or a keyword list for request-local options.

list_customers(client, discount_id, params, opts)

Calls Dodo operation discount_customers_list (GET /discounts/{discount_id}/customers). Required parameters: none. Numbered pagination is zero-based.

Accepts both a Dodo parameter map and request-local options.

retrieve(client, discount_id, opts \\ [])

Calls Dodo operation discounts_retrieve (GET /discounts/{discount_id}). Required parameters: none.

Options are request-local.

retrieve_by_code(client, code, opts \\ [])

Calls Dodo operation discounts_retrieve_by_code (GET /discounts/code/{code}). Required parameters: none.

Options are request-local.

update(client, discount_id)

@spec update(DodoPayments.Client.t(), String.t() | integer()) ::
  {:ok, DodoPayments.Discount.t()} | {:error, Exception.t()}

Calls Dodo operation discounts_update (PATCH /discounts/{discount_id}). Required parameters: none.

Calls the operation with an empty parameter map.

update(client, discount_id, opts)

Calls Dodo operation discounts_update (PATCH /discounts/{discount_id}). Required parameters: none.

Pass a map for Dodo parameters or a keyword list for request-local options.

update(client, discount_id, params, opts)

Calls Dodo operation discounts_update (PATCH /discounts/{discount_id}). Required parameters: none.

Accepts both a Dodo parameter map and request-local options.