Skip to content

Creditor and User Management Example

Diagrammet nedan visar den grundläggande sekvensen av API-anrop för att hantera användare inom en ny borgenär, med varje steg beskrivet i följande avsnitt.

En konto-API-användare skapar en ny borgenär med alla obligatoriska aktiveringsfält. När en borgenär skapas genereras åtkomstgrupper automatiskt för den borgenären baserat på kontot (eller partnern, när det är tillämpligt). Flödet visar sedan hur man hämtar dessa åtkomstgrupper och använder dem för att skapa två typer av användare: en borgenärsadministratör som kan skapa nya användare, och en vanlig borgenärsanvändare som kan hantera ärenden för borgenären.


Step-by-Step Guide

Alla API-förfrågningar kräver en giltig autentiseringstoken i X-API-Key-headern. För detaljer om autentiseringsprocessen och tokenhantering, se Authentication-dokumentationen.

I denna guide kommer vi att använda klassen AuthTokenProvider (dokumenterad i autentiseringsguiden) för att hantera tokenhantering.

1. Create a Creditor

Skapa en ny borgenär med hjälp av Creditor-endpointen. Medan en borgenär är inaktiv kan inga ärenderegistreringar skapas för den. För att aktivera en borgenär är följande fält obligatoriska: payout_details, sender_address, invoice_address, och standard_debt_description.

typescript
const creditorData = {
  account: '6662fb1df4d1eaf404cb08de',
  name: 'Acme Inc',
  organization_no: '1122334455',
  is_active: true,
  standard_debt_description: 'Standard skuldbeskrivning på Konto',
  description: 'Testing',
  sender_address: {
    address_line_1: 'Redaregatan 50',
    zip_code: '25236',
    city: 'Helsingborg',
    country: 'SE',
  },
  invoice_address: {
    address_line_1: 'Redaregatan 50',
    zip_code: '25236',
    city: 'Helsingborg',
    country: 'SE',
  },
  payout_details: {
    sek: {
      bankgiro: '12312312',
    },
  },
}

const token = await auth.getValidToken()
const response = await axios.post(
  'https://api-sandbox.amili.se/creditors',
  creditorData,
  {
    headers: {
      'X-API-Key': token,
      'Content-Type': 'application/json',
    },
  }
)
python
creditor_data = {
    "account": "6662fb1df4d1eaf404cb08de",
    "name": "Acme Inc",
    "organization_no": "1122334455",
    "is_active": True,
    "standard_debt_description": "Standard skuldbeskrivning på Konto",
    "description": "Testing",
    "sender_address": {
        "address_line_1": "Redaregatan 50",
        "zip_code": "25236",
        "city": "Helsingborg",
        "country": "SE"
    },
    "invoice_address": {
        "address_line_1": "Redaregatan 50",
        "zip_code": "25236",
        "city": "Helsingborg",
        "country": "SE"
    },
    "payout_details": {
        "sek": {
            "bankgiro": "12312312"
        }
    }
}

token = auth.get_valid_token()
response = requests.post(
    'https://api-sandbox.amili.se/creditors',
    json=creditor_data,
    headers={
        'X-API-Key': token,
        'Content-Type': 'application/json'
    }
)
response.raise_for_status()
result = response.json()

The response will be:

json
{
  "_updated": "Tue, 11 Nov 2025 12:22:34 GMT",
  "_created": "Tue, 11 Nov 2025 12:22:34 GMT",
  "_etag": "2646bc714fe277d4e317cfaddaeb450a34f28053",
  "_id": "69132a8bc9ea54f691cc407c",
  "_status": "OK"
}

Notes:

  • VAT Area: Fältet vat_area är som standard "sweden" om det inte specificeras. För icke-svenska borgenärer kan du explicit sätta detta till andra värden (t.ex. "norway", "denmark", "eu", etc.). Se Creditor-endpointdokumentationen för tillgängliga värden.

  • Non-Swedish Organizations: För företag utanför Sverige, använd non_swedish_organization_no istället för organization_no. Dessa fält är ömsesidigt uteslutande - tillhandahåll det ena eller det andra, men inte båda. Exempel:

    json
    {
      "non_swedish_organization_no": "NO123456789MVA",
      "vat_area": "norway"
    }

