Managing dependencies of Kiota API clients

Kiota clients require multiple dependencies to function properly. In this documentation page, you find details about each dependency, which package to use in each language and guidance on how to properly manage these dependencies for your application.

Guidance

Generated client and dependencies versions alignment

For the best experience, after generating or updating a client, always ensure the kiota dependencies are aligned with the versions recommended by the info command.

More information about the info command

Dependencies selection

In most cases, the bundle package and any additionally required package for the language you're using brings most dependencies your application needs.

If your application requires a specific HTTP client, serialization library or format, you need to at least add the abstractions and additionally required dependencies for the language you're using. Additionally, you can select default implementations for HTTP and serialization packages, or swap them for third party or your own implementations.

Additionally, your application might need to reference an authentication package depending on the target API.

Abstractions

Any Kiota generated API client relies on a set of abstractions as a build and runtime dependency, the application will require this dependency after a new client is generated.

More information about the abstractions package

The following table provides the list of abstractions package per language.

Language Package Name
C# Microsoft.Kiota.Abstractions
CLI Microsoft.Kiota.Abstractions
Go github.com/microsoft/kiota-abstractions-go
Java com.microsoft.kiota:microsoft-kiota-abstractions
PHP microsoft/kiota-abstractions
Python microsoft-kiota-abstractions
Ruby microsoft_kiota_abstractions
Swift Not released
TypeScript @microsoft/kiota-abstractions

Serialization

Kiota provides default implementation for diverse serialization formats. These dependencies are required at runtime. Depending the application requirements those implementations can be used as is, swapped or augmented with implementations from the application, or swapped with third party implementations.

More information about the serialization packages

JSON

Media type: application/json

The following table provides the list of serialization package per language.

Language Package Name Relies on
C# Microsoft.Kiota.Serialization.Json System.Text.Json
CLI Microsoft.Kiota.Serialization.Json System.Text.Json
Go github.com/microsoft/kiota-serialization-json-go None
Java com.microsoft.kiota:microsoft-kiota-serialization-json Gson
PHP microsoft/kiota-serialization-json None
Python microsoft-kiota-serialization-json None
Ruby microsoft_kiota_serialization_json None
Swift Not released None
TypeScript @microsoft/kiota-serialization-json None

Multipart

Media type: multipart/form-data

The following table provides the list of serialization package per language.

Language Package Name Relies on
C# Microsoft.Kiota.Serialization.Multipart None
CLI Microsoft.Kiota.Serialization.Multipart None
Go github.com/microsoft/kiota-serialization-multipart-go None
Java com.microsoft.kiota:microsoft-kiota-serialization-multipart None
PHP microsoft/kiota-serialization-multipart None
Python microsoft-kiota-serialization-multipart None
Ruby Not released None
Swift Not released None
TypeScript @microsoft/kiota-serialization-multipart None

Form

Media type: application/x-www-form-urlencoded

The following table provides the list of serialization package per language.

Language Package Name Relies on
C# Microsoft.Kiota.Serialization.Form None
CLI Microsoft.Kiota.Serialization.Form None
Go github.com/microsoft/kiota-serialization-form-go None
Java com.microsoft.kiota:microsoft-kiota-serialization-form None
PHP microsoft/kiota-serialization-form None
Python microsoft-kiota-serialization-form None
Ruby Not Released None
Swift Not released None
TypeScript @microsoft/kiota-serialization-form None

Text

Media type: text/plain

The following table provides the list of serialization package per language.

Language Package Name Relies on
C# Microsoft.Kiota.Serialization.Text None
CLI Microsoft.Kiota.Serialization.Text None
Go github.com/microsoft/kiota-serialization-text-go None
Java com.microsoft.kiota:microsoft-kiota-serialization-text None
PHP microsoft/kiota-serialization-text None
Python microsoft-kiota-serialization-text None
Ruby Not Released None
Swift Not released None
TypeScript @microsoft/kiota-serialization-text None

Http

Kiota provides a default request adapter implementation to convert abstract request information objects created by the generated fluent API to HTTP requests. This dependency is required at runtime. Depending the application requirements this implementation can be used as is, swapped with another implementation from the application, or swapped with a third party implementation.

More information about the HTTP package.

The following table provides the list of HTTP package per language.

Language Package Name Relies on
C# Microsoft.Kiota.Http.HttpClientLibrary System.Net.Http
CLI Microsoft.Kiota.Http.HttpClientLibrary System.Net.Http
Go github.com/microsoft/kiota-http-go net/http
Java com.microsoft.kiota:microsoft-kiota-http-okHttp None
PHP microsoft/kiota-http-guzzle None
Python microsoft-kiota-http None
Ruby microsoft_kiota_faraday None
Swift Not released None
TypeScript @microsoft/kiota-http-fetchlibrary None

Authentication

Depending on authentication requirements from the target REST APIs, your application might additionally need an authentication dependency. Kiota provides default implementation providers for specific scenarios. Depending the application requirements those implementations can be used as is, swapped or augmented with implementations from the application, or swapped with third party implementations.

More information about the authentication package

Azure Identity

These providers might be used for any API secured with Bearer token authorization for which the identity platform is Entra Identity/Microsoft Identity Platform/Azure Identity/Azure Active Directory.

The following table provides the list of authentication package per language.

Language Package Name Relies on
C# Microsoft.Kiota.Authentication.Azure Azure.Identity
CLI Microsoft.Kiota.Authentication.Azure Azure.Identity
Go github.com/microsoft/kiota-authentication-azure-go github.com/Azure/azure-sdk-for-go/sdk/azidentity
Java com.microsoft.kiota:microsoft-kiota-authentication-azure com.azure:azure-identity
PHP microsoft/kiota-authentication-phpleague phpleague
Python microsoft-kiota-authentication-azure azure-identity
Ruby microsoft_kiota_authentication_oauth oauth
Swift Not released None
TypeScript @microsoft/kiota-authentication-azure @azure/identity

Additional

Additional dependencies are required at build time and/or runtime.

The following table provides the list of additional package per language.

Language Package Name Type
C# None
CLI Microsoft.Kiota.CLI.Commons, System.CommandLine Build and runtime
Go None
Java jakarta.annotation:jakarta.annotation-api:2.0.0 Build
PHP None
Python None
Ruby None
Swift None
TypeScript None

Bundle

To simplify dependencies management, kiota now offers bundle packages. These packages contain the abstractions, the default serialization implementations, and the default http implementation. Bundle packages can be used as an alternative to adding references to those packages.

The following table provides the list of bundle package per language.

Language Package Name
C# Microsoft.Kiota.Bundle
CLI Microsoft.Kiota.Bundle
Go github.com/microsoft/kiota-bundle-go
Java com.microsoft.kiota:microsoft-kiota-bundle
PHP Not available
Python Not available
Ruby Not available
Swift Not available
TypeScript @microsoft/kiota-bundle