> ## 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 post /api/v1/products/{id}/prices
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/{id}/prices:
    post:
      tags:
        - 상품 API
      summary: 가격플랜 생성
      description: 가격플랜을 생성할 때 호출합니다.
      operationId: v1_createProductPrice
      parameters:
        - name: id
          in: path
          description: 상품 번호
          required: true
          schema:
            type: integer
            format: int64
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PriceCreateDTO'
            examples:
              단건 가격플랜:
                value:
                  price: 10000
                  unit: 회
                  plan:
                    name: 단건 가격플랜 이름
                    description: 단건 가격플랜 설명
                    detailDescription: 단건 가격플랜 상세설명
                    isHiddenFromShop: false
                    adminName: admin
                  type: ONE_TIME
                  firstSale:
                    enabled: true
                    price: 1000
                  claim:
                    methodType: PRE
                    whenToClaimType: FIRST_PAYMENT
                    billingDate: 0
                    provideStartDay: 0
                  maximumPurchaseQuantity: 0
                  expiryRecurringCount: 0
                  setupOption:
                    name: 가입비
                    type: INITIALLY
                    price: 500
                    claimMethodType: PRE
                  isRepresentative: false
              구독 가격플랜:
                value:
                  price: 8900
                  unit: 회
                  plan:
                    name: 구독 가격플랜
                    description: 구독 가격플랜 설명
                    detailDescription: 구독 가격플랜 상세설명
                    isHiddenFromShop: false
                    adminName: admin
                  type: FLAT
                  firstSale:
                    enabled: true
                    price: 1000
                  claim:
                    methodType: PRE
                    whenToClaimType: FIRST_PAYMENT
                    billingDate: 0
                    provideStartDay: 0
                  maximumPurchaseQuantity: 0
                  expiryRecurringCount: 0
                  setupOption:
                    name: 가입비
                    type: INITIALLY
                    price: 0
                    claimMethodType: PRE
                  recurring:
                    intervalCount: 1
                    interval: MONTH
                    aggregateUsageType: SUM
                    usageType: LICENSED
                  isRepresentative: false
        required: true
      responses:
        '201':
          description: 정상적으로 생성됨
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PriceV1DTO'
              examples:
                단건 가격플랜:
                  value:
                    id: 1
                    code: string
                    price: 0
                    unit: string
                    planName: string
                    planDescription: string
                    type: ONE_TIME
                    enabledFirstSalePrice: true
                    firstSalePrice: 0
                    claimMethodType: PRE
                    whenToClaimType: FIRST_PAYMENT
                    billingDate: 0
                    maximumPurchaseQuantity: 0
                    membershipExpirationDate: 0
                    membershipExpirationDateType: DAY
                    setupOption:
                      id: 1
                      name: string
                      type: INITIALLY
                      price: 0
                      claimMethodType: PRE
                    options:
                      - id: 1
                        name: string
                        productCode: string
                        type: INITIALLY
                        price: 0
                        priceCode: string
                        priceName: string
                        productType: BOX
                        recurringDTO:
                          id: 1
                          intervalCount: 0
                          aggregateUsageType: SUM
                          interval: DAY
                          usageType: LICENSED
                    volumes:
                      - id: 1
                        min: 0
                        max: 0
                        price: 0
                    additionalBilling:
                      id: 1
                      type: USAGE_BASED_WITH_RANGE
                      ranges:
                        - id: 1
                          until: 0
                          price: 0
                    recurring:
                      id: 1
                      intervalCount: 0
                      aggregateUsageType: SUM
                      interval: DAY
                      usageType: LICENSED
                    createdAt: '9999-01-01T00:00:00'
                    modifiedAt: '9999-01-01T00:00:00'
                    plan:
                      name: string
                      description: string
                      detailDescription: string
                      isHiddenFromShop: true
                      adminName: string
                    firstSale:
                      enabled: true
                      price: 0
                    claim:
                      methodType: PRE
                      whenToClaimType: FIRST_PAYMENT
                      billingDate: 0
                      provideStartDay: 0
                    basicServing: 0
                    bundlePrices:
                      - product:
                          id: 1
                          code: string
                          type: BOX
                          status: SALE
                          name: string
                          subTitle: string
                          featuredImageUrl: string
                          imageUrls:
                            - string
                          description: string
                          summary: string
                          reasonOfReject: string
                          sku: string
                          quantity: 0
                          combinedProducts:
                            - code: string
                              type: BOX
                              status: SALE
                              name: string
                              description: string
                              options:
                                - id: 1
                                  name: string
                                  options:
                                    - id: 1
                                      name: string
                                      quantity: 0
                                      price: 0
                                      parent: 0
                                  depth: 0
                              prices:
                                - {}
                              createdAt: '9999-01-01T00:00:00'
                              modifiedAt: '9999-01-01T00:00:00'
                          optionGroups:
                            - id: 1
                              name: string
                              options:
                                - id: 1
                                  name: string
                                  quantity: 0
                                  price: 0
                                  parent: 0
                              depth: 0
                          useCombination: true
                          optionCombinations:
                            - id:
                                - 1
                              quantity: 0
                              price: 0
                              status: SALE
                          prices:
                            - {}
                          createdAt: '9999-01-01T00:00:00'
                          modifiedAt: '9999-01-01T00:00:00'
                          enabledDemo: true
                          demoPeriod: 0
                          demoPeriodUnit: DAY
                          categories:
                            - categoryId: 0
                              name: string
                          vendorUuid: 206992bb-6462-4b4f-9847-cf2f40d55b48
                          productOrder: 0
                          isOnetimePurchasable: true
                          eventBadge:
                            - event: string
                              startDateTime: '9999-01-01T00:00:00'
                              endDateTime: '9999-01-01T00:00:00'
                          notice: string
                          useWidget:
                            useDemo: true
                            useEventBadge: true
                            useOnetimePurchasable: true
                            useNotice: true
                          groupId: 0
                          countrySetting:
                            id: 1
                            countryCode: string
                            timezoneName: string
                            currencyCode: string
                            isDefault: true
                            taxRate: 0
                        price: {}
                    onetimeBundlePrice: 0
                    order: 0
                구독 가격플랜:
                  value:
                    id: 1
                    code: price_AbCdEfGhI
                    price: 8900
                    unit: 회
                    planName: 구독 가격플랜
                    planDescription: 구독 가격플랜 설명
                    type: FLAT
                    enabledFirstSalePrice: true
                    firstSalePrice: 1000
                    claimMethodType: PRE
                    whenToClaimType: FIRST_PAYMENT
                    billingDate: 0
                    maximumPurchaseQuantity: 0
                    membershipExpirationDate: 0
                    membershipExpirationDateType: null
                    setupOption:
                      id: 1
                      name: 가입비
                      type: INITIALLY
                      price: 0
                      claimMethodType: PRE
                    options: []
                    volumes: []
                    additionalBilling: null
                    recurring:
                      id: 1
                      intervalCount: 1
                      aggregateUsageType: SUM
                      interval: MONTH
                      usageType: LICENSED
                    createdAt: '9999-01-01T00:00:00.000000'
                    modifiedAt: '9999-01-01T00:00:00.000000'
                    plan:
                      name: 구독 가격플랜
                      description: 구독 가격플랜 설명
                      detailDescription: 구독 가격플랜 상세설명
                      isHiddenFromShop: false
                      adminName: admin
                    firstSale:
                      enabled: true
                      price: 1000
                    claim:
                      methodType: PRE
                      whenToClaimType: FIRST_PAYMENT
                      billingDate: 0
                      provideStartDay: 0
                    basicServing: 0
                    bundlePrices: []
                    onetimeBundlePrice: 0
                    order: 0
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ProductErrorresponse'
        '403':
          description: Forbidden
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ProductErrorresponse'
        '404':
          description: 상품을 찾지 못 함
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PriceV1DTO'
components:
  schemas:
    PriceCreateDTO:
      title: 가격플랜 생성 데이터
      required:
        - unit
        - plan
        - type
      type: object
      properties:
        price:
          minimum: 0
          exclusiveMinimum: false
          type: number
          description: '기본 가격 (기본값: 0)'
        currencyPrice:
          type: object
          additionalProperties:
            type: number
            description: 통화별 기본 가격
          description: 통화별 기본 가격
        unit:
          type: string
          description: 단위
        plan:
          $ref: '#/components/schemas/Plan'
        type:
          type: string
          description: 가격 플랜 타입
          enum:
            - ONE_TIME
            - FLAT
            - UNIT_BASED
            - USAGE_BASED
            - VOLUME_BASED
            - BUNDLE
        firstSale:
          $ref: '#/components/schemas/FirstSaleDTO'
        claim:
          $ref: '#/components/schemas/Claim'
        maximumPurchaseQuantity:
          type: integer
          description: 최대 구매 가능 개수 지정
          format: int32
        membershipExpirationDate:
          type: integer
          description: 구독 만기 기간
          format: int32
          deprecated: true
        membershipExpirationDateType:
          type: string
          description: 구독 만기 기간 단위
          deprecated: true
          enum:
            - DAY
            - WEEK
            - MONTH
            - YEAR
        expiryRecurringCount:
          type: integer
          description: 구독 만료되는 결제 횟수
          format: int32
        setupOption:
          $ref: '#/components/schemas/PriceSetupOptionDTO'
        options:
          type: array
          description: 추가 구매 가능한 상품 옵션
          deprecated: true
          items:
            $ref: '#/components/schemas/PriceOptionCreateDTO'
        recurring:
          $ref: '#/components/schemas/PriceRecurringCreateDTO'
        basicServing:
          type: integer
          description: 기본 제공량 - 계정/사용량 기반 요금 사용시
          format: int32
        isRepresentative:
          type: boolean
          description: '대표 가격 지정 - 스텝샵에서 기본 가격으로 설정됩니다. (기본값: false)'
        onetimeBundlePrice:
          type: number
          description: 번들 플랜 설정 - 번들 플랜의 단건 가격을 설정합니다.
        currencyOnetimeBundlePrice:
          type: object
          additionalProperties:
            type: number
            description: 통화별 번들 플랜 단건 가격
          description: 통화별 번들 플랜 단건 가격
      description: 가격플랜 생성 데이터
    PriceV1DTO:
      title: 가격 플랜 정보
      required:
        - basicServing
        - billingDate
        - bundlePrices
        - code
        - 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/PriceSetupOptionV1DTO'
        options:
          type: array
          description: 옵션 정보
          deprecated: true
          items:
            $ref: '#/components/schemas/PriceOptionV1DTO'
        volumes:
          type: array
          deprecated: true
          items:
            $ref: '#/components/schemas/PriceVolumeV1DTO'
        additionalBilling:
          $ref: '#/components/schemas/PriceAdditionalBillingV1DTO'
        recurring:
          $ref: '#/components/schemas/PriceRecurringV1DTO'
        createdAt:
          type: string
          description: 생성된 시점
          format: date-time
        modifiedAt:
          type: string
          description: 수정된 시점
          format: date-time
        plan:
          $ref: '#/components/schemas/PlanV1DTO'
        firstSale:
          $ref: '#/components/schemas/FirstSaleV1DTO'
        claim:
          $ref: '#/components/schemas/ClaimV1DTO'
        basicServing:
          type: integer
          description: 기본 제공량 - 계정/사용량 기반 요금 사용시
          format: int32
        bundlePrices:
          type: array
          description: 번들 플랜 - 번들 상품 구성
          items:
            $ref: '#/components/schemas/PriceBundleV1DTO'
        onetimeBundlePrice:
          type: number
          description: 번들 플랜 - 단건 상품 금액
        order:
          type: integer
          description: 우선 순위
          format: int32
      description: 가격 플랜 정보
    ProductErrorresponse:
      required:
        - errorCode
      type: object
      properties:
        traceId:
          type: string
        errorCode:
          type: string
        errorMessage:
          type: string
        details:
          $ref: '#/components/schemas/ReturnError'
    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: 청구 방식 정보
    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: 기본료 정보
    PriceOptionCreateDTO:
      required:
        - priceCode
      type: object
      properties:
        priceCode:
          type: string
      description: 추가 구매 가능한 상품 옵션
      deprecated: true
    PriceRecurringCreateDTO:
      required:
        - interval
        - intervalCount
      type: object
      properties:
        intervalCount:
          minimum: 0
          type: integer
          format: int32
        interval:
          type: string
          enum:
            - DAY
            - WEEK
            - MONTH
            - YEAR
      description: '반복 주기, 가격 타입이 ONE_TIME이 아닌 경우 필수값입니다. '
    PriceSetupOptionV1DTO:
      title: 기본료 정보
      required:
        - name
        - type
      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: 기본료 정보
    PriceOptionV1DTO:
      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/PriceRecurringV1DTO'
      description: 옵션 정보
      deprecated: true
    PriceVolumeV1DTO:
      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
    PriceAdditionalBillingV1DTO:
      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/PriceAdditionalBillingRangeV1DTO'
      description: 추가 과금 정보
    PriceRecurringV1DTO:
      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: 구독 주기 정보
    PlanV1DTO:
      title: 가격 플랜 정보
      required:
        - description
        - isHiddenFromShop
        - name
      type: object
      properties:
        name:
          type: string
          description: 플랜 이름
        description:
          type: string
          description: 플랜 설명
        detailDescription:
          type: string
          description: 자세히 보기
        isHiddenFromShop:
          type: boolean
          description: 플랜 사용 여부
        adminName:
          type: string
          description: 어드민 플랜 이름
      description: 가격 플랜 정보
    FirstSaleV1DTO:
      title: 첫 구매 할인 정보
      required:
        - currencyPrice
        - enabled
        - price
      type: object
      properties:
        enabled:
          type: boolean
          description: 첫 구매 할인 적용 여부
        price:
          type: number
          description: 첫 구매 할인시 적용되는 할인 금액(기준통화)
        currencyPrice:
          type: object
          additionalProperties:
            type: number
            description: 통화별 첫구매 할인 금액(기준통화 외)
          description: 통화별 첫구매 할인 금액(기준통화 외)
      description: 첫 구매 할인 정보
    ClaimV1DTO:
      title: 청구 방식 정보
      required:
        - billingDate
        - methodType
        - whenToClaimType
      type: object
      properties:
        methodType:
          type: string
          description: 선불인지 후불인지 여부
          enum:
            - PRE
            - POST
        whenToClaimType:
          type: string
          description: 후불인 경우, 언제 결제되는지
          enum:
            - FIRST_PAYMENT
            - DATE
        billingDate:
          type: integer
          description: 후불일 때 결제되는 날짜를 지정한 경우, 지정된 날짜
          format: int32
        provideStartDay:
          type: integer
          description: 서비스 제공기간 시작일
          format: int32
      description: 청구 방식 정보
    PriceBundleV1DTO:
      required:
        - price
        - product
      type: object
      properties:
        product:
          $ref: '#/components/schemas/ProductV1DTO'
        price:
          $ref: '#/components/schemas/PriceV1DTO'
      description: 번들 플랜 - 번들 상품 구성
    ReturnError:
      type: object
    PriceAdditionalBillingRangeV1DTO:
      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: 추가 과금 범위 정보
    ProductV1DTO:
      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
          deprecated: true
        quantity:
          type: integer
          description: 재고 수량
          format: int32
        combinedProducts:
          type: array
          description: 번들 상품 정보
          items:
            $ref: '#/components/schemas/BundleProductV1DTO'
        optionGroups:
          type: array
          description: 옵션 그룹 정보
          items:
            $ref: '#/components/schemas/ProductOptionGroupV1DTO'
        useCombination:
          type: boolean
          description: 조합형 옵션 사용 여부
        optionCombinations:
          type: array
          description: 옵션 조합
          items:
            $ref: '#/components/schemas/OptionCombinationV1DTO'
        prices:
          type: array
          description: 가격 플랜 목록
          items:
            $ref: '#/components/schemas/PriceV1DTO'
        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/ProductCategoryV1DTO'
        vendorUuid:
          type: string
          description: 가맹점 UUID
          format: uuid
        productOrder:
          type: integer
          description: 순서
          format: int32
        isOnetimePurchasable:
          type: boolean
          description: 활성 구독 제한
          deprecated: true
        eventBadge:
          type: array
          description: 이벤트 뱃지
          deprecated: true
          items:
            $ref: '#/components/schemas/ProductEventBadgeV1DTO'
        notice:
          type: string
          description: 유의 사항
          deprecated: true
        useWidget:
          $ref: '#/components/schemas/ProductWidgetV1DTO'
        groupId:
          type: integer
          description: 그룹 ID
          format: int64
          deprecated: true
        countrySetting:
          $ref: '#/components/schemas/CountrySettingV1DTO'
        availableRegions:
          type: array
          description: 판매 가능 국가
          items:
            $ref: '#/components/schemas/RegionV1DTO'
      description: 상품 정보
    BundleProductV1DTO:
      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/ProductOptionGroupV1DTO'
        prices:
          type: array
          description: 상품 가격플랜 목록
          items:
            $ref: '#/components/schemas/PriceV1DTO'
        createdAt:
          type: string
          description: 생성된 시점
          format: date-time
        modifiedAt:
          type: string
          description: 수정된 시점
          format: date-time
      description: 번들 상품 정보
    ProductOptionGroupV1DTO:
      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/ProductOptionV1DTO'
        depth:
          type: integer
          format: int32
      description: 옵션 그룹 정보
    OptionCombinationV1DTO:
      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: 옵션 조합
    ProductCategoryV1DTO:
      required:
        - categoryId
        - name
      type: object
      properties:
        categoryId:
          type: integer
          format: int64
        name:
          type: string
      description: 카테고리
    ProductEventBadgeV1DTO:
      title: 첫 구매 할인 정보
      required:
        - event
      type: object
      properties:
        event:
          type: string
        startDateTime:
          type: string
          description: 시작 시점
          format: date-time
        endDateTime:
          type: string
          description: 끝 시점
          format: date-time
      description: 이벤트 뱃지
      deprecated: true
    ProductWidgetV1DTO:
      type: object
      properties:
        useDemo:
          type: boolean
        useEventBadge:
          type: boolean
        useOnetimePurchasable:
          type: boolean
        useNotice:
          type: boolean
      description: 상품 위젯 사용 여부
      deprecated: true
    CountrySettingV1DTO:
      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: 국가 설정 정보
    RegionV1DTO:
      title: 판매국가 정보
      required:
        - code
        - country
        - countryCode
        - currency
      type: object
      properties:
        code:
          title: Region Enum Code
          type: string
        currency:
          title: 해당 국가에서 사용되는 대표 통화 코드
          type: string
        country:
          title: 국가 이름
          type: string
        countryCode:
          title: 국가 코드(ISO 3166 alpha-2)
          type: string
        state:
          title: 주 이름
          type: string
        language:
          title: 국가 언어 코드(ISO 639-1)
          type: string
      description: 판매 국가(주)
    ProductOptionV1DTO:
      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

````