Skip to content

External (0.0.1)

Languages
Servers
https://membership-admin.appstle.com

Shipping & Delivery Profiles

APIs for managing Shopify delivery profiles, shipping rates, zones, and free shipping configuration for subscription memberships

Operations

Customer Discount History

APIs for retrieving historical discount code usage and redemption information for membership contracts

Operations

Cancellation Flow Configuration

APIs for managing membership cancellation flow settings including retention offers, survey questions, and cancel confirmation screens

Operations

Billing & Orders

APIs for managing membership billing attempts, recurring orders, payment retries, order history, and order skipping

Operations

One-Time Add-Ons

APIs for managing one-time product additions to upcoming subscription orders, including adding, retrieving, and removing one-off items

Operations

Membership Plans

APIs for managing membership/subscription plan groups, including creating plans, configuring discounts, billing intervals, and assigning products to plans

Operations

Product Bundles

APIs for managing subscription product bundles, bundle configurations, item grouping, and bundle-specific discount codes

Operations

Custom CSS Styling

APIs for retrieving custom CSS styles applied to subscription widgets and customer portal for theme customization

Operations

Customer Portal Configuration

APIs for managing customer portal settings including UI customization, text labels, feature toggles, and branding options for the member self-service portal

Operations

Membership Contracts

APIs for managing membership/subscription contracts including creation, updates, status changes, line items, discounts, and billing operations

Operations

Update custom attributes on subscription line item

Request

Updates custom attributes (metadata) on a specific subscription line item. Attributes allow storing custom key-value data on individual products in a subscription.

Attribute Update Process:

  • Line Item Identification: Locates specific line item using GraphQL line ID
  • Attribute Replacement: Replaces existing attributes with new list
  • Contract Update: Syncs changes to Shopify subscription contract
  • Activity Logging: Records attribute modification event
  • Freeze Validation: Ensures subscription isn't frozen before updates

Custom Attributes:

  • Key-Value Pairs: Store arbitrary metadata on line items
  • Flexible Data: Supports text, numbers, JSON as values
  • Per-Item Storage: Each line item has independent attributes
  • Order Propagation: Attributes carry forward to generated orders

Attribute Structure:

[
  {"key": "gift_message", "value": "Happy Birthday!"},
  {"key": "custom_option", "value": "medium_roast"},
  {"key": "special_instructions", "value": "Leave at door"}
]

Line ID Format:

  • GraphQL ID format: gid://shopify/SubscriptionLine/[ID]
  • Retrieve from subscription contract details endpoint
  • Each line item has unique ID

Use Cases:

  • Store gift message customizations per product
  • Track product-specific preferences (roast level, flavor, size)
  • Custom delivery instructions for specific items
  • Personalization options (monogram, engraving text)
  • Build-a-box selection metadata
  • Product customization workflows
  • Integration data synchronization

Important Notes:

  • Attributes are replaced, not merged (send all desired attributes)
  • Maximum 250 characters per value
  • Subscription must not be frozen
  • Attributes visible in Shopify admin and order details

Returns: Updated subscription contract object with modified attributes

Authentication: Requires API key authentication via X-API-Key header or api_key parameter

Query
contractIdinteger(int64)required

Subscription contract ID

Example: contractId=123456789
api_keystring

API Key (Deprecated - Use Header X-API-Key instead)

lineIdstringrequired

Subscription line item GraphQL ID

Example: lineId=gid://shopify/SubscriptionLine/987654321
Headers
X-API-Keystring
Bodyapplication/jsonrequired

List of custom attributes as key-value pairs

Array [
keystring
valuestring
]
curl -i -X PUT \
  'https://membership-admin.appstle.com/api/external/v2/subscription-contracts-update-line-item-attributes?contractId=123456789&api_key=string&lineId=gid%3A%2F%2Fshopify%2FSubscriptionLine%2F987654321' \
  -H 'Content-Type: application/json' \
  -H 'X-API-Key: string' \
  -d '[
    {
      "key": "string",
      "value": "string"
    }
  ]'

Responses

Line item attributes successfully updated

