Saltar al contenido

Update a person profile

Módulo Identity

PATCH/person-profiles/{id}personProfiles.update

A person's profile page, owned by the person. New profiles start Private. Updates the fields sent; omitted fields are unchanged. Requires `If-Match` with the current `ETag`: a stale tag returns 412 and a missing tag returns 428.

  • Requiere la capacidad me.profile.write.
  • Alcances de OAuth: me.
  • Envía If-Match con el ETag que leíste. Una etiqueta desactualizada devuelve 412; si falta, devuelve 428.
  • Estados de error: 400, 401, 404, 412, 422, 428, 429. Los errores son detalles de problema RFC 9457.

Parámetros de ruta y de consulta

personProfiles.update: Parámetros de ruta y de consulta
CampoTipoObligatorioDescripción
idstring (uuid)SíIdentifier of the person profile.

Cuerpo de la solicitud: PersonProfileUpdate

personProfiles.update: PersonProfileUpdate
CampoTipoObligatorioDescripción
headlinestring | nullNoHeadline.Restricciones: length 1 to 300
biostring | nullNoBio.Restricciones: length 1 to 20000
pronounsstring | nullNoPronouns, optional.Restricciones: length 1 to 300
localitystring | nullNoCity.Restricciones: length 1 to 300
countrystring | nullNoISO 3166-1 alpha-2 country code.Restricciones: pattern ^[A-Z]{2}$
visibilityProfileVisibilityNoProfile visibility. Sections and fields may be set lower than the profile, never higher.Restricciones: one of "Public", "Network", "Private"
search_indexingbooleanNoWhether search engines may index a public profile.
handlestringNoUnique handle for /u/{handle} or /c/{handle}: 3 to 40 lowercase letters, digits and single hyphens. Changeable once every 30 days; the old handle redirects for 90 days.Restricciones: pattern ^[a-z0-9]([a-z0-9-]{1,38}[a-z0-9])$
preferred_namestring | nullNoName the person goes by.Restricciones: length 1 to 100
{
  "headline": "Head Rigger, Festivals and Arenas",
  "bio": "Fifteen years rigging touring shows.",
  "pronouns": "they/them",
  "locality": "Miami",
  "country": "US",
  "search_indexing": false,
  "handle": "northwind-live",
  "preferred_name": "Alex"
}

Respuesta 200: PersonProfile

personProfiles.update: PersonProfile
CampoTipoObligatorioDescripción
idstring (uuid)SíIdentifier of the person profile.
created_atstring (date-time)SíWhen the row was created.
updated_atstring (date-time)SíWhen the row was last updated.
person_idstring (uuid)SíIdentifier of the person.
headlinestring | nullSíHeadline.Restricciones: length 1 to 300
biostring | nullSíBio.Restricciones: length 1 to 20000
pronounsstring | nullSíPronouns, optional.Restricciones: length 1 to 300
localitystring | nullSíCity.Restricciones: length 1 to 300
countrystring | nullSíISO 3166-1 alpha-2 country code.Restricciones: pattern ^[A-Z]{2}$
visibilityProfileVisibilitySíProfile visibility. Sections and fields may be set lower than the profile, never higher.Restricciones: one of "Public", "Network", "Private"
search_indexingbooleanSíWhether search engines may index a public profile.
handlestringSíUnique handle for /u/{handle} or /c/{handle}: 3 to 40 lowercase letters, digits and single hyphens. Changeable once every 30 days; the old handle redirects for 90 days.Restricciones: pattern ^[a-z0-9]([a-z0-9-]{1,38}[a-z0-9])$
handle_changed_atstring (date-time) | nullSíWhen the handle last changed; null until the first change. Set by the database.
preferred_namestring | nullSíName the person goes by.Restricciones: length 1 to 100
{
  "id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "created_at": "2026-10-08T14:30:00Z",
  "updated_at": "2026-10-08T14:30:00Z",
  "person_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "headline": "Head Rigger, Festivals and Arenas",
  "bio": "Fifteen years rigging touring shows.",
  "pronouns": "they/them",
  "locality": "Miami",
  "country": "US",
  "visibility": "Private",
  "search_indexing": false,
  "handle": "northwind-live",
  "handle_changed_at": "2026-10-08T14:30:00Z",
  "preferred_name": "Alex"
}

Ejemplos de código

curl -X PATCH "$XOS_BASE_URL/person-profiles/0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f" \
  -H "Authorization: Bearer $XOS_API_KEY" \
  -H 'If-Match: W/"etag-from-your-last-read"' \
  -H "Content-Type: application/json" \
  -d '{"headline":"Head Rigger, Festivals and Arenas","bio":"Fifteen years rigging touring shows.","pronouns":"they/them","locality":"Miami","country":"US","search_indexing":false,"handle":"northwind-live","preferred_name":"Alex"}'
const { data, etag } = await xos.personProfiles.update("0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f", {
    "headline": "Head Rigger, Festivals and Arenas",
    "bio": "Fifteen years rigging touring shows.",
    "pronouns": "they/them",
    "locality": "Miami",
    "country": "US",
    "search_indexing": false,
    "handle": "northwind-live",
    "preferred_name": "Alex"
  }, { ifMatch: etag });
response = xos.person_profiles.update("0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f", {"headline": "Head Rigger, Festivals and Arenas", "bio": "Fifteen years rigging touring shows.", "pronouns": "they/them", "locality": "Miami", "country": "US", "search_indexing": False, "handle": "northwind-live", "preferred_name": "Alex"}, if_match=etag)
xos person-profiles update 0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f --data '{"headline":"Head Rigger, Festivals and Arenas","bio":"Fifteen years rigging touring shows.","pronouns":"they/them","locality":"Miami","country":"US","search_indexing":false,"handle":"northwind-live","preferred_name":"Alex"}' --if-match auto