Journey Docs
Members APILoyalty

Get Offer Details

Get detailed information about a specific offer with eligibility status

GET/members/me/loyalty/offers/{offerId}

Overview

Returns comprehensive details about a specific offer including eligibility status, restrictions, and redemption instructions. Use this endpoint to show full offer details before allowing the member to claim it.

Authentication

Requires a valid Clerk JWT token in the Authorization header.

Path Parameters

offerIdpathstringrequired

Offer document ID

Query Parameters

propertyIdquerystring

Property document ID for property context (affects eligibility)

reservationIdquerystring

Reservation external ID for stay context (affects eligibility)

checkInDatequerystring

Check-in date for time-sensitive offers (ISO 8601 date)

Request

curl -X GET "http://localhost:3000/v1/members/me/loyalty/offers/offer_spa_discount?propertyId=prop_luxury_resort" \
  -H "Authorization: Bearer YOUR_CLERK_JWT"

Response

offerIdstringrequired

Offer document ID

namestringrequired

Display name of the offer

shortDescriptionstring

Brief description for card display

descriptionstring

Full description of the offer

pointsRequirednumberrequired

Points cost to claim this offer

retailValuenumber

Retail value of the offer in dollars

discountAmountnumber

Dollar amount of discount if applicable

discountTypestring

Type of discount: "percentage", "fixed", etc.

redemptionTypestringrequired

How offer is redeemed: "direct", "externalCode", "propertySpecific", etc.

categoryobject

Offer category information

properties
idnumberrequired

Category ID

namestringrequired

Category name

heroImageUrlstring

URL for hero image

cardImageUrlstring

URL for card thumbnail image

howToRedeemstring

Instructions for redeeming the offer

termsAndConditionsstring

Full terms and conditions text

rulesstring

Additional rules and restrictions

isEligiblebooleanrequired

Whether the member can claim this offer

eligibilityReasonstring

Reason if not eligible (e.g., "Insufficient points", "Tier too low")

restrictionsarray

Active restrictions preventing claim

array items
typestringrequired

Restriction type: "requires_stay", "check_in_window"

messagestringrequired

Human-readable restriction message

detailsobject

Additional restriction details

requiresStaybooleanrequired

Whether offer requires an active reservation

disableBeforeCheckInHoursnumber

Hours before check-in when offer becomes unavailable

validUntilstring

ISO 8601 timestamp when offer expires

isCustomOfferboolean

Whether this is a custom/personalized offer

isGlobalboolean

Whether this offer is available globally

propertyDocumentIdstring

Primary property document ID for property-specific offers

Response

{
  "offerId": "offer_spa_discount",
  "name": "Spa Treatment Discount",
  "shortDescription": "25% off all spa treatments",
  "description": "Indulge in ultimate relaxation with a 25% discount on any spa treatment at our award-winning wellness center. Choose from massages, facials, body treatments, and wellness packages.",
  "pointsRequired": 1500,
  "retailValue": 200,
  "discountAmount": 50,
  "discountType": "percentage",
  "redemptionType": "propertySpecific",
  "category": {
    "id": 3,
    "name": "Spa & Wellness"
  },
  "heroImageUrl": "https://cdn.journey.com/offers/spa-hero.jpg",
  "cardImageUrl": "https://cdn.journey.com/offers/spa-card.jpg",
  "howToRedeem": "Present your verification code at the spa reception when booking or arriving for your treatment.",
  "termsAndConditions": "Valid for single use per stay. Cannot be combined with other offers. Subject to spa availability. Advance booking recommended.",
  "rules": "Minimum treatment value of $100 required. Valid Monday through Thursday only. Not valid on holidays.",
  "isEligible": true,
  "eligibilityReason": null,
  "restrictions": [],
  "requiresStay": true,
  "disableBeforeCheckInHours": 24,
  "validUntil": "2024-12-31T23:59:59Z",
  "isCustomOffer": false,
  "isGlobal": false,
  "propertyDocumentId": "prop_luxury_resort"
}

Eligibility Factors

Points Balance

Tier Level

  • Some offers require minimum tier levels
  • Member's current tier is checked against offer requirements

Property Context

  • Property-specific offers require being at or having a reservation at that property
  • Pass propertyId and reservationId for accurate eligibility

Time Restrictions

  • Some offers have check-in windows (e.g., must claim within 24 hours of arrival)
  • disableBeforeCheckInHours indicates when offer becomes unavailable

Stay Requirements

  • requiresStay: true means member must have an active or upcoming reservation
  • Pass reservationId to satisfy this requirement

On this page