Bodyapplication/json
get__typenamestring
idstring
createdAtobject
updatedAtobject
nextBillingDateobject
statusstring
Enum"ACTIVE""PAUSED""CANCELLED""EXPIRED""FAILED""$UNKNOWN"
deliveryPriceobject(DeliveryPrice)
lastPaymentStatusstring
Enum"SUCCEEDED""FAILED""$UNKNOWN"
billingPolicyobject(BillingPolicy)
deliveryPolicyobject(DeliveryPolicy)
linesobject(Lines)
customerPaymentMethodobject(CustomerPaymentMethod)
deliveryMethodobject(DeliveryMethod)
originOrderobject(OriginOrder)
customerobject(Customer)
discountsobject(Discounts)
notestring
customAttributesArray of objects(CustomAttribute1)
billingAttemptsobject(BillingAttempts)
Response
application/json
{ "get__typename": "string", "id": "string", "createdAt": {}, "updatedAt": {}, "nextBillingDate": {}, "status": "ACTIVE", "deliveryPrice": { "get__typename": "string", "amount": {}, "currencyCode": "USD" }, "lastPaymentStatus": "SUCCEEDED", "billingPolicy": { "get__typename": "string", "interval": "DAY", "intervalCount": 0, "anchors": [], "maxCycles": 0, "minCycles": 0 }, "deliveryPolicy": { "get__typename": "string", "interval": "DAY", "intervalCount": 0, "anchors": [] }, "lines": { "get__typename": "string", "nodes": [], "pageInfo": {} }, "customerPaymentMethod": { "get__typename": "string", "id": "string", "instrument": {}, "revokedAt": {}, "revokedReason": "AUTHORIZE_NET_GATEWAY_NOT_ENABLED" }, "deliveryMethod": { "get__typename": "string", "id": "string", "methodType": "SHIPPING", "serviceCode": "string", "minDeliveryDateTime": {}, "maxDeliveryDateTime": {}, "additionalInformation": {}, "brandedPromise": {} }, "originOrder": { "get__typename": "string", "id": "string", "name": "string", "fulfillmentOrders": {} }, "customer": { "get__typename": "string", "id": "string", "email": "string", "displayName": "string", "firstName": "string", "lastName": "string", "phone": "string" }, "discounts": { "get__typename": "string", "nodes": [], "pageInfo": {} }, "note": "string", "customAttributes": [ {} ], "billingAttempts": { "get__typename": "string", "nodes": [] } }

Update delivery interval for subscription contract

Request

Changes the delivery/shipping frequency of a subscription contract. This allows customers to modify how often they receive their subscription orders.

Key Features:

  • Flexible Delivery: Change delivery frequency (daily, weekly, monthly, yearly)
  • Custom Intervals: Set custom interval counts (e.g., every 2 weeks, every 3 months)
  • Independent from Billing: Delivery interval can differ from billing interval
  • Immediate Effect: Changes apply to the next delivery cycle
  • Activity Logging: All changes are logged for audit trail

Delivery Interval Options:

  • DAY: Daily delivery (intervalCount: how many days)
  • WEEK: Weekly delivery (intervalCount: how many weeks)
  • MONTH: Monthly delivery (intervalCount: how many months)
  • YEAR: Yearly delivery (intervalCount: how many years)

Common Examples:

  • intervalCount=1, interval=MONTH: Deliver monthly
  • intervalCount=2, interval=WEEK: Deliver every 2 weeks
  • intervalCount=3, interval=MONTH: Deliver quarterly
  • intervalCount=1, interval=WEEK: Deliver weekly
  • intervalCount=6, interval=MONTH: Deliver twice a year

Billing vs. Delivery Intervals: These can be different! For example:

  • Bill monthly, deliver weekly: Customer pays monthly but receives weekly shipments
  • Bill quarterly, deliver monthly: Customer pays every 3 months but receives monthly shipments
  • Bill annually, deliver monthly: Customer pays yearly upfront for monthly deliveries

Common Use Cases:

  • Customer wants deliveries less frequently (save on shipping)
  • Customer wants deliveries more frequently (use products faster)
  • Adjust delivery to match consumption rate
  • Seasonal frequency changes (more in summer, less in winter)
  • Align deliveries with schedule (delivery when home from vacation)

Important Notes:

  • Billing Date Unchanged: Only affects delivery schedule, not billing schedule
  • Next Delivery Date: System recalculates next delivery date based on new interval
  • Order Fulfillment: Each delivery creates a new order at the specified interval
  • Prepaid Memberships: Particularly useful for prepaid plans with multiple deliveries

