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

Commit 406054e

Browse files
feat: subscribers endpoint (#915)
1 parent 5f98d11 commit 406054e

File tree

4 files changed

+79
-0
lines changed

4 files changed

+79
-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 SubscriptionSubscribersEndpoint extends CRUDExtend {
4+
constructor(endpoint) {
5+
super(endpoint)
6+
7+
this.endpoint = 'subscriptions/subscribers'
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 SubscriptionSubscribersEndpoint

src/moltin.d.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ import { SubscriptionOfferingsEndpoint } from './types/subscription-offerings'
6161
import { OneTimePasswordTokenRequestEndpoint } from "./types/one-time-password-token-request";
6262
import { SubscriptionsEndpoint } from './types/subscriptions'
6363
import { RulePromotionsEndpoint } from './types/rule-promotions'
64+
import { SubscriptionSubscribersEndpoint } from './types/subscription-subscribers'
6465

6566
export * from './types/config'
6667
export * from './types/storage'
@@ -132,6 +133,7 @@ export * from './types/subscription-offerings'
132133
export * from './types/one-time-password-token-request'
133134
export * from './types/subscriptions'
134135
export * from './types/rule-promotions'
136+
export * from './types/subscription-subscribers'
135137

136138
// UMD
137139
export as namespace moltin
@@ -194,6 +196,7 @@ export class Moltin {
194196
OneTimePasswordTokenRequest: OneTimePasswordTokenRequestEndpoint
195197
Subscriptions: SubscriptionsEndpoint
196198
RulePromotions : RulePromotionsEndpoint
199+
SubscriptionSubscribers : SubscriptionSubscribersEndpoint
197200

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

src/moltin.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ import SubscriptionPlansEndpoint from './endpoints/subscription-plan'
5353
import SubscriptionOfferingsEndpoint from './endpoints/subscription-offerings'
5454
import SubscriptionsEndpoint from './endpoints/subscriptions'
5555
import RulePromotionsEndpoint from './endpoints/rule-promotions'
56+
import SubscriptionSubscribersEndpoint from './endpoints/subscription-subscribers'
5657

5758
import {cartIdentifier, tokenInvalid, getCredentials, resolveCredentialsStorageKey} from './utils/helpers'
5859
import CatalogsEndpoint from './endpoints/catalogs'
@@ -124,6 +125,7 @@ export default class Moltin {
124125
this.OneTimePasswordTokenRequest = new OneTimePasswordTokenRequestEndpoint(config)
125126
this.Subscriptions = new SubscriptionsEndpoint(config)
126127
this.RulePromotions = new RulePromotionsEndpoint(config)
128+
this.SubscriptionSubscribers = new SubscriptionSubscribersEndpoint(config)
127129
}
128130

129131
// Expose `Cart` class on Moltin class
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/**
2+
* Subscription Subscribers
3+
* Description: Subscription Subscribers.
4+
* DOCS: TODO: add docs when ready
5+
*/
6+
import {
7+
Identifiable,
8+
CrudQueryableResource
9+
} from './core'
10+
11+
/**
12+
* Core Subscription Subscriber Base Interface
13+
* For custom flows, extend this interface
14+
* DOCS: TODO: add docs when ready
15+
*/
16+
export interface SubscriptionSubscriberBase {
17+
type: "subscription_subscriber"
18+
attributes: {
19+
account_id: string
20+
name: string
21+
email: string
22+
}
23+
}
24+
25+
export interface SubscriptionSubscriber extends Identifiable, SubscriptionSubscriberBase {
26+
27+
}
28+
export type SubscriptionSubscriberCreate = SubscriptionSubscriberBase
29+
export type SubscriptionSubscriberUpdate = Omit<SubscriptionSubscriber, 'attributes'> & {attributes: Partial<SubscriptionSubscriberBase['attributes']> & Identifiable}
30+
31+
/**
32+
* Subscription Subscriber Endpoints
33+
* DOCS: TODO: add docs when ready
34+
*/
35+
export interface SubscriptionSubscribersEndpoint
36+
extends CrudQueryableResource<
37+
SubscriptionSubscriber,
38+
SubscriptionSubscriberCreate,
39+
SubscriptionSubscriberUpdate,
40+
never,
41+
never,
42+
never
43+
> {
44+
endpoint: 'plans'
45+
}

0 commit comments

Comments
 (0)