2. Get Available Access Groups

Hämta de tillgängliga åtkomstgrupperna genom att filtrera på ditt konto eller på den nyligen skapade borgenären. Detta ger dig en lista över åtkomstgrupper med type: api_user, account_admin, admin, och user. De tillgängliga grupperna är vanligtvis satta på kontonivå. När en borgenär skapas skapas åtkomstgrupper för admin och user automatiskt för den borgenären. För mer detaljer, se Access Group-dokumentationen.

typescript
const token = await auth.getValidToken()
const query = encodeURIComponent(
  JSON.stringify({ account: '6662fb1df4d1eaf404cb08de' })
)

const response = await axios.get(
  `https://api-sandbox.amili.se/access--groups?where=${query}`,
  {
    headers: {
      'X-API-Key': token,
    },
  }
)
python
import json

token = auth.get_valid_token()
query = json.dumps({'account': '6662fb1df4d1eaf404cb08de'})

response = requests.get(
    'https://api-sandbox.amili.se/access--groups',
    params={'where': query},
    headers={'X-API-Key': token}
)
response.raise_for_status()
result = response.json()

The response will be:

json
{
  "_items": [
    {
      "_id": "6662fb1df4d1eaf404cb08e0",
      "account": "6662fb1df4d1eaf404cb08de",
      "name": "account_admin",
      "type": "account_admin",
      "access_group_template": "65a961d89cbd399b9a0c7693",
      "access_rights": {
        // Omitted for readability
      },
      "_updated": "Wed, 05 Nov 2025 19:07:19 GMT",
      "_created": "Fri, 07 Jun 2024 12:20:45 GMT",
      "_etag": "32f9bf44c64a4491893cfef2d77541e1",
      "account_name": "API integrationstester AB"
    },
    {
      "_id": "6662fb1df4d1eaf404cb08e1",
      "account": "6662fb1df4d1eaf404cb08de",
      "name": "api_user",
      "type": "api_user",
      "access_group_template": "65a961d89cbd399b9a0c7693",
      "access_rights": {
        // Omitted for readability
      },
      "_updated": "Wed, 05 Nov 2025 19:07:20 GMT",
      "_created": "Fri, 07 Jun 2024 12:20:45 GMT",
      "_etag": "4ec054f2713045e8a1475a64241839ee",
      "account_name": "API integrationstester AB"
    },
    {
      "_id": "69132a8bc9ea54f691cc407e",
      "account": "6662fb1df4d1eaf404cb08de",
      "creditor": "69132a8bc9ea54f691cc407c",
      "name": "admin",
      "type": "admin",
      "access_group_template": "65a961d89cbd399b9a0c7693",
      "access_rights": {
        // Omitted for readability
      },
      "_updated": "Tue, 11 Nov 2025 12:22:35 GMT",
      "_created": "Tue, 11 Nov 2025 12:22:35 GMT",
      "_etag": "37c057233c9644f499fe69ad35244a88",
      "account_name": "API integrationstester AB",
      "creditor_name": "Acme Inc"
    },
    {
      "_id": "69132a8bc9ea54f691cc407f",
      "account": "6662fb1df4d1eaf404cb08de",
      "creditor": "69132a8bc9ea54f691cc407c",
      "name": "user",
      "type": "user",
      "access_group_template": "65a961d89cbd399b9a0c7693",
      "access_rights": {
        // Omitted for readability
      },
      "_updated": "Tue, 11 Nov 2025 12:22:35 GMT",
      "_created": "Tue, 11 Nov 2025 12:22:35 GMT",
      "_etag": "2e59604d1cbd4707babe30e7fbeeb1c3",
      "account_name": "API integrationstester AB",
      "creditor_name": "Acme Inc"
    }
  ],
  "_meta": {
    "page": 1,
    "max_results": 25,
    "total": 4
  }
}

