# Get products data with pagination Retrieves paginated product catalog data from Shopify, optionally filtered by search term, selling plans, or subscription contracts. This endpoint provides access to your store's product catalog with subscription-specific information. What This Endpoint Returns: Product information including: - Product ID, title, handle, and description - Product images and media - Variants with pricing and availability - Associated selling plans (subscription plans) - Product status and tags - Vendor and product type Pagination: Uses cursor-based pagination for efficient data retrieval: - next=true - Get next page of results - cursor - Pagination cursor from previous response - Returns cursor for next page in response Filtering Options: 1. Search (search parameter): - Search by product title, description, or SKU - Partial matching supported - Case-insensitive 2. Selling Plan Filter (sellingPlanIds parameter): - Filter products by subscription plans - Comma-separated list of selling plan IDs - Only returns products with specified plans 3. Contract Filter (contractId parameter): - Get products available for specific subscription - Useful for product swap functionality - Returns products compatible with contract Use Cases: - Display product catalog in custom subscription UI - Build product selection for subscription creation - Implement product swap functionality - Search products for subscription management - Sync product data to external systems Authentication: Requires valid api_key parameter Endpoint: GET /subscriptions/cp/api/data/products Version: 0.0.1 ## Query parameters: - `search` (string) - `next` (boolean) - `cursor` (string) - `contractId` (integer) - `sellingPlanIds` (string) - `sendAllData` (boolean) - `purchaseOption` (string) ## Response 200 fields (*/*): - `products` (array) - `products.get__typename` (string) - `products.id` (string) - `products.title` (string) - `products.handle` (string) - `products.status` (string) Enum: "ACTIVE", "ARCHIVED", "DRAFT", "UNLISTED", "$UNKNOWN" - `pageInfo` (object) - `pageInfo.hasPreviousPage` (boolean) - `pageInfo.hasNextPage` (boolean) - `pageInfo.startCursor` (string) - `pageInfo.endCursor` (string) - `productHandleData` (object) ## Response 400 fields (*/*): - `products` (array) - `products.get__typename` (string) - `products.id` (string) - `products.title` (string) - `products.handle` (string) - `products.status` (string) Enum: "ACTIVE", "ARCHIVED", "DRAFT", "UNLISTED", "$UNKNOWN" - `pageInfo` (object) - `pageInfo.hasPreviousPage` (boolean) - `pageInfo.hasNextPage` (boolean) - `pageInfo.startCursor` (string) - `pageInfo.endCursor` (string) - `productHandleData` (object) ## Response 401 fields (*/*): - `products` (array) - `products.get__typename` (string) - `products.id` (string) - `products.title` (string) - `products.handle` (string) - `products.status` (string) Enum: "ACTIVE", "ARCHIVED", "DRAFT", "UNLISTED", "$UNKNOWN" - `pageInfo` (object) - `pageInfo.hasPreviousPage` (boolean) - `pageInfo.hasNextPage` (boolean) - `pageInfo.startCursor` (string) - `pageInfo.endCursor` (string) - `productHandleData` (object)