PortOne Billing Keys API

The Billing Keys API from PortOne — 4 operation(s) for billing keys.

OpenAPI Specification

portone-billing-keys-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: PortOne B2b Billing Keys API
  version: 1.16.0
servers:
- url: https://api.portone.io
  description: 운영환경 서버
tags:
- name: Billing Keys
paths:
  /billing-keys:
    get:
      summary: 빌링키 다건 조회
      description: '빌링키 다건 조회


        주어진 조건에 맞는 빌링키들을 페이지 기반으로 조회합니다.'
      operationId: getBillingKeyInfos
      parameters:
      - name: requestBody
        in: query
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetBillingKeyInfosBody'
      responses:
        '200':
          description: 성공 응답으로 조회된 빌링키 리스트와 페이지 정보가 반환됩니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBillingKeyInfosResponse'
          x-portone-title: 성공 응답으로 조회된 빌링키 리스트와 페이지 정보가 반환됩니다.
        '400':
          description: '* `InvalidRequestError`: 요청된 입력 정보가 유효하지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBillingKeyInfosError'
        '401':
          description: '* `UnauthorizedError`: 인증 정보가 올바르지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBillingKeyInfosError'
        '403':
          description: '* `ForbiddenError`: 요청이 거절된 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBillingKeyInfosError'
      security:
      - bearerJwt: []
      - portOne: []
      x-portone-category: payment.billingKey
      x-portone-title: 빌링키 다건 조회
      x-portone-description: 주어진 조건에 맞는 빌링키들을 페이지 기반으로 조회합니다.
      x-portone-error:
        $ref: '#/components/schemas/GetBillingKeyInfosError'
      tags:
      - Billing Keys
    post:
      summary: 빌링키 발급
      description: '빌링키 발급


        빌링키 발급을 요청합니다.'
      operationId: issueBillingKey
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IssueBillingKeyBody'
        required: true
      responses:
        '200':
          description: 성공 응답
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueBillingKeyResponse'
          x-portone-title: 성공 응답
        '400':
          description: '* `InvalidRequestError`: 요청된 입력 정보가 유효하지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueBillingKeyError'
        '401':
          description: '* `UnauthorizedError`: 인증 정보가 올바르지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueBillingKeyError'
        '403':
          description: '* `ForbiddenError`: 요청이 거절된 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueBillingKeyError'
        '404':
          description: '* `ChannelNotFoundError`: 요청된 채널이 존재하지 않는 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueBillingKeyError'
        '502':
          description: '* `PgProviderError`: PG사에서 오류를 전달한 경우

            * `ChannelSpecificError`: 여러 채널을 지정한 요청에서, 채널 각각에서 오류가 발생한 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueBillingKeyError'
      security:
      - bearerJwt: []
      - portOne: []
      x-portone-category: payment.billingKey
      x-portone-title: 빌링키 발급
      x-portone-description: 빌링키 발급을 요청합니다.
      x-portone-error:
        $ref: '#/components/schemas/IssueBillingKeyError'
      tags:
      - Billing Keys
  /billing-keys/confirm:
    post:
      summary: 빌링키 발급 수동 승인
      description: '빌링키 발급 수동 승인


        수동 승인으로 설정된 빌링키 발급에 대해, 빌링키 발급을 완료 처리합니다.'
      operationId: confirmBillingKey
      requestBody:
        description: 빌링키 발급 승인 요청 정보
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfirmBillingKeyBody'
        required: true
        x-portone-title: 빌링키 발급 승인 요청 정보
      responses:
        '200':
          description: 성공 응답으로 빌링키 발급 승인 결과를 반환합니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmedBillingKeySummary'
          x-portone-title: 성공 응답으로 빌링키 발급 승인 결과를 반환합니다.
        '400':
          description: '* `InvalidRequestError`: 요청된 입력 정보가 유효하지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmBillingKeyError'
        '401':
          description: '* `UnauthorizedError`: 인증 정보가 올바르지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmBillingKeyError'
        '403':
          description: '* `ForbiddenError`: 요청이 거절된 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmBillingKeyError'
        '404':
          description: '* `BillingKeyNotFoundError`: 빌링키가 존재하지 않는 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmBillingKeyError'
        '409':
          description: '* `BillingKeyAlreadyIssuedError`

            * `InformationMismatchError`: 정보가 일치하지 않는 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmBillingKeyError'
        '502':
          description: '* `PgProviderError`: PG사에서 오류를 전달한 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmBillingKeyError'
      security:
      - bearerJwt: []
      - portOne: []
      x-portone-category: payment.billingKey
      x-portone-title: 빌링키 발급 수동 승인
      x-portone-description: 수동 승인으로 설정된 빌링키 발급에 대해, 빌링키 발급을 완료 처리합니다.
      x-portone-error:
        $ref: '#/components/schemas/ConfirmBillingKeyError'
      tags:
      - Billing Keys
  /billing-keys/confirm-issue-and-pay:
    post:
      summary: 빌링키 발급 및 초회 결제 수동 승인
      description: '빌링키 발급 및 초회 결제 수동 승인


        수동 승인으로 설정된 빌링키 발급 및 초회 결제에 대해, 빌링키 발급과 결제를 완료 처리합니다.'
      operationId: confirmBillingKeyIssueAndPay
      requestBody:
        description: 빌링키 발급 및 초회 결제 승인 요청 정보
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfirmBillingKeyIssueAndPayBody'
        required: true
        x-portone-title: 빌링키 발급 및 초회 결제 승인 요청 정보
      responses:
        '200':
          description: 성공 응답으로 빌링키 발급 및 초회 결제 승인 결과를 반환합니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmedBillingKeyIssueAndPaySummary'
          x-portone-title: 성공 응답으로 빌링키 발급 및 초회 결제 승인 결과를 반환합니다.
        '400':
          description: '* `InvalidRequestError`: 요청된 입력 정보가 유효하지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmBillingKeyIssueAndPayError'
        '401':
          description: '* `UnauthorizedError`: 인증 정보가 올바르지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmBillingKeyIssueAndPayError'
        '403':
          description: '* `ForbiddenError`: 요청이 거절된 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmBillingKeyIssueAndPayError'
        '404':
          description: '* `BillingKeyNotFoundError`: 빌링키가 존재하지 않는 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmBillingKeyIssueAndPayError'
        '409':
          description: '* `BillingKeyAlreadyIssuedError`

            * `InformationMismatchError`: 정보가 일치하지 않는 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmBillingKeyIssueAndPayError'
        '502':
          description: '* `PgProviderError`: PG사에서 오류를 전달한 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmBillingKeyIssueAndPayError'
      security:
      - bearerJwt: []
      - portOne: []
      x-portone-category: payment.billingKey
      x-portone-title: 빌링키 발급 및 초회 결제 수동 승인
      x-portone-description: 수동 승인으로 설정된 빌링키 발급 및 초회 결제에 대해, 빌링키 발급과 결제를 완료 처리합니다.
      x-portone-error:
        $ref: '#/components/schemas/ConfirmBillingKeyIssueAndPayError'
      tags:
      - Billing Keys
  /billing-keys/{billingKey}:
    get:
      summary: 빌링키 단건 조회
      description: '빌링키 단건 조회


        주어진 빌링키에 대응되는 빌링키 정보를 조회합니다.'
      operationId: getBillingKeyInfo
      parameters:
      - name: billingKey
        in: path
        description: 조회할 빌링키
        required: true
        schema:
          type: string
        x-portone-title: 조회할 빌링키
      - name: storeId
        in: query
        description: '상점 아이디


          접근 권한이 있는 상점 아이디만 입력 가능하며, 미입력시 인증 정보의 상점 아이디를 사용합니다.'
        required: false
        schema:
          type: string
        x-portone-title: 상점 아이디
        x-portone-description: 접근 권한이 있는 상점 아이디만 입력 가능하며, 미입력시 인증 정보의 상점 아이디를 사용합니다.
      responses:
        '200':
          description: 성공 응답으로 빌링키 정보를 반환합니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingKeyInfo'
          x-portone-description: 성공 응답으로 빌링키 정보를 반환합니다.
        '400':
          description: '* `InvalidRequestError`: 요청된 입력 정보가 유효하지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBillingKeyInfoError'
        '401':
          description: '* `UnauthorizedError`: 인증 정보가 올바르지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBillingKeyInfoError'
        '403':
          description: '* `ForbiddenError`: 요청이 거절된 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBillingKeyInfoError'
        '404':
          description: '* `BillingKeyNotFoundError`: 빌링키가 존재하지 않는 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBillingKeyInfoError'
      security:
      - bearerJwt: []
      - portOne: []
      x-portone-category: payment.billingKey
      x-portone-title: 빌링키 단건 조회
      x-portone-description: 주어진 빌링키에 대응되는 빌링키 정보를 조회합니다.
      x-portone-error:
        $ref: '#/components/schemas/GetBillingKeyInfoError'
      tags:
      - Billing Keys
    delete:
      summary: 빌링키 삭제
      description: '빌링키 삭제


        빌링키를 삭제합니다.'
      operationId: deleteBillingKey
      parameters:
      - name: billingKey
        in: path
        description: 삭제할 빌링키
        required: true
        schema:
          type: string
        x-portone-title: 삭제할 빌링키
      - name: storeId
        in: query
        description: '상점 아이디


          접근 권한이 있는 상점 아이디만 입력 가능하며, 미입력시 인증 정보의 상점 아이디를 사용합니다.'
        required: false
        schema:
          type: string
        x-portone-title: 상점 아이디
        x-portone-description: 접근 권한이 있는 상점 아이디만 입력 가능하며, 미입력시 인증 정보의 상점 아이디를 사용합니다.
      - name: reason
        in: query
        description: '사유


          네이버페이: 자동결제 해지 사유입니다. 명시가 필요합니다.'
        required: false
        schema:
          type: string
        x-portone-title: 사유
        x-portone-description: '네이버페이: 자동결제 해지 사유입니다. 명시가 필요합니다.'
      - name: requester
        in: query
        description: '요청 주체


          네이버페이: 자동결제 해지 요청 주체입니다. 명시가 필요합니다.'
        required: false
        schema:
          $ref: '#/components/schemas/BillingKeyDeleteRequester'
        x-portone-title: 요청 주체
        x-portone-description: '네이버페이: 자동결제 해지 요청 주체입니다. 명시가 필요합니다.'
      - name: skipWebhook
        in: query
        description: '웹훅 생략 여부


          빌링키 삭제가 성공했을 때 웹훅을 전송하지 않으려면 true로 설정합니다.'
        required: false
        schema:
          type: boolean
        x-portone-title: 웹훅 생략 여부
        x-portone-description: 빌링키 삭제가 성공했을 때 웹훅을 전송하지 않으려면 true로 설정합니다.
      responses:
        '200':
          description: 성공 응답
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteBillingKeyResponse'
          x-portone-title: 성공 응답
        '400':
          description: '* `InvalidRequestError`: 요청된 입력 정보가 유효하지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteBillingKeyError'
        '401':
          description: '* `UnauthorizedError`: 인증 정보가 올바르지 않은 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteBillingKeyError'
        '403':
          description: '* `ForbiddenError`: 요청이 거절된 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteBillingKeyError'
        '404':
          description: '* `BillingKeyNotIssuedError`

            * `BillingKeyNotFoundError`: 빌링키가 존재하지 않는 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteBillingKeyError'
        '409':
          description: '* `BillingKeyAlreadyDeletedError`: 빌링키가 이미 삭제된 경우

            * `PaymentScheduleAlreadyExistsError`: 결제 예약건이 이미 존재하는 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteBillingKeyError'
        '502':
          description: '* `PgProviderError`: PG사에서 오류를 전달한 경우

            * `ChannelSpecificError`: 여러 채널을 지정한 요청에서, 채널 각각에서 오류가 발생한 경우'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteBillingKeyError'
      security:
      - bearerJwt: []
      - portOne: []
      x-portone-category: payment.billingKey
      x-portone-title: 빌링키 삭제
      x-portone-description: 빌링키를 삭제합니다.
      x-portone-error:
        $ref: '#/components/schemas/DeleteBillingKeyError'
      tags:
      - Billing Keys
