Användarhantering
Den här guiden beskriver hur du skapar och hanterar användare på ett Amili-konto. Den gäller både partnerplattformar (efter att kontot har etablerats via guiden för Partneronboarding) och direktkunder vars konton har etablerats direkt av Amili.
Den här guiden använder AuthTokenProvider för autentisering i exempel — se autentiseringsguiden för konfigurationsdetaljer.
Åtkomstgrupper
Åtkomstgrupper styr vad en användare kan se och göra i Amili. De skapas automatiskt — grupper på kontonivå skapas när kontot skapas, och grupper på borgenärsnivå skapas varje gång en borgenär skapas.
Det finns tre typer av åtkomstgrupper som är relevanta för användarhantering:
| Typ | Nivå | Beskrivning |
|---|---|---|
account_admin | Konto | Full åtkomst till alla borgenärer på kontot. Kan hantera användare, inställningar och borgenärskonfiguration för hela kontot. |
admin | Borgenär | Kan hantera användare och inställningar för en specifik borgenär. |
user | Borgenär | Kan hantera ärenden och dagliga operationer för en specifik borgenär. |
En användare kan tilldelas flera åtkomstgrupper — till exempel kan en användare som hanterar ärenden för fler än en borgenär ha rollen user för var och en av dem.
Hitta åtkomstgrupper
Innan du skapar användare behöver du ID:n för de relevanta åtkomstgrupperna. Anropa GET /access--groups filtrerat på konto för att hämta alla grupper kopplade till ett konto:
const accountId = '674dbeaf08847b9501cc9132'
const token = await auth.getValidToken()
const where = encodeURIComponent(JSON.stringify({ account: accountId }))
const response = await axios.get(
`https://api-sandbox.amili.se/access--groups?where=${where}`,
{ headers: { 'X-API-Key': token } }
)
const accessGroups = response.data._itemsimport json
account_id = '674dbeaf08847b9501cc9132'
token = auth.get_valid_token()
where = json.dumps({'account': account_id})
response = requests.get(
'https://api-sandbox.amili.se/access--groups',
params={'where': where},
headers={'X-API-Key': token},
)
response.raise_for_status()
access_groups = response.json()['_items']Exempelsvar (förkortat):
{
"_items": [
{
"_id": "674dbec008847b9501cc9140",
"account": "674dbeaf08847b9501cc9132",
"type": "account_admin",
"name": "account_admin"
},
{
"_id": "674dbec008847b9501cc9141",
"account": "674dbeaf08847b9501cc9132",
"creditor": "674dbeb208847b9501cc9138",
"type": "admin",
"name": "admin",
"creditor_name": "Exempel Företag AB"
},
{
"_id": "674dbec008847b9501cc9142",
"account": "674dbeaf08847b9501cc9132",
"creditor": "674dbeb208847b9501cc9138",
"type": "user",
"name": "user",
"creditor_name": "Exempel Företag AB"
}
]
}För att hitta en specifik grupp lägger du till type och eventuellt creditor i filtret:
// Kontonivå
{ account: accountId, type: 'account_admin' }
// Borgenärsnivå för en specifik borgenär
{ account: accountId, creditor: creditorId, type: 'user' }Skapa användare
Användare autentiserar via OAuth. Ange oauth_type ("google" eller "microsoft") och email_oauth för att identifiera användarens identitetsleverantörskonto. Åtkomst beviljas genom att lägga till ett eller flera åtkomstgrupps-ID:n i data_access-arrayen.
Kontoadministratör
En kontoadministratör har full åtkomst till alla borgenärer på kontot. Det är rätt roll för en klientanvändare som behöver administrera kontot eller slutföra onboarding i Amili-appen.
const token = await auth.getValidToken()
const userResponse = await axios.post(
'https://api-sandbox.amili.se/users',
{
account: '674dbeaf08847b9501cc9132',
name: 'Anna Andersson',
email_data: { email: 'anna.andersson@example.com' },
is_enabled: true,
oauth_type: 'google',
email_oauth: 'anna.andersson@example.com',
data_access: [
{ access_group: '674dbec008847b9501cc9140' }, // type: account_admin
],
},
{ headers: { 'X-API-Key': token, 'Content-Type': 'application/json' } }
)token = auth.get_valid_token()
headers = {'X-API-Key': token, 'Content-Type': 'application/json'}
user_response = requests.post(
'https://api-sandbox.amili.se/users',
json={
'account': '674dbeaf08847b9501cc9132',
'name': 'Anna Andersson',
'email_data': {'email': 'anna.andersson@example.com'},
'is_enabled': True,
'oauth_type': 'google',
'email_oauth': 'anna.andersson@example.com',
'data_access': [
{'access_group': '674dbec008847b9501cc9140'}, # type: account_admin
],
},
headers=headers,
)
user_response.raise_for_status()Borgenärsadministratör
En borgenärsadministratör kan hantera användare och inställningar för en specifik borgenär. Använd admin-åtkomstgruppens ID för aktuell borgenär.
const token = await auth.getValidToken()
const userResponse = await axios.post(
'https://api-sandbox.amili.se/users',
{
account: '674dbeaf08847b9501cc9132',
name: 'Erik Eriksson',
email_data: { email: 'erik.eriksson@example.com' },
is_enabled: true,
oauth_type: 'microsoft',
email_oauth: 'erik.eriksson@example.com',
data_access: [
{ access_group: '674dbec008847b9501cc9141' }, // type: admin, creditor: Exempel Företag AB
],
},
{ headers: { 'X-API-Key': token, 'Content-Type': 'application/json' } }
)token = auth.get_valid_token()
headers = {'X-API-Key': token, 'Content-Type': 'application/json'}
user_response = requests.post(
'https://api-sandbox.amili.se/users',
json={
'account': '674dbeaf08847b9501cc9132',
'name': 'Erik Eriksson',
'email_data': {'email': 'erik.eriksson@example.com'},
'is_enabled': True,
'oauth_type': 'microsoft',
'email_oauth': 'erik.eriksson@example.com',
'data_access': [
{'access_group': '674dbec008847b9501cc9141'}, # type: admin, creditor: Exempel Företag AB
],
},
headers=headers,
)
user_response.raise_for_status()Borgenärsanvändare
En borgenärsanvändare kan hantera ärenden och dagliga operationer för en borgenär. En användare kan tilldelas flera borgenärer genom att inkludera en user-åtkomstgrupp för var och en i data_access-arrayen.
const token = await auth.getValidToken()
const userResponse = await axios.post(
'https://api-sandbox.amili.se/users',
{
account: '674dbeaf08847b9501cc9132',
name: 'Maria Svensson',
email_data: { email: 'maria.svensson@example.com' },
is_enabled: true,
oauth_type: 'google',
email_oauth: 'maria.svensson@example.com',
data_access: [
{ access_group: '674dbec008847b9501cc9142' }, // type: user, creditor: Exempel Företag AB
{ access_group: '674dbec008847b9501cc9143' }, // type: user, creditor: Annat Företag AB
],
},
{ headers: { 'X-API-Key': token, 'Content-Type': 'application/json' } }
)token = auth.get_valid_token()
headers = {'X-API-Key': token, 'Content-Type': 'application/json'}
user_response = requests.post(
'https://api-sandbox.amili.se/users',
json={
'account': '674dbeaf08847b9501cc9132',
'name': 'Maria Svensson',
'email_data': {'email': 'maria.svensson@example.com'},
'is_enabled': True,
'oauth_type': 'google',
'email_oauth': 'maria.svensson@example.com',
'data_access': [
{'access_group': '674dbec008847b9501cc9142'}, # type: user, creditor: Exempel Företag AB
{'access_group': '674dbec008847b9501cc9143'}, # type: user, creditor: Annat Företag AB
],
},
headers=headers,
)
user_response.raise_for_status()Exempelsvar (samma struktur för alla användartyper):
{
"_id": "674dbef008847b9501cc9150",
"_created": "Tue, 07 Oct 2025 08:00:00 GMT",
"_updated": "Tue, 07 Oct 2025 08:00:00 GMT",
"_etag": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0",
"_status": "OK"
}Hantera användare
Alla uppdateringsoperationer använder PATCH /users/{userId} och kräver en If-Match-header med användarens aktuella _etag-värde. Hämta användaren först för att få både aktuellt tillstånd och _etag.
Inaktivera en användare
Sätt is_enabled: false för att förhindra att en användare loggar in utan att radera kontot. Det går att ångra — sätt is_enabled: true för att återställa åtkomsten.
const userId = '674dbef008847b9501cc9150'
const token = await auth.getValidToken()
// Hämta användaren för att få aktuell _etag
const userResponse = await axios.get(
`https://api-sandbox.amili.se/users/${userId}`,
{ headers: { 'X-API-Key': token } }
)
const etag = userResponse.data._etag
// Inaktivera användaren
await axios.patch(
`https://api-sandbox.amili.se/users/${userId}`,
{ is_enabled: false },
{
headers: {
'X-API-Key': token,
'Content-Type': 'application/json',
'If-Match': etag,
},
}
)user_id = '674dbef008847b9501cc9150'
token = auth.get_valid_token()
headers = {'X-API-Key': token, 'Content-Type': 'application/json'}
# Hämta användaren för att få aktuell _etag
user_response = requests.get(
f'https://api-sandbox.amili.se/users/{user_id}',
headers={'X-API-Key': token},
)
user_response.raise_for_status()
etag = user_response.json()['_etag']
# Inaktivera användaren
patch_response = requests.patch(
f'https://api-sandbox.amili.se/users/{user_id}',
json={'is_enabled': False},
headers={**headers, 'If-Match': etag},
)
patch_response.raise_for_status()Ta bort åtkomst
För att återkalla en användares åtkomst till en eller flera borgenärer hämtar du den aktuella data_access-arrayen, tar bort de relevanta posterna och skickar en PATCH med den uppdaterade arrayen. Skrivskyddade kaskaderade fält (access_group_name, access_group_type m.fl.) ska utelämnas — de hanteras av systemet.
const userId = '674dbef008847b9501cc9150'
const accessGroupToRemove = '674dbec008847b9501cc9143' // borgenär att återkalla
const token = await auth.getValidToken()
// Hämta användaren för att få aktuell data_access och _etag
const userResponse = await axios.get(
`https://api-sandbox.amili.se/users/${userId}`,
{ headers: { 'X-API-Key': token } }
)
const { _etag, data_access } = userResponse.data
// Ta bort posten för åtkomstgruppen som ska återkallas
const updatedDataAccess = data_access
.filter(
(entry: { access_group: string }) =>
entry.access_group !== accessGroupToRemove
)
.map((entry: { access_group: string }) => ({
access_group: entry.access_group,
}))
await axios.patch(
`https://api-sandbox.amili.se/users/${userId}`,
{ data_access: updatedDataAccess },
{
headers: {
'X-API-Key': token,
'Content-Type': 'application/json',
'If-Match': _etag,
},
}
)user_id = '674dbef008847b9501cc9150'
access_group_to_remove = '674dbec008847b9501cc9143' # borgenär att återkalla
token = auth.get_valid_token()
headers = {'X-API-Key': token, 'Content-Type': 'application/json'}
# Hämta användaren för att få aktuell data_access och _etag
user_response = requests.get(
f'https://api-sandbox.amili.se/users/{user_id}',
headers={'X-API-Key': token},
)
user_response.raise_for_status()
user = user_response.json()
# Ta bort posten för åtkomstgruppen som ska återkallas
updated_data_access = [
{'access_group': entry['access_group']}
for entry in user['data_access']
if entry['access_group'] != access_group_to_remove
]
patch_response = requests.patch(
f'https://api-sandbox.amili.se/users/{user_id}',
json={'data_access': updated_data_access},
headers={**headers, 'If-Match': user['_etag']},
)
patch_response.raise_for_status()Nästa steg
- Partneronboarding — Fullständigt flöde för att etablera konton och borgenärer
- Ärendeflödesexempel — Registrera ärenden mot en borgenär
- Fakturaflödesexempel — Registrera fakturor för en borgenär
- Users Endpoint — Fullständig API-referens för användarhantering
- Access Group Endpoint — Fullständig referens för åtkomstgrupper
