subscriptions.create
Create recurring payment subscriptions for customers using the Ryft API. Specify billing cycles, amounts, and intervals to automate revenue collection.
Instructions
Create a Ryft subscription.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| customerId | Yes | ||
| paymentMethodId | No | ||
| description | No | ||
| billingCycleTimestamp | No | ||
| amount | Yes | ||
| currency | Yes | ||
| interval | Yes | ||
| metadata | No |
Implementation Reference
- src/tools/subscriptions.ts:47-66 (handler)The handler implementation for the 'subscriptions.create' tool, which validates input using subscriptionCreateSchema and makes a POST request to the Ryft API.
registerTool( 'subscriptions.create', 'Create a Ryft subscription.', subscriptionCreateSchema.shape, async (args) => { const parsed = subscriptionCreateSchema.parse(args); return client.post('/subscriptions', { customer: { id: parsed.customerId }, ...(parsed.paymentMethodId ? { paymentMethod: { id: parsed.paymentMethodId } } : {}), description: parsed.description, billingCycleTimestamp: parsed.billingCycleTimestamp, price: { amount: parsed.amount, currency: parsed.currency, interval: parsed.interval, }, metadata: parsed.metadata, }); }, ); - src/tools/subscriptions.ts:12-21 (schema)Input schema definition for the 'subscriptions.create' tool.
const subscriptionCreateSchema = z.object({ customerId: z.string().min(1), paymentMethodId: z.string().min(1).optional(), description: z.string().min(1).optional(), billingCycleTimestamp: z.number().int().optional(), amount: z.number().int().positive(), currency: z.string().length(3), interval: intervalSchema, metadata: z.record(z.string(), z.string()).optional(), }); - src/tools/subscriptions.ts:46-46 (registration)Registration function that ties tool handlers to the tool registrar.
export function registerSubscriptionTools(registerTool: ToolRegistrar, client: RyftHttpClient) {