mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-04-15 03:01:37 -05:00
✨ Added admin endpoint for editing member subscription (#12145)
refs #12127 - Adds new `editSubscription` endpoint for members admin API which allows updating individual subscription for a member - `PUT /members/:id/subscriptions/:subscription_id/` - `editSubscription` has same permissions as member's `edit` endpoint - Currently allows toggling of cancellation at period end for an active subscription
This commit is contained in:
parent
4fff93f9e0
commit
c7f3837c54
3 changed files with 55 additions and 0 deletions
|
@ -366,6 +366,52 @@ module.exports = {
|
|||
}
|
||||
},
|
||||
|
||||
editSubscription: {
|
||||
statusCode: 200,
|
||||
headers: {},
|
||||
options: [
|
||||
'id',
|
||||
'subscription_id'
|
||||
],
|
||||
data: [
|
||||
'cancel_at_period_end'
|
||||
],
|
||||
validation: {
|
||||
options: {
|
||||
id: {
|
||||
required: true
|
||||
},
|
||||
subscription_id: {
|
||||
required: true
|
||||
}
|
||||
},
|
||||
data: {
|
||||
cancel_at_period_end: {
|
||||
required: true
|
||||
}
|
||||
}
|
||||
},
|
||||
permissions: {
|
||||
method: 'edit'
|
||||
},
|
||||
async query(frame) {
|
||||
await membersService.api.members.updateSubscription(frame.options.id, {
|
||||
subscriptionId: frame.options.subscription_id,
|
||||
cancelAtPeriodEnd: frame.data.cancel_at_period_end
|
||||
});
|
||||
let model = await membersService.api.members.get({id: frame.options.id}, {
|
||||
withRelated: ['labels', 'stripeSubscriptions', 'stripeSubscriptions.customer']
|
||||
});
|
||||
if (!model) {
|
||||
throw new errors.NotFoundError({
|
||||
message: i18n.t('errors.api.members.memberNotFound')
|
||||
});
|
||||
}
|
||||
|
||||
return model.toJSON(frame.options);
|
||||
}
|
||||
},
|
||||
|
||||
destroy: {
|
||||
statusCode: 204,
|
||||
headers: {},
|
||||
|
|
|
@ -65,5 +65,12 @@ module.exports = {
|
|||
stats(data, apiConfig, frame) {
|
||||
debug('stats');
|
||||
frame.response = data;
|
||||
},
|
||||
|
||||
editSubscription(data, apiConfig, frame) {
|
||||
debug('editSubscription');
|
||||
frame.response = {
|
||||
members: [mapper.mapMember(data, frame)]
|
||||
};
|
||||
}
|
||||
};
|
||||
|
|
|
@ -109,6 +109,8 @@ module.exports = function apiRoutes() {
|
|||
router.put('/members/:id', shared.middlewares.labs.members, mw.authAdminApi, http(apiCanary.members.edit));
|
||||
router.del('/members/:id', shared.middlewares.labs.members, mw.authAdminApi, http(apiCanary.members.destroy));
|
||||
|
||||
router.put('/members/:id/subscriptions/:subscription_id', shared.middlewares.labs.members, mw.authAdminApi, http(apiCanary.members.editSubscription));
|
||||
|
||||
router.get('/members/:id/signin_urls', shared.middlewares.labs.members, mw.authAdminApi, http(apiCanary.memberSigninUrls.read));
|
||||
|
||||
// ## Labels
|
||||
|
|
Loading…
Add table
Reference in a new issue