# updateMyProfile

Update the key owner's own profile. All three of firstName, lastName, and phoneNumber are required together (send the current values for the ones you're not changing: read them with getMyProfile); an EMPTY phoneNumber clears the number. Two more fields are OPTIONAL and PARTIAL: profilePictureUrl (an https URL to the new picture) and howDidYouHearAboutUs (free text): omit either and the stored value is left untouched, send it to set it. The phone number is normalized and must be unique across users; email is not editable here (parity with the app). Returns the updated profile including profilePictureUrl, so quote what came back rather than assuming the picture took.

- Call: `POST https://server.goliathdata.com/api/v1/call` with `{ "operationId": "updateMyProfile", "variables": {...} }`
- Scope: `WRITE`
- Type: mutation
- Idempotency: honors `Idempotency-Key` (24 h)
- Rate-limited: no

## Variables

- `firstName`: `String!` (required)
- `lastName`: `String!` (required)
- `phoneNumber`: `String!` (required)
- `profilePictureUrl`: `String`
- `howDidYouHearAboutUs`: `String`

## Response (data, an example)

```json
{
  "users": {
    "updateUserProfile": {
      "id": "<ID>",
      "firstName": "…",
      "lastName": "…",
      "email": "…",
      "phoneNumber": "…",
      "profilePictureUrl": "…"
    }
  }
}
```

## Example

```bash
curl https://server.goliathdata.com/api/v1/call \
  -H "Authorization: Bearer $GOLIATH_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "operationId": "updateMyProfile",
    "variables": {
      "firstName": "<String>",
      "lastName": "<String>",
      "phoneNumber": "<String>"
    }
  }'
```
