# Update membership contract status Updates the status of an existing membership contract (ACTIVE, PAUSED, CANCELLED, or EXPIRED). This is one of the most critical operations for managing membership lifecycles. Supported Status Values: - ACTIVE: Membership is active and will process recurring billing - PAUSED: Membership is temporarily paused, no billing will occur - CANCELLED: Membership is permanently cancelled, no future billing - EXPIRED: Membership has expired (typically used when max cycles reached) Pause Duration: - When pausing, you can optionally specify pauseDurationCycle to auto-resume after N cycles - If not specified, membership remains paused until manually reactivated Business Rules & Validations: - Customer Portal Restrictions: When called from customer portal, additional validations apply: - Cannot modify frozen memberships (freeze till min cycle condition) - Must respect billing cycle limits configured by merchant - Contract Validation: System validates that the contract belongs to the authenticated shop - Activity Logging: All status changes are logged with source (merchant portal vs customer portal) Use Cases: - Customer wants to pause their membership temporarily - Merchant needs to cancel a membership due to customer request - Reactivating a paused membership - Marking membership as expired when max cycles reached Authentication: Requires authenticated shop user or customer portal token Endpoint: PUT /memberships/cp/api/subscription-contracts-update-status Version: 0.0.1 ## Query parameters: - `contractId` (integer, required) Membership contract ID (numeric ID, not Shopify GID) Example: 123456789 - `status` (string, required) New status value Enum: "ACTIVE", "PAUSED", "CANCELLED", "EXPIRED" - `pauseDurationCycle` (integer) Optional pause duration in billing cycles. When specified, membership will auto-resume after N cycles Example: 2 ## Response 204 fields ## Response 400 fields ## Response 401 fields ## Response 500 fields