WinCL Internal Reward API

Internal Reward Company Controller

OpenAPI Specification

wincl-internal-reward-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Wincl Admin Internal Reward API
  version: '1.0'
  description: Admin Controller
servers:
- url: https://api.wincl.io:443
  description: Inferred Url
tags:
- name: Internal Reward
  description: Internal Reward Company Controller
paths:
  /api/v3/rewards/internal/company:
    get:
      tags:
      - Internal Reward
      summary: 나(기업)의 리워드 기업 정보 조회
      operationId: getUsingGET_5
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/RewardCompany'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      security:
      - Bearer 토큰 값:
        - global
    put:
      tags:
      - Internal Reward
      summary: 나(기업)의 리워드 기업 정보 수정
      operationId: updateUsingPUT_2
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RewardCompany'
      responses:
        '200':
          description: OK
        '201':
          description: Created
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      security:
      - Bearer 토큰 값:
        - global
  /api/v3/rewards/internal/issuances:
    get:
      tags:
      - Internal Reward
      summary: 나(기업)의 리워드 상품 발급 기록 목록 조회
      operationId: listUsingGET_4
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RewardIssued'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      security:
      - Bearer 토큰 값:
        - global
    post:
      tags:
      - Internal Reward
      summary: 나(기업)의 리워드 상품 발급 기록 등록
      operationId: createUsingPOST_2
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RewardIssued'
      responses:
        '201':
          description: Created
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      security:
      - Bearer 토큰 값:
        - global
  /api/v3/rewards/internal/issuances/{id}:
    get:
      tags:
      - Internal Reward
      summary: 나(기업)의 리워드 상품 발급 기록 상세 조회
      operationId: getUsingGET_6
      parameters:
      - name: id
        in: path
        description: id
        required: true
        style: simple
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/RewardIssued'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      security:
      - Bearer 토큰 값:
        - global
    put:
      tags:
      - Internal Reward
      summary: 나(기업)의 리워드 상품 발급 기록 수정
      operationId: updateUsingPUT_3
      parameters:
      - name: id
        in: path
        description: id
        required: true
        style: simple
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RewardIssued'
      responses:
        '200':
          description: OK
        '201':
          description: Created
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      security:
      - Bearer 토큰 값:
        - global
    delete:
      tags:
      - Internal Reward
      summary: 나(기업)의 리워드 상품 발급 기록 삭제
      operationId: deleteUsingDELETE_4
      parameters:
      - name: id
        in: path
        description: id
        required: true
        style: simple
        schema:
          type: string
      responses:
        '200':
          description: OK
        '204':
          description: No Content
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - Bearer 토큰 값:
        - global
  /api/v3/rewards/internal/programs/{programId}/orders:
    get:
      tags:
      - Internal Reward
      summary: 특정 프로그램의 주문 목록 조회 (페이징/검색)
      operationId: listOrdersByProgramUsingGET
      parameters:
      - name: companyId
        in: query
        required: false
        style: form
        schema:
          type: string
      - name: keyword
        in: query
        required: false
        style: form
        schema:
          type: string
      - name: orderBy
        in: query
        required: false
        style: form
        schema:
          type: string
      - name: pageNo
        in: query
        required: false
        style: form
        schema:
          type: integer
          format: int32
      - name: pageSize
        in: query
        required: false
        style: form
        schema:
          type: integer
          format: int32
      - name: programId
        in: path
        description: programId
        required: true
        style: simple
        allowReserved: false
        schema:
          type: string
      - name: status
        in: query
        required: false
        style: form
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PagedResponse«RewardOrder»'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      security:
      - Bearer 토큰 값:
        - global
  /api/v3/rewards/internal/programs/{programId}/orders/{orderId}:
    get:
      tags:
      - Internal Reward
      summary: 특정 프로그램의 주문 상세 조회
      operationId: getOrderDetailUsingGET
      parameters:
      - name: programId
        in: path
        description: programId
        required: true
        style: simple
        schema:
          type: string
      - name: orderId
        in: path
        description: orderId
        required: true
        style: simple
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/RewardOrder'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      security:
      - Bearer 토큰 값:
        - global
    delete:
      tags:
      - Internal Reward
      summary: 특정 프로그램의 주문 취소
      operationId: cancelOrderUsingDELETE
      parameters:
      - name: programId
        in: path
        description: programId
        required: true
        style: simple
        schema:
          type: string
      - name: orderId
        in: path
        description: orderId
        required: true
        style: simple
        schema:
          type: string
      responses:
        '200':
          description: OK
        '204':
          description: No Content
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
      - Bearer 토큰 값:
        - global
  /api/v3/rewards/internal/orders/{orderId}/payments:
    get:
      tags:
      - Internal Reward
      summary: 나(기업)의 특정 주문의 결제 로그 목록 조회 (시간순)
      operationId: listLogsByOrderUsingGET
      parameters:
      - name: orderId
        in: path
        description: orderId
        required: true
        style: simple
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RewardPaymentLog'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      security:
      - Bearer 토큰 값:
        - global
  /api/v3/rewards/internal/payments/{id}:
    get:
      tags:
      - Internal Reward
      summary: 나(기업)의 리워드 결제 로그 상세 조회
      operationId: getUsingGET_7
      parameters:
      - name: id
        in: path
        description: id
        required: true
        style: simple
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/RewardPaymentLog'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      security:
      - Bearer 토큰 값:
        - global
  /api/v3/rewards/internal/programs:
    get:
      tags:
      - Internal Reward
      summary: 나(기업)의 리워드 프로그램 목록 조회
      operationId: listUsingGET_5
      parameters:
      - name: closeFrom
        in: query
        required: false
        style: form
        schema:
          type: string
      - name: closeTo
        in: query
        required: false
        style: form
        schema:
          type: string
      - name: companyId
        in: query
        required: false
        style: form
        schema:
          type: string
      - name: keyword
        in: query
        required: false
        style: form
        schema:
          type: string
      - name: openFrom
        in: query
        required: false
        style: form
        schema:
          type: string
      - name: openTo
        in: query
        required: false
        style: form
        schema:
          type: string
      - name: orderBy
        in: query
        required: false
        style: form
        schema:
          type: string
      - name: pageNo
        in: query
        required: false
        style: form
        schema:
          type: integer
          format: int32
      - name: pageSize
        in: query
        required: false
        style: form
        schema:
          type: integer
          format: int32
      - name: status
        in: query
        required: false
        style: form
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PagedResponse«RewardProgram»'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      security:
      - Bearer 토큰 값:
        - global
  /api/v3/rewards/internal/programs/{id}:
    get:
      tags:
      - Internal Reward
      summary: 나(기업)의 리워드 프로그램 상세 조회
      operationId: getUsingGET_8
      parameters:
      - name: id
        in: path
        description: id
        required: true
        style: simple
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/RewardProgram'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
      security:
      - Bearer 토큰 값:
        - global