Authentication: Requires API key authentication via X-API-Key header or api_key parameter

Query
contractIdinteger(int64)required

Subscription contract ID

Example: contractId=12345
api_keystring

API Key (Deprecated - Use Header X-API-Key instead)

deliveryIntervalCountstring>= 1required

Number of intervals between deliveries

Example: deliveryIntervalCount=1
deliveryIntervalstringrequired

Delivery interval unit

Enum"DAY""WEEK""MONTH""YEAR"
Example: deliveryInterval=MONTH
Headers
X-API-Keystring
curl -i -X PUT \
  'https://membership-admin.appstle.com/api/external/v2/subscription-contracts-update-delivery-interval?contractId=12345&api_key=string&deliveryIntervalCount=1&deliveryInterval=MONTH' \
  -H 'X-API-Key: string'

Responses

Delivery interval successfully updated

Bodyapplication/json
get__typenamestring
idstring
createdAtobject
updatedAtobject
nextBillingDateobject
statusstring
Enum"ACTIVE""PAUSED""CANCELLED""EXPIRED""FAILED""$UNKNOWN"
deliveryPriceobject(DeliveryPrice)
lastPaymentStatusstring
Enum"SUCCEEDED""FAILED""$UNKNOWN"
billingPolicyobject(BillingPolicy)
deliveryPolicyobject(DeliveryPolicy)
linesobject(Lines)
customerPaymentMethodobject(CustomerPaymentMethod)
deliveryMethodobject(DeliveryMethod)
originOrderobject(OriginOrder)
customerobject(Customer)
discountsobject(Discounts)
notestring
customAttributesArray of objects(CustomAttribute1)
billingAttemptsobject(BillingAttempts)
Response
application/json
{ "get__typename": "string", "id": "string", "createdAt": {}, "updatedAt": {}, "nextBillingDate": {}, "status": "ACTIVE", "deliveryPrice": { "get__typename": "string", "amount": {}, "currencyCode": "USD" }, "lastPaymentStatus": "SUCCEEDED", "billingPolicy": { "get__typename": "string", "interval": "DAY", "intervalCount": 0, "anchors": [], "maxCycles": 0, "minCycles": 0 }, "deliveryPolicy": { "get__typename": "string", "interval": "DAY", "intervalCount": 0, "anchors": [] }, "lines": { "get__typename": "string", "nodes": [], "pageInfo": {} }, "customerPaymentMethod": { "get__typename": "string", "id": "string", "instrument": {}, "revokedAt": {}, "revokedReason": "AUTHORIZE_NET_GATEWAY_NOT_ENABLED" }, "deliveryMethod": { "get__typename": "string", "id": "string", "methodType": "SHIPPING", "serviceCode": "string", "minDeliveryDateTime": {}, "maxDeliveryDateTime": {}, "additionalInformation": {}, "brandedPromise": {} }, "originOrder": { "get__typename": "string", "id": "string", "name": "string", "fulfillmentOrders": {} }, "customer": { "get__typename": "string", "id": "string", "email": "string", "displayName": "string", "firstName": "string", "lastName": "string", "phone": "string" }, "discounts": { "get__typename": "string", "nodes": [], "pageInfo": {} }, "note": "string", "customAttributes": [ {} ], "billingAttempts": { "get__typename": "string", "nodes": [] } }

Update billing interval for subscription contract

Request

Changes the billing frequency of a subscription contract. This allows customers to modify how often they are charged for their membership.

Key Features:

  • Flexible Billing: Change billing frequency (daily, weekly, monthly, yearly)
  • Custom Intervals: Set custom interval counts (e.g., every 2 weeks, every 3 months)
  • Immediate Effect: Changes apply to the next billing cycle
  • Independent from Delivery: Billing interval can differ from delivery interval
  • Activity Logging: All changes are logged for audit trail

Billing Interval Options:

  • DAY: Daily billing (intervalCount: how many days)
  • WEEK: Weekly billing (intervalCount: how many weeks)
  • MONTH: Monthly billing (intervalCount: how many months)
  • YEAR: Yearly billing (intervalCount: how many years)

Common Examples:

  • intervalCount=1, interval=MONTH: Bill monthly
  • intervalCount=2, interval=WEEK: Bill every 2 weeks
  • intervalCount=3, interval=MONTH: Bill quarterly
  • intervalCount=6, interval=MONTH: Bill semi-annually
  • intervalCount=1, interval=YEAR: Bill annually

