OdooConnector 1.0.0
dotnet add package OdooConnector --version 1.0.0
NuGet\Install-Package OdooConnector -Version 1.0.0
<PackageReference Include="OdooConnector" Version="1.0.0" />
<PackageVersion Include="OdooConnector" Version="1.0.0" />
<PackageReference Include="OdooConnector" />
paket add OdooConnector --version 1.0.0
#r "nuget: OdooConnector, 1.0.0"
#:package OdooConnector@1.0.0
#addin nuget:?package=OdooConnector&version=1.0.0
#tool nuget:?package=OdooConnector&version=1.0.0
OdooConnector — .NET 8 JSON-RPC Client
A clean, production-ready .NET 8 library for integrating with Odoo ERP via its JSON-RPC API.
Solution structure
OdooConnector.sln
└── src/
├── OdooConnector/ ← Class library (the NuGet-ready connector)
│ ├── JsonRpc/ ← Low-level JSON-RPC 2.0 HTTP client
│ ├── Auth/ ← Authentication & session management
│ ├── Orm/ ← Generic ORM service (any model)
│ ├── Sales/ ← SalesService + InvoicingService
│ ├── Inventory/ ← InventoryService
│ ├── Models/ ← Typed C# models (Partner, SaleOrder, Invoice, Product…)
│ ├── Exceptions/ ← OdooException hierarchy
│ ├── OdooClient.cs ← Unified façade
│ └── OdooClientFactory.cs ← Factory + DI extensions
└── OdooConnector.Demo/ ← Console demo app
Quick start (no DI)
var odoo = OdooClientFactory.Create("http://localhost:8069");
var session = await odoo.LoginAsync("mydb", "admin", "admin");
// Generic ORM — any model
var partners = await odoo.Orm.SearchReadAsync<JsonElement>(
session, "res.partner",
new OdooDomain().Eq("is_company", true),
new SearchReadOptions { Fields = ["id","name"], Limit = 10 });
// Typed services
var orders = await odoo.Sales.GetOrdersAsync(session, limit: 20);
var invoices = await odoo.Invoicing.GetInvoicesAsync(session, limit: 10);
var products = await odoo.Inventory.GetProductsAsync(session, limit: 50);
Quick start (Microsoft DI)
services.AddOdooConnector("http://localhost:8069");
// Then inject OdooClient anywhere:
public class MyService(OdooClient odoo) { ... }
OdooDomain (filter builder)
var domain = new OdooDomain()
.Eq("state", "sale")
.Filter("amount_total", ">", 1000)
.ILike("name", "SO");
Running the demo
- Open
src/OdooConnector.Demo/Program.cs - Set
OdooUrl,Database,Username,Password dotnet run --project src/OdooConnector.Demo
Requirements
- .NET 8 SDK
- Odoo 14 or later (JSON-RPC endpoint active by default)
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net6.0
- Microsoft.Extensions.Http (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.0)
- System.Text.Json (>= 8.0.5)
-
net8.0
- Microsoft.Extensions.Http (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.0)
- System.Text.Json (>= 8.0.5)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 111 | 9/8/2026 |
v1.0.0 — Initial release.
- JSON-RPC 2.0 HTTP client
- Authentication and session management
- Generic ORM: SearchRead, Read, Create, Write, Unlink, FieldsGet, SearchCount
- Fluent OdooDomain filter builder
- SalesService: orders, order lines, customers
- InvoicingService: invoices, bills, overdue detection
- InventoryService: products, stock quants, low-stock alerts
- Microsoft DI extension: AddOdooConnector()
- Targets net6.0 and net8.0