Harbor Members API
Operations for managing community members, their profiles, point balances, and tier status.
Operations for managing community members, their profiles, point balances, and tier status.
openapi: 3.1.0
info:
title: Harbor Challenges Members 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: Members
description: Operations for managing community members, their profiles, point balances, and tier status.
paths:
/communities/{communityId}/members:
get:
operationId: listMembers
summary: Harbor List community members
description: Returns a paginated list of members belonging to the specified community. Results can be filtered by tier, status, or join date and are sorted by points balance or join date by default.
tags:
- Members
parameters:
- $ref: '#/components/parameters/communityIdParam'
- $ref: '#/components/parameters/pageParam'
- $ref: '#/components/parameters/limitParam'
- name: tier
in: query
description: Filter members by loyalty tier name.
schema:
type: string
- name: status
in: query
description: Filter by member status.
schema:
type: string
enum:
- active
- inactive
- banned
responses:
'200':
description: Paginated list of members.
content:
application/json:
schema:
$ref: '#/components/schemas/MemberList'
'401':
description: Unauthorized. Missing or invalid bearer token.
'404':
description: Community not found.
post:
operationId: createMember
summary: Harbor Create a community member
description: Registers a new member in the specified community. The member is associated with an external user identifier from the brand's platform. An optional referral code can be provided to credit the referrer.
tags:
- Members
parameters:
- $ref: '#/components/parameters/communityIdParam'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateMemberRequest'
responses:
'201':
description: Member created.
content:
application/json:
schema:
$ref: '#/components/schemas/Member'
'400':
description: Bad request. Invalid member data.
'401':
description: Unauthorized.
'409':
description: Member with this external ID already exists.
/communities/{communityId}/members/{memberId}:
get:
operationId: getMember
summary: Harbor Get a community member
description: Returns the profile and engagement data for a specific member, including their point balance, tier, referral code, and challenge completion history.
tags:
- Members
parameters:
- $ref: '#/components/parameters/communityIdParam'
- $ref: '#/components/parameters/memberIdParam'
responses:
'200':
description: Member details.
content:
application/json:
schema:
$ref: '#/components/schemas/Member'
'401':
description: Unauthorized.
'404':
description: Member not found.
patch:
operationId: updateMember
summary: Harbor Update a community member
description: Updates profile fields or status for an existing community member. Supports partial updates — only the fields provided in the request body are modified.
tags:
- Members
parameters:
- $ref: '#/components/parameters/communityIdParam'
- $ref: '#/components/parameters/memberIdParam'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateMemberRequest'
responses:
'200':
description: Updated member.
content:
application/json:
schema:
$ref: '#/components/schemas/Member'
'400':
description: Bad request.
'401':
description: Unauthorized.
'404':
description: Member not found.
/communities/{communityId}/members/{memberId}/points:
post:
operationId: awardPoints
summary: Harbor Award points to a member
description: Awards a specified number of points to a community member. Used for custom point events outside of standard challenges, such as purchase rewards, anniversary bonuses, or manual adjustments. A description is required to explain the reason for the award.
tags:
- Members
parameters:
- $ref: '#/components/parameters/communityIdParam'
- $ref: '#/components/parameters/memberIdParam'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AwardPointsRequest'
responses:
'200':
description: Points awarded. Updated member balance returned.
content:
application/json:
schema:
$ref: '#/components/schemas/PointsBalance'
'400':
description: Bad request.
'401':
description: Unauthorized.
'404':
description: Member not found.
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
memberIdParam:
name: memberId
in: path
required: true
description: The unique identifier of the community member.
schema:
type: string
communityIdParam:
name: communityId
in: path
required: true
description: The unique identifier of the Harbor community.
schema:
type: string
schemas:
CreateMemberRequest:
type: object
description: Request body for registering a new community member.
required:
- externalId
properties:
externalId:
type: string
description: The brand's unique identifier for this user.
displayName:
type: string
description: Member's display name.
maxLength: 100
email:
type: string
format: email
description: Member's email address.
referralCode:
type: string
description: Referral code provided by an existing member.
metadata:
type: object
description: Optional additional metadata to store with the member.
additionalProperties: true
Member:
type: object
description: A community member representing a superfan registered on the Harbor platform.
properties:
id:
type: string
description: Unique Harbor member identifier.
externalId:
type: string
description: The brand's external user identifier used to link the Harbor member to the brand's own user account.
communityId:
type: string
description: Identifier of the community this member belongs to.
displayName:
type: string
description: Member's display name shown in the community.
email:
type: string
format: email
description: Member's email address.
pointsBalance:
type: integer
description: Current point balance available for redemption.
minimum: 0
totalPointsEarned:
type: integer
description: Total lifetime points earned by the member.
minimum: 0
tier:
$ref: '#/components/schemas/Tier'
referralCode:
type: string
description: Unique referral code this member can share to earn referral rewards.
status:
type: string
description: Current membership status.
enum:
- active
- inactive
- banned
joinedAt:
type: string
format: date-time
description: Timestamp when the member joined the community.
lastActiveAt:
type: string
format: date-time
description: Timestamp of the member's last activity.
AwardPointsRequest:
type: object
description: Request body for awarding points to a community member.
required:
- points
- description
properties:
points:
type: integer
description: Number of points to award. Must be a positive integer.
minimum: 1
description:
type: string
description: Human-readable reason for the point award.
maxLength: 500
metadata:
type: object
description: Optional metadata about this point transaction.
additionalProperties: true
PointsBalance:
type: object
description: Updated points balance after a transaction.
properties:
memberId:
type: string
description: Member identifier.
pointsAwarded:
type: integer
description: Points awarded in this transaction.
newBalance:
type: integer
description: Member's new point balance after the award.
totalPointsEarned:
type: integer
description: Updated lifetime points total.
MemberList:
type: object
description: Paginated list of community members.
properties:
data:
type: array
description: Array of member objects.
items:
$ref: '#/components/schemas/Member'
total:
type: integer
description: Total number of members matching the query.
page:
type: integer
description: Current page number.
limit:
type: integer
description: Results per page.
UpdateMemberRequest:
type: object
description: Request body for updating a community member's profile.
properties:
displayName:
type: string
description: Updated display name.
maxLength: 100
email:
type: string
format: email
description: Updated email address.
status:
type: string
description: Updated membership status.
enum:
- active
- inactive
- banned
metadata:
type: object
description: Updated metadata key-value pairs.
additionalProperties: true
Tier:
type: object
description: Loyalty tier a member has achieved.
properties:
id:
type: string
description: Tier identifier.
name:
type: string
description: Tier display name (e.g., Bronze, Silver, Gold).
pointsRequired:
type: integer
description: Minimum lifetime points required to reach this tier.
benefits:
type: array
description: List of benefits associated with this tier.
items:
type: string
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/