Skip to main content

SDKs

Official IDkollen SDKs wrap the REST API and handle authentication, serialization, and response parsing for you.

Experimental

The SDKs are in an early experimental stage and are available for evaluation purposes only. If you would like to give us feedback before it's finalized, reach out to support@idkollen.se.


C# / .NET​

A typed .NET API client for server-side applications.

Installation​

dotnet add package Idkollen.Client

Example​

using Idkollen.Client;
using Idkollen.Client.Models;

var client = new IdkollenClientBuilder("client_id", "client_secret")
.Environment(Environment.Staging)
.Build();

var session = await client.BankIdSe.AuthAsync(new BankIdSeAuthRequest());
if (session is BankIdSePending pending)
{
Console.WriteLine($"Session ID: {pending.Id}");

var result = await client.BankIdSe.WaitForAuthAsync(pending.Id);
switch (result)
{
case BankIdSeCompleted done:
Console.WriteLine($"Authenticated: {done.Name} ({done.Ssn})");
break;
case BankIdSeFailed failed:
Console.WriteLine($"Failed: {failed.Error}");
break;
}
}

Dart​

A typed Dart API client for Flutter and server-side applications.

Installation​

dart pub add idkollen_client

Example​

import 'package:idkollen_client/idkollen_client.dart';

Future<void> main() async {
final client = IdkollenClientBuilder('client_id', 'client_secret')
.environment(Environment.staging)
.build();

final session = await client.bankIdSe.auth(const BankIdSeAuthRequest());
if (session is BankIdSePending) {
print('Session ID: ${session.id}');

final result = await client.bankIdSe.waitForAuth(session.id);
final message = switch (result) {
BankIdSeCompleted(:final name, :final ssn) => 'Authenticated: $name ($ssn)',
BankIdSeFailed(:final error) => 'Failed: $error',
BankIdSePending() => 'Still pending',
};
print(message);
}

client.close();
}

Go​

A typed Go API client for server-side applications.

Installation​

go get github.com/idkollen/idk-clients/go/idkollen

Example​

package main

import (
"context"
"fmt"

idkollen "github.com/idkollen/idk-clients/go/idkollen"
)

func main() {
client := idkollen.NewClientBuilder("client_id", "client_secret").
Environment(idkollen.Staging).
Build()

response, err := client.BankIdSe().Auth(context.Background(), idkollen.BankIdSeAuthRequest{})
if err != nil {
panic(err)
}

if pending, ok := response.(*idkollen.BankIdSePending); ok {
fmt.Println(pending.Id)
}
}

JavaScript / TypeScript​

A typed JavaScript/TypeScript API client with support for Node.js, Deno, Bun and browser environments.

Installation​

npm install @idkollen/client

Example​

import { IdkollenClientBuilder, BankIdSeAuthRequest } from "@idkollen/client";

const client = new IdkollenClientBuilder("client_id", "client_secret")
.environment("staging")
.build();

const response = await client.bankidSe().auth(new BankIdSeAuthRequest());

console.log(response.id);

JVM (Java / Kotlin)​

A JVM API client with support for Java and Kotlin.

Installation​

Gradle (Kotlin DSL):

implementation("se.idkollen:idkollen-client-core:0.1.0")
// Kotlin coroutines extensions
// implementation("se.idkollen:idkollen-client-kotlin:0.1.0")

Maven:

<dependency>
<groupId>se.idkollen</groupId>
<artifactId>idkollen-client-core</artifactId>
<version>0.1.0</version>
</dependency>

Example​

Kotlin:

import se.idkollen.client.*
import se.idkollen.client.models.BankIdSeAuthRequest

suspend fun main() {
val client = idkollenClient("client_id", "client_secret") {
environment(Environment.STAGING)
}

val response = client.bankIdSe().auth(BankIdSeAuthRequest())

println(response.id)
}

Java:

import se.idkollen.client.IdkollenClientBuilder;
import se.idkollen.client.models.BankIdSeAuthRequest;

void main() {
var client = new IdkollenClientBuilder("client_id", "client_secret")
.environment(Environment.STAGING)
.build();

var response = client.bankIdSe().auth(new BankIdSeAuthRequest()).join();

IO.println(response.id());
}

