Journey Docs
Members APIMember Data

Update Member

Update member display information

PATCH/members/me

Overview

Updates core member information including names, display name, avatar, and onboarding status.

This endpoint is for updating member-level data. To update profile preferences (travel, dining, etc.), use the Update Profile endpoint.

Authentication

Requires a valid Clerk JWT token in the Authorization header.

Request Body

All fields are optional. Only include fields you want to update.

firstNamebodystring

Member's first name

lastNamebodystring

Member's last name

displayNamebodystring

Custom display name (if not set, computed from first/last name or email)

avatarUrlbodystring

Avatar image URL

onboardingCompletedbodyboolean

Mark onboarding as completed (sets onboardingCompletedAt timestamp)

dateOfBirthbodystring

Date of birth in YYYY-MM-DD format

Note: This updates the profile dateOfBirth field

Request

curl -X PATCH "http://localhost:3000/v1/members/me" \
  -H "Authorization: Bearer YOUR_CLERK_JWT" \
  -H "Content-Type: application/json" \
  -d '{
    "firstName": "John",
    "lastName": "Doe",
    "displayName": "John D.",
    "onboardingCompleted": true
  }'

Response

Returns the complete updated member data, same as GET /members/me.

Response

{
  "member": {
    "externalId": "user_2abc123def456",
    "memberCode": "JRN123456",
    "legacyJourneyUserId": null,
    "displayName": "John D.",
    "firstName": "John",
    "lastName": "Doe",
    "avatarUrl": "https://example.com/avatar.jpg",
    "status": "active",
    "enrolledAt": "2023-01-15T10:30:00Z",
    "memberSince": "January 2023",
    "onboardingCompletedAt": "2024-04-20T12:00:00Z",
    "createdAt": "2023-01-15T10:30:00Z",
    "updatedAt": "2024-04-20T12:00:00Z"
  },
  "profile": {
    "dateOfBirth": "1990-01-15",
    "gender": "male",
    "nationality": "United States",
    "timezone": "America/Los_Angeles",
    "language": "en",
    "bio": "Frequent traveler and points enthusiast",
    "socialLinks": {
      "linkedin": "https://linkedin.com/in/johndoe",
      "instagram": "@johndoe"
    },
    "travelPreferences": {
      "preferredAirlines": ["United", "Delta"],
      "frequentFlyerPrograms": [
        {
          "airline": "United",
          "number": "UA123456789"
        }
      ],
      "seatPreference": "aisle",
      "mealPreference": "vegetarian",
      "travelClass": "business",
      "travelCompanions": ["Jane Doe"],
      "passportCountry": "US"
    }
  },
  "contacts": [
    {
      "type": "email",
      "value": "john.doe@example.com",
      "isPrimary": true,
      "verifiedAt": "2023-01-15T10:30:00Z"
    },
    {
      "type": "phone",
      "value": "+15551234567",
      "isPrimary": true,
      "verifiedAt": "2023-01-15T10:35:00Z"
    }
  ],
  "wallet": {
    "spendablePoints": 25000,
    "validBalance": 23000,
    "creditBalance": 2000,
    "tierEligiblePoints": 15000
  },
  "loyalty": {
    "tierLevel": 2,
    "tierName": "Explorer",
    "lifetimePoints": 75000,
    "pointsToNextTier": 25000,
    "nextTierName": "Voyager",
    "earnYear": 2023,
    "currentYear": 2024,
    "currentYearPoints": 15000,
    "statusValidThrough": "December 31, 2025",
    "pointsToMaintainTier": 5000,
    "tiers": [
      {
        "tierLevel": 1,
        "tierName": "Traveler",
        "minPoints": 0
      },
      {
        "tierLevel": 2,
        "tierName": "Explorer",
        "minPoints": 20000
      },
      {
        "tierLevel": 3,
        "tierName": "Voyager",
        "minPoints": 50000
      },
      {
        "tierLevel": 4,
        "tierName": "Pioneer",
        "minPoints": 100000
      }
    ]
  }
}

Notes

  • The onboardingCompleted flag can only be set to true, not back to false
  • Setting onboardingCompleted to true sets the onboardingCompletedAt timestamp if not already set
  • The displayName is shown in the UI; if not set, it's computed from first/last name or email
  • The dateOfBirth field updates the profile's date of birth

On this page