# getMyProfile

Fetch the key owner's own profile (id, name, email, phone number (personal, via updateMyProfile; lines: listCommunicationChannels), profile picture URL) plus WHO THEY ARE IN THE ORGANIZATION and WHICH CLOCK THEY READ ON. organizationRole is their role (ADMIN | MEMBER): every ADMIN-scoped operation requires the key owner to be an ADMIN, so CHECK THIS BEFORE attempting one and, when it is not ADMIN, say that a team admin has to do it instead of relaying a refusal. organizationMembershipStatus is ACTIVE or SUSPENDED. organization carries the org's id, name and its own timezone (null = never set, NOT UTC). timezone is the zone the key owner CHOSE (null = never chosen, again not UTC); resolvedTimezone is the zone their times are ACTUALLY rendered on after the fallbacks (their availability schedule, then the organization's): use resolvedTimezone whenever you state or interpret a time for them, and never assume UTC from a null. Permissions are a separate read: getMyCapabilities. Read it before updateMyProfile.

- Call: `POST https://server.goliathdata.com/api/v1/call` with `{ "operationId": "getMyProfile", "variables": {...} }`
- Scope: `READ`
- Type: query
- Idempotency: a read; rejects `Idempotency-Key`
- Rate-limited: no

## Variables

None.

## Response (data, an example)

```json
{
  "currentUser": {
    "id": "<ID>",
    "firstName": "…",
    "lastName": "…",
    "email": "…",
    "phoneNumber": "…",
    "profilePictureUrl": "…",
    "organizationRole": "ADMIN",
    "organizationMembershipStatus": "ACTIVE",
    "timezone": "…",
    "resolvedTimezone": "…",
    "organization": {
      "id": "<ID>",
      "name": "…",
      "timezone": "…"
    }
  }
}
```

## Example

```bash
curl https://server.goliathdata.com/api/v1/call \
  -H "Authorization: Bearer $GOLIATH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "operationId": "getMyProfile",
    "variables": {}
  }'
```
