import type { Square } from "square" import { defineSquareOperation } from "../lib" /** * Schedules a plan variation change for all active subscriptions under a given * plan variation. */ export const bulkSquareSwapPlan = defineSquareOperation< Square.BulkSwapPlanRequest, Square.BulkSwapPlanResponse >({ allowedKeys: ["newPlanVariationId", "oldPlanVariationId", "locationId"], description: "Schedules a plan variation change for all active subscriptions under a given plan variation.", execute: (api, input) => api.subscriptions.bulkSwapPlan(input), name: "Bulk Square Swap Plan", replaySafety: "unsafe", requiredKeys: ["newPlanVariationId", "oldPlanVariationId", "locationId"], scopes: ["ITEMS_READ", "SUBSCRIPTIONS_READ", "SUBSCRIPTIONS_WRITE"], }) /** Schedules a `CANCEL` action to cancel an active subscription. */ export const cancelSquareSubscription = defineSquareOperation< Square.CancelSubscriptionsRequest, Square.CancelSubscriptionResponse >({ allowedKeys: ["subscriptionId"], description: "Schedules a `CANCEL` action to cancel an active subscription.", execute: (api, input) => api.subscriptions.cancel(input), name: "Cancel Square Subscription", replaySafety: "unsafe", requiredKeys: ["subscriptionId"], scopes: ["SUBSCRIPTIONS_WRITE"], }) /** * Changes the [billing anchor * date](https://developer.squareup.com/docs/subscriptions-api/subscription-billing#billing-dates) * for a subscription. */ export const changeSquareBillingAnchorDate = defineSquareOperation< Square.ChangeBillingAnchorDateRequest, Square.ChangeBillingAnchorDateResponse >({ allowedKeys: ["subscriptionId", "monthlyBillingAnchorDate", "effectiveDate"], description: "Changes the [billing anchor date](https://developer.squareup.com/docs/subscriptions-api/subscription-billing#billing-dates) for a subscription.", execute: (api, input) => api.subscriptions.changeBillingAnchorDate(input), name: "Change Square Billing Anchor Date", replaySafety: "unsafe", requiredKeys: ["subscriptionId"], scopes: ["ITEMS_READ", "SUBSCRIPTIONS_READ", "SUBSCRIPTIONS_WRITE"], }) /** Enrolls a customer in a subscription. */ export const createSquareSubscription = defineSquareOperation< Square.CreateSubscriptionRequest, Square.CreateSubscriptionResponse >({ allowedKeys: [ "idempotencyKey", "locationId", "planVariationId", "customerId", "startDate", "canceledDate", "taxPercentage", "priceOverrideMoney", "cardId", "timezone", "source", "monthlyBillingAnchorDate", "phases", ], description: "Enrolls a customer in a subscription.", execute: (api, input) => api.subscriptions.create(input), name: "Create Square Subscription", replaySafety: "unsafe", requiredKeys: ["locationId", "customerId"], scopes: [ "CUSTOMERS_READ", "INVOICES_WRITE", "ITEMS_READ", "ORDERS_WRITE", "PAYMENTS_WRITE", "SUBSCRIPTIONS_WRITE", ], }) /** Deletes a scheduled action for a subscription. */ export const deleteSquareSubscriptionAction = defineSquareOperation< Square.DeleteActionSubscriptionsRequest, Square.DeleteSubscriptionActionResponse >({ allowedKeys: ["subscriptionId", "actionId"], description: "Deletes a scheduled action for a subscription.", execute: (api, input) => api.subscriptions.deleteAction(input), name: "Delete Square Subscription Action", replaySafety: "safe", requiredKeys: ["subscriptionId", "actionId"], scopes: ["SUBSCRIPTIONS_WRITE"], }) /** * Lists all * [events](https://developer.squareup.com/docs/subscriptions-api/actions-events) * for a specific subscription. */ export const listSquareSubscriptionEvents = defineSquareOperation< Square.ListEventsSubscriptionsRequest, Square.ListSubscriptionEventsResponse >({ allowedKeys: ["subscriptionId", "cursor", "limit"], description: "Lists all [events](https://developer.squareup.com/docs/subscriptions-api/actions-events) for a specific subscription.", execute: (api, input) => api.subscriptions.listEvents(input), name: "List Square Subscription Events", replaySafety: "safe", requiredKeys: ["subscriptionId"], scopes: ["SUBSCRIPTIONS_READ"], }) /** Schedules a `PAUSE` action to pause an active subscription. */ export const pauseSquareSubscription = defineSquareOperation< Square.PauseSubscriptionRequest, Square.PauseSubscriptionResponse >({ allowedKeys: [ "subscriptionId", "pauseEffectiveDate", "pauseCycleDuration", "resumeEffectiveDate", "resumeChangeTiming", "pauseReason", ], description: "Schedules a `PAUSE` action to pause an active subscription.", execute: (api, input) => api.subscriptions.pause(input), name: "Pause Square Subscription", replaySafety: "unsafe", requiredKeys: ["subscriptionId"], scopes: [ "CUSTOMERS_READ", "INVOICES_WRITE", "ITEMS_READ", "ORDERS_WRITE", "PAYMENTS_WRITE", "SUBSCRIPTIONS_WRITE", ], }) /** Schedules a `RESUME` action to resume a paused or a deactivated subscription. */ export const resumeSquareSubscription = defineSquareOperation< Square.ResumeSubscriptionRequest, Square.ResumeSubscriptionResponse >({ allowedKeys: ["subscriptionId", "resumeEffectiveDate", "resumeChangeTiming"], description: "Schedules a `RESUME` action to resume a paused or a deactivated subscription.", execute: (api, input) => api.subscriptions.resume(input), name: "Resume Square Subscription", replaySafety: "unsafe", requiredKeys: ["subscriptionId"], scopes: [ "CUSTOMERS_READ", "INVOICES_WRITE", "ITEMS_READ", "ORDERS_WRITE", "PAYMENTS_WRITE", "SUBSCRIPTIONS_WRITE", ], }) /** Retrieves a specific subscription. */ export const retrieveSquareSubscription = defineSquareOperation< Square.GetSubscriptionsRequest, Square.GetSubscriptionResponse >({ allowedKeys: ["subscriptionId", "include"], description: "Retrieves a specific subscription.", execute: (api, input) => api.subscriptions.get(input), name: "Retrieve Square Subscription", replaySafety: "safe", requiredKeys: ["subscriptionId"], scopes: ["SUBSCRIPTIONS_READ"], }) /** Searches for subscriptions. */ export const searchSquareSubscriptions = defineSquareOperation< Square.SearchSubscriptionsRequest, Square.SearchSubscriptionsResponse >({ allowedKeys: ["cursor", "limit", "query", "include"], description: "Searches for subscriptions.", execute: (api, input) => api.subscriptions.search(input), name: "Search Square Subscriptions", replaySafety: "safe", requiredKeys: [], scopes: ["SUBSCRIPTIONS_READ"], }) /** * Schedules a `SWAP_PLAN` action to swap a subscription plan variation in an * existing subscription. */ export const swapSquarePlan = defineSquareOperation< Square.SwapPlanRequest, Square.SwapPlanResponse >({ allowedKeys: ["subscriptionId", "newPlanVariationId", "phases"], description: "Schedules a `SWAP_PLAN` action to swap a subscription plan variation in an existing subscription.", execute: (api, input) => api.subscriptions.swapPlan(input), name: "Swap Square Plan", replaySafety: "unsafe", requiredKeys: ["subscriptionId"], scopes: [ "CUSTOMERS_READ", "INVOICES_WRITE", "ITEMS_READ", "ORDERS_WRITE", "PAYMENTS_WRITE", "SUBSCRIPTIONS_WRITE", ], }) /** Updates a subscription by modifying or clearing `subscription` field values. */ export const updateSquareSubscription = defineSquareOperation< Square.UpdateSubscriptionRequest, Square.UpdateSubscriptionResponse >({ allowedKeys: ["subscriptionId", "subscription"], description: "Updates a subscription by modifying or clearing `subscription` field values.", execute: (api, input) => api.subscriptions.update(input), name: "Update Square Subscription", replaySafety: "safe", requiredKeys: ["subscriptionId"], scopes: [ "CUSTOMERS_READ", "INVOICES_WRITE", "ITEMS_READ", "ORDERS_WRITE", "PAYMENTS_WRITE", "SUBSCRIPTIONS_WRITE", ], })