Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 58b715c

Browse files
feat: subscription proration policies endpoint (#936)
* feat: subscription proration policies endpoint * fix: removed missing fields
1 parent 695c1a0 commit 58b715c

File tree

4 files changed

+86
-0
lines changed

4 files changed

+86
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import CRUDExtend from '../extends/crud'
2+
3+
class SubscriptionProrationPoliciesEndpoint extends CRUDExtend {
4+
constructor(endpoint) {
5+
super(endpoint)
6+
7+
this.endpoint = 'subscriptions/proration-policies'
8+
}
9+
10+
Create(body) {
11+
return this.request.send(this.endpoint, 'POST', {
12+
...body
13+
})
14+
}
15+
16+
Update(id, body, token = null) {
17+
return this.request.send(
18+
`${this.endpoint}/${id}`,
19+
'PUT',
20+
{
21+
...body
22+
},
23+
token
24+
)
25+
}
26+
27+
}
28+
29+
export default SubscriptionProrationPoliciesEndpoint

src/moltin.d.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ import { SubscriptionJobsEndpoint } from './types/subscription-jobs'
6666
import { SubscriptionSchedulesEndpoint } from './types/subscription-schedules'
6767
import { CustomApisEndpoint } from './types/custom-apis'
6868
import { SubscriptionDunningRulesEndpoint } from './types/subscription-dunning-rules'
69+
import { SubscriptionProrationPoliciesEndpoint } from './types/subscription-proration-policies'
6970

7071
export * from './types/config'
7172
export * from './types/storage'
@@ -142,6 +143,7 @@ export * from './types/subscription-jobs'
142143
export * from './types/subscription-schedules'
143144
export * from './types/custom-apis'
144145
export * from './types/subscription-dunning-rules'
146+
export * from './types/subscription-proration-policies'
145147

146148
// UMD
147149
export as namespace moltin
@@ -209,6 +211,7 @@ export class Moltin {
209211
SubscriptionSchedules: SubscriptionSchedulesEndpoint
210212
CustomApis: CustomApisEndpoint
211213
SubscriptionDunningRules: SubscriptionDunningRulesEndpoint
214+
SubscriptionProrationPolicies: SubscriptionProrationPoliciesEndpoint
212215

213216
Cart(id?: string): CartEndpoint // This optional cart id is super worrying when using the SDK in a node server :/
214217
constructor(config: Config)

src/moltin.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ import SubscriptionSubscribersEndpoint from './endpoints/subscription-subscriber
5757
import SubscriptionJobsEndpoint from './endpoints/subscription-jobs'
5858
import SubscriptionSchedulesEndpoint from './endpoints/subscription-schedules'
5959
import SubscriptionDunningRulesEndpoint from './endpoints/subscription-dunning-rules'
60+
import SubscriptionProrationPoliciesEndpoint from './endpoints/subscription-proration-policies'
6061

6162
import {cartIdentifier, tokenInvalid, getCredentials, resolveCredentialsStorageKey} from './utils/helpers'
6263
import CatalogsEndpoint from './endpoints/catalogs'
@@ -134,6 +135,7 @@ export default class Moltin {
134135
this.SubscriptionSchedules = new SubscriptionSchedulesEndpoint(config)
135136
this.CustomApis = new CustomApisEndpoint(config)
136137
this.SubscriptionDunningRules = new SubscriptionDunningRulesEndpoint(config)
138+
this.SubscriptionProrationPolicies = new SubscriptionProrationPoliciesEndpoint(config)
137139
}
138140

139141
// Expose `Cart` class on Moltin class
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/**
2+
* Subscription Proration Policies
3+
* Description: Subscription Proration Policies.
4+
* DOCS: TODO: add docs when ready
5+
*/
6+
import {
7+
Identifiable,
8+
CrudQueryableResource
9+
} from './core'
10+
11+
/**
12+
* Core Subscription Proration Policies Base Interface
13+
* For custom flows, extend this interface
14+
* DOCS: TODO: add docs when ready
15+
*/
16+
export interface SubscriptionProrationPolicyBase {
17+
type: 'proration_policy'
18+
attributes: {
19+
name: string
20+
rounding: 'up' | 'down' | 'nearest'
21+
external_ref?: string
22+
}
23+
}
24+
25+
export interface SubscriptionProrationPolicy extends Identifiable, SubscriptionProrationPolicyBase {
26+
meta: {
27+
owner: 'store' | 'organization'
28+
timestamps: {
29+
updated_at: string
30+
created_at: string
31+
}
32+
}
33+
}
34+
35+
export type SubscriptionProrationPolicyCreate = SubscriptionProrationPolicyBase
36+
export type SubscriptionProrationPolicyUpdate = Identifiable & Omit<SubscriptionProrationPolicyBase, 'attributes'> & {attributes: Partial<SubscriptionProrationPolicy['attributes']>}
37+
38+
/**
39+
* Subscription Proration Policies Endpoints
40+
* DOCS: TODO: add docs when ready
41+
*/
42+
export interface SubscriptionProrationPoliciesEndpoint
43+
extends CrudQueryableResource<
44+
SubscriptionProrationPolicy,
45+
SubscriptionProrationPolicyCreate,
46+
SubscriptionProrationPolicyUpdate,
47+
never,
48+
never,
49+
never
50+
> {
51+
endpoint: 'proration-policies'
52+
}

0 commit comments

Comments
 (0)