Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 82 additions & 16 deletions src/types/subscription-offerings.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,27 +20,60 @@ export interface SubscriptionOfferingBase {
attributes: {
name: string
description: string
created_at: string
updated_at: string
},
}
}

export interface SubscriptionOfferingRelationships {
relationships?: {
[key: string]: {
links?: {
related?: string
self?: string
},
data?: {
type?: string
id?: string
plans?: {
data: {
id: string
type: 'subscription_offering_plan'
}[]
links: {
related: string
}
}
products?: {
data: {
id: string
type: 'subscription_offering_product'
}[]
links: {
related: string
}
}
proration_policy?: {
data: {
id: string
type: 'subscription_proration_policy'
}
}
}

}

export interface SubscriptionOfferingBuildProduct {
external_ref?: string
name: string
description?: string
sku?: string
main_image?: string
price?: {
[key: string]: {
amount: number
includes_tax?: boolean
}
}
price_units?: {
unit: "day" | "month"
amount: number
}
}
export interface SubscriptionOfferingBuildBody {
name: string
description: string
products: string[]
products: string[] | SubscriptionOfferingBuildProduct[]
plans: string[]
}

Expand All @@ -52,11 +85,23 @@ export interface SubscriptionOfferingAttachPlanBody {
plans: string[]
}

export interface SubscriptionOffering extends Identifiable, SubscriptionOfferingBase {
export interface SubscriptionOfferingAttachProrationPolicyBody {
type: 'subscription_proration_policy'
id: string
}

export interface SubscriptionOffering extends Identifiable, SubscriptionOfferingBase, SubscriptionOfferingRelationships {
meta: {
external_product_refs: string[]
owner: string
timestamps: {
created_at: string
updated_at: string
}
}
}
export type SubscriptionOfferingCreate = Omit<SubscriptionOfferingBase, 'attributes'> & {attributes: Partial<SubscriptionOfferingBase['attributes']>}
export type SubscriptionOfferingUpdate = Omit<SubscriptionOffering, 'attributes'> & {attributes: Partial<SubscriptionOfferingBase['attributes']>}
export type SubscriptionOfferingUpdate = Identifiable & Omit<SubscriptionOfferingBase, 'attributes'> & {attributes: Partial<SubscriptionOfferingBase['attributes']>}

type SubscriptionOfferingAttachmentsRelationships = {
relationships: {
Expand All @@ -69,7 +114,24 @@ type SubscriptionOfferingAttachmentsRelationships = {
}
}

export type SubscriptionOfferingPlan = SubscriptionPlan & SubscriptionOfferingAttachmentsRelationships
export interface SubscriptionOfferingFilter {
eq?: {
"products.external_ref": string
}
}

type SubscriptionOfferingPlanMeta = {
meta: {
active_plan?: boolean
owner: string
timestamps: {
created_at: string
updated_at: string
}
}
}

export type SubscriptionOfferingPlan = Omit<SubscriptionPlan, 'meta'> & SubscriptionOfferingAttachmentsRelationships & SubscriptionOfferingPlanMeta
export type SubscriptionOfferingProduct = SubscriptionProduct & SubscriptionOfferingAttachmentsRelationships
/**
* Subscription Offering Endpoints
Expand All @@ -80,7 +142,7 @@ export interface SubscriptionOfferingsEndpoint
SubscriptionOffering,
SubscriptionOfferingCreate,
SubscriptionOfferingUpdate,
never,
SubscriptionOfferingFilter,
never,
never
> {
Expand All @@ -99,4 +161,8 @@ export interface SubscriptionOfferingsEndpoint
AttachPlans(offeringId: string, body: SubscriptionOfferingAttachPlanBody): Promise<Resource<SubscriptionPlan[]>>

RemovePlan(offeringId: string, planId: string): Promise<void>

AttachProrationPolicy(offeringId: string, body: SubscriptionOfferingAttachProrationPolicyBody | null): Promise<Resource<SubscriptionOfferingAttachProrationPolicyBody>>

ReplaceProducts(offeringId: string, productIds: string[]): Promise<Resource<SubscriptionProduct[]>>
}
52 changes: 52 additions & 0 deletions src/types/subscription-proration-policies.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
/**
* Subscription Proration Policies
* Description: Subscription Proration Policies.
* DOCS: TODO: add docs when ready
*/
import {
Identifiable,
CrudQueryableResource
} from './core'

/**
* Core Subscription Proration Policies Base Interface
* For custom flows, extend this interface
* DOCS: TODO: add docs when ready
*/
export interface SubscriptionProrationPolicyBase {
type: 'subscription_proration_policy'
attributes: {
name: string
rounding: 'up' | 'down' | 'nearest'
external_ref?: string
}
}

export interface SubscriptionProrationPolicy extends Identifiable, SubscriptionProrationPolicyBase {
meta: {
owner: 'store' | 'organization'
timestamps: {
updated_at: string
created_at: string
}
}
}

export type SubscriptionProrationPolicyCreate = SubscriptionProrationPolicyBase
export type SubscriptionProrationPolicyUpdate = Identifiable & Omit<SubscriptionProrationPolicyBase, 'attributes'> & {attributes: Partial<SubscriptionProrationPolicy['attributes']>}

/**
* Subscription Proration Policies Endpoints
* DOCS: TODO: add docs when ready
*/
export interface SubscriptionProrationPoliciesEndpoint
extends CrudQueryableResource<
SubscriptionProrationPolicy,
SubscriptionProrationPolicyCreate,
SubscriptionProrationPolicyUpdate,
never,
never,
never
> {
endpoint: 'proration-policies'
}