> ## Documentation Index
> Fetch the complete documentation index at: https://docs.livingsecurity.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Search organization people

> Search and filter people within an organization. Supports pagination (cursor-based), property filters (firstName, lastName, email, active), role filtering, and date range filtering (createdAfter, createdBefore). Results are returned with pagination metadata for efficient browsing. Organization context provided via x-organization-id header.



## OpenAPI

````yaml /api-reference/openapi-public.json get /people/search
openapi: 3.0.0
info:
  title: Living Security Public API
  description: >-
    Curated, versioned API for Living Security customer integrations.
    Authenticate by exchanging a Living Security API access key for a
    short-lived bearer access token.
  version: 1.0.0
  contact: {}
servers:
  - url: https://api.us-east-1.livingsecurity.ai/api/v1
    description: US production
  - url: https://api.eu-west-1.livingsecurity.ai/api/v1
    description: EU production
  - url: /api/v1
    description: Current origin
security: []
tags: []
paths:
  /people/search:
    get:
      tags:
        - People
      summary: Search organization people
      description: >-
        Search and filter people within an organization. Supports pagination
        (cursor-based), property filters (firstName, lastName, email, active),
        role filtering, and date range filtering (createdAfter, createdBefore).
        Results are returned with pagination metadata for efficient browsing.
        Organization context provided via x-organization-id header.
      operationId: Memberships.searchPeople
      parameters:
        - name: x-organization-id
          in: header
          description: Organization context for multi-tenant operations
          required: true
          schema:
            type: string
            format: uuid
        - name: search
          required: false
          in: query
          description: Search term for text search across name and email fields
          schema:
            example: john
            type: string
        - name: offset
          required: false
          in: query
          description: Offset for pagination (number of records to skip)
          schema:
            minimum: 0
            default: 0
            type: number
        - name: cursor
          required: false
          in: query
          description: Cursor for pagination (returned from previous response)
          schema:
            example: eyJvZmZzZXQiOjUwfQ==
            type: string
        - name: limit
          required: false
          in: query
          description: Maximum number of results to return per page
          schema:
            minimum: 1
            maximum: 100
            default: 50
            type: number
        - name: firstName
          required: false
          in: query
          description: Filter by first name (partial match, case-insensitive)
          schema:
            example: John
            type: string
        - name: lastName
          required: false
          in: query
          description: Filter by last name (partial match, case-insensitive)
          schema:
            example: Doe
            type: string
        - name: email
          required: false
          in: query
          description: Filter by email (partial match, case-insensitive)
          schema:
            example: john@example.com
            type: string
        - name: personId
          required: false
          in: query
          description: Filter by specific person ID (exact match)
          schema:
            example: 01234567-89ab-cdef-0123-456789abcdef
            type: string
        - name: active
          required: false
          in: query
          description: Filter by active status
          schema:
            example: true
            type: boolean
        - name: includeTotal
          required: false
          in: query
          description: >-
            Include the exact count of all people matching the same filters.
            Defaults to false to avoid count-query overhead for
            autocomplete/search consumers.
          schema:
            example: true
            type: boolean
        - name: roles
          required: false
          in: query
          description: Filter by roles
          schema:
            type: array
            items:
              type: string
        - name: createdAfter
          required: false
          in: query
          description: Filter by created date (after this date)
          schema:
            example: '2025-01-01T00:00:00Z'
            type: string
        - name: createdBefore
          required: false
          in: query
          description: Filter by created date (before this date)
          schema:
            example: '2025-12-31T23:59:59Z'
            type: string
        - name: sortBy
          required: false
          in: query
          description: Field to sort by
          schema:
            default: createdAt
            example: name
            type: string
            enum:
              - name
              - email
              - createdAt
              - status
        - name: sortDirection
          required: false
          in: query
          description: Sort direction (ASC or DESC)
          schema:
            default: DESC
            example: ASC
            type: string
            enum:
              - ASC
              - DESC
      responses:
        '200':
          description: People found successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PersonSearchResponseDto'
        '400':
          description: Invalid query parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorDto'
        '404':
          description: Organization not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorDto'
      security:
        - bearerAuth: []