PHP​

A typed PHP API client for server-side applications.

Installation​

composer require idkollen/client guzzlehttp/guzzle

A PSR-18 HTTP client is required. The client auto-discovers Guzzle if installed; alternatively, inject any PSR-18 client via the builder.

Example​

<?php

use Idkollen\Client\Environment;
use Idkollen\Client\IdkollenClientBuilder;
use Idkollen\Client\Models\BankIdSe\BankIdSeAuthRequest;
use Idkollen\Client\Models\BankIdSe\BankIdSePending;

$client = (new IdkollenClientBuilder('client_id', 'client_secret'))
->environment(Environment::Staging)
->build();

$response = $client->bankIdSe()->auth(new BankIdSeAuthRequest());

if ($response instanceof BankIdSePending) {
echo $response->id . PHP_EOL;
}

Python​

A typed Python API client with support for both synchronous and asynchronous usage via httpx.

Installation​

pip install idkollen-client

Example​

Sync:

from idkollen_client import IdkollenClientBuilder
from idkollen_client.models import BankIdSeAuthRequest

client = (
IdkollenClientBuilder("client_id", "client_secret")
.environment("staging")
.build()
)

response = client.bankid_se().auth(BankIdSeAuthRequest())

print(response.id)

Async:

import asyncio
from idkollen_client import IdkollenClientBuilder
from idkollen_client.models import BankIdSeAuthRequest

async def main():
client = (
IdkollenClientBuilder("client_id", "client_secret")
.environment("staging")
.build_async()
)

response = await client.bankid_se().auth(BankIdSeAuthRequest())

print(response.id)

asyncio.run(main())

Ruby​

A typed Ruby API client for server-side applications.

Installation​

gem install idkollen-client

Or add to your Gemfile:

gem 'idkollen-client', '~> 0.1'

Example​

require 'idkollen/client'

client = Idkollen::ClientBuilder.new('client_id', 'client_secret')
.environment(Idkollen::Environment::STAGING)
.build

session = client.bank_id_se.auth(Idkollen::BankIdSe::AuthRequest.new)
puts "Session ID: #{session.id}" if session.is_a?(Idkollen::BankIdSe::Pending)

result = client.bank_id_se.wait_for_auth(session.id)

case result
in Idkollen::BankIdSe::Completed(ssn:, name:)
puts "Authenticated: #{name} (#{ssn})"
in Idkollen::BankIdSe::Failed(error:)
puts "Failed: #{error}"
end

Rust​

A type-safe sync/async Rust API client for the IDkollen REST API.

Installation​

cargo add idkollen-client

Example​

use idkollen_client::{IdkollenClientBuilder, Environment};
use idkollen_client::models::BankIdSeAuthRequest;

#[tokio::main]
async fn main() {
let client = IdkollenClientBuilder::new("client_id", "client_secret")
.environment(Environment::Staging)
.build()
.unwrap();

let response = client
.bankid_se()
.auth(BankIdSeAuthRequest::new())
.await
.unwrap();

println!("{}", response.id);
}

Swift​

A typed Swift API client for iOS, macOS, tvOS and watchOS applications. Supports iOS 15+, macOS 12+, tvOS 15+ and watchOS 8+.

Installation​

Add to Package.swift:

dependencies: [
.package(url: "https://github.com/idkollen/idk-clients.git", from: "0.1.0")
],
targets: [
.target(name: "MyApp", dependencies: [
.product(name: "IdkollenClient", package: "idk-clients")
])
]

Example​

import IdkollenClient

let client = IdkollenClientBuilder(clientId: "client_id", clientSecret: "client_secret")
.environment(.staging)
.build()

let session = try await client.bankIdSe.auth(BankIdSeAuthRequest())
if case .pending(let pending) = session {
print("Session ID: \(pending.id)")

let result = try await client.bankIdSe.waitForAuth(id: pending.id)
switch result {
case .completed(let done):
print("Authenticated: \(done.name) (\(done.ssn))")
case .failed(let failed):
print("Failed: \(failed.error)")
case .pending:
break
}
}