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

# 고객 목록 조회

> 고객 목록을 반환합니다. Pagination 형태로 지원됩니다.



## OpenAPI

````yaml /steppay_v1.json get /api/v1/customers
openapi: 3.0.1
info:
  title: STEPPAY
  version: '1.0'
  contact:
    name: Steppay
    url: https://www.steppay.kr
    email: contact@steppay.kr
servers:
  - url: https://api.steppay.kr
    description: Generated server url
security:
  - Secret-Token: []
paths:
  /api/v1/customers:
    get:
      tags:
        - 고객 API
      summary: 고객 목록 조회
      description: 고객 목록을 반환합니다. Pagination 형태로 지원됩니다.
      operationId: v1_getCustomerList
      parameters:
        - name: startDate
          in: query
          description: 조회 시작 시점
          schema:
            type: string
            format: date-time
        - name: endDate
          in: query
          description: 조회 끝 시점
          schema:
            type: string
            format: date-time
        - name: page
          in: query
          description: '페이지 번호(기본값: 0)'
          schema:
            type: integer
            format: int32
        - name: size
          in: query
          description: '페이지 크기(기본값: 20)'
          schema:
            type: integer
            format: int32
        - name: sortDir
          in: query
          description: '정렬 방향(오름차순: ASC, 내림차순: DESC(기본값))'
          schema:
            type: string
        - name: sort
          in: query
          description: '정렬 기준값 - 기본값: 생성 시점'
          schema:
            type: string
        - name: keyword
          in: query
          description: 검색 키워드 - 이름과 이메일에서 검색됩니다.
          required: false
          schema:
            type: string
      responses:
        '200':
          description: 정상적으로 조회됨
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/CustomerListPageDTO'
              examples:
                응답 예시:
                  value:
                    content:
                      - id: 1
                        code: customer_AbCdEfGhI
                        status: NORMAL
                        username: test1@gmail.com
                        name: 테스트 고객
                        email: test1@gmail.com
                        phone: '01012345678'
                        orderCount: 0
                        activeSubscriptionCount: 0
                        paymentMethods: []
                        marketingSms: false
                        marketingEmail: false
                        marketingKakao: false
                        createdAt: '9999-01-01T00:00:00'
                        dormantAt: null
                        customFields: {}
                        countryCode: KR
                      - id: 1
                        code: customer_AbCdEfGhI
                        status: NORMAL
                        username: test2@gmail.com
                        name: 테스트 고객2
                        email: test2@gmail.com
                        phone: '01011231123'
                        orderCount: 1
                        activeSubscriptionCount: 0
                        paymentMethods:
                          - id: 1
                            paymentInfo: XX카드 111111**********
                        marketingSms: false
                        marketingEmail: false
                        marketingKakao: false
                        createdAt: '9999-01-01T00:00:00'
                        dormantAt: null
                        customFields: {}
                        countryCode: UNKNOWN
                    pageable:
                      page: 0
                      size: 20
                      sortDir: DESC
                      sort: createdAt
                      pageSize: 20
                      pageNumber: 0
                      offset: 0
                      paged: true
                      unpaged: false
                    last: true
                    totalElements: 2
                    totalPages: 1
                    sort:
                      unsorted: false
                      sorted: true
                      empty: false
                    number: 0
                    first: true
                    numberOfElements: 20
                    size: 20
                    empty: false
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ProductErrorresponse'
        '403':
          description: Forbidden
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ProductErrorresponse'
components:
  schemas:
    CustomerListPageDTO:
      title: 고객 목록 Pagination 정보
      required:
        - content
        - empty
        - first
        - last
        - number
        - numberOfElements
        - pageable
        - size
        - sort
        - totalElements
        - totalPages
      type: object
      properties:
        content:
          type: array
          description: 고객 목록
          items:
            $ref: '#/components/schemas/CustomerListDTO'
        empty:
          type: boolean
          description: 목록이 비어있는지 여부
        first:
          type: boolean
          description: 첫 번째 페이지인지 여부
        last:
          type: boolean
          description: 마지막 페이지인지 여부
        number:
          type: integer
          description: 페이지 번호
          format: int32
        numberOfElements:
          type: integer
          description: 페이지 내 고객 목록 개수
          format: int32
        pageable:
          $ref: '#/components/schemas/PageableDTO'
        size:
          type: integer
          description: 페이지 크기
          format: int32
        sort:
          $ref: '#/components/schemas/SortDTO'
        totalElements:
          type: integer
          description: 전체 고객 개수
          format: int32
        totalPages:
          type: integer
          description: 전체 페이지수
          format: int32
    ProductErrorresponse:
      required:
        - errorCode
      type: object
      properties:
        traceId:
          type: string
        errorCode:
          type: string
        errorMessage:
          type: string
        details:
          $ref: '#/components/schemas/ReturnError'
    CustomerListDTO:
      title: 고객 목록 정보
      required:
        - activeSubscriptionCount
        - code
        - countryCode
        - customFields
        - id
        - marketingEmail
        - marketingKakao
        - marketingSms
        - orderCount
        - paymentMethods
      type: object
      properties:
        id:
          type: integer
          description: 고객 번호
          format: int64
        code:
          type: string
          description: 고객 코드
        status:
          type: string
          description: 고객 상태
          enum:
            - NORMAL
            - DORMANT
        username:
          type: string
          description: 고객 아이디
        name:
          type: string
          description: 고객 이름
        email:
          type: string
          description: 고객 이메일
        phone:
          type: string
          description: 고객 전화번호
        orderCount:
          type: integer
          description: 고객이 주문한 주문 개수
          format: int32
        activeSubscriptionCount:
          type: integer
          description: 고객의 활성 구독 개수
          format: int32
        paymentMethods:
          type: array
          description: 고객이 사용중인 결제수단 목록
          items:
            $ref: '#/components/schemas/PaymentMethodDTO'
        marketingSms:
          type: boolean
          description: 고객이 허가한 마케팅 채널 - SMS
        marketingEmail:
          type: boolean
          description: 고객이 허가한 마케팅 채널 - Email
        marketingKakao:
          type: boolean
          description: 고객이 허가한 마케팅 채널 - Kakao
        createdAt:
          type: string
          description: 고객 생성 일시
          format: date-time
        dormantAt:
          type: string
          description: 고객 휴면전환 일시
          format: date-time
        customFields:
          type: object
          additionalProperties:
            type: string
            description: 커스텀 필드 영역
          description: 커스텀 필드 영역
        countryCode:
          type: string
          description: 가입한 위치의 국가 코드
      description: 고객 목록
    PageableDTO:
      title: Pagination 정보
      required:
        - offset
        - pageNumber
        - pageSize
        - paged
        - sort
        - unpaged
      type: object
      properties:
        offset:
          type: integer
          description: 오프셋
          format: int32
        pageNumber:
          type: integer
          description: 페이지 번호
          format: int32
        pageSize:
          type: integer
          description: 페이지 크기
          format: int32
        paged:
          type: boolean
          description: Pagination 정보 포함 여부
        sort:
          $ref: '#/components/schemas/SortDTO'
        unpaged:
          type: boolean
          description: Pagination 정보 미포함 여부
      description: Pagination 정보
    SortDTO:
      title: Pagination 정렬 정보
      required:
        - empty
        - sorted
        - unsorted
      type: object
      properties:
        empty:
          type: boolean
          description: 비어있는지 여부
        sorted:
          type: boolean
          description: 정렬되어 있는지 여부
        unsorted:
          type: boolean
          description: 정렬되어 있지 않은지 여부
      description: 정렬 정보
    ReturnError:
      type: object
    PaymentMethodDTO:
      title: 결제수단 정보
      required:
        - id
        - paymentInfo
      type: object
      properties:
        id:
          type: integer
          description: 결제수단 번호
          format: int64
        paymentInfo:
          type: string
          description: 결제수단 정보
      description: 고객이 사용중인 결제수단 목록
  securitySchemes:
    Secret-Token:
      type: apiKey
      in: header
      name: Secret-Token

````