| Attribute     | Type   | Definition                                     | Example                                    |
|---------------|--------|-----------------------------------------------|--------------------------------------------|
| id            | UUID   | the id of the user                            | a9d0164d-22df-46c6-a836-1a3da5a470d8     |
| identifier    | String | identifier of the user, defaults to email    | [info@customer.com](mailto:info@customer.com) |
| email         | Email  | email used for notification                   | [info@customer.com](mailto:info@customer.com) |
| first_name    | String | first name of user                            | Ricardo                                    |
| last_name     | String | last name of user                             | Montalban                                  |
| admin         | Boolean| is user an administrator?                     | true                                       |

---

## GraphQL

```graphql
type UserAccount {
  id: UUID!
  identifier: String!
  email: String!
  first_name: String
  last_name: String
  admin: Boolean
}

type Query {
  # get user from uuid passed in (admin only)
  user(
    id: UUID!
  ): UserAccount

# get organization users. The organization comes from the token (admin only)
  organizationUsers(
    search_terms: String
    listFilter: ListFilter
  ): [UserAccount]
}

type Mutation {

createUser(
    email: String!
    first_name: String
    last_name: String
    # admin users can perform action like create user
    admin: Boolean
  ): UUID
}
```

---