Common Use Cases:

  • Customer wants to change from monthly to quarterly billing
  • Switch from annual to monthly payments
  • Adjust billing frequency to match cash flow
  • Promotional frequency changes
  • Align billing with payday schedules

Important Notes:

  • Next Billing Date: System recalculates the next billing date based on new interval
  • Pro-rata Billing: No pro-rata adjustment; new interval starts from next billing date
  • Minimum Cycles: Respects minimum billing cycle requirements if configured
  • Customer Portal Protection: Includes freeze checks if called from customer portal

Authentication: Requires API key authentication via X-API-Key header or api_key parameter

Query
contractIdinteger(int64)required

Subscription contract ID

Example: contractId=12345
api_keystring

API Key (Deprecated - Use Header X-API-Key instead)

intervalCountstring>= 1required

Number of intervals between billings

Example: intervalCount=1
intervalstringrequired

Billing interval unit

Enum"DAY""WEEK""MONTH""YEAR"
Example: interval=MONTH
Headers
X-API-Keystring
curl -i -X PUT \
  'https://membership-admin.appstle.com/api/external/v2/subscription-contracts-update-billing-interval?contractId=12345&api_key=string&intervalCount=1&interval=MONTH' \
  -H 'X-API-Key: string'

Responses

Billing interval successfully updated

Bodyapplication/json
get__typenamestring
idstring
createdAtobject
updatedAtobject
nextBillingDateobject
statusstring
Enum"ACTIVE""PAUSED""CANCELLED""EXPIRED""FAILED""$UNKNOWN"
deliveryPriceobject(DeliveryPrice)
lastPaymentStatusstring
Enum"SUCCEEDED""FAILED""$UNKNOWN"
billingPolicyobject(BillingPolicy)
deliveryPolicyobject(DeliveryPolicy)
linesobject(Lines)
customerPaymentMethodobject(CustomerPaymentMethod)
deliveryMethodobject(DeliveryMethod)
originOrderobject(OriginOrder)
customerobject(Customer)
discountsobject(Discounts)
notestring
customAttributesArray of objects(CustomAttribute1)
billingAttemptsobject(BillingAttempts)
Response
application/json
{ "get__typename": "string", "id": "string", "createdAt": {}, "updatedAt": {}, "nextBillingDate": {}, "status": "ACTIVE", "deliveryPrice": { "get__typename": "string", "amount": {}, "currencyCode": "USD" }, "lastPaymentStatus": "SUCCEEDED", "billingPolicy": { "get__typename": "string", "interval": "DAY", "intervalCount": 0, "anchors": [], "maxCycles": 0, "minCycles": 0 }, "deliveryPolicy": { "get__typename": "string", "interval": "DAY", "intervalCount": 0, "anchors": [] }, "lines": { "get__typename": "string", "nodes": [], "pageInfo": {} }, "customerPaymentMethod": { "get__typename": "string", "id": "string", "instrument": {}, "revokedAt": {}, "revokedReason": "AUTHORIZE_NET_GATEWAY_NOT_ENABLED" }, "deliveryMethod": { "get__typename": "string", "id": "string", "methodType": "SHIPPING", "serviceCode": "string", "minDeliveryDateTime": {}, "maxDeliveryDateTime": {}, "additionalInformation": {}, "brandedPromise": {} }, "originOrder": { "get__typename": "string", "id": "string", "name": "string", "fulfillmentOrders": {} }, "customer": { "get__typename": "string", "id": "string", "email": "string", "displayName": "string", "firstName": "string", "lastName": "string", "phone": "string" }, "discounts": { "get__typename": "string", "nodes": [], "pageInfo": {} }, "note": "string", "customAttributes": [ {} ], "billingAttempts": { "get__typename": "string", "nodes": [] } }

Bundle Settings

APIs for managing subscription bundle configuration settings including bundle behavior, pricing rules, and display options

Operations

Customer Payment Methods

APIs for managing customer payment methods, payment tokens, and payment method retrieval for subscriptions

Operations

Product Swap Rules

APIs for retrieving product swap/substitution options allowing members to exchange subscription items based on configured swap rules and variant groups

Operations

Subscription Contract Management

Operations

Subscription Billing

Operations

Billing Attempts

Operations