---
title: "One2Edit Username Format"
aliases: [one2edit-username, one2edit-users-api]
tags: [one2edit, api, auth, 3m, hm]
sources: [01 Projects/3m-portal]
created: 2026-05-05
updated: 2026-05-05
---

# One2Edit Username Format

One2Edit usernames are **email addresses**, not `firstname.lastname` handles. This trips up anyone guessing usernames from employee names.

## Key Takeaways

- Username format: `FirstnameSurname@oliver.agency` (no dot, no hyphen)
- Example: Paul Johns → `PaulJohns@oliver.agency`
- Do NOT guess `paul.johns` or `paul.johns@oliver.agency` — these do not exist
- Use the users API to look up valid usernames, don't guess

## Users API

```
GET /api/users?clientId=<id>
```

- Requires `clientId` parameter — the request will fail or return nothing without it
- Authenticate with service account (`portal@oliver.agency`) via the CORS proxy before calling
- Returns a list of users for the given client, each with their email-format username

### Lookup Flow

```
1. Auth: POST /Api.php → externSessionId (service account)
2. Fetch: GET /api/users?clientId=<clientId> → [{username, ...}, ...]
3. Use: pass username (email) to login/session endpoints
```

## Common Mistake

> "I'll just try `paul.johns` or `p.johns@oliver.agency`"

Neither works. The canonical username is the email without dots: `PaulJohns@oliver.agency`. Always look it up from the API rather than constructing it from a name.

## Related

- [[wiki/tech-patterns/one2edit-api|one2edit-api]] — full One2Edit API integration pattern
- [[wiki/client-knowledge/3m|3m]] — 3M OMG Portal where this pattern applies