components:
  schemas:
    RewardIssued:
      title: RewardIssued
      type: object
      properties:
        createdAt:
          type: string
          description: 기록일
          format: date-time
        deliveredAt:
          type: string
          description: 상품 확인 완료 일시
          format: date-time
        deliveryType:
          type: string
          description: 배송 방식
          enum:
          - OFFLINE
          - ONLINE
        id:
          type: string
          description: 발급 ID (UUID)
        orderId:
          type: string
          description: 주문 ID (UUID)
        sentAt:
          type: string
          description: 발송 완료 일시
          format: date-time
        sentTo:
          type: string
          description: 배송지 정보
        status:
          type: string
          description: 상태
          enum:
          - CANCELLED
          - DELIVERED
          - ISSUED
          - SENT
    RewardOrder:
      title: RewardOrder
      type: object
      properties:
        buyerId:
          type: string
          description: 구매자 ID (user.id_usr)
        cancelReason:
          type: string
          description: 취소 사유
        canceledAt:
          type: string
          description: 취소 일시
          format: date-time
        canceledBy:
          type: string
          description: 취소 주체
          enum:
          - ADMIN
          - SYSTEM
          - USER
        carrier:
          type: string
          description: 택배사명
        completedAt:
          type: string
          description: 거래 완료일
          format: date-time
        createdAt:
          type: string
          description: 주문 생성일
          format: date-time
        creditUsed:
          type: string
          description: 크레딧 사용 내역 (JSON)
        deliveryStatus:
          type: string
          description: 배송 상태
          enum:
          - DELIVERED
          - READY
          - RETURNED
          - SHIPPED
          - UNSET
        id:
          type: string
          description: 주문 ID (UUID)
        paidAt:
          type: string
          description: 결제 집행일
          format: date-time
        postalCode:
          type: string
          description: 우편번호
        programId:
          type: string
          description: 프로그램 ID (UUID)
        qty:
          type: integer
          description: 구매 수량
          format: int32
        recipientAddress:
          type: string
          description: 배송지 주소
        recipientAddressDetail:
          type: string
          description: 상세 주소
        recipientName:
          type: string
          description: 수령인 이름
        recipientPhone:
          type: string
          description: 수령인 전화번호
        status:
          type: string
          description: 상태
          enum:
          - CANCELLED
          - CANCEL_REQUESTED
          - COMPLETED
          - PAID
          - PAY_REQUESTED
          - PENDING
        trackingNo:
          type: string
          description: 운송장 번호
        unitCreditSnapshot:
          type: number
          description: 주문 시점 크레딧 단가 스냅샷
          format: bigdecimal
        updatedAt:
          type: string
          description: 수정일
          format: date-time
    RewardPaymentLog:
      title: RewardPaymentLog
      type: object
      properties:
        amountCredit:
          type: number
          description: 이벤트 시점 크레딧 처리량
          format: bigdecimal
        amountPartial:
          type: number
          description: 부분 취소 수량
          format: bigdecimal
        createdAt:
          type: string
          description: 이벤트 발생 일시
          format: date-time
        errorCode:
          type: string
          description: 실패 시 에러 코드
        errorMessage:
          type: string
          description: 실패 시 에러 메시지
        eventType:
          type: string
          description: 이벤트 타입
          enum:
          - CANCEL_COMPLETED
          - CANCEL_REQUESTED
          - DELIVERY_COMPLETED
          - PARTIAL_CANCEL
          - PAYMENT_COMPLETED
          - PAYMENT_REQUESTED
        id:
          type: string
          description: 로그 ID (UUID)
        initiatedBy:
          type: string
          description: 이벤트 주체
          enum:
          - ADMIN
          - SYSTEM
          - USER
        metadata:
          type: string
          description: 추가 데이터 (JSON)
        orderId:
          type: string
          description: 주문 ID (UUID)
        status:
          type: string
          description: 상태
          enum:
          - FAIL
          - PENDING
          - SUCCESS
    PageInfo:
      title: PageInfo
      type: object
      properties:
        pageNo:
          type: integer
          description: 현재 페이지 번호
          format: int32
        pageSize:
          type: integer
          description: 페이지 사이즈
          format: int32
        totalPage:
          type: integer
          description: 전체 아이템 수
          format: int32
    RewardCompany:
      title: RewardCompany
      type: object
      properties:
        agreedTermsPrivacy:
          type: string
          description: 개인정보처리방침 동의 일시
          format: date-time
        agreedTermsReward:
          type: string
          description: 리워드 운영정책 동의 일시
          format: date-time
        agreedTermsService:
          type: string
          description: 서비스 이용약관 동의 일시
          format: date-time
        approvedAt:
          type: string
          description: 승인일
          format: date-time
        approvedBy:
          type: string
          description: 승인자
        commerceRegDoc:
          type: string
          description: 통신판매업 신고 서류 스토리지 URL
        commerceRegNo:
          type: string
          description: 통신판매업 신고 번호
        companyName:
          type: string
          description: 기업명
        companyNo:
          type: string
          description: 기업번호
        companyRegDoc:
          type: string
          description: 등록증 스토리지 URL (JSON)
        contactEmail:
          type: string
          description: 담당자 이메일
        contactName:
          type: string
          description: 담당자 이름
        contactPhone:
          type: string
          description: 담당자 전화번호
        createdAt:
          type: string
          description: 작성일
          format: date-time
        id:
          type: string
          description: 리워드용 기업 ID (UUID)
        rejectionReason:
          type: string
          description: 반려 사유
        representativeName:
          type: string
          description: 대표자명
        status:
          type: string
          description: 상태
          enum:
          - APPROVED
          - PENDING
          - REJECTED
          - SUSPENDED
        updatedAt:
          type: string
          description: 수정일
          format: date-time
    RewardProgram:
      title: RewardProgram
      type: object
      properties:
        buyerCondition:
          type: string
          description: 구매자 조건 (JSON)
        companyId:
          type: string
          description: 기업 ID (UUID)
        content:
          type: string
          description: 상세 내용
        createdAt:
          type: string
          description: 작성일
          format: date-time
        creditSettings:
          type: string
          description: 크레딧 설정 (JSON)
        creditWeight:
          type: number
          description: 가중치
          format: bigdecimal
        csPhone:
          type: string
          description: 소비자 상담 전화번호
        endedAt:
          type: string
          description: 종료일
          format: date-time
        id:
          type: string
          description: 프로그램 ID (UUID)
        imageUrl:
          type: string
          description: 이미지 URL (JSON)
        maxQtyPerUser:
          type: integer
          description: 1인당 최대 구매 수량
          format: int32
        refundPolicy:
          type: string
          description: 반환방법
        remainingQty:
          type: integer
          description: 잔여 수량
          format: int32
        rewardName:
          type: string
          description: 리워드 명
        rewardType:
          type: string
          description: 리워드 타입
          enum:
          - EXPERIENCE
          - PRODUCT
          - VOUCHER
        startedAt:
          type: string
          description: 시작일
          format: date-time
        status:
          type: string
          description: 상태
          enum:
          - CANCELLED
          - CLOSED
          - DRAFT
          - ENDED
          - OPENED
          - PENDING
          - REGISTERED
        thumbnailUrl:
          type: string
          description: 썸네일 URL
        title:
          type: string
          description: 프로그램 제목
        totalQty:
          type: integer
          description: 총 수량
          format: int32
        unitCreditPrice:
          type: number
          description: 리워드 1개당 크레딧 가격
          format: bigdecimal
        updatedAt:
          type: string
          description: 수정일
          format: date-time
        usableStores:
          type: string
          description: 이용가능 매장
        validPeriod:
          type: string
          description: 유효기간 및 이용조건
    PagedResponse«RewardOrder»:
      title: PagedResponse«RewardOrder»
      type: object
      properties:
        items:
          type: array
          description: 목록 데이터
          items:
            $ref: '#/components/schemas/RewardOrder'
        pageInfo:
          description: 페이징 정보
          $ref: '#/components/schemas/PageInfo'
    PagedResponse«RewardProgram»:
      title: PagedResponse«RewardProgram»
      type: object
      properties:
        items:
          type: array
          description: 목록 데이터
          items:
            $ref: '#/components/schemas/RewardProgram'
        pageInfo:
          description: 페이징 정보
          $ref: '#/components/schemas/PageInfo'
  securitySchemes:
    Bearer 토큰 값:
      type: http
      scheme: bearer
      bearerFormat: JWT