openapi: 3.0.3
info:
  title: Laravel
  description: "Developer documentation for Lindris, the ROI-driven email marketing platform that's both powerful and affordable."
  version: 1.0.0
servers:
  -
    url: 'https://api.lindris.com'
tags:
  -
    name: Account
    description: "\nAPIs for managing your Lindris account.\n\n<!--@include: ../parts/authentication-reminder.md-->"
  -
    name: 'Drip Series'
    description: "\nAPIs for managing drip series (automated email sequences) in your Lindris account.\n\n<!--@include: ../parts/authentication-reminder.md-->"
  -
    name: Events
    description: "\nAPIs for tracking events in your Lindris account.\n\n<!--@include: ../parts/authentication-reminder.md-->"
  -
    name: Fields
    description: "\nAPIs for managing custom fields in your Lindris account.\n\n<!--@include: ../parts/authentication-reminder.md-->"
  -
    name: People
    description: "\nAPIs for managing people (contacts) in your Lindris account.\n\n<!--@include: ../parts/authentication-reminder.md-->"
  -
    name: Tags
    description: "\nAPIs for managing tags in your Lindris account.\n\n<!--@include: ../parts/authentication-reminder.md-->"
components:
  securitySchemes:
    default:
      type: http
      scheme: bearer
      description: 'You can retrieve your API Key by visiting your dashboard and clicking <b>Create API Key</b>.'
security:
  -
    default: []
