platform-admin

Update Profile

The person/principal profile write path (migration 0143): "every user should have a full profile ... first name, name that they go by ... birthday ... email address, telephone number" (Frederick, 2026-08-09).

SELF-SERVICE PLUS ADMIN, reusing the existing admin grant rather than inventing one: a caller may PATCH their OWN profile (principal_id == principal.id) with no extra grant needed -- everyone has a profile and everyone must be ABLE to complete it, since Today (platform/routes.py's profile_completion hook) will not stop asking otherwise -- or, holding 'admin:people:write' (the SAME grant PEOPLE_WRITE above already requires for every other principal edit), any principal's. Anyone else is refused with 403 before any read of the body even happens.

Deliberately gated on auth.current_principal, not PEOPLE_WRITE: this route's whole point is that a person with NO admin grant at all can still fill in their own birthday, phone and emergency contact.

patch/api/platform/principals/{principal_id}/profile

Request

  • Base URL: https://api.pigeonly.com (the document declares no server; this is the origin it was published from)
  • URL: https://api.pigeonly.com/api/platform/principals/{principal_id}/profile
  • Auth: none declared

Path parameters

principal_idstring uuid required

Request body

emailstring nullable
first_namestring nullable
last_namestring nullable
preferred_namestring nullable
birth_monthinteger nullable
birth_dayinteger nullable
cell_phonestring nullable
emergency_contact_namestring nullable
emergency_contact_relationshipstring nullable
emergency_contact_phonestring nullable
work_locationstring nullable
work_statestring nullable
work_countrystring nullable
timezonestring nullable
tshirt_sizestring nullable
dietary_restrictionsstring nullable
no_dietary_restrictionsboolean nullable
start_datestring date nullable
slack_handlestring nullable
job_titlestring nullable

Response

Successful Response

object required

Changes

No recorded changes to this operation across all 1 revision of this API.