diff --git a/openapi/api.yaml b/openapi/api.yaml index fe2608a2..c9e015a8 100644 --- a/openapi/api.yaml +++ b/openapi/api.yaml @@ -207,6 +207,7 @@ x-tagGroups: - external_products - external_accounts - external_product_references + - external_payment_phases - name: Products and Promotions tags: - item @@ -366,6 +367,11 @@ tags: x-displayName: External Product Reference description: Associates an external product to a corresponding resource on an external platform like the Apple App Store or Google Play Store. +- name: external_payment_phases + x-displayName: External Payment Phase + description: Details of payments in the lifecycle of a subscription from an external + resource that is not managed by the Recurly platform, e.g. App Store or Google + Play Store. - name: gift_cards x-displayName: Gift Cards description: Add gift card purchases to your checkout and allow gift card recipients @@ -15918,6 +15924,69 @@ paths: schema: "$ref": "#/components/schemas/Error" x-code-samples: [] + "/external_subscriptions/{external_subscription_id}/external_payment_phases": + parameters: + - "$ref": "#/components/parameters/external_subscription_id" + get: + tags: + - external_subscriptions + operationId: list_external_subscription_external_payment_phases + summary: List the external payment phases on an external subscription + description: See the [Pagination Guide](/developers/guides/pagination.html) + to learn how to use pagination in the API and Client Libraries. + parameters: + - "$ref": "#/components/parameters/sort_dates" + - "$ref": "#/components/parameters/limit" + - "$ref": "#/components/parameters/order" + responses: + '200': + description: A list of the the external_payment_phases on a site. + content: + application/json: + schema: + "$ref": "#/components/schemas/ExternalPaymentPhaseList" + '404': + description: Incorrect site. + content: + application/json: + schema: + "$ref": "#/components/schemas/Error" + default: + description: Unexpected error. + content: + application/json: + schema: + "$ref": "#/components/schemas/Error" + x-code-samples: [] + "/external_subscriptions/{external_subscription_id}/external_payment_phases/{external_payment_phase_id}": + parameters: + - "$ref": "#/components/parameters/external_subscription_id" + - "$ref": "#/components/parameters/external_payment_phase_id" + get: + tags: + - external_payment_phases + operationId: get_external_subscription_external_payment_phase + summary: Fetch an external payment_phase + responses: + '200': + description: Details for an external payment_phase. + content: + application/json: + schema: + "$ref": "#/components/schemas/ExternalPaymentPhase" + '404': + description: Incorrect site or external subscription ID. + content: + application/json: + schema: + "$ref": "#/components/schemas/Error" + default: + description: Unexpected error. + content: + application/json: + schema: + "$ref": "#/components/schemas/Error" + x-code-samples: [] "/accounts/{account_id}/entitlements": parameters: - "$ref": "#/components/parameters/account_id" @@ -16355,6 +16424,13 @@ components: required: true schema: type: string + external_payment_phase_id: + name: external_payment_phase_id + in: path + description: External payment phase ID, e.g. `a34ypb2ef9w1`. + required: true + schema: + type: string invoice_template_id: name: invoice_template_id in: path @@ -21633,6 +21709,7 @@ components: type: number format: float title: Estimated tax + description: Only for merchants using Recurly's In-The-Box taxes. tax_info: "$ref": "#/components/schemas/TaxInfo" total: @@ -22464,6 +22541,12 @@ components: default: 0 net_terms_type: "$ref": "#/components/schemas/NetTermsTypeEnum" + gateway_code: + type: string + title: Gateway Code + description: If present, this subscription's transactions will use the payment + gateway with this code. + maxLength: 13 transaction_type: description: An optional type designation for the payment gateway transaction created by this request. Supports 'moto' value, which is the acronym for @@ -22805,6 +22888,7 @@ components: TaxInfo: type: object title: Tax info + description: Only for merchants using Recurly's In-The-Box taxes. properties: type: type: string @@ -23646,6 +23730,90 @@ components: type: string format: date-time description: Time the object was last updated + ExternalPaymentPhase: + type: object + description: Details of payments in the lifecycle of a subscription from an + external resource that is not managed by the Recurly platform, e.g. App Store + or Google Play Store. + properties: + id: + type: string + title: External payment phase ID + description: System-generated unique identifier for an external payment + phase ID, e.g. `e28zov4fw0v2`. + object: + type: string + title: Object type + external_subscription: + "$ref": "#/components/schemas/ExternalSubscription" + started_at: + type: string + format: date-time + title: Started At + ends_at: + type: string + format: date-time + title: Ends At + starting_billing_period_index: + type: integer + title: Starting Billing Period Index + ending_billing_period_index: + type: integer + title: Ending Billing Period Index + offer_type: + type: string + title: Offer Type + description: Type of discount offer given, e.g. "FREE_TRIAL" + offer_name: + type: string + title: Offer Name + description: Name of the discount offer given, e.g. "introductory" + period_count: + type: integer + title: Period Count + description: Number of billing periods + period_length: + type: string + title: Period Length + description: Billing cycle length + amount: + type: string + format: decimal + title: Amount + minimum: 0 + description: Allows up to 9 decimal places + currency: + type: string + title: Currency + description: 3-letter ISO 4217 currency code. + maxLength: 3 + created_at: + type: string + format: date-time + title: Created at + description: When the external subscription was created in Recurly. + updated_at: + type: string + format: date-time + title: Updated at + description: When the external subscription was updated in Recurly. + ExternalPaymentPhaseList: + type: object + properties: + object: + type: string + title: Object type + description: Will always be List. + has_more: + type: boolean + description: Indicates there are more results on subsequent pages. + next: + type: string + description: Path to subsequent page of results. + data: + type: array + items: + "$ref": "#/components/schemas/ExternalPaymentPhase" ExternalProduct: type: object description: Product from an external resource such as Apple App Store or Google diff --git a/recurly/client.py b/recurly/client.py index 5245e5ee..72028152 100644 --- a/recurly/client.py +++ b/recurly/client.py @@ -5048,6 +5048,77 @@ def show_external_invoice(self, external_invoice_id, **options): path = self._interpolate_path("/external_invoices/%s", external_invoice_id) return self._make_request("GET", path, None, **options) + def list_external_subscription_external_payment_phases( + self, external_subscription_id, **options + ): + """List the external payment phases on an external subscription + + Parameters + ---------- + + external_subscription_id : str + External subscription id + + Keyword Arguments + ----------------- + + headers : dict + Extra HTTP headers to send with the request. + params : dict + Query Parameters. + params.sort : str + Sort field. You *really* only want to sort by `updated_at` in ascending + order. In descending order updated records will move behind the cursor and could + prevent some records from being returned. + params.limit : int + Limit number of records 1-200. + params.order : str + Sort order. + + Returns + ------- + + Pager + A list of the the external_payment_phases on a site. + """ + path = self._interpolate_path( + "/external_subscriptions/%s/external_payment_phases", + external_subscription_id, + ) + return Pager(self, path, **options) + + def get_external_subscription_external_payment_phase( + self, external_subscription_id, external_payment_phase_id, **options + ): + """Fetch an external payment_phase + + Parameters + ---------- + + external_subscription_id : str + External subscription id + external_payment_phase_id : str + External payment phase ID, e.g. `a34ypb2ef9w1`. + + Keyword Arguments + ----------------- + + headers : dict + Extra HTTP headers to send with the request. + + Returns + ------- + + ExternalPaymentPhase + Details for an external payment_phase. + """ + path = self._interpolate_path( + "/external_subscriptions/%s/external_payment_phases/%s", + external_subscription_id, + external_payment_phase_id, + ) + return self._make_request("GET", path, None, **options) + def list_entitlements(self, account_id, **options): """List entitlements granted to an account diff --git a/recurly/resources.py b/recurly/resources.py index a3e80648..3b9e717f 100644 --- a/recurly/resources.py +++ b/recurly/resources.py @@ -1449,7 +1449,7 @@ class Invoice(Resource): tax : float The total tax on this invoice. tax_info : TaxInfo - Tax info + Only for merchants using Recurly's In-The-Box taxes. terms_and_conditions : str This will default to the Terms and Conditions text specified on the Invoice Settings page in your Recurly admin. Specify custom notes to add or override Terms and Conditions. total : float @@ -1716,7 +1716,7 @@ class LineItem(Resource): tax_inclusive : bool Determines whether or not tax is included in the unit amount. The Tax Inclusive Pricing feature (separate from the Mixed Tax Pricing feature) must be enabled to utilize this flag. tax_info : TaxInfo - Tax info + Only for merchants using Recurly's In-The-Box taxes. taxable : bool `true` if the line item is taxable, `false` if it is not. type : str @@ -1961,11 +1961,11 @@ class Subscription(Resource): subtotal : float Estimated total, before tax. tax : float - Estimated tax + Only for merchants using Recurly's In-The-Box taxes. tax_inclusive : bool Determines whether or not tax is included in the unit amount. The Tax Inclusive Pricing feature (separate from the Mixed Tax Pricing feature) must be enabled to utilize this flag. tax_info : TaxInfo - Tax info + Only for merchants using Recurly's In-The-Box taxes. terms_and_conditions : str Terms and conditions total : float @@ -3383,6 +3383,61 @@ class InvoiceTemplate(Resource): } +class ExternalPaymentPhase(Resource): + """ + Attributes + ---------- + amount : str + Allows up to 9 decimal places + created_at : datetime + When the external subscription was created in Recurly. + currency : str + 3-letter ISO 4217 currency code. + ending_billing_period_index : int + Ending Billing Period Index + ends_at : datetime + Ends At + external_subscription : ExternalSubscription + Subscription from an external resource such as Apple App Store or Google Play Store. + id : str + System-generated unique identifier for an external payment phase ID, e.g. `e28zov4fw0v2`. + object : str + Object type + offer_name : str + Name of the discount offer given, e.g. "introductory" + offer_type : str + Type of discount offer given, e.g. "FREE_TRIAL" + period_count : int + Number of billing periods + period_length : str + Billing cycle length + started_at : datetime + Started At + starting_billing_period_index : int + Starting Billing Period Index + updated_at : datetime + When the external subscription was updated in Recurly. + """ + + schema = { + "amount": str, + "created_at": datetime, + "currency": str, + "ending_billing_period_index": int, + "ends_at": datetime, + "external_subscription": "ExternalSubscription", + "id": str, + "object": str, + "offer_name": str, + "offer_type": str, + "period_count": int, + "period_length": str, + "started_at": datetime, + "starting_billing_period_index": int, + "updated_at": datetime, + } + + class Entitlements(Resource): """ Attributes