components:
  schemas:
    PersonSearchResponseDto:
      type: object
      properties:
        people:
          description: List of people matching search criteria
          type: array
          items:
            $ref: '#/components/schemas/PersonDto'
        pagination:
          description: Pagination metadata
          allOf:
            - $ref: '#/components/schemas/PaginationDto'
        totalCount:
          type: number
          description: >-
            Exact count of all people matching the same filters. Present only
            when requested with includeTotal=true.
          example: 1234
          nullable: true
      required:
        - people
        - pagination
    BadRequestErrorDto:
      type: object
      properties:
        statusCode:
          type: number
          description: HTTP status code
          example: 400
        message:
          description: Error message or array of validation errors
          oneOf:
            - type: string
              example: Validation failed
            - type: array
              items:
                type: string
              example:
                - email must be an email
                - name should not be empty
        error:
          type: string
          description: Error type identifier
          example: Bad Request
      required:
        - statusCode
        - message
        - error
    NotFoundErrorDto:
      type: object
      properties:
        statusCode:
          type: number
          description: HTTP status code
          example: 404
        message:
          description: Error message or array of validation errors
          oneOf:
            - type: string
              example: Invalid input
            - type: array
              items:
                type: string
              example:
                - email must be an email
                - name should not be empty
          example: Resource not found
        error:
          type: string
          description: Error type identifier
          example: Not Found
      required:
        - statusCode
        - message
        - error
    PersonDto:
      type: object
      properties:
        id:
          type: string
          description: Person ID (membership ID)
          example: 01234567-89ab-cdef-0123-456789abcdef
        userId:
          type: string
          description: User ID
          example: 01234567-89ab-cdef-0123-456789abcdef
        email:
          type: string
          description: Person email address
          example: john.doe@example.com
        firstName:
          type: string
          description: First name
          example: John
          nullable: true
        lastName:
          type: string
          description: Last name
          example: Doe
          nullable: true
        name:
          type: string
          description: Full name
          example: John Doe
          nullable: true
        profile:
          description: Person profile data
          allOf:
            - $ref: '#/components/schemas/ProfileDto'
        active:
          type: boolean
          description: Whether the person is active in the organization
          example: true
        roles:
          description: Person roles within the organization
          example:
            - admin
            - member
          type: array
          items:
            type: string
        organizationId:
          type: string
          description: Organization ID
          example: 01234567-89ab-cdef-0123-456789abcdef
        createdAt:
          format: date-time
          type: string
          description: When the person was added to the organization
          example: '2025-01-01T00:00:00Z'
        updatedAt:
          format: date-time
          type: string
          description: When the person was last updated
          example: '2025-01-15T10:30:00Z'
        enterpriseProperties:
          description: Enterprise properties from SCIM
          allOf:
            - $ref: '#/components/schemas/EnterprisePropertiesDto'
        customProperties:
          type: object
          description: Custom properties (unlimited fields)
          example:
            department: Engineering
            location: SF
        importSource:
          type: string
          description: Import source
          enum:
            - SCIM
            - CSV
            - MANUAL
          nullable: true
        rawScimData:
          type: object
          description: Raw SCIM payload (for advanced users)
          nullable: true
      required:
        - id
        - userId
        - email
        - profile
        - active
        - roles
        - organizationId
        - createdAt
        - updatedAt
        - enterpriseProperties
        - customProperties
    PaginationDto:
      type: object
      properties:
        hasMore:
          type: boolean
          description: Whether there are more results available
          example: true
        nextCursor:
          type: string
          description: Cursor for next page of results
          example: eyJvZmZzZXQiOjUwfQ==
          nullable: true
        pageSize:
          type: number
          description: Number of results in current page
          example: 50
      required:
        - hasMore
        - pageSize
    ProfileDto:
      type: object
      properties:
        name:
          type: string
          description: Person's full name
          example: John Doe
        email:
          type: string
          description: Person's email address
          example: john.doe@example.com
        firstName:
          type: string
          description: First name (given name)
          example: John
          nullable: true
        lastName:
          type: string
          description: Last name (family name)
          example: Doe
          nullable: true
        middleName:
          type: string
          description: Middle name
          example: Michael
          nullable: true
        phone:
          type: string
          description: Primary phone number
          example: '+12025551234'
          nullable: true
        mobilePhone:
          type: string
          description: Mobile phone number
          example: '+12025555678'
          nullable: true
        workAddress:
          description: Work address
          nullable: true
          allOf:
            - $ref: '#/components/schemas/AddressDto'
        jobTitle:
          type: string
          description: Job title
          example: Senior Software Engineer
          nullable: true
        department:
          type: string
          description: Department
          example: Engineering
          nullable: true
        division:
          type: string
          description: Division or business unit
          example: Product Development
          nullable: true
        costCenter:
          type: string
          description: Cost center code
          example: CC-1234
          nullable: true
        employeeNumber:
          type: string
          description: Employee number
          example: E12345
          nullable: true
        userType:
          type: string
          description: User type (e.g., Employee, Contractor)
          example: Employee
          nullable: true
        manager:
          description: Manager reference
          nullable: true
          allOf:
            - $ref: '#/components/schemas/PersonReferenceDto'
        locale:
          type: string
          description: Locale preference (e.g., en-US)
          example: en-US
          nullable: true
        timezone:
          type: string
          description: Timezone (e.g., America/New_York)
          example: America/New_York
          nullable: true
        preferredLanguage:
          type: string
          description: Preferred language code
          example: en
          nullable: true
        customAttributes:
          type: object
          description: >-
            Custom SCIM attributes from identity provider (vendor-specific
            extensions)
          additionalProperties: true
          example:
            urn:okta:custom:1.0:user:slackId: U123456
            extension_azure_TeamsId: T789012
          nullable: true
        metadata:
          type: object
          description: Additional user metadata from identity provider (legacy field)
          example:
            department: Engineering
            title: Senior Developer
          nullable: true
      required:
        - name
        - email
    EnterprisePropertiesDto:
      type: object
      properties:
        firstName:
          type: string
          description: First name (given name)
          example: John
        lastName:
          type: string
          description: Last name (family name)
          example: Doe
        middleName:
          type: string
          description: Middle name
          example: Michael
        jobTitle:
          type: string
          description: Job title
          example: Senior Software Engineer
        department:
          type: string
          description: Department
          example: Engineering
        division:
          type: string
          description: Division or business unit
          example: Product Development
        costCenter:
          type: string
          description: Cost center code
          example: CC-1234
        employeeNumber:
          type: string
          description: Employee number
          example: E12345
        userType:
          type: string
          description: User type (e.g., Employee, Contractor)
          example: Employee
        primaryPhone:
          type: string
          description: Primary phone number
          example: +1-555-0100
        mobilePhone:
          type: string
          description: Mobile phone number
          example: +1-555-0101
        workAddress:
          description: Work address
          allOf:
            - $ref: '#/components/schemas/AddressDto'
        manager:
          description: Manager reference
          allOf:
            - $ref: '#/components/schemas/PersonReferenceDto'
        locale:
          type: string
          description: Locale preference (e.g., en-US)
          example: en-US
        timezone:
          type: string
          description: Timezone (e.g., America/Los_Angeles)
          example: America/Los_Angeles
        preferredLanguage:
          type: string
          description: Preferred language code
          example: en
        customAttributes:
          type: object
          description: >-
            Custom SCIM attributes from identity provider (vendor-specific
            extensions)
          additionalProperties: true
          example:
            urn:okta:custom:1.0:user:slackId: U123456
            extensionAzureTeamsId: T789012
            customVendorField: vendor-specific
    AddressDto:
      type: object
      properties:
        type:
          type: string
          description: Address type
          enum:
            - work
            - home
            - other
          example: work
        streetAddress:
          type: string
          description: Street address
          example: 100 Universal City Plaza
          nullable: true
        locality:
          type: string
          description: City or locality
          example: Hollywood
          nullable: true
        region:
          type: string
          description: State or region
          example: CA
          nullable: true
        postalCode:
          type: string
          description: Postal code
          example: '91608'
          nullable: true
        country:
          type: string
          description: Country
          example: USA
          nullable: true
        primary:
          type: boolean
          description: Whether this is the primary address
          example: true
          nullable: true
      required:
        - type
    PersonReferenceDto:
      type: object
      properties:
        id:
          type: string
          description: Person ID
          example: 01914b4a-6fd7-7c5e-b343-6a7105f9e632
        name:
          type: string
          description: Person display name
          example: Jane Smith
        email:
          type: string
          description: Person email address
          example: jane.smith@example.com
          nullable: true
      required:
        - id
        - name
  securitySchemes:
    bearerAuth:
      scheme: bearer
      bearerFormat: access-token
      type: http
      description: >-
        Short-lived bearer access token issued for a Living Security API access
        key. Send as Authorization: Bearer <token>.

````