components:
  schemas:
    ConfirmedBillingKeyIssueAndPaySummary:
      title: 빌링키 발급 및 초회 결제 수동 승인 완료 응답
      description: 빌링키 발급 및 초회 결제 수동 승인 완료 응답
      type: object
      required:
      - billingKey
      - paymentId
      properties:
        billingKey:
          type: string
          title: 빌링키
        paymentId:
          type: string
          title: 결제 건 아이디
      x-portone-title: 빌링키 발급 및 초회 결제 수동 승인 완료 응답
    GetBillingKeyInfosResponse:
      title: 빌링키 다건 조회 성공 응답 정보
      description: 빌링키 다건 조회 성공 응답 정보
      type: object
      required:
      - items
      - page
      properties:
        items:
          title: 조회된 빌링키 리스트
          type: array
          items:
            $ref: '#/components/schemas/BillingKeyInfo'
        page:
          $ref: '#/components/schemas/PageInfo'
          title: 조회된 페이지 정보
      x-portone-title: 빌링키 다건 조회 성공 응답 정보
    DeleteBillingKeyError:
      title: DeleteBillingKeyError
      oneOf:
      - $ref: '#/components/schemas/BillingKeyAlreadyDeletedError'
      - $ref: '#/components/schemas/BillingKeyNotFoundError'
      - $ref: '#/components/schemas/BillingKeyNotIssuedError'
      - $ref: '#/components/schemas/ChannelSpecificError'
      - $ref: '#/components/schemas/ForbiddenError'
      - $ref: '#/components/schemas/InvalidRequestError'
      - $ref: '#/components/schemas/PaymentScheduleAlreadyExistsError'
      - $ref: '#/components/schemas/PgProviderError'
      - $ref: '#/components/schemas/UnauthorizedError'
      discriminator:
        propertyName: type
        mapping:
          BILLING_KEY_ALREADY_DELETED: '#/components/schemas/BillingKeyAlreadyDeletedError'
          BILLING_KEY_NOT_FOUND: '#/components/schemas/BillingKeyNotFoundError'
          BILLING_KEY_NOT_ISSUED: '#/components/schemas/BillingKeyNotIssuedError'
          CHANNEL_SPECIFIC: '#/components/schemas/ChannelSpecificError'
          FORBIDDEN: '#/components/schemas/ForbiddenError'
          INVALID_REQUEST: '#/components/schemas/InvalidRequestError'
          PAYMENT_SCHEDULE_ALREADY_EXISTS: '#/components/schemas/PaymentScheduleAlreadyExistsError'
          PG_PROVIDER: '#/components/schemas/PgProviderError'
          UNAUTHORIZED: '#/components/schemas/UnauthorizedError'
    Customer:
      title: 고객 정보
      description: 고객 정보
      type: object
      properties:
        id:
          type: string
          title: 고객 아이디
          description: 고객사가 지정한 고객의 고유 식별자입니다.
        name:
          type: string
          title: 이름
        birthYear:
          type: string
          title: 출생 연도
        birthMonth:
          type: string
          title: 출생 월
        birthDay:
          type: string
          title: 출생 일자
        gender:
          $ref: '#/components/schemas/Gender'
          title: 성별
        email:
          type: string
          title: 이메일
        phoneNumber:
          type: string
          title: 전화번호
        address:
          $ref: '#/components/schemas/Address'
          title: 주소
        zipcode:
          type: string
          title: 우편번호
      x-portone-title: 고객 정보
    PageInput:
      title: 다건 조회 API 에 사용되는 페이지 입력 정보
      description: 다건 조회 API 에 사용되는 페이지 입력 정보
      type: object
      properties:
        number:
          type: integer
          format: int32
          title: 0부터 시작하는 페이지 번호
        size:
          type: integer
          format: int32
          title: 각 페이지 당 포함할 객체 수
      x-portone-title: 다건 조회 API 에 사용되는 페이지 입력 정보
    BillingKeySortInput:
      title: 빌링키 다건 조회 시 정렬 조건
      description: 빌링키 다건 조회 시 정렬 조건
      type: object
      properties:
        by:
          $ref: '#/components/schemas/BillingKeySortBy'
          title: 정렬 기준 필드
          description: 어떤 필드를 기준으로 정렬할 지 결정합니다. 비워서 보낼 경우, REQUESTED_AT이 기본값으로 설정됩니다.
        order:
          $ref: '#/components/schemas/SortOrder'
          title: 정렬 순서
          description: 어떤 순서로 정렬할 지 결정합니다. 비워서 보낼 경우, DESC(내림차순)가 기본값으로 설정됩니다.
      x-portone-title: 빌링키 다건 조회 시 정렬 조건
    PgProviderError:
      title: PG사에서 오류를 전달한 경우
      description: PG사에서 오류를 전달한 경우
      type: object
      required:
      - type
      - pgCode
      - pgMessage
      properties:
        type:
          type: string
        message:
          type: string
        pgCode:
          type: string
        pgMessage:
          type: string
      x-portone-title: PG사에서 오류를 전달한 경우
      x-portone-status-code: 502
    SelectedChannelType:
      title: 채널 타입
      description: 채널 타입
      type: string
      enum:
      - LIVE
      - TEST
      x-portone-title: 채널 타입
      x-portone-enum:
        LIVE:
          title: 실 연동 채널
        TEST:
          title: 테스트 연동 채널
    PaymentScheduleAlreadyExistsError:
      title: 결제 예약건이 이미 존재하는 경우
      description: 결제 예약건이 이미 존재하는 경우
      type: object
      required:
      - type
      properties:
        type:
          type: string
        message:
          type: string
      x-portone-title: 결제 예약건이 이미 존재하는 경우
      x-portone-status-code: 409
    EasyPayProvider:
      title: 간편 결제사
      description: 간편 결제사
      type: string
      enum:
      - SAMSUNGPAY
      - KAKAOPAY
      - NAVERPAY
      - PAYCO
      - SSGPAY
      - CHAI
      - LPAY
      - KPAY
      - TOSSPAY
      - LGPAY
      - PINPAY
      - APPLEPAY
      - SKPAY
      - TOSS_BRANDPAY
      - KB_APP
      - ALIPAY
      - HYPHEN
      - TMONEY
      - PAYPAL
      - SMILEPAY
      - MIR
      - WECHAT
      - LINEPAY
      - KLARNA
      - GRABPAY
      - SHOPEEPAY
      - JKOPAY
      - PAYPAY
      - AMAZONPAY
      - RAKUTENPAY
      - DBARAI
      - AUPAY
      - MERPAY
      - MONEYTREE
      - KPLUS
      - TINABA
      - BILL_EASE
      - KREDIVO
      - RABBIT_LINE_PAY
      - ALIPAY_HK
      - AKULAKU_PAY_LATER
      - BOOST
      - BPI
      - DANA
      - G_CASH
      - HIPAY
      - MPAY
      - TOUCH_N_GO
      - TRUE_MONEY
      - DOKU_WALLET
      - JENIUS_PAY
      - OVO
      - MAYA
      - QRIS
      - THAI_QR
      - GOOGLE_PAY
      x-portone-title: 간편 결제사
      x-portone-enum:
        ALIPAY_HK: {}
        MIR: {}
        QRIS: {}
        MONEYTREE: {}
        GRABPAY: {}
        TOSS_BRANDPAY: {}
        JKOPAY: {}
        SHOPEEPAY: {}
        BOOST: {}
        ALIPAY: {}
        LPAY: {}
        DBARAI: {}
        KB_APP: {}
        LINEPAY: {}
        PAYCO: {}
        HIPAY: {}
        BILL_EASE: {}
        DOKU_WALLET: {}
        SMILEPAY: {}
        TINABA: {}
        KLARNA: {}
        JENIUS_PAY: {}
        RABBIT_LINE_PAY: {}
        THAI_QR: {}
        NAVERPAY: {}
        GOOGLE_PAY: {}
        KREDIVO: {}
        CHAI: {}
        PINPAY: {}
        WECHAT: {}
        KPLUS: {}
        MAYA: {}
        TMONEY: {}
        TOSSPAY: {}
        SSGPAY: {}
        MERPAY: {}
        PAYPAL: {}
        OVO: {}
        G_CASH: {}
        LGPAY: {}
        APPLEPAY: {}
        HYPHEN: {}
        AUPAY: {}
        SAMSUNGPAY: {}
        DANA: {}
        TOUCH_N_GO: {}
        KPAY: {}
        AMAZONPAY: {}
        BPI: {}
        TRUE_MONEY: {}
        SKPAY: {}
        AKULAKU_PAY_LATER: {}
        RAKUTENPAY: {}
        PAYPAY: {}
        KAKAOPAY: {}
        MPAY: {}
    IssueBillingKeyError:
      title: IssueBillingKeyError
      oneOf:
      - $ref: '#/components/schemas/ChannelNotFoundError'
      - $ref: '#/components/schemas/ChannelSpecificError'
      - $ref: '#/components/schemas/ForbiddenError'
      - $ref: '#/components/schemas/InvalidRequestError'
      - $ref: '#/components/schemas/PgProviderError'
      - $ref: '#/components/schemas/UnauthorizedError'
      discriminator:
        propertyName: type
        mapping:
          CHANNEL_NOT_FOUND: '#/components/schemas/ChannelNotFoundError'
          CHANNEL_SPECIFIC: '#/components/schemas/ChannelSpecificError'
          FORBIDDEN: '#/components/schemas/ForbiddenError'
          INVALID_REQUEST: '#/components/schemas/InvalidRequestError'
          PG_PROVIDER: '#/components/schemas/PgProviderError'
          UNAUTHORIZED: '#/components/schemas/UnauthorizedError'
    ConfirmBillingKeyBody:
      title: 빌링키 발급 승인 입력 정보
      description: 빌링키 발급 승인 입력 정보
      type: object
      required:
      - billingIssueToken
      properties:
        storeId:
          type: string
          title: 상점 아이디
          description: 접근 권한이 있는 상점 아이디만 입력 가능하며, 미입력시 인증 정보의 상점 아이디를 사용합니다.
        billingIssueToken:
          type: string
          title: 빌링키 발급 토큰
          description: 빌링키 발급 요청 완료 시 발급된 토큰입니다.
        isTest:
          type: boolean
          title: 테스트 결제 여부
          description: 검증용 파라미터로, 결제 건 테스트 여부와 일치하지 않을 경우 오류가 반환됩니다.
        skipWebhook:
          type: boolean
          title: 웹훅 생략 여부
          description: 빌링키 발급이 성공했을 때 웹훅을 전송하지 않으려면 true로 설정합니다.
      x-portone-title: 빌링키 발급 승인 입력 정보
    GetBillingKeyInfoError:
      title: GetBillingKeyInfoError
      oneOf:
      - $ref: '#/components/schemas/BillingKeyNotFoundError'
      - $ref: '#/components/schemas/ForbiddenError'
      - $ref: '#/components/schemas/InvalidRequestError'
      - $ref: '#/components/schemas/UnauthorizedError'
      discriminator:
        propertyName: type
        mapping:
          BILLING_KEY_NOT_FOUND: '#/components/schemas/BillingKeyNotFoundError'
          FORBIDDEN: '#/components/schemas/ForbiddenError'
          INVALID_REQUEST: '#/components/schemas/InvalidRequestError'
          UNAUTHORIZED: '#/components/schemas/UnauthorizedError'
    BillingKeyTimeRangeField:
      title: 빌링키 다건 조회 시, 시각 범위를 적용할 필드
      description: 빌링키 다건 조회 시, 시각 범위를 적용할 필드
      type: string
      enum:
      - REQUESTED_AT
      - ISSUED_AT
      - DELETED_AT
      - STATUS_TIMESTAMP
      x-portone-title: 빌링키 다건 조회 시, 시각 범위를 적용할 필드
      x-portone-enum:
        REQUESTED_AT:
          title: 발급 요청 시각
        ISSUED_AT:
          title: 발급 완료 시각
        DELETED_AT:
          title: 삭제 완료 시각
        STATUS_TIMESTAMP:
          title: 상태 변경 시각
          description: 발급 완료 상태의 경우 ISSUED_AT, 삭제 완료 상태의 경우 DELETED_AT
    BillingKeyAlreadyDeletedError:
      title: 빌링키가 이미 삭제된 경우
      description: 빌링키가 이미 삭제된 경우
      type: object
      required:
      - type
      properties:
        type:
          type: string
        message:
          type: string
      x-portone-title: 빌링키가 이미 삭제된 경우
      x-portone-status-code: 409
    ConfirmBillingKeyIssueAndPayBody:
      title: 빌링키 발급 및 초회 결제 승인 입력 정보
      description: 빌링키 발급 및 초회 결제 승인 입력 정보
      type: object
      required:
      - billingIssueToken
      properties:
        storeId:
          type: string
          title: 상점 아이디
          description: 접근 권한이 있는 상점 아이디만 입력 가능하며, 미입력시 인증 정보의 상점 아이디를 사용합니다.
        billingIssueToken:
          type: string
          title: 빌링키 발급 토큰
          description: 빌링키 발급 및 초회 결제 요청 완료 시 발급된 토큰입니다.
        paymentId:
          type: string
          title: 결제 건 아이디
          description: 검증용 파라미터로, 결제 건 아이디와 일치하지 않을 경우 오류가 반환됩니다.
        currency:
          $ref: '#/components/schemas/Currency'
          title: 통화
          description: 검증용 파라미터로, 결제 건 화폐와 일치하지 않을 경우 오류가 반환됩니다.
        totalAmount:
          type: integer
          format: int64
          title: 결제 금액
          description: 검증용 파라미터로, 결제 건 총 금액과 일치하지 않을 경우 오류가 반환됩니다.
        taxFreeAmount:
          type: integer
          format: int64
          title: 면세 금액
          description: 검증용 파라미터로, 결제 건 면세 금액과 일치하지 않을 경우 오류가 반환됩니다.
        isTest:
          type: boolean
          title: 테스트 결제 여부
          description: 검증용 파라미터로, 결제 건 테스트 여부와 일치하지 않을 경우 오류가 반환됩니다.
        skipWebhook:
          type: boolean
          title: 웹훅 생략 여부
          description: 빌링키 발급 및 결제가 성공했을 때 웹훅을 전송하지 않으려면 true로 설정합니다. 가상계좌 입금 완료 등 외부 이벤트로 결제가 완료되는 경우 발생하는 웹훅은 스킵되지 않습니다.
      x-portone-title: 빌링키 발급 및 초회 결제 승인 입력 정보
    Gender:
      title: 성별
      description: 성별
      type: string
      enum:
      - MALE
      - FEMALE
      - OTHER
      x-portone-title: 성별
      x-portone-enum:
        MALE:
          title: 남성
        FEMALE:
          title: 여성
        OTHER:
          title: 그 외 성별
    BillingKeyFilterInput:
      title: 빌링키 다건 조회를 위한 입력 정보
      description: 빌링키 다건 조회를 위한 입력 정보
      type: object
      properties:
        storeId:
          type: string
          title: 상점 아이디
          description: Merchant 사용자만 사용가능하며, 지정되지 않은 경우 고객사 전체 빌링키를 조회합니다.
        timeRangeField:
          $ref: '#/components/schemas/BillingKeyTimeRangeField'
          title: 조회 기준 시점 유형
        from:
          type: string
          format: date-time
          title: 조회 기준 시점 범위의 시작
          description: 값을 입력하지 않으면 end의 90일 전으로 설정됩니다.
        until:
          type: string
          format: date-time
          title: 조회 기준 시점 범위의 끝
          description: 값을 입력하지 않으면 현재 시점으로 설정됩니

# --- truncated at 32 KB (110 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/portone/refs/heads/main/openapi/portone-billing-keys-api-openapi.yml