3. Create a Creditor Admin

Skapa en borgenärsadministratörsanvändare som har åtkomst att skapa nya användare på borgenären med hjälp av Users-endpointen. Använd åtkomstgrupp-ID:t med type: admin från föregående steg.

typescript
const adminUserData = {
  account: '6662fb1df4d1eaf404cb08de',
  name: 'Jon Doe',
  email_data: {
    email: 'jon.doe@google.com',
  },
  is_enabled: true,
  oauth_type: 'google',
  email_oauth: 'jon.doe@google.com',
  data_access: [
    {
      access_group: '69132a8bc9ea54f691cc407e',
    },
  ],
}

const token = await auth.getValidToken()
const response = await axios.post(
  'https://api-sandbox.amili.se/users',
  adminUserData,
  {
    headers: {
      'X-API-Key': token,
      'Content-Type': 'application/json',
    },
  }
)
python
admin_user_data = {
    "account": "6662fb1df4d1eaf404cb08de",
    "name": "Jon Doe",
    "email_data": {
        "email": "jon.doe@google.com"
    },
    "is_enabled": True,
    "oauth_type": "google",
    "email_oauth": "jon.doe@google.com",
    "data_access": [{
        "access_group": "69132a8bc9ea54f691cc407e"
    }]
}

token = auth.get_valid_token()
response = requests.post(
    'https://api-sandbox.amili.se/users',
    json=admin_user_data,
    headers={
        'X-API-Key': token,
        'Content-Type': 'application/json'
    }
)
response.raise_for_status()
result = response.json()

The response will be:

json
{
  "_updated": "Tue, 11 Nov 2025 12:58:28 GMT",
  "_created": "Tue, 11 Nov 2025 12:58:28 GMT",
  "_etag": "8f24ed684144a3572083739483e0c3bf05571f8b",
  "_id": "691332f4f22afe6587de55ea",
  "_status": "OK"
}

4. Create a Creditor User

Skapa en vanlig borgenärsanvändare som har åtkomst att hantera ärenden för borgenären med hjälp av Users-endpointen. Använd åtkomstgrupp-ID:t med type: user från steg 2.

typescript
const userData = {
  account: '6662fb1df4d1eaf404cb08de',
  name: 'Jane Doe',
  email_data: {
    email: 'jane.doe@google.com',
  },
  is_enabled: true,
  oauth_type: 'google',
  email_oauth: 'jane.doe@google.com',
  data_access: [
    {
      access_group: '69132a8bc9ea54f691cc407f',
    },
  ],
}

const token = await auth.getValidToken()
const response = await axios.post(
  'https://api-sandbox.amili.se/users',
  userData,
  {
    headers: {
      'X-API-Key': token,
      'Content-Type': 'application/json',
    },
  }
)
python
user_data = {
    "account": "6662fb1df4d1eaf404cb08de",
    "name": "Jane Doe",
    "email_data": {
        "email": "jane.doe@google.com"
    },
    "is_enabled": True,
    "oauth_type": "google",
    "email_oauth": "jane.doe@google.com",
    "data_access": [{
        "access_group": "69132a8bc9ea54f691cc407f"
    }]
}

token = auth.get_valid_token()
response = requests.post(
    'https://api-sandbox.amili.se/users',
    json=user_data,
    headers={
        'X-API-Key': token,
        'Content-Type': 'application/json'
    }
)
response.raise_for_status()
result = response.json()

The response will be:

json
{
  "_updated": "Tue, 11 Nov 2025 12:59:48 GMT",
  "_created": "Tue, 11 Nov 2025 12:59:48 GMT",
  "_etag": "ee7b9a1da5bb6d04f0792f9ffda1ee3d609e0001",
  "_id": "69133344698d69d986cbad08",
  "_status": "OK"
}