Jebi.SDK.Rest 1.0.1

dotnet add package Jebi.SDK.Rest --version 1.0.1
                    
NuGet\Install-Package Jebi.SDK.Rest -Version 1.0.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Jebi.SDK.Rest" Version="1.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Jebi.SDK.Rest" Version="1.0.1" />
                    
Directory.Packages.props
<PackageReference Include="Jebi.SDK.Rest" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Jebi.SDK.Rest --version 1.0.1
                    
#r "nuget: Jebi.SDK.Rest, 1.0.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Jebi.SDK.Rest@1.0.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Jebi.SDK.Rest&version=1.0.1
                    
Install as a Cake Addin
#tool nuget:?package=Jebi.SDK.Rest&version=1.0.1
                    
Install as a Cake Tool

Jebi

Jebi is a .NET library that maps JSON data onto a relational database, applying configurable transformation rules to bridge structural differences between source JSON and the target EF Core model.


Architecture

Jebi is split into two distinct layers:

Server (hosted service)

A single combined REST server exposes both the Catalog and Ingestion Plan surfaces:

Project Role
apps/Servers/Jebi.Catalog.IngestionPlan.Server.Rest Production server — Catalog + Plan REST API

Endpoints:

  • api/source/* — JSON schema management
  • api/target/* — EF Core DbContext metadata
  • api/bindings/* — binding configurations and transformation rules
  • api/plan/* — ingestion plan setup and key correlations

Client (NuGet package)

Package Description
Jebi.SDK.Rest Published NuGet package. Wires IJebiSdkService against the remote server + local execution engine.

How It Works

Consumer App
  └── IJebiSdkService          (from Jebi.SDK.Rest package)
        ├── Catalog calls  ──→ HTTP  → Jebi Server (api/source, api/target, api/bindings)
        ├── Plan calls     ──→ HTTP  → Jebi Server (api/plan)
        └── Execute        ──→ local → JebiIngestionDb + consumer's target DbContext(s)

The server holds all metadata (schemas, target models, binding rules, plans). Execution runs client-side against the consumer's own databases.


Infrastructure Projects

Project Purpose
src/Catalog/Jebi.Catalog.Infrastructure Catalog persistence (source / target / binding)
src/Ingestion/Jebi.Ingestion.Plan.Infrastructure Plan persistence (setup / key correlations / run results)
src/Ingestion/Jebi.Ingestion.Execute.Infrastructure Runtime execution (EF provider, target integration)
src/Shared/Jebi.Shared.Infrastructure Shared EF base components

The server requires two connection strings:

"ConnectionStrings": {
  "JebiCatalogDb": "...",
  "JebiPlanDb": "..."
}

SDK Registration

REST (production)

builder.Services.AddJebiSdkRest(
    serverBaseAddress: "https://jebi.example.com",
    jebiIngestionConnectionString: "Data Source=jebi-execute.db",
    tenantRemoteTokenOptions: tenantOptions,
    ensureTargetDatabases: true,
    typeof(MyTargetDbContext));

Local (development / testing)

builder.Services.AddJebiSdkLocal(
    jebiCatalogConnectionString: "Data Source=catalog.db",
    jebiIngestionConnectionString: "Data Source=plan.db",
    ensureTargetDatabases: true,
    typeof(MyTargetDbContext));

Facade Usage

var jebi = serviceProvider.GetRequiredService<IJebiSdkService>();

var binding = await jebi.CreateBindingConfigurationAsync(new JebiCreateBindingConfigurationRequestDto
{
    SourceSchemaName = "CustomerSchema",
    TargetContextName = "MyTargetDbContext",
    Name = "CustomerBinding"
});

await jebi.AddPropertyBindingRuleAsync(new JebiAddPropertyBindingRuleRequestDto
{
    BindingConfigurationId = binding.BindingConfigurationId,
    SourcePropertyName = "CustomerDef.customerId",
    TargetPropertyFullyQualifiedName = "MyApp.Customer.CustomerId"
});

var result = await jebi.RunFromBindingAsync(new JebiRunFromBindingRequestDto
{
    BindingConfigurationName = "CustomerBinding",
    JsonPayload = jsonPayload,
    Options = new JebiIngestionOptionsDto { ValidateSchema = true, PersistRequested = true }
});

Solution Filters

Work on a focused subset of the solution using the available filters:

dotnet build Jebi.Catalog.slnf
dotnet build Jebi.Ingestion.slnf
dotnet build Jebi.SDK.slnf
dotnet build Jebi.AppHost.slnf

Architecture Boundaries

Check project boundary rules:

bash scripts/ci/check-project-boundaries.sh

Validates that:

  • consumer apps have DisableTransitiveProjectReferences=true
  • SDK surface packages do not expose internal projects as compile dependencies

Also enforced in CI via the Architecture Boundaries workflow.


Docker

Pull and run the server:

docker pull ghcr.io/boffoli/jebi-catalog-ingestionplan-server-rest:latest
docker run -d -p 8080:8080 ghcr.io/boffoli/jebi-catalog-ingestionplan-server-rest:latest

See docs/docker-demo-launchers.md for ready-to-use launcher scripts.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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.1 128 2/27/2026 1.0.1 is deprecated because it is no longer maintained and has critical bugs.
1.0.0 113 2/27/2026