# List Protocols Retrieve a paginated list of protocols with optional search Endpoint: GET /protocols Version: 1.0.2 Security: oauth2ClientCredentials ## Query parameters: - `limit` (integer) Maximum number of results per page - `cursor` (string) Pagination cursor for retrieving next/previous page - `direction` (string) Direction for pagination (next or previous) Enum: "next", "previous" - `search` (string) Search protocols by customer name Example: "John Doe" ## Response 200 fields (application/json): - `protocols` (array) - `protocols.id` (string) Unique protocol identifier Example: "2vSGym0bH8qVEwCIGlyFoRgJq1A" - `protocols.customer` (object) Customer information - `protocols.customer.sourceId` (string, required) Unique customer identifier in the partner system Example: "1234567890" - `protocols.customer.firstName` (string, required) Customer's first name Example: "John" - `protocols.customer.lastName` (string, required) Customer's last name Example: "Doe" - `protocols.customer.email` (string) Customer's email address Example: "john.doe@example.com" - `protocols.customer.phone` (string) Customer's phone number Example: "1234567890" - `protocols.customer.address` (object, required) Physical address information - `protocols.customer.address.line1` (string, required) Primary address line Example: "437 Lytton" - `protocols.customer.address.line2` (string) Secondary address line (optional) Example: "Suite 100" - `protocols.customer.address.city` (string, required) City name Example: "Palo Alto" - `protocols.customer.address.state` (string, required) State or province code Example: "CA" - `protocols.customer.address.zipCode` (string, required) Postal/ZIP code (5 digits) Example: "94301" - `protocols.daysSupply` (integer) Number of days the protocol is intended to supply Enum: 30, 60, 90 - `protocols.orderType` (string) Order type (one-time or subscription) Enum: "ONE_TIME", "SUBSCRIPTION" - `protocols.shippingMethod` (string) Selected shipping method Enum: "STANDARD", "EXPRESS", "OVERNIGHT" - `protocols.discount` (string) Discount percentage applied Example: "10%" - `protocols.lineItems` (array) Products included in the protocol - `protocols.lineItems.productId` (integer) Unique identifier of the product Example: 77123129891 - `protocols.lineItems.name` (string) Product name Example: "Elite EPA" - `protocols.lineItems.quantity` (integer) Quantity of the product Example: 2 - `protocols.lineItems.packDescription` (string) Description of the product packaging Example: "Whole Body Wellness" - `protocols.lineItems.price` (string) Per pill price of product Example: "0.37" - `protocols.lineItems.discountedPrice` (string) Per pill price with partner discount applied Example: "0.33" - `protocols.lineItems.totalPrice` (string) Total price for this line item Example: "29.70" - `protocols.lineItems.external` (boolean) Whether this is an external product - `protocols.lineItems.imageUrl` (string) URL to the product image Example: "https://example.com/images/elite-epa.jpg" - `protocols.lineItems.administration` (object) Dosage schedule information specifying how many pills to take at each time of day. Note: The sum of morning + afternoon + evening + sleep must equal the line item quantity. - `protocols.lineItems.administration.morning` (integer, required) Morning dosage quantity Example: 1 - `protocols.lineItems.administration.afternoon` (integer, required) Afternoon dosage quantity - `protocols.lineItems.administration.evening` (integer, required) Evening dosage quantity Example: 1 - `protocols.lineItems.administration.sleep` (integer, required) Bedtime dosage quantity - `protocols.subtotalPrice` (string) Protocol subtotal amount Example: "30.00" - `protocols.totalDiscount` (string) Total discount amount Example: "3.00" - `protocols.totalFees` (string) Total handling fees for external products Example: "5.00" - `protocols.totalVolumeDiscount` (string) Additional volume discount Example: "0.00" - `protocols.totalShipping` (string) Shipping cost Example: "9.99" - `protocols.totalPrice` (string) Total protocol amount Example: "41.99" - `protocols.createdAt` (string) Protocol creation timestamp Example: "2023-10-01T12:00:00Z" - `protocols.updatedAt` (string) Protocol last update timestamp Example: "2023-10-01T12:00:00Z" - `cursor` (string) Pagination cursor for retrieving next/previous page Example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." ## Response 400 fields (application/json): - `detail` (string, required) Detailed error message explaining the bad request Example: "Invalid request parameters"