paths:
  /api/account:
    get:
      summary: 'Get account details'
      operationId: getAccountDetails
      description: "Retrieve details about the account associated with the authenticated API key.\nThis endpoint is useful for integration services to verify account information\nand display relevant account details in their interface."
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    id: 123aBc
                    company: 'Awesome Company'
                    email: account@example.com
                    phone: '+1234567890'
                    status: active
                    createdAt: '2024-01-19T08:30:00Z'
                    timezone: America/New_York
                    logoUrl: 'https://cdn.lindris.com/uploads/logos/company-logo.png'
                    plan:
                      marketing: free
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        example: 123aBc
                        description: "The unique identifier for the account.\n                                             Example: 12345"
                        enum: []
                      company:
                        type: string
                        example: 'Awesome Company'
                        description: "The account company name.\n                                             Example: Awesome Company"
                        enum: []
                      email:
                        type: string
                        example: account@example.com
                        description: "The account's primary email address.\n                                             No-example"
                        enum: []
                      phone:
                        type: string
                        example: '+1234567890'
                        description: "The account's primary phone number.\n                                             Example: +1234567890"
                        enum: []
                      status:
                        type: string
                        example: active
                        description: "The account's current status.\n                                             Enum: active,suspended,cancelled\n                                             Example: active"
                        enum: []
                      createdAt:
                        type: string
                        example: '2024-01-19T08:30:00Z'
                        description: "ISO 8601 datetime when the account was created.\n                                             Example: 2024-01-19T08:30:00Z"
                        enum: []
                      timezone:
                        type: string
                        example: America/New_York
                        description: "The account's timezone in IANA format.\n                                             Example: America/New_York"
                        enum: []
                      logoUrl:
                        type: string
                        example: 'https://cdn.lindris.com/uploads/logos/company-logo.png'
                        description: "The account's logo URL. Empty string if no logo is set.\n                                             Example: https://example.com/uploads/logos/logo.png"
                        enum: []
                      plan:
                        type: object
                        properties:
                          marketing:
                            type: string
                            example: free
                        description: "The account's marketing plan data.\n                                             Example: {\"marketing\": \"free\"}"
        401:
          description: Unauthenticated
          content:
            application/json:
              schema:
                type: object
                example:
                  message: Unauthenticated
                properties:
                  message:
                    type: string
                    example: Unauthenticated
      tags:
        - Account
  /api/authenticated:
    get:
      summary: 'Verify connection and authentication'
      operationId: verifyConnectionAndAuthentication
      description: "This endpoint allows you to verify that you have successfully\nconnected to the API and are authenticated."
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    authenticated: true
                properties:
                  data:
                    type: object
                    properties:
                      authenticated:
                        type: boolean
                        example: true
      tags:
        - Account
  '/api/account/website-tracker/{mode}':
    get:
      summary: 'Get website tracker javascript'
      operationId: getWebsiteTrackerJavascript
      description: "This endpoint gives you the website tracker javascript code and details.\nReturns the appropriate JavaScript snippet based on your needs, defaulting to the modern mode."
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    mode: modern
                    snippet: '<script>...'
                    lastEventTrackedAt: 1709306226
                properties:
                  data:
                    type: object
                    properties:
                      mode:
                        type: string
                        example: modern
                      snippet:
                        type: string
                        example: '<script>...'
                      lastEventTrackedAt:
                        type: integer
                        example: 1709306226
      tags:
        - Account
    parameters:
      -
        in: path
        name: mode
        description: "Optional parameter. optional The mode of the tracker code to return:\n    - **modern (default)**: Smaller modularized build using ES modules. Best for modern browsers.\n    - **legacy**: Larger build compatible with older browsers.\n    - **compat**: Most compatible mode that auto-selects between modern/legacy\n                  based on browser support using module/nomodule pattern."
        required: true
        schema:
          type: string
        examples:
          omitted:
            summary: 'When the value is omitted'
            value: ''
          present:
            summary: 'When the value is present'
            value: modern
  /api/series:
    get:
      summary: 'List drip series'
      operationId: listDripSeries
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    -
                      id: 01hrhe0xbm3c1h5eaqde575x0j
                      name: 'New product onboarding'
                    -
                      id: 01hsfhrv3bmxqtcf7trvfk39hd
                      name: 'Welcome series'
                properties:
                  data:
                    type: array
                    example:
                      -
                        id: 01hrhe0xbm3c1h5eaqde575x0j
                        name: 'New product onboarding'
                      -
                        id: 01hsfhrv3bmxqtcf7trvfk39hd
                        name: 'Welcome series'
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          example: 01hrhe0xbm3c1h5eaqde575x0j
                        name:
                          type: string
                          example: 'New product onboarding'
      tags:
        - 'Drip Series'
  /api/events:
    post:
      summary: 'Track a generic custom event'
      operationId: trackAGenericCustomEvent
      description: ''
      parameters: []
      responses:
        200:
          description: 'when successfully tracked'
          content:
            application/json:
              schema:
                type: object
                example:
                  success: true
                  timestamp: 1710969645
                properties:
                  success:
                    type: boolean
                    example: true
                  timestamp:
                    type: integer
                    example: 1710969645
        422:
          description: 'Validation error'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The given data was invalid.'
                  errors:
                    eventName:
                      - 'The event name field is required.'
                    source:
                      - 'The source field is required.'
                    email:
                      - 'The email field is required when reference id is not present.'
                properties:
                  message:
                    type: string
                    example: 'The given data was invalid.'
                  errors:
                    type: object
                    properties:
                      eventName:
                        type: array
                        example:
                          - 'The event name field is required.'
                        items:
                          type: string
                      source:
                        type: array
                        example:
                          - 'The source field is required.'
                        items:
                          type: string
                      email:
                        type: array
                        example:
                          - 'The email field is required when reference id is not present.'
                        items:
                          type: string
      tags:
        - Events
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                eventName:
                  type: string
                  description: 'Required. Event name to be tracked.'
                  example: clicked_home_cta
                email:
                  type: string
                  description: "Optional. The person's email address. Either email or referenceId must be provided."
                  example: null
                referenceId:
                  type: mixed
                  description: "Optional. The person's unique identifier. Either email or referenceId must be provided.\n                               Numeric values will be cast to strings."
                  example: cust_123456
                uuid:
                  type: string
                  description: 'Optional. The uuid from a previous event response. Can be used instead of email or referenceId.'
                  example: 318835f4-f968-4894-9847-358399823d6c
                source:
                  type: string
                  description: 'Required. The e-commerce/platform source.'
                  example: woocommerce
                properties:
                  type: array
                  description: 'Optional. A key-value pair of event properties to be tracked.'
                  example: null
                  items:
                    type: string
                silent:
                  type: boolean
                  description: 'Optional. If true, no workflow automations will be triggered, but the event will be stored.'
                  example: true
                test:
                  type: boolean
                  description: "Optional. If true, no event will be added but response will be returned.\n                               Useful for testing the event properties without storing the event. Response is representative only."
                  example: true
  '/api/events/cart/{action}':
    post:
      summary: 'Track a cart event'
      operationId: trackACartEvent
      description: 'For tracking cart lifecycle events'
      parameters: []
      responses:
        200:
          description: 'when successfully tracked'
          content:
            application/json:
              schema:
                type: object
                example:
                  success: true
                  timestamp: 1710969645
                properties:
                  success:
                    type: boolean
                    example: true
                  timestamp:
                    type: integer
                    example: 1710969645
        422:
          description: 'Validation error'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The given data was invalid.'
                  errors:
                    source:
                      - 'The source field is required.'
                    id:
                      - 'The id field is required.'
                    email:
                      - 'The email field is required when reference id is not present.'
                properties:
                  message:
                    type: string
                    example: 'The given data was invalid.'
                  errors:
                    type: object
                    properties:
                      source:
                        type: array
                        example:
                          - 'The source field is required.'
                        items:
                          type: string
                      id:
                        type: array
                        example:
                          - 'The id field is required.'
                        items:
                          type: string
                      email:
                        type: array
                        example:
                          - 'The email field is required when reference id is not present.'
                        items:
                          type: string
      tags:
        - Events
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  description: "Optional. The person's email address. Either email or referenceId must be provided."
                  example: null
                referenceId:
                  type: mixed
                  description: "Optional. The person's unique identifier. Either email or referenceId must be provided.\n                                        Numeric values will be cast to strings."
                  example: cust_123456
                uuid:
                  type: string
                  description: 'Optional. The uuid from a previous event response. Can be used instead of email or referenceId.'
                  example: 318835f4-f968-4894-9847-358399823d6c
                source:
                  type: string
                  description: 'Required. The e-commerce platform source.'
                  example: woocommerce
                id:
                  type: mixed
                  description: "Optional. The unique identifier for the cart, usually a cart session ID or similar.\n                                        Numeric values will be cast to strings."
                  example: cart_123456
                occurredAt:
                  type: string
                  description: 'Optional. The timestamp when this action occurred.'
                  example: '2024-03-21T15:30:00Z'
                products:
                  type: array
                  description: 'Optional. The products in the cart.'
                  example: null
                  items:
                    type: object
                    properties:
                      '*':
                        type: object
                        description: ''
                        example:
                          id: prod_123
                        properties:
                          id:
                            type: mixed
                            description: "Required. The unique identifier for the product.\n                                        Numeric values will be cast to strings."
                            example: prod_123
                          name:
                            type: string
                            description: 'Required. The name of the product.'
                            example: 'Awesome T-Shirt'
                          url:
                            type: string
                            description: 'Optional. A URL to the site containing the product details.'
                            example: 'https://store.example.com/products/awesome-tshirt'
                          image_url:
                            type: string
                            description: 'Optional. A direct URL to an image of the product.'
                            example: 'https://store.example.com/images/awesome-tshirt.jpg'
                          sku:
                            type: string
                            description: 'Optional. The SKU for the product.'
                            example: TSH-001
                          variant_id:
                            type: mixed
                            description: "Optional. The unique identifier for the variant of the product.\n                                        Numeric values will be cast to strings."
                            example: var_123
                          brand:
                            type: string
                            description: 'Optional. The brand name for the product.'
                            example: 'Awesome Brand'
                          price:
                            type: number
                            description: 'Optional. The price of the product.'
                            example: 29.99
                          quantity:
                            type: integer
                            description: 'Optional. The quantity of the product.'
                            example: 2
                          total:
                            type: number
                            description: 'Optional. The line item total after all calculations.'
                            example: 59.98
                          discounts:
                            type: number
                            description: 'Optional. The total discounts applied to this product.'
                            example: 10.0
                          taxes:
                            type: number
                            description: 'Optional. The total taxes for this product.'
                            example: 5.0
                          fees:
                            type: number
                            description: 'Optional. The total fees for this product.'
                            example: 2.0
                          shipping:
                            type: number
                            description: 'Optional. The total shipping for this product.'
                            example: 5.0
                total:
                  type: number
                  description: 'Optional. The total value of the cart.'
                  example: 59.98
                total_products:
                  type: integer
                  description: 'Optional. The total number of products in the cart.'
                  example: 2
                url:
                  type: string
                  description: 'Optional. The URL of the cart.'
                  example: 'https://store.example.com/cart'
                currency:
                  type: string
                  description: 'Optional. The currency code (ISO 4217).'
                  example: USD
                modified_at:
                  type: string
                  description: 'Optional. When the cart was last modified.'
                  example: '2024-03-21T15:30:00Z'
                silent:
                  type: boolean
                  description: 'Optional. If true, no workflow automations will be triggered, but the event will be stored.'
                  example: true
                test:
                  type: boolean
                  description: "Optional. If true, no cart event will be added but response will be returned.\n                                        Useful for testing the event properties without storing the event. Response is representative only."
                  example: true
    parameters:
      -
        in: path
        name: action
        description: 'Optional parameter. Required. The cart event action to track.'
        required: true
        schema:
          type: string
        examples:
          omitted:
            summary: 'When the value is omitted'
            value: ''
          present:
            summary: 'When the value is present'
            value: created
  '/api/events/product/{action}':
    post:
      summary: 'Track a product event'
      operationId: trackAProductEvent
      description: 'For tracking product lifecycle events'
      parameters: []
      responses:
        200:
          description: 'when successfully tracked'
          content:
            application/json:
              schema:
                type: object
                example:
                  success: true
                  timestamp: 1710969645
                properties:
                  success:
                    type: boolean
                    example: true
                  timestamp:
                    type: integer
                    example: 1710969645
        422:
          description: 'Validation error'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The given data was invalid.'
                  errors:
                    source:
                      - 'The source field is required.'
                    id:
                      - 'The id field is required.'
                    email:
                      - 'The email field is required when reference id is not present.'
                properties:
                  message:
                    type: string
                    example: 'The given data was invalid.'
                  errors:
                    type: object
                    properties:
                      source:
                        type: array
                        example:
                          - 'The source field is required.'
                        items:
                          type: string
                      id:
                        type: array
                        example:
                          - 'The id field is required.'
                        items:
                          type: string
                      email:
                        type: array
                        example:
                          - 'The email field is required when reference id is not present.'
                        items:
                          type: string
      tags:
        - Events
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  description: "Optional. The person's email address. Either email or referenceId must be provided."
                  example: null
                referenceId:
                  type: mixed
                  description: "Optional. The person's unique identifier. Either email or referenceId must be provided.\n                                       Numeric values will be cast to strings."
                  example: cust_123456
                uuid:
                  type: string
                  description: 'Optional. The uuid from a previous event response. Can be used instead of email or referenceId.'
                  example: 318835f4-f968-4894-9847-358399823d6c
                source:
                  type: string
                  description: 'Required. The e-commerce platform source.'
                  example: woocommerce
                id:
                  type: mixed
                  description: "Required. The unique identifier for the product.\n                                       Numeric values will be cast to strings."
                  example: prod_123456
                modified_at:
                  type: string
                  description: 'Optional. The timestamp when this product was last modified.'
                  example: '2024-03-21T15:30:00Z'
                created_at:
                  type: string
                  description: 'Optional. The timestamp when this product was created.'
                  example: '2024-03-21T15:30:00Z'
                name:
                  type: string
                  description: 'Optional. The name of the product.'
                  example: 'Awesome T-Shirt'
                description:
                  type: string
                  description: 'Optional. The description of the product.'
                  example: 'A really awesome t-shirt'
                url:
                  type: string
                  description: 'Optional. The URL of the product.'
                  example: 'https://store.example.com/products/awesome-tshirt'
                image_url:
                  type: string
                  description: 'Optional. The URL of the product image.'
                  example: 'https://store.example.com/images/awesome-tshirt.jpg'
                price:
                  type: number
                  description: 'Optional. The price of the product.'
                  example: 29.99
                sku:
                  type: string
                  description: 'Optional. The SKU of the product.'
                  example: TSH-001
                barcode:
                  type: string
                  description: 'Optional. The barcode of the product.'
                  example: '123456789'
                categories:
                  type: array
                  description: 'Optional. The categories of the product.'
                  example:
                    - Clothing
                    - T-Shirts
                  items:
                    type: string
                tags:
                  type: array
                  description: 'Optional. The tags of the product.'
                  example:
                    - summer
                    - sale
                  items:
                    type: string
                vendor:
                  type: string
                  description: 'Optional. The vendor/manufacturer of the product.'
                  example: 'Awesome Brand'
                type:
                  type: string
                  description: 'Optional. The type of the product.'
                  example: T-Shirt
                brand:
                  type: string
                  description: 'Optional. The brand of the product.'
                  example: 'Awesome Brand'
                public_id:
                  type: string
                  description: 'Optional. The public ID of the product.'
                  example: prod_123456
                variant_id:
                  type: string
                  description: 'Optional. The variant ID of the product.'
                  example: var_123
                variants:
                  type: array
                  description: 'Optional. The variants of the product.'
                  example: null
                  items:
                    type: object
                    properties:
                      '*':
                        type: object
                        description: ''
                        example:
                          id: var_123
                        properties:
                          id:
                            type: mixed
                            description: "Required. The unique identifier for the variant.\n                                       Numeric values will be cast to strings."
                            example: var_123
                          sku:
                            type: string
                            description: 'Optional. The SKU for this variant.'
                            example: TSH-001-L
                          price:
                            type: number
                            description: 'Optional. The price for this variant.'
                            example: 29.99
                          barcode:
                            type: string
                            description: 'Optional. The barcode for this variant.'
                            example: 123456789-L
                          options:
                            type: array
                            description: 'Optional. The options that define this variant.'
                            example: null
                            items:
                              type: string
                currency:
                  type: string
                  description: 'Optional. The currency code (ISO 4217).'
                  example: USD
                silent:
                  type: boolean
                  description: 'Optional. If true, no workflow automations will be triggered, but the event will be stored.'
                  example: true
                test:
                  type: boolean
                  description: "Optional. If true, no product event will be added but response will be returned.\n                                       Useful for testing the event properties without storing the event. Response is representative only."
                  example: true
    parameters:
      -
        in: path
        name: action
        description: 'Optional parameter. Required. The product event action to track.'
        required: true
        schema:
          type: string
        examples:
          omitted:
            summary: 'When the value is omitted'
            value: ''
          present:
            summary: 'When the value is present'
            value: viewed
  '/api/events/order/{action}':
    post:
      summary: 'Track an order event'
      operationId: trackAnOrderEvent
      description: 'For tracking order lifecycle events'
      parameters: []
      responses:
        200:
          description: 'when successfully tracked'
          content:
            application/json:
              schema:
                type: object
                example:
                  success: true
                  timestamp: 1710969645
                properties:
                  success:
                    type: boolean
                    example: true
                  timestamp:
                    type: integer
                    example: 1710969645
        422:
          description: 'Validation error'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The given data was invalid.'
                  errors:
                    source:
                      - 'The source field is required.'
                    id:
                      - 'The id field is required.'
                    email:
                      - 'The email field is required when reference id is not present.'
                properties:
                  message:
                    type: string
                    example: 'The given data was invalid.'
                  errors:
                    type: object
                    properties:
                      source:
                        type: array
                        example:
                          - 'The source field is required.'
                        items:
                          type: string
                      id:
                        type: array
                        example:
                          - 'The id field is required.'
                        items:
                          type: string
                      email:
                        type: array
                        example:
                          - 'The email field is required when reference id is not present.'
                        items:
                          type: string
      tags:
        - Events
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  description: "Optional. The person's email address. Either email or referenceId must be provided."
                  example: null
                referenceId:
                  type: mixed
                  description: "Optional. The person's unique identifier. Either email or referenceId must be provided.\n                                               Numeric values will be cast to strings."
                  example: cust_123456
                uuid:
                  type: string
                  description: 'Optional. The uuid from a previous event response. Can be used instead of email or referenceId.'
                  example: 318835f4-f968-4894-9847-358399823d6c
                source:
                  type: string
                  description: 'Required. The e-commerce/platform source.'
                  example: woocommerce
                id:
                  type: mixed
                  description: "Required. The unique identifier for the order.\n                                               Numeric values will be cast to strings."
                  example: order_123456
                occurred_at:
                  type: string
                  description: 'Optional. The timestamp when this action occurred.'
                  example: '2024-03-21T15:30:00Z'
                products:
                  type: array
                  description: 'Optional. The products in the order.'
                  example: null
                  items:
                    type: object
                    properties:
                      '*':
                        type: object
                        description: ''
                        example:
                          id: prod_123
                        properties:
                          id:
                            type: mixed
                            description: "Required. The unique identifier for the product.\n                                               Numeric values will be cast to strings."
                            example: prod_123
                          name:
                            type: string
                            description: 'Required. The name of the product.'
                            example: 'Awesome T-Shirt'
                          url:
                            type: string
                            description: 'Optional. A URL to the site containing the product details.'
                            example: 'https://store.example.com/products/awesome-tshirt'
                          image_url:
                            type: string
                            description: 'Optional. A direct URL to an image of the product.'
                            example: 'https://store.example.com/images/awesome-tshirt.jpg'
                          sku:
                            type: string
                            description: 'Optional. The SKU for the product.'
                            example: TSH-001
                          variant_id:
                            type: mixed
                            description: "Optional. The unique identifier for the variant of the product.\n                                               Numeric values will be cast to strings."
                            example: var_123
                          brand:
                            type: string
                            description: 'Optional. The brand name for the product.'
                            example: 'Awesome Brand'
                          price:
                            type: number
                            description: 'Optional. The price of the product.'
                            example: 29.99
                          quantity:
                            type: integer
                            description: 'Optional. The quantity of the product ordered.'
                            example: 2
                          total:
                            type: number
                            description: 'Optional. The line item total after all calculations.'
                            example: 59.98
                          discounts:
                            type: number
                            description: 'Optional. The total discounts applied to this product.'
                            example: 10.0
                          taxes:
                            type: number
                            description: 'Optional. The total taxes for this product.'
                            example: 5.0
                          fees:
                            type: number
                            description: 'Optional. The total fees for this product.'
                            example: 2.0
                          shipping:
                            type: number
                            description: 'Optional. The total shipping for this product.'
                            example: 5.0
                currency:
                  type: string
                  description: 'Optional. The currency code (ISO 4217).'
                  example: USD
                publicId:
                  type: mixed
                  description: "Optional. The customer-facing order ID.\n                                               Numeric values will be cast to strings."
                  example: '#1001'
                total:
                  type: number
                  description: 'Optional. The total value of the order.'
                  example: 99.99
                shipping:
                  type: number
                  description: 'Optional. The total shipping cost.'
                  example: 5.99
                discounts:
                  type: number
                  description: 'Optional. The total discounts applied.'
                  example: 10.0
                taxes:
                  type: number
                  description: 'Optional. The total taxes applied.'
                  example: 8.5
                fees:
                  type: number
                  description: 'Optional. The total fees applied.'
                  example: 2.5
                status:
                  type: string
                  description: 'Optional. The current status of the order.'
                  example: completed
                url:
                  type: string
                  description: 'Optional. The public URL of the order details.'
                  example: 'https://store.example.com/order/1001'
                phone:
                  type: string
                  description: "Optional. The customer's phone number."
                  example: '+1234567890'
                billing_address:
                  type: object
                  description: 'Optional. The billing address details.'
                  example: null
                  properties:
                    label:
                      type: string
                      description: 'Optional. The label describing the billing address.'
                      example: Home
                    first_name:
                      type: string
                      description: 'Optional. The first name on the billing address.'
                      example: John
                    last_name:
                      type: string
                      description: 'Optional. The last name on the billing address.'
                      example: Doe
                    phone:
                      type: string
                      description: 'Optional. The phone number on the billing address.'
                      example: '+1234567890'
                    company:
                      type: string
                      description: 'Optional. The company on the billing address.'
                      example: 'Acme Inc'
                    address1:
                      type: string
                      description: 'Optional. The billing street address.'
                      example: '123 Main St'
                    address2:
                      type: string
                      description: 'Optional. Additional billing address line.'
                      example: 'Suite 100'
                    city:
                      type: string
                      description: 'Optional. The city on the billing address.'
                      example: 'New York'
                    state:
                      type: string
                      description: 'Optional. The state on the billing address.'
                      example: NY
                    postal_code:
                      type: string
                      description: 'Optional. The postal/zip code on the billing address.'
                      example: '10001'
                    country:
                      type: string
                      description: 'Optional. The country on the billing address.'
                      example: US
                shipping_address:
                  type: object
                  description: 'Optional. The shipping address details.'
                  example: null
                  properties:
                    label:
                      type: string
                      description: 'Optional. The label describing the shipping address.'
                      example: Office
                    first_name:
                      type: string
                      description: 'Optional. The first name on the shipping address.'
                      example: John
                    last_name:
                      type: string
                      description: 'Optional. The last name on the shipping address.'
                      example: Doe
                    phone:
                      type: string
                      description: 'Optional. The phone number on the shipping address.'
                      example: '+1234567890'
                    company:
                      type: string
                      description: 'Optional. The company on the shipping address.'
                      example: 'Acme Inc'
                    address1:
                      type: string
                      description: 'Optional. The shipping street address.'
                      example: '123 Main St'
                    address2:
                      type: string
                      description: 'Optional. Additional shipping address line.'
                      example: 'Suite 100'
                    city:
                      type: string
                      description: 'Optional. The city on the shipping address.'
                      example: 'New York'
                    state:
                      type: string
                      description: 'Optional. The state on the shipping address.'
                      example: NY
                    postal_code:
                      type: string
                      description: 'Optional. The postal/zip code on the shipping address.'
                      example: '10001'
                    country:
                      type: string
                      description: 'Optional. The country on the shipping address.'
                      example: US
                payment_gateway:
                  type: string
                  description: 'Optional. The payment gateway used.'
                  example: stripe
                _ls:
                  type: string
                  description: 'Optional. The revenue tracking hash.'
                  example: null
                silent:
                  type: boolean
                  description: 'Optional. If true, no workflow automations will be triggered, but the event will be stored.'
                  example: true
                test:
                  type: boolean
                  description: "Optional. If true, no order event will be added but response will be returned.\n                                               Useful for testing the event properties without storing the event. Response is representative only."
                  example: true
    parameters:
      -
        in: path
        name: action
        description: 'Optional parameter. Required. The order event action to track.'
        required: true
        schema:
          type: string
        examples:
          omitted:
            summary: 'When the value is omitted'
            value: ''
          present:
            summary: 'When the value is present'
            value: created
  '/api/events/customer/{action}':
    post:
      summary: 'Track a customer event'
      operationId: trackACustomerEvent
      description: "For tracking customer lifecycle events\n\n::: tip\nThe Customer Events API is distinct from the [People API](/api/v1.x/people).\n- Customer Events API: Used to track customer lifecycle events (creation, updates, deletion) that occur in your own e-commerce system\n- People API: Used to manage contacts (create, update, delete) directly in your Lindris account\n:::\n\nFor example:\n- When a customer creates an account in your WooCommerce store, you would track this using the Customer Events API\n- When you want to manually add or update a contact in Lindris, you would use the People API\n\nThe Customer Events API helps maintain a history of customer activities in your system, while the People API\nmanages the actual contact records in Lindris."
      parameters: []
      responses:
        200:
          description: 'when successfully tracked'
          content:
            application/json:
              schema:
                type: object
                example:
                  success: true
                  timestamp: 1710969645
                properties:
                  success:
                    type: boolean
                    example: true
                  timestamp:
                    type: integer
                    example: 1710969645
        422:
          description: 'Validation error'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The given data was invalid.'
                  errors:
                    source:
                      - 'The source field is required.'
                    id:
                      - 'The id field is required.'
                    email:
                      - 'The email field is required when reference id is not present.'
                properties:
                  message:
                    type: string
                    example: 'The given data was invalid.'
                  errors:
                    type: object
                    properties:
                      source:
                        type: array
                        example:
                          - 'The source field is required.'
                        items:
                          type: string
                      id:
                        type: array
                        example:
                          - 'The id field is required.'
                        items:
                          type: string
                      email:
                        type: array
                        example:
                          - 'The email field is required when reference id is not present.'
                        items:
                          type: string
      tags:
        - Events
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  description: "Optional. The person's email address. Either email or referenceId must be provided."
                  example: null
                referenceId:
                  type: mixed
                  description: "Optional. The person's unique identifier. Either email or referenceId must be provided.\n                                         Numeric values will be cast to strings."
                  example: cust_123456
                uuid:
                  type: string
                  description: 'Optional. The uuid from a previous event response. Can be used instead of email or referenceId.'
                  example: 318835f4-f968-4894-9847-358399823d6c
                source:
                  type: string
                  description: 'Required. The e-commerce platform source.'
                  example: woocommerce
                id:
                  type: mixed
                  description: "Required. The unique identifier for the customer.\n                                         Numeric values will be cast to strings."
                  example: cust_123456
                is_contact:
                  type: boolean
                  description: "Optional. If true, the customer event data will be used to create or update a contact.\n                                         When set to true, relevant customer fields (firstName, lastName, address, etc.) will be\n                                         automatically mapped to contact fields in Lindris. This allows you to sync customer data\n                                         from your e-commerce platform to Lindris contacts without making separate API calls.\n                                         For existing contacts, only fields that are provided will be updated, and the source\n                                         field will not be overwritten if it already exists."
                  example: null
                first_name:
                  type: string
                  description: "Optional. Customer's first name."
                  example: John
                last_name:
                  type: string
                  description: "Optional. Customer's last name."
                  example: Doe
                name:
                  type: string
                  description: 'Optional. Full name of the customer.'
                  example: 'John Doe'
                customer_email:
                  type: string
                  description: "Optional. Customer's email address (can differ from identifying email)."
                  example: john.doe@example.com
                status:
                  type: string
                  description: 'Optional. Customer account status.'
                  example: active
                created_at:
                  type: string
                  description: 'Optional. When the customer was created.'
                  example: '2024-03-21T15:30:00Z'
                modified_at:
                  type: string
                  description: 'Optional. When the customer was last modified.'
                  example: '2024-03-21T15:30:00Z'
                user_id:
                  type: mixed
                  description: "Optional. User ID in the source system.\n                                         Numeric values will be cast to strings."
                  example: user_123
                purchase_count:
                  type: integer
                  description: 'Optional. Number of purchases made by the customer.'
                  example: 5
                purchase_value:
                  type: number
                  description: 'Optional. Total value of all purchases.'
                  example: 299.95
                phone:
                  type: string
                  description: "Optional. Customer's phone number."
                  example: +1-555-123-4567
                url:
                  type: string
                  description: "Optional. URL to the customer's profile."
                  example: 'https://store.example.com/customers/123'
                avatar_url:
                  type: string
                  description: "Optional. URL to the customer's avatar/profile image."
                  example: 'https://store.example.com/avatars/john-doe.jpg'
                currency:
                  type: string
                  description: 'Optional. Currency code for monetary values.'
                  example: USD
                payment_gateway:
                  type: string
                  description: 'Optional. Payment gateway used by the customer.'
                  example: stripe
                public_id:
                  type: mixed
                  description: "Optional. Public identifier for the customer.\n                                         Numeric values will be cast to strings."
                  example: pub_123456
                crm:
                  type: string
                  description: 'Optional. Customer management system the customer was created in.'
                  example: woocommerce
                address:
                  type: array
                  description: "Optional. Customer's primary address details."
                  example: null
                  items:
                    type: string
                billing_address:
                  type: array
                  description: "Optional. Customer's billing address details."
                  example: null
                  items:
                    type: string
                shipping_address:
                  type: array
                  description: "Optional. Customer's shipping address details."
                  example: null
                  items:
                    type: string
                user:
                  type: array
                  description: 'Optional. Details about the connected user, if applicable.'
                  example: null
                  items:
                    type: string
                plan:
                  type: string
                  description: 'Optional. Subscription plan details.'
                  example: Premium
                plan_name:
                  type: string
                  description: 'Optional. Name of the subscription plan.'
                  example: 'Premium Plan'
                plan_id:
                  type: mixed
                  description: "Optional. ID of the subscription plan.\n                                         Numeric values will be cast to strings."
                  example: plan_123
                plan_amount:
                  type: number
                  description: 'Optional. Cost of the subscription plan.'
                  example: 19.99
                plan_interval:
                  type: string
                  description: 'Optional. Billing interval (month, year, etc.).'
                  example: month
                plan_interval_count:
                  type: integer
                  description: 'Optional. Number of intervals between billings.'
                  example: 1
                subscriptions:
                  type: array
                  description: 'Optional. Array of subscription details for customers with multiple subscriptions.'
                  example: null
                  items:
                    type: string
                silent:
                  type: boolean
                  description: 'Optional. If true, no workflow automations will be triggered, but the event will be stored.'
                  example: true
                test:
                  type: boolean
                  description: "Optional. If true, no customer event will be added but response will be returned.\n                                         Useful for testing the event properties without storing the event. Response is representative only."
                  example: true
    parameters:
      -
        in: path
        name: action
        description: 'Optional parameter. Required. The customer event action to track.'
        required: true
        schema:
          type: string
        examples:
          omitted:
            summary: 'When the value is omitted'
            value: ''
          present:
            summary: 'When the value is present'
            value: created
  '/api/events/user/{action}':
    post:
      summary: 'Track a user event'
      operationId: trackAUserEvent
      description: 'For tracking user lifecycle events'
      parameters: []
      responses:
        200:
          description: 'when successfully tracked'
          content:
            application/json:
              schema:
                type: object
                example:
                  success: true
                  timestamp: 1710969645
                properties:
                  success:
                    type: boolean
                    example: true
                  timestamp:
                    type: integer
                    example: 1710969645
        422:
          description: 'Validation error'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The given data was invalid.'
                  errors:
                    source:
                      - 'The source field is required.'
                    id:
                      - 'The id field is required.'
                    email:
                      - 'The email field is required when reference id is not present.'
                properties:
                  message:
                    type: string
                    example: 'The given data was invalid.'
                  errors:
                    type: object
                    properties:
                      source:
                        type: array
                        example:
                          - 'The source field is required.'
                        items:
                          type: string
                      id:
                        type: array
                        example:
                          - 'The id field is required.'
                        items:
                          type: string
                      email:
                        type: array
                        example:
                          - 'The email field is required when reference id is not present.'
                        items:
                          type: string
      tags:
        - Events
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  description: "Optional. The user's email address."
                  example: john.doe@example.com
                referenceId:
                  type: mixed
                  description: "Optional. The person's unique identifier. Either email or referenceId must be provided.\n                                        Numeric values will be cast to strings."
                  example: cust_123456
                uuid:
                  type: string
                  description: 'Optional. The uuid from a previous event response. Can be used instead of email or referenceId.'
                  example: 318835f4-f968-4894-9847-358399823d6c
                source:
                  type: string
                  description: 'Required. The platform source.'
                  example: wordpress
                id:
                  type: mixed
                  description: "Required. The unique identifier for the user.\n                                        Numeric values will be cast to strings."
                  example: user_123456
                is_contact:
                  type: boolean
                  description: 'Optional. If true, the user will be synced to contacts.'
                  example: true
                username:
                  type: string
                  description: 'Optional. The username.'
                  example: johndoe
                first_name:
                  type: string
                  description: "Optional. The user's first name."
                  example: John
                last_name:
                  type: string
                  description: "Optional. The user's last name."
                  example: Doe
                display_name:
                  type: string
                  description: "Optional. The user's display name."
                  example: 'John Doe'
                role:
                  type: string
                  description: "Optional. The user's role."
                  example: subscriber
                url:
                  type: string
                  description: "Optional. The URL to the user's profile."
                  example: 'https://example.com/users/johndoe'
                avatar_url:
                  type: string
                  description: "Optional. The URL to the user's avatar image."
                  example: 'https://example.com/avatars/johndoe.jpg'
                status:
                  type: string
                  description: "Optional. The user's status."
                  example: active
                created_at:
                  type: string
                  description: 'Optional. When the user was created.'
                  example: '2024-03-21T15:30:00Z'
                modified_at:
                  type: string
                  description: 'Optional. When the user was last modified.'
                  example: '2024-03-21T15:30:00Z'
                deleted_at:
                  type: string
                  description: 'Optional. When the user was deleted.'
                  example: '2024-03-21T15:30:00Z'
                last_login:
                  type: string
                  description: 'Optional. When the user last logged in.'
                  example: '2024-03-21T15:30:00Z'
                silent:
                  type: boolean
                  description: 'Optional. If true, no workflow automations will be triggered, but the event will be stored.'
                  example: true
                test:
                  type: boolean
                  description: "Optional. If true, no user event will be added but response will be returned.\n                                        Useful for testing the event properties without storing the event. Response is representative only."
                  example: true
    parameters:
      -
        in: path
        name: action
        description: 'Optional parameter. Required. The user event action to track.'
        required: true
        schema:
          type: string
        examples:
          omitted:
            summary: 'When the value is omitted'
            value: ''
          present:
            summary: 'When the value is present'
            value: created
  '/api/events/subscription/{action}':
    post:
      summary: 'Track a subscription event'
      operationId: trackASubscriptionEvent
      description: 'For tracking subscription lifecycle events'
      parameters: []
      responses:
        200:
          description: 'when successfully tracked'
          content:
            application/json:
              schema:
                type: object
                example:
                  success: true
                  timestamp: 1710969645
                properties:
                  success:
                    type: boolean
                    example: true
                  timestamp:
                    type: integer
                    example: 1710969645
        422:
          description: 'Validation error'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The given data was invalid.'
                  errors:
                    source:
                      - 'The source field is required.'
                    id:
                      - 'The id field is required.'
                    email:
                      - 'The email field is required when reference id is not present.'
                properties:
                  message:
                    type: string
                    example: 'The given data was invalid.'
                  errors:
                    type: object
                    properties:
                      source:
                        type: array
                        example:
                          - 'The source field is required.'
                        items:
                          type: string
                      id:
                        type: array
                        example:
                          - 'The id field is required.'
                        items:
                          type: string
                      email:
                        type: array
                        example:
                          - 'The email field is required when reference id is not present.'
                        items:
                          type: string
      tags:
        - Events
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  description: "Optional. The person's email address. Either email or referenceId must be provided."
                  example: null
                referenceId:
                  type: mixed
                  description: "Optional. The person's unique identifier. Either email or referenceId must be provided.\n                                        Numeric values will be cast to strings."
                  example: cust_123456
                uuid:
                  type: string
                  description: 'Optional. The uuid from a previous event response. Can be used instead of email or referenceId.'
                  example: 318835f4-f968-4894-9847-358399823d6c
                source:
                  type: string
                  description: 'Required. The platform source.'
                  example: woocommerce
                id:
                  type: mixed
                  description: "Required. The unique identifier for the subscription.\n                                        Numeric values will be cast to strings."
                  example: sub_123456
                url:
                  type: string
                  description: 'Optional. The URL to the subscription.'
                  example: 'https://store.example.com/my-account/subscriptions/123456'
                currency:
                  type: string
                  description: 'Optional. The three-letter ISO currency code.'
                  example: USD
                products:
                  type: array
                  description: 'Optional. The products associated with the subscription.'
                  example: null
                  items:
                    type: object
                    properties:
                      '*':
                        type: object
                        description: ''
                        example:
                          id: prod_123
                        properties:
                          id:
                            type: mixed
                            description: "Required. The unique identifier for the product.\n                                        Numeric values will be cast to strings."
                            example: prod_123
                          name:
                            type: string
                            description: 'Required. The name of the product.'
                            example: 'Awesome T-Shirt'
                          url:
                            type: string
                            description: 'Optional. A URL to the site containing the product details.'
                            example: 'https://store.example.com/products/awesome-tshirt'
                          image_url:
                            type: string
                            description: 'Optional. A direct URL to an image of the product.'
                            example: 'https://store.example.com/images/awesome-tshirt.jpg'
                          variant_id:
                            type: mixed
                            description: "Optional. The unique identifier for the variant of the product.\n                                        Numeric values will be cast to strings."
                            example: var_123
                          brand:
                            type: string
                            description: 'Optional. The brand name for the product.'
                            example: 'Awesome Brand'
                          price:
                            type: number
                            description: 'Optional. The price of the product.'
                            example: 29.99
                          quantity:
                            type: integer
                            description: 'Optional. The quantity of the product ordered.'
                            example: 2
                          total:
                            type: number
                            description: 'Optional. The line item total after all calculations.'
                            example: 59.98
                          discounts:
                            type: number
                            description: 'Optional. The total discounts applied to this product.'
                            example: 10.0
                          taxes:
                            type: number
                            description: 'Optional. The total taxes for this product.'
                            example: 5.0
                          fees:
                            type: number
                            description: 'Optional. The total fees for this product.'
                            example: 2.0
                          shipping:
                            type: number
                            description: 'Optional. The total shipping for this product.'
                            example: 5.0
                silent:
                  type: boolean
                  description: 'Optional. If true, no workflow automations will be triggered, but the event will be stored.'
                  example: true
                test:
                  type: boolean
                  description: "Optional. If true, no subscription event will be added but response will be returned.\n                                        Useful for testing the event properties without storing the event. Response is representative only."
                  example: true
    parameters:
      -
        in: path
        name: action
        description: 'Optional parameter. Required. The subscription event action to track.'
        required: true
        schema:
          type: string
        examples:
          omitted:
            summary: 'When the value is omitted'
            value: ''
          present:
            summary: 'When the value is present'
            value: created
  /api/fields:
    get:
      summary: 'List fields in alphabetical order'
      operationId: listFieldsInAlphabeticalOrder
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    -
                      id: 1
                      name: fullName
                    -
                      id: 2
                      name: shirtSize
                properties:
                  data:
                    type: array
                    example:
                      -
                        id: 1
                        name: fullName
                      -
                        id: 2
                        name: shirtSize
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 1
                        name:
                          type: string
                          example: fullName
      tags:
        - Fields
  /api/people:
    get:
      summary: 'List people'
      operationId: listPeople
      description: 'Retrieve a paginated list of people with optional filtering'
      parameters:
        -
          in: query
          name: 'filter[segments]'
          description: 'optional Comma-separated list of segment IDs. Prefix with - to exclude.'
          example: '5,7,-9'
          required: false
          schema:
            type: string
            description: 'optional Comma-separated list of segment IDs. Prefix with - to exclude.'
            example: '5,7,-9'
        -
          in: query
          name: 'filter[tags]'
          description: 'optional List of tag names to filter by. Prefix with - to exclude.'
          example: 'my-tag,-unwanted-tag'
          required: false
          schema:
            type: string
            description: 'optional List of tag names to filter by. Prefix with - to exclude.'
            example: 'my-tag,-unwanted-tag'
        -
          in: query
          name: 'filter[email]'
          description: 'optional Keywords to filter email addresses.'
          example: '@octeth'
          required: false
          schema:
            type: string
            description: 'optional Keywords to filter email addresses.'
            example: '@octeth'
        -
          in: query
          name: 'filter[status]'
          description: 'optional Filter by subscription status.'
          example: confirmed
          required: false
          schema:
            type: string
            description: 'optional Filter by subscription status.'
            example: confirmed
            enum:
              - unsubscribed
              - confirmed
              - unconfirmed
              - blocked
        -
          in: query
          name: 'filter[field-{XYZ}]'
          description: 'optional Filter by custom field value where XYZ is the field name.'
          example: 'filter[field-full-name]=John Doe'
          required: false
          schema:
            type: string
            description: 'optional Filter by custom field value where XYZ is the field name.'
            example: 'filter[field-full-name]=John Doe'
        -
          in: query
          name: page
          description: 'optional Page number for pagination.'
          example: 2
          required: false
          schema:
            type: integer
            description: 'optional Page number for pagination.'
            example: 2
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    -
                      id: '1'
                      status: active
                      statusDetails: confirmed
                      email: test@example.com
                      customFields:
                        fullName: test
                      tags: null
                      timestamp: 1702513540
                  meta:
                    currentPage: 2
                    lastPage: 2
                    from: 11
                    to: 11
                    total: 11
                    perPage: 10
                    path: /api/people
                  links:
                    next: null
                    prev: '/api/people?page=1'
                    first: '/api/people?page=1'
                    last: '/api/people?page=2'
                properties:
                  data:
                    type: array
                    example:
                      -
                        id: '1'
                        status: active
                        statusDetails: confirmed
                        email: test@example.com
                        customFields:
                          fullName: test
                        tags: null
                        timestamp: 1702513540
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          example: '1'
                        status:
                          type: string
                          example: active
                        statusDetails:
                          type: string
                          example: confirmed
                        email:
                          type: string
                          example: test@example.com
                        customFields:
                          type: object
                          properties:
                            fullName:
                              type: string
                              example: test
                        tags:
                          type: string
                          example: null
                        timestamp:
                          type: integer
                          example: 1702513540
                  meta:
                    type: object
                    properties:
                      currentPage:
                        type: integer
                        example: 2
                      lastPage:
                        type: integer
                        example: 2
                      from:
                        type: integer
                        example: 11
                      to:
                        type: integer
                        example: 11
                      total:
                        type: integer
                        example: 11
                      perPage:
                        type: integer
                        example: 10
                      path:
                        type: string
                        example: /api/people
                  links:
                    type: object
                    properties:
                      next:
                        type: string
                        example: null
                      prev:
                        type: string
                        example: '/api/people?page=1'
                      first:
                        type: string
                        example: '/api/people?page=1'
                      last:
                        type: string
                        example: '/api/people?page=2'
      tags:
        - People
    post:
      summary: 'Create or update person'
      operationId: createOrUpdatePerson
      description: 'Create a new person or update an existing one'
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Person updated'
                    type: object
                    example:
                      data:
                        id: '1'
                        status: active
                        statusDetails: confirmed
                        email: test@example.com
                        customFields:
                          fullName: test
                        tags:
                          - tagName1
                          - tagName2
                        series:
                          -
                            id: 01hsft8kccmm3hmy4nrevxtmft
                            name: 'Welcome Series'
                        timestamp: 1702513540
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                            example: '1'
                            description: 'The unique identifier for the person'
                            enum: []
                          status:
                            type: string
                            example: active
                            description: "The person's active status (active,inactive). This is determined by\n                                           multiple factors including subscription status, hard bounce status,\n                                           and suppression list status.\n                                           The person can only receive emails when 'active'."
                            enum: []
                          statusDetails:
                            type: string
                            example: confirmed
                            description: "Detailed subscription status of the person. Provides granular state\n                                           information about the person's subscription state:\n                                           - confirmed: Person is subscribed and can receive emails\n                                           - unconfirmed: Person is pending double opt-in confirmation. When double opt-in is enabled,\n                                           all new contacts are created with this status.\n                                           - unsubscribed: Person has explicitly unsubscribed\n                                           - blocked: Person is suppressed due to hard bounce or other issues"
                            enum: []
                          email:
                            type: string
                            example: test@example.com
                            description: "The person's email address"
                            enum: []
                          customFields:
                            type: object
                            properties:
                              fullName:
                                type: string
                                example: test
                            description: 'Custom field data associated with the person'
                          tags:
                            type: array
                            example:
                              - tagName1
                              - tagName2
                            description: 'List of tags associated with the person'
                            enum: []
                            items:
                              type: string
                          series:
                            type: array
                            example:
                              -
                                id: 01hsft8kccmm3hmy4nrevxtmft
                                name: 'Welcome Series'
                            description: 'List of series the person is enrolled in'
                            enum: []
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                  example: 01hsft8kccmm3hmy4nrevxtmft
                                name:
                                  type: string
                                  example: 'Welcome Series'
                          timestamp:
                            type: integer
                            example: 1702513540
                  -
                    description: 'With tracked events'
                    type: object
                    example:
                      data:
                        id: '1'
                        status: active
                        statusDetails: confirmed
                        email: test@example.com
                        customFields:
                          referenceId: edd-124
                          source: woocommerce
                        tags: []
                        series: []
                        timestamp: 1702513540
                        eventUuid: f5543f6b-f445-4343-1a17-b44db65add21
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            type: string
                            example: '1'
                            description: 'The unique identifier for the person'
                            enum: []
                          status:
                            type: string
                            example: active
                            description: "The person's active status (active,inactive). This is determined by\n                                           multiple factors including subscription status, hard bounce status,\n                                           and suppression list status.\n                                           The person can only receive emails when 'active'."
                            enum: []
                          statusDetails:
                            type: string
                            example: confirmed
                            description: "Detailed subscription status of the person. Provides granular state\n                                           information about the person's subscription state:\n                                           - confirmed: Person is subscribed and can receive emails\n                                           - unconfirmed: Person is pending double opt-in confirmation. When double opt-in is enabled,\n                                           all new contacts are created with this status.\n                                           - unsubscribed: Person has explicitly unsubscribed\n                                           - blocked: Person is suppressed due to hard bounce or other issues"
                            enum: []
                          email:
                            type: string
                            example: test@example.com
                            description: "The person's email address"
                            enum: []
                          customFields:
                            type: object
                            properties:
                              referenceId:
                                type: string
                                example: edd-124
                              source:
                                type: string
                                example: woocommerce
                            description: 'Custom field data associated with the person'
                          tags:
                            type: array
                            example: []
                            description: 'List of tags associated with the person'
                            enum: []
                          series:
                            type: array
                            example: []
                            description: 'List of series the person is enrolled in'
                            enum: []
                          timestamp:
                            type: integer
                            example: 1702513540
                          eventUuid:
                            type: string
                            example: f5543f6b-f445-4343-1a17-b44db65add21
                            description: 'The UUID of any events tracked for this person in this request.'
                            enum: []
        201:
          description: 'Person created'
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    id: '1'
                    status: active
                    statusDetails: confirmed
                    email: test@example.com
                    customFields:
                      fullName: test
                    tags:
                      - tagName1
                      - tagName2
                    series:
                      -
                        id: 01hsft8kccmm3hmy4nrevxtmft
                        name: 'Welcome Series'
                    timestamp: 1702513540
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        example: '1'
                        description: 'The unique identifier for the person'
                        enum: []
                      status:
                        type: string
                        example: active
                        description: "The person's active status (active,inactive). This is determined by\n                                           multiple factors including subscription status, hard bounce status,\n                                           and suppression list status.\n                                           The person can only receive emails when 'active'."
                        enum: []
                      statusDetails:
                        type: string
                        example: confirmed
                        description: "Detailed subscription status of the person. Provides granular state\n                                           information about the person's subscription state:\n                                           - confirmed: Person is subscribed and can receive emails\n                                           - unconfirmed: Person is pending double opt-in confirmation. When double opt-in is enabled,\n                                           all new contacts are created with this status.\n                                           - unsubscribed: Person has explicitly unsubscribed\n                                           - blocked: Person is suppressed due to hard bounce or other issues"
                        enum: []
                      email:
                        type: string
                        example: test@example.com
                        description: "The person's email address"
                        enum: []
                      customFields:
                        type: object
                        properties:
                          fullName:
                            type: string
                            example: test
                        description: 'Custom field data associated with the person'
                      tags:
                        type: array
                        example:
                          - tagName1
                          - tagName2
                        description: 'List of tags associated with the person'
                        enum: []
                        items:
                          type: string
                      series:
                        type: array
                        example:
                          -
                            id: 01hsft8kccmm3hmy4nrevxtmft
                            name: 'Welcome Series'
                        description: 'List of series the person is enrolled in'
                        enum: []
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              example: 01hsft8kccmm3hmy4nrevxtmft
                            name:
                              type: string
                              example: 'Welcome Series'
                      timestamp:
                        type: integer
                        example: 1702513540
        422:
          description: 'Validation error'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'The email field is required when id is not present. (and 2 more errors)'
                  errors:
                    email:
                      - 'The email field is required when id is not present.'
                    source:
                      - 'The source field is required.'
                    id:
                      - 'The id field is required when email is not present.'
                  status_code: 422
                properties:
                  message:
                    type: string
                    example: 'The email field is required when id is not present. (and 2 more errors)'
                  errors:
                    type: object
                    properties:
                      email:
                        type: array
                        example:
                          - 'The email field is required when id is not present.'
                        items:
                          type: string
                      source:
                        type: array
                        example:
                          - 'The source field is required.'
                        items:
                          type: string
                      id:
                        type: array
                        example:
                          - 'The id field is required when email is not present.'
                        items:
                          type: string
                  status_code:
                    type: integer
                    example: 422
      tags:
        - People
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: "optional The person's Lindris ID. Either email or id must be included."
                  example: 1
                email:
                  type: string
                  description: "optional The person's email address. Either email or id must be included."
                  example: null
                emailChange:
                  type: string
                  description: "optional Provide this if you need to update the email address of an existing contact.\n                                           Use with the \"email\" or \"id\" field to identify the contact to update."
                  example: newemail@example.com
                source:
                  type: string
                  description: 'The e-commerce platform source.'
                  example: woocommerce
                customFields:
                  type: object
                  description: "optional Custom field data for the person.\n\n    > [!TIP]\n    > The following are **Default System Fields** available for use:\n    > - `firstName`: Person's first name\n    > - `lastName`: Person's last name\n    > - `phoneNumber`: Phone number (include country code)\n    > - `referenceId`: External system reference ID\n\\n\n\\t"
                  example:
                    firstName: John
                    lastName: Doe
                    phoneNumber: '+1234567890'
                    shirtSize: Medium
                  properties: {  }
                tags:
                  type: object
                  description: 'optional  Tags to add (true) or remove (false).'
                  example:
                    tagToBeAdded: true
                    tagToBeRemoved: false
                  properties: {  }
                series:
                  type: object
                  description: 'optional  Series IDs to add to (true) or remove from (false).'
                  example:
                    seriesIdToBeAddedTo: true
                    seriesIdToBeRemovedFrom: false
                  properties: {  }
                events:
                  type: array
                  description: "optional  Events to track for this person. For an in-depth explanation\n                                           <a href=\"events/payloads-with-events\">see the documentation</a>."
                  example:
                    -
                      eventName: import-completed
                      method: csv
                  items:
                    type: string
                status:
                  type: string
                  description: "optional  The person's active status. This is determined by multiple factors including\n                                           subscription status, hard bounce status, and suppression list status.\n                                           A person can only receive emails when 'active'."
                  example: active
                  enum:
                    - active
                    - inactive
                statusDetails:
                  type: string
                  description: "optional  The detailed subscription status of the person. This provides more granular\n                                           control over the person's state:\n\n    - **confirmed**: Person is subscribed and can receive emails\n    - **unconfirmed**: Person is pending double opt-in confirmation\n    - **unsubscribed**: Person has explicitly unsubscribed\n\n    Note: Cannot set 'active' status when person is blocked or hard bounced."
                  example: null
                  enum:
                    - confirmed
                    - unconfirmed
                    - unsubscribed
              required:
                - source
  '/api/people/check/{email}':
    get:
      summary: 'Check person exists'
      operationId: checkPersonExists
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                oneOf:
                  -
                    description: 'Person exists'
                    type: object
                    example:
                      exists: true
                      email: test@example.com
                    properties:
                      exists:
                        type: boolean
                        example: true
                      email:
                        type: string
                        example: test@example.com
                  -
                    description: 'Person does not exist'
                    type: object
                    example:
                      exists: false
                      email: test@example.com
                    properties:
                      exists:
                        type: boolean
                        example: false
                      email:
                        type: string
                        example: test@example.com
      tags:
        - People
    parameters:
      -
        in: path
        name: email
        description: "The person's email address."
        example: test@example.com
        required: true
        schema:
          type: string
  '/api/people/{idOrEmail}':
    get:
      summary: 'Get person details'
      operationId: getPersonDetails
      description: 'Retrieve a single person by their ID or email address'
      parameters: []
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    id: '1'
                    status: active
                    statusDetails: confirmed
                    email: test@example.com
                    customFields:
                      fullName: test
                    tags:
                      - tagName1
                      - tagName2
                    series:
                      -
                        id: 01hsft8kccmm3hmy4nrevxtmft
                        name: 'Welcome Series'
                    timestamp: 1702513540
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        example: '1'
                      status:
                        type: string
                        example: active
                      statusDetails:
                        type: string
                        example: confirmed
                      email:
                        type: string
                        example: test@example.com
                      customFields:
                        type: object
                        properties:
                          fullName:
                            type: string
                            example: test
                      tags:
                        type: array
                        example:
                          - tagName1
                          - tagName2
                        items:
                          type: string
                      series:
                        type: array
                        example:
                          -
                            id: 01hsft8kccmm3hmy4nrevxtmft
                            name: 'Welcome Series'
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              example: 01hsft8kccmm3hmy4nrevxtmft
                            name:
                              type: string
                              example: 'Welcome Series'
                      timestamp:
                        type: integer
                        example: 1702513540
        404:
          description: 'Person not found'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Person not found'
                properties:
                  message:
                    type: string
                    example: 'Person not found'
      tags:
        - People
    delete:
      summary: 'Delete person'
      operationId: deletePerson
      description: 'Permanently remove a person by their ID or email address'
      parameters: []
      responses:
        204:
          description: 'Successfully deleted'
          content:
            text/plain:
              schema:
                type: string
                example: ''
        404:
          description: 'Person not found'
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Person not found'
                properties:
                  message:
                    type: string
                    example: 'Person not found'
      tags:
        - People
    parameters:
      -
        in: path
        name: idOrEmail
        description: "The person's ID or email address."
        example: test@example.com
        required: true
        schema:
          type: string
  /api/tags:
    get:
      summary: 'List tags in alphabetical order'
      operationId: listTagsInAlphabeticalOrder
      description: ''
      parameters: []
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    -
                      id: 1
                      name: anotherTag
                    -
                      id: 2
                      name: newTag
                properties:
                  data:
                    type: array
                    example:
                      -
                        id: 1
                        name: anotherTag
                      -
                        id: 2
                        name: newTag
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          example: 1
                        name:
                          type: string
                          example: anotherTag
      tags:
        - Tags
