> ## 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.

# 상품 목록 조회



## OpenAPI

````yaml /steppay_v1.json get /api/v1/products
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/products:
    get:
      tags:
        - 상품 API
      summary: 상품 목록 조회
      operationId: v1_getProductList
      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
        - name: categoryId
          in: query
          description: 특정 카테고리 아이디에 포함되어 있는 상품 목록을 반환합니다.
          required: false
          schema:
            type: integer
            format: int64
        - name: status
          in: query
          description: 지정한 상태만 목록을 반환하게 합니다.
          required: false
          schema:
            type: string
            enum:
              - SALE
              - OUT_OF_STOCK
              - UNSOLD
              - WAITING_APPROVAL
              - REJECTED
      responses:
        '200':
          description: 정상적으로 조회됨
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ProductListPageDTO'
              examples:
                상품 목록:
                  value:
                    last: true
                    size: 0
                    sort:
                      empty: true
                      sorted: true
                      unsorted: true
                    empty: true
                    first: true
                    number: 0
                    content:
                      - id: 1
                        code: string
                        name: string
                        type: BOX
                        prices:
                          - id: 1
                            code: string
                            plan:
                              name: string
                              adminName: string
                              description: string
                              isHiddenFromShop: true
                              detailDescription: string
                            type: ONE_TIME
                            unit: string
                            claim:
                              methodType: PRE
                              billingDate: 0
                              provideStartDay: 0
                              whenToClaimType: FIRST_PAYMENT
                            order: 0
                            price: 0
                            options:
                              - id: 1
                                name: string
                                type: INITIALLY
                                price: 0
                                priceCode: string
                                priceName: string
                                productCode: string
                                productType: BOX
                                recurringDTO:
                                  id: 1
                                  interval: DAY
                                  usageType: LICENSED
                                  intervalCount: 0
                                  aggregateUsageType: SUM
                            volumes:
                              - id: 1
                                max: 0
                                min: 0
                                price: 0
                            planName: string
                            createdAt: '9999-01-01T00:00:00'
                            firstSale:
                              price: 0
                              enabled: true
                            recurring:
                              id: 1
                              interval: DAY
                              usageType: LICENSED
                              intervalCount: 0
                              aggregateUsageType: SUM
                            modifiedAt: '9999-01-01T00:00:00'
                            billingDate: 0
                            setupOption:
                              id: 1
                              name: string
                              type: INITIALLY
                              price: 0
                              claimMethodType: PRE
                            basicServing: 0
                            bundlePrices:
                              - price: {}
                                product:
                                  id: 1
                                  sku: string
                                  code: string
                                  name: string
                                  type: BOX
                                  notice: string
                                  prices:
                                    - {}
                                  status: SALE
                                  groupId: 0
                                  summary: string
                                  quantity: 0
                                  subTitle: string
                                  createdAt: '9999-01-01T00:00:00'
                                  imageUrls:
                                    - string
                                  useWidget:
                                    useDemo: true
                                    useNotice: true
                                    useEventBadge: true
                                    useOnetimePurchasable: true
                                  categories:
                                    - name: string
                                      categoryId: 0
                                  demoPeriod: 0
                                  eventBadge:
                                    - event: string
                                      endDateTime: '9999-01-01T00:00:00'
                                      startDateTime: '9999-01-01T00:00:00'
                                  modifiedAt: '9999-01-01T00:00:00'
                                  vendorUuid: 206992bb-6462-4b4f-9847-cf2f40d55b48
                                  description: string
                                  enabledDemo: true
                                  optionGroups:
                                    - id: 1
                                      name: string
                                      depth: 0
                                      options:
                                        - id: 1
                                          name: string
                                          price: 0
                                          parent: 0
                                          quantity: 0
                                  productOrder: 0
                                  countrySetting:
                                    id: 1
                                    taxRate: 0
                                    isDefault: true
                                    countryCode: string
                                    currencyCode: string
                                    timezoneName: string
                                  demoPeriodUnit: DAY
                                  reasonOfReject: string
                                  useCombination: true
                                  combinedProducts:
                                    - code: string
                                      name: string
                                      type: BOX
                                      prices:
                                        - {}
                                      status: SALE
                                      options:
                                        - id: 1
                                          name: string
                                          depth: 0
                                          options:
                                            - id: 1
                                              name: string
                                              price: 0
                                              parent: 0
                                              quantity: 0
                                      createdAt: '9999-01-01T00:00:00'
                                      modifiedAt: '9999-01-01T00:00:00'
                                      description: string
                                  featuredImageUrl: string
                                  optionCombinations:
                                    - id:
                                        - 1
                                      price: 0
                                      status: SALE
                                      quantity: 0
                                  isOnetimePurchasable: true
                            firstSalePrice: 0
                            claimMethodType: PRE
                            planDescription: string
                            whenToClaimType: FIRST_PAYMENT
                            additionalBilling:
                              id: 1
                              type: USAGE_BASED_WITH_RANGE
                              ranges:
                                - id: 1
                                  price: 0
                                  until: 0
                            onetimeBundlePrice: 0
                            enabledFirstSalePrice: true
                            maximumPurchaseQuantity: 0
                            membershipExpirationDate: 0
                            membershipExpirationDateType: DAY
                        status: SALE
                        quantity: 0
                        createdAt: '9999-01-01T00:00:00'
                        categories:
                          - name: string
                            categoryId: 0
                        modifiedAt: '9999-01-01T00:00:00'
                        vendorUuid: 206992bb-6462-4b4f-9847-cf2f40d55b48
                        description: string
                        enabledDemo: true
                        productOrder: 0
                        countrySetting:
                          id: 1
                          taxRate: 0
                          isDefault: true
                          countryCode: string
                          currencyCode: string
                          timezoneName: string
                        featuredImageUrl: string
                        isOnetimePurchasable: true
                    pageable:
                      sort:
                        empty: true
                        sorted: true
                        unsorted: true
                      paged: true
                      offset: 0
                      unpaged: true
                      pageSize: 0
                      pageNumber: 0
                    totalPages: 0
                    totalElements: 0
                    numberOfElements: 0
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ProductErrorresponse'
        '403':
          description: Forbidden
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ProductErrorresponse'
components:
  schemas:
    ProductListPageDTO:
      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/ProductListDTO'
        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'
    ProductListDTO:
      required:
        - availableRegions
        - categories
        - code
        - createdAt
        - description
        - enabledDemo
        - featuredImageUrl
        - id
        - modifiedAt
        - name
        - prices
        - productOrder
        - status
        - type
        - vendorUuid
      type: object
      properties:
        id:
          type: integer
          format: int64
        code:
          type: string
        type:
          type: string
          enum:
            - BOX
            - SOFTWARE
            - BUNDLE
            - INVOICE
            - DRAFT
        status:
          type: string
          enum:
            - SALE
            - OUT_OF_STOCK
            - UNSOLD
            - WAITING_APPROVAL
            - REJECTED
        name:
          type: string
        quantity:
          type: integer
          format: int32
        featuredImageUrl:
          type: string
        prices:
          type: array
          items:
            $ref: '#/components/schemas/ProductPricedto'
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
        description:
          type: string
        categories:
          type: array
          items:
            $ref: '#/components/schemas/ProductCategoryDTO'
        vendorUuid:
          type: string
          format: uuid
        enabledDemo:
          type: boolean
        isOnetimePurchasable:
          type: boolean
        productOrder:
          type: integer
          format: int32
        countrySetting:
          $ref: '#/components/schemas/CountrySettingDTO'
        availableRegions:
          type: array
          items:
            $ref: '#/components/schemas/RegionDTO'
      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
    ProductPricedto:
      title: 가격 플랜 정보
      required:
        - basicServing
        - billingDate
        - bundlePrices
        - code
        - currencyOnetimeBundlePrice
        - currencyPrice
        - enabledFirstSalePrice
        - firstSalePrice
        - id
        - maximumPurchaseQuantity
        - membershipExpirationDate
        - onetimeBundlePrice
        - options
        - order
        - price
        - type
        - volumes
      type: object
      properties:
        id:
          type: integer
          description: 가격 플랜 아이디
          format: int64
        code:
          type: string
          description: 가격 플랜 코드
        price:
          type: number
          description: 가격
        currencyPrice:
          type: object
          additionalProperties:
            type: number
            description: 통화별 가격
          description: 통화별 가격
        unit:
          type: string
          description: 단위
        planName:
          type: string
          description: 플랜명
          deprecated: true
        planDescription:
          type: string
          description: 플랜 설명
          deprecated: true
        type:
          type: string
          description: 플랜 타입
          enum:
            - ONE_TIME
            - FLAT
            - UNIT_BASED
            - USAGE_BASED
            - VOLUME_BASED
            - BUNDLE
        enabledFirstSalePrice:
          type: boolean
          description: 첫 구매 할인 적용 여부
          deprecated: true
        firstSalePrice:
          type: number
          description: 첫 구매 할인시 적용되는 할인 금액
          deprecated: true
        claimMethodType:
          type: string
          description: 선불인지 후불인지 여부
          enum:
            - PRE
            - POST
        whenToClaimType:
          type: string
          description: 후불인 경우, 언제 결제되는지
          enum:
            - FIRST_PAYMENT
            - DATE
        billingDate:
          type: integer
          description: 후불일 때 결제되는 날짜를 지정한 경우, 지정된 날짜
          format: int32
        maximumPurchaseQuantity:
          type: integer
          description: 최대 구매가능 수량
          format: int32
        membershipExpirationDate:
          type: integer
          description: 구독 만기 기간
          format: int32
        membershipExpirationDateType:
          type: string
          description: 구독 만기 기간 단위
          enum:
            - DAY
            - WEEK
            - MONTH
            - YEAR
        setupOption:
          $ref: '#/components/schemas/PriceSetupOptionDTO'
        options:
          type: array
          description: 옵션 정보
          items:
            $ref: '#/components/schemas/PriceOptionDTO'
        volumes:
          type: array
          deprecated: true
          items:
            $ref: '#/components/schemas/PriceVolumeDTO'
        additionalBilling:
          $ref: '#/components/schemas/PriceAdditionalBillingDTO'
        recurring:
          $ref: '#/components/schemas/PriceRecurringDTO'
        createdAt:
          type: string
          description: 생성된 시점
          format: date-time
        modifiedAt:
          type: string
          description: 수정된 시점
          format: date-time
        plan:
          $ref: '#/components/schemas/Plan'
        firstSale:
          $ref: '#/components/schemas/FirstSaleDTO'
        claim:
          $ref: '#/components/schemas/Claim'
        basicServing:
          type: integer
          description: 기본 제공량 - 계정/사용량 기반 요금 사용시
          format: int32
        bundlePrices:
          type: array
          description: 번들 플랜 - 번들 상품 구성
          items:
            $ref: '#/components/schemas/PriceBundleDTO'
        onetimeBundlePrice:
          type: number
          description: 번들 플랜 - 단건 상품 금액
        currencyOnetimeBundlePrice:
          type: object
          additionalProperties:
            type: number
            description: 통화별 번들 플랜 - 단건 상품 금액
          description: 통화별 번들 플랜 - 단건 상품 금액
        order:
          type: integer
          description: 우선 순위
          format: int32
      description: 가격 플랜 정보
    ProductCategoryDTO:
      required:
        - categoryId
        - name
      type: object
      properties:
        categoryId:
          type: integer
          format: int64
        name:
          type: string
      description: 카테고리
    CountrySettingDTO:
      required:
        - countryCode
        - currencyCode
        - id
        - isDefault
        - taxRate
        - timezoneName
      type: object
      properties:
        id:
          type: integer
          format: int64
        countryCode:
          type: string
        timezoneName:
          type: string
        currencyCode:
          type: string
        isDefault:
          type: boolean
        taxRate:
          type: number
      description: 국가 설정 정보
    RegionDTO:
      title: 판매국가 정보
      required:
        - country
        - countryCode
        - currencies
        - language
        - name
      type: object
      properties:
        name:
          title: Region Enum Code
          type: string
        currencies:
          title: 해당 국가에서 사용되는 통화 코드 목록
          type: array
          items:
            title: 해당 국가에서 사용되는 통화 코드 목록
            type: string
        country:
          title: 국가 이름
          type: string
        countryCode:
          title: 국가 코드(ISO 3166 alpha-2)
          type: string
        state:
          title: 주 이름
          type: string
        language:
          title: 국가 언어 코드
          type: string
      description: 지역
    PriceSetupOptionDTO:
      title: 기본료 정보
      required:
        - claimMethodType
        - currencyPrice
        - id
        - price
      type: object
      properties:
        id:
          type: integer
          description: 기본료 번호
          format: int64
        name:
          type: string
          description: 기본료 이름
        type:
          type: string
          description: 기본료 타입
          enum:
            - INITIALLY
            - PERIODIC
        price:
          type: number
          description: 기본료 금액
        currencyPrice:
          type: object
          additionalProperties:
            type: number
            description: 통화별 기본료 금액
          description: 통화별 기본료 금액
        claimMethodType:
          type: string
          description: 기본료가 선불인지 후불인지 여부
          enum:
            - PRE
            - POST
      description: 기본료 정보
    PriceOptionDTO:
      title: 가격 플랜 옵션 정보
      required:
        - id
        - price
      type: object
      properties:
        id:
          type: integer
          description: 옵션 번호
          format: int64
        name:
          type: string
          description: 옵션 이름
        productCode:
          type: string
          description: 연관 상품 코드
        type:
          type: string
          description: 옵션 타입
          enum:
            - INITIALLY
            - PERIODIC
        price:
          type: integer
          description: 가격
          format: int64
        priceCode:
          type: string
          description: 연관 가격플랜 코드
        priceName:
          type: string
          description: 연관 가격플랜 이름
        productType:
          type: string
          description: 연관 상품 타입
          enum:
            - BOX
            - SOFTWARE
            - BUNDLE
            - INVOICE
            - DRAFT
        recurringDTO:
          $ref: '#/components/schemas/PriceRecurringDTO'
      description: 옵션 정보
    PriceVolumeDTO:
      required:
        - id
        - max
        - min
        - price
      type: object
      properties:
        id:
          type: integer
          format: int64
        min:
          type: integer
          format: int64
        max:
          type: integer
          format: int64
        price:
          type: integer
          format: int64
      deprecated: true
    PriceAdditionalBillingDTO:
      title: 추가 과금 정보
      required:
        - id
        - ranges
        - type
      type: object
      properties:
        id:
          type: integer
          description: 추가 과금 번호
          format: int64
        type:
          type: string
          description: 추가 과금 타입
          enum:
            - USAGE_BASED_WITH_RANGE
            - USAGE_BASED_WITH_RANGE_AND_FIXED_PRICE
        ranges:
          type: array
          description: 추가 과금 범위 정보
          items:
            $ref: '#/components/schemas/PriceAdditionalBillingRangeDTO'
      description: 추가 과금 정보
    PriceRecurringDTO:
      title: 구독 주기 정보
      required:
        - id
        - intervalCount
      type: object
      properties:
        id:
          type: integer
          description: 주기 정보 번호
          format: int64
        intervalCount:
          type: integer
          description: 주기
          format: int32
        aggregateUsageType:
          type: string
          deprecated: true
          enum:
            - SUM
            - LAST_DURING_PERIOD
            - LAST_EVER
            - MAX
        interval:
          type: string
          description: 주기 단위
          enum:
            - DAY
            - WEEK
            - MONTH
            - YEAR
        usageType:
          type: string
          deprecated: true
          enum:
            - LICENSED
            - METERED
      description: 구독 주기 정보
    Plan:
      title: 가격 플랜 정보
      required:
        - name
        - description
      type: object
      properties:
        name:
          type: string
          description: 플랜 이름
        description:
          type: string
          description: 플랜 설명
        detailDescription:
          type: string
          description: 자세히 보기
        isHiddenFromShop:
          type: boolean
          description: '플랜 사용 여부 (기본값: false)'
        adminName:
          type: string
          description: 어드민 플랜 이름
      description: 가격 플랜 정보
    FirstSaleDTO:
      title: 첫 구매 할인 정보
      type: object
      properties:
        enabled:
          type: boolean
        price:
          type: number
        currencyPrice:
          type: object
          additionalProperties:
            type: number
      description: 첫 구매 할인 정보
    Claim:
      title: 청구 방식 정보
      type: object
      properties:
        methodType:
          type: string
          description: '선불인지 후불인지 여부 (기본값: PRE)'
          enum:
            - PRE
            - POST
        whenToClaimType:
          type: string
          description: '후불인 경우, 언제 결제되는지 (기본값: FIRST_PAYMENT)'
          enum:
            - FIRST_PAYMENT
            - DATE
        billingDate:
          type: integer
          description: '후불일 때 결제되는 날짜를 지정한 경우, 지정된 날짜 (기본값: 1)'
          format: int32
        provideStartDay:
          type: integer
          description: 서비스 제공기간 시작일
          format: int32
      description: 청구 방식 정보
    PriceBundleDTO:
      required:
        - price
        - product
      type: object
      properties:
        product:
          $ref: '#/components/schemas/ProductProductdto'
        price:
          $ref: '#/components/schemas/ProductPricedto'
      description: 번들 플랜 - 번들 상품 구성
    PriceAdditionalBillingRangeDTO:
      title: 추가 과금 범위 정보
      required:
        - id
        - price
        - until
      type: object
      properties:
        id:
          type: integer
          description: 추가 과금 범위 번호
          format: int64
        until:
          type: integer
          description: 범위가 어디까지인지
          format: int64
        price:
          type: number
          description: 범위에 적용되는 금액
      description: 추가 과금 범위 정보
    ProductProductdto:
      title: 상품 상세 정보
      required:
        - categories
        - code
        - combinedProducts
        - createdAt
        - demoPeriod
        - demoPeriodUnit
        - enabledDemo
        - eventBadge
        - id
        - isOnetimePurchasable
        - optionCombinations
        - optionGroups
        - prices
        - productOrder
        - status
        - useCombination
        - vendorUuid
      type: object
      properties:
        id:
          type: integer
          description: 상품 아이디
          format: int64
        code:
          type: string
          description: 상품 코드
        type:
          type: string
          description: 상품 타입
          enum:
            - BOX
            - SOFTWARE
            - BUNDLE
            - INVOICE
            - DRAFT
        status:
          type: string
          description: 상품 상태
          enum:
            - SALE
            - OUT_OF_STOCK
            - UNSOLD
            - WAITING_APPROVAL
            - REJECTED
        name:
          type: string
          description: 상품 이름
        subTitle:
          type: string
          description: 부제목
        featuredImageUrl:
          type: string
          description: 상품 대표 이미지 URL
        imageUrls:
          type: array
          description: 상품 이미지 URL
          items:
            type: string
            description: 상품 이미지 URL
        description:
          type: string
          description: 상품 설명
        summary:
          type: string
          description: 상품 요약
        reasonOfReject:
          type: string
          description: 상품 승인 거절 사유
        sku:
          type: string
          description: SKU
        quantity:
          type: integer
          description: 재고 수량
          format: int32
        combinedProducts:
          type: array
          description: 번들 상품 정보
          items:
            $ref: '#/components/schemas/BundleProductDTO'
        optionGroups:
          type: array
          description: 옵션 그룹 정보
          items:
            $ref: '#/components/schemas/ProductOptionGroupDTO'
        useCombination:
          type: boolean
          description: 조합형 옵션 사용 여부
        optionCombinations:
          type: array
          description: 옵션 조합
          items:
            $ref: '#/components/schemas/OptionCombinationDTO'
        prices:
          type: array
          description: 가격 플랜 목록
          items:
            $ref: '#/components/schemas/ProductPricedto'
        createdAt:
          type: string
          description: 생성 시점
          format: date-time
        modifiedAt:
          type: string
          description: 수정 시점
          format: date-time
        enabledDemo:
          type: boolean
          description: 체험기간 활성화 여부
        demoPeriod:
          type: integer
          description: 체험 기간
          format: int32
        demoPeriodUnit:
          type: string
          description: 체험 기간 단위
          enum:
            - DAY
            - WEEK
            - MONTH
            - YEAR
        categories:
          type: array
          description: 카테고리
          items:
            $ref: '#/components/schemas/ProductCategoryDTO'
        vendorUuid:
          type: string
          description: 가맹점 UUID
          format: uuid
        productOrder:
          type: integer
          description: 순서
          format: int32
        isOnetimePurchasable:
          type: boolean
          description: 활성 구독 제한
        eventBadge:
          type: array
          description: 이벤트 뱃지
          items:
            $ref: '#/components/schemas/ProductEventBadge'
        notice:
          type: string
          description: 유의 사항
        useWidget:
          $ref: '#/components/schemas/ProductWidgetDTO'
        groupId:
          type: integer
          description: 그룹 ID
          format: int64
        countrySetting:
          $ref: '#/components/schemas/CountrySettingDTO'
        availableRegions:
          type: array
          description: 판매 가능 국가(region)
          items:
            type: string
            description: 판매 가능 국가(region)
            enum:
              - AD
              - AE
              - AF
              - AG
              - AI
              - AL
              - AM
              - AO
              - AQ
              - AR
              - AS
              - AT
              - AU
              - AW
              - AX
              - AZ
              - BA
              - BB
              - BD
              - BE
              - BF
              - BG
              - BH
              - BI
              - BJ
              - BL
              - BM
              - BN
              - BO
              - BQ
              - BR
              - BS
              - BT
              - BV
              - BW
              - BY
              - BZ
              - CA
              - CC
              - CD
              - CF
              - CG
              - CH
              - CI
              - CK
              - CL
              - CM
              - CN
              - CO
              - CR
              - CU
              - CV
              - CW
              - CX
              - CY
              - CZ
              - DE
              - DJ
              - DK
              - DM
              - DO
              - DZ
              - EC
              - EE
              - EG
              - EH
              - ER
              - ES
              - ET
              - FI
              - FJ
              - FK
              - FM
              - FO
              - FR
              - GA
              - GB
              - GD
              - GE
              - GF
              - GG
              - GH
              - GI
              - GL
              - GM
              - GN
              - GP
              - GQ
              - GR
              - GS
              - GT
              - GU
              - GW
              - GY
              - HK
              - HM
              - HN
              - HR
              - HT
              - HU
              - ID
              - IE
              - IL
              - IM
              - IN
              - IO
              - IQ
              - IR
              - IS
              - IT
              - JE
              - JM
              - JO
              - JP
              - KE
              - KG
              - KH
              - KI
              - KM
              - KN
              - KP
              - KR
              - KW
              - KY
              - KZ
              - LA
              - LB
              - LC
              - LI
              - LK
              - LR
              - LS
              - LT
              - LU
              - LV
              - LY
              - MA
              - MC
              - MD
              - ME
              - MF
              - MG
              - MH
              - MK
              - ML
              - MM
              - MN
              - MO
              - MP
              - MQ
              - MR
              - MS
              - MT
              - MU
              - MV
              - MW
              - MX
              - MY
              - MZ
              - NA
              - NC
              - NE
              - NF
              - NG
              - NI
              - NL
              - 'NO'
              - NP
              - NR
              - NU
              - NZ
              - OM
              - PA
              - PE
              - PF
              - PG
              - PH
              - PK
              - PL
              - PM
              - PN
              - PR
              - PS
              - PT
              - PW
              - PY
              - QA
              - RE
              - RO
              - RS
              - RU
              - RW
              - SA
              - SB
              - SC
              - SD
              - SE
              - SG
              - SH
              - SI
              - SJ
              - SK
              - SL
              - SM
              - SN
              - SO
              - SR
              - SS
              - ST
              - SV
              - SX
              - SY
              - SZ
              - TC
              - TD
              - TF
              - TG
              - TH
              - TJ
              - TK
              - TL
              - TM
              - TN
              - TO
              - TR
              - TT
              - TV
              - TW
              - TZ
              - UA
              - UG
              - UM
              - US
              - US_ALABAMA
              - US_ALASKA
              - US_ARIZONA
              - US_ARKANSAS
              - US_CALIFORNIA
              - US_COLORADO
              - US_CONNECTICUT
              - US_DELAWARE
              - US_FLORIDA
              - US_GEORGIA
              - US_HAWAII
              - US_IDAHO
              - US_ILLINOIS
              - US_INDIANA
              - US_IOWA
              - US_KANSAS
              - US_KENTUCKY
              - US_LOUISIANA
              - US_MAINE
              - US_MARYLAND
              - US_MASSACHUSETTS
              - US_MICHIGAN
              - US_MINNESOTA
              - US_MISSISSIPPI
              - US_MISSOURI
              - US_MONTANA
              - US_NEBRASKA
              - US_NEVADA
              - US_NEW_HAMPSHIRE
              - US_NEW_JERSEY
              - US_NEW_MEXICO
              - US_NEW_YORK
              - US_NORTH_CAROLINA
              - US_NORTH_DAKOTA
              - US_OHIO
              - US_OKLAHOMA
              - US_OREGON
              - US_PENNSYLVANIA
              - US_RHODE_ISLAND
              - US_SOUTH_CAROLINA
              - US_SOUTH_DAKOTA
              - US_TENNESSEE
              - US_TEXAS
              - US_UTAH
              - US_VERMONT
              - US_VIRGINIA
              - US_WASHINGTON
              - US_WEST_VIRGINIA
              - US_WISCONSIN
              - US_WYOMING
              - UY
              - UZ
              - VA
              - VC
              - VE
              - VG
              - VI
              - VN
              - VU
              - WF
              - WS
              - YE
              - YT
              - ZA
              - ZM
              - ZW
        shared:
          uniqueItems: true
          type: array
          description: 공유 벤더 목록
          items:
            type: string
            description: 공유 벤더 목록
            format: uuid
      description: 상품 정보
    BundleProductDTO:
      title: 번들 상품 정보
      type: object
      properties:
        code:
          type: string
          description: 상품 코드
        type:
          type: string
          description: 상품 타입
          enum:
            - BOX
            - SOFTWARE
            - BUNDLE
            - INVOICE
            - DRAFT
        status:
          type: string
          description: 상품 상태
          enum:
            - SALE
            - OUT_OF_STOCK
            - UNSOLD
            - WAITING_APPROVAL
            - REJECTED
        name:
          type: string
          description: 상품 이름
        description:
          type: string
          description: 상품 설명
        options:
          type: array
          description: 상품 옵션 목록
          items:
            $ref: '#/components/schemas/ProductOptionGroupDTO'
        prices:
          type: array
          description: 상품 가격플랜 목록
          items:
            $ref: '#/components/schemas/ProductPricedto'
        createdAt:
          type: string
          description: 생성된 시점
          format: date-time
        modifiedAt:
          type: string
          description: 수정된 시점
          format: date-time
      description: 번들 상품 정보
    ProductOptionGroupDTO:
      title: 상품 옵션 그룹 정보
      required:
        - id
        - name
        - options
      type: object
      properties:
        id:
          type: integer
          description: 옵션 그룹 번호
          format: int64
        name:
          type: string
          description: 옵션 그룹 이름
        options:
          type: array
          items:
            $ref: '#/components/schemas/ProductOptionDTO'
        depth:
          type: integer
          format: int32
      description: 옵션 그룹 정보
    OptionCombinationDTO:
      required:
        - id
        - status
      type: object
      properties:
        id:
          type: array
          items:
            type: integer
            format: int64
        quantity:
          type: integer
          format: int32
        price:
          type: number
        status:
          type: string
          enum:
            - SALE
            - OUT_OF_STOCK
            - HIDDEN
      description: 옵션 조합
    ProductEventBadge:
      required:
        - event
      type: object
      properties:
        event:
          type: string
        startDateTime:
          type: string
          description: 시작 시점
          format: date-time
        endDateTime:
          type: string
          description: 끝 시점
          format: date-time
      description: 이벤트 뱃지
    ProductWidgetDTO:
      type: object
      properties:
        useDemo:
          type: boolean
        useEventBadge:
          type: boolean
        useOnetimePurchasable:
          type: boolean
        useNotice:
          type: boolean
      description: 상품 위젯 사용 여부
    ProductOptionDTO:
      title: 옵션 정보
      required:
        - id
        - name
        - price
      type: object
      properties:
        id:
          type: integer
          description: 옵션 번호
          format: int64
        name:
          type: string
          description: 옵션 이름
        quantity:
          type: integer
          description: 수량
          format: int32
        price:
          type: number
          description: 가격
        parent:
          type: integer
          format: int64
  securitySchemes:
    Secret-Token:
      type: apiKey
      in: header
      name: Secret-Token

````