# 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,null)
    Customer's email address
    Example: "john.doe@example.com"

  - `protocols.customer.phone` (string,null)
    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,null)
    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,null)
    Number of days the protocol is intended to supply. Nullable: protocols created via flows where days-supply lives on the subscription (not the protocol) return null here.
    Example: 30

  - `protocols.orderType` (string,null)
    Order type (one-time or subscription). Nullable: protocols created via flows where the order type is decided at checkout time return null here.
    Enum: "ONE_TIME", "SUBSCRIPTION"

  - `protocols.shippingMethod` (string,null)
    Selected shipping method. Nullable: protocols created via flows where shipping is decided on the subscription return null here.
    Enum: "STANDARD", "EXPRESS", "OVERNIGHT"

  - `protocols.discount` (string,null)
    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,null)
    URL to the product image
    Example: "https://example.com/images/elite-epa.jpg"

  - `protocols.lineItems.administration` (object,null)
    Dosage schedule information specifying how many pills to take at each time of day.

Null for external products (powders, liquids, standalone items outside the pill pack). For pack products, 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,null)
    Protocol subtotal amount. Nullable: pricing is computed at checkout time for protocols created via modern flows.
    Example: "30.00"

  - `protocols.totalDiscount` (string,null)
    Total discount amount
    Example: "3.00"

  - `protocols.totalFees` (string,null)
    Total handling fees for external products
    Example: "5.00"

  - `protocols.totalVolumeDiscount` (string,null)
    Additional volume discount
    Example: "0.00"

  - `protocols.totalShipping` (string,null)
    Shipping cost
    Example: "9.99"

  - `protocols.totalPrice` (string,null)
    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,null)
    Pagination cursor for retrieving next/previous page. Null when there are no more pages in the requested direction.
    Example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."

## Response 400 fields (application/json):

  - `detail` (string, required)
    Detailed error message explaining the bad request
    Example: "Invalid request parameters"


