Harbor Redemptions API

Operations for managing reward redemption requests from members.

OpenAPI Specification

harbor-redemptions-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Harbor Challenges Redemptions API
  description: The Harbor API enables programmatic access to the Harbor community platform, allowing brands to manage their superfan community, rewards programs, and engagement features. Harbor is a no-code tool that lets brands build owned community platforms where superfans can engage and earn rewards. The API provides endpoints for managing members, challenges, rewards, redemptions, leaderboards, and community events. Authentication uses bearer tokens obtained via OAuth 2.0 client credentials.
  version: v1
  contact:
    name: Harbor Support
    url: https://www.harbor.gg/
  termsOfService: https://www.harbor.gg/terms
servers:
- url: https://api.harbor.gg/v1
  description: Harbor API Production Server
security:
- bearerAuth: []
tags:
- name: Redemptions
  description: Operations for managing reward redemption requests from members.
paths:
  /communities/{communityId}/redemptions:
    get:
      operationId: listRedemptions
      summary: Harbor List redemptions
      description: Returns a paginated list of reward redemption requests from community members. Can be filtered by status (pending, approved, fulfilled, rejected) for fulfillment workflow management.
      tags:
      - Redemptions
      parameters:
      - $ref: '#/components/parameters/communityIdParam'
      - $ref: '#/components/parameters/pageParam'
      - $ref: '#/components/parameters/limitParam'
      - name: status
        in: query
        description: Filter by redemption status.
        schema:
          type: string
          enum:
          - pending
          - approved
          - fulfilled
          - rejected
      responses:
        '200':
          description: List of redemptions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RedemptionList'
        '401':
          description: Unauthorized.
    post:
      operationId: createRedemption
      summary: Harbor Create a redemption request
      description: Submits a redemption request on behalf of a member for a specific reward from the catalog. Deducts the reward's point cost from the member's balance if they have sufficient points.
      tags:
      - Redemptions
      parameters:
      - $ref: '#/components/parameters/communityIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateRedemptionRequest'
      responses:
        '201':
          description: Redemption created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Redemption'
        '400':
          description: Insufficient points or reward unavailable.
        '401':
          description: Unauthorized.
components:
  parameters:
    limitParam:
      name: limit
      in: query
      description: Number of results per page.
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 20
    pageParam:
      name: page
      in: query
      description: Page number for pagination (1-based).
      schema:
        type: integer
        minimum: 1
        default: 1
    communityIdParam:
      name: communityId
      in: path
      required: true
      description: The unique identifier of the Harbor community.
      schema:
        type: string
  schemas:
    RedemptionList:
      type: object
      description: Paginated list of redemptions.
      properties:
        data:
          type: array
          description: Array of redemption objects.
          items:
            $ref: '#/components/schemas/Redemption'
        total:
          type: integer
          description: Total number of redemptions.
        page:
          type: integer
          description: Current page number.
        limit:
          type: integer
          description: Results per page.
    CreateRedemptionRequest:
      type: object
      description: Request body for creating a reward redemption.
      required:
      - memberId
      - rewardId
      properties:
        memberId:
          type: string
          description: Identifier of the member redeeming the reward.
        rewardId:
          type: string
          description: Identifier of the reward to redeem.
        shippingAddress:
          type: object
          description: Shipping address for physical reward redemptions.
          properties:
            name:
              type: string
              description: Recipient name.
            line1:
              type: string
              description: Address line 1.
            line2:
              type: string
              description: Address line 2.
            city:
              type: string
              description: City.
            state:
              type: string
              description: State or province.
            postalCode:
              type: string
              description: Postal code.
            country:
              type: string
              description: ISO 3166-1 alpha-2 country code.
              pattern: ^[A-Z]{2}$
    Reward:
      type: object
      description: A reward available for redemption in the community catalog.
      properties:
        id:
          type: string
          description: Unique reward identifier.
        communityId:
          type: string
          description: Community this reward belongs to.
        title:
          type: string
          description: Reward display title.
        description:
          type: string
          description: Detailed reward description.
        pointCost:
          type: integer
          description: Number of points required to redeem this reward.
          minimum: 1
        type:
          type: string
          description: Reward type.
          enum:
          - discount_code
          - physical_item
          - digital_download
          - experience
          - custom
        status:
          type: string
          description: Availability status.
          enum:
          - active
          - inactive
          - sold_out
        quantity:
          type: integer
          description: Total quantity available. Null for unlimited.
        remainingQuantity:
          type: integer
          description: Current remaining quantity.
        imageUrl:
          type: string
          format: uri
          description: URL of the reward image.
    Redemption:
      type: object
      description: A reward redemption request from a community member.
      properties:
        id:
          type: string
          description: Unique redemption identifier.
        communityId:
          type: string
          description: Community this redemption belongs to.
        memberId:
          type: string
          description: Member who requested the redemption.
        rewardId:
          type: string
          description: Reward being redeemed.
        reward:
          $ref: '#/components/schemas/Reward'
        pointsSpent:
          type: integer
          description: Points deducted for this redemption.
        status:
          type: string
          description: Current redemption status.
          enum:
          - pending
          - approved
          - fulfilled
          - rejected
        fulfillmentData:
          type: object
          description: Fulfillment data such as discount codes or shipping information.
          additionalProperties: true
        createdAt:
          type: string
          format: date-time
          description: When the redemption was requested.
        updatedAt:
          type: string
          format: date-time
          description: When the redemption was last updated.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Bearer token obtained via OAuth 2.0 client credentials flow. Contact Harbor to obtain API credentials.
externalDocs:
  description: Harbor API Documentation
  url: https://api.harbor.gg/