Etymon.Api.Client
0.1.0-preview.13
dotnet add package Etymon.Api.Client --version 0.1.0-preview.13
NuGet\Install-Package Etymon.Api.Client -Version 0.1.0-preview.13
<PackageReference Include="Etymon.Api.Client" Version="0.1.0-preview.13" />
<PackageVersion Include="Etymon.Api.Client" Version="0.1.0-preview.13" />
<PackageReference Include="Etymon.Api.Client" />
paket add Etymon.Api.Client --version 0.1.0-preview.13
#r "nuget: Etymon.Api.Client, 0.1.0-preview.13"
#:package Etymon.Api.Client@0.1.0-preview.13
#addin nuget:?package=Etymon.Api.Client&version=0.1.0-preview.13&prerelease
#tool nuget:?package=Etymon.Api.Client&version=0.1.0-preview.13&prerelease
Etymon.Api.Client
Calls an Etymon endpoint over HTTP. No server, no web framework.
Part of the Etymon suite. Depends on
Etymon.Api and nothing else — a console application calling an Etymon-described
API takes this package alone.
match! Client.call http getUser userId with
| Ok user -> printfn "%s" user.Name
| Error e -> eprintfn "%s" (ApiError.describe e)
The URL is built by the same Route value the server matches with, so the
client cannot ask for a path the server does not serve. The body is encoded and
decoded with the endpoint's own schemas.
Three kinds of failure, kept apart
| Error (ApiError.Failed failure) ->
// The server answered, but not with success.
// failure.Declared says whether the endpoint admits to this status,
// and failure.Description says what it means — without asking anyone.
| Error (ApiError.Malformed (status, errors)) ->
// The server said this succeeded and then sent something the schema
// rejects. That is the two sides disagreeing about the contract, which
// deserves a louder reaction than an ordinary failure.
| Error (ApiError.Transport exn) ->
// The request never completed.
Declared is the field worth branching on. A status the endpoint declared is one
the server meant to send and the OpenAPI document lists. A status it did not is a
surprise, and the two deserve different handling — retrying a declared 409 is
sensible; retrying an undeclared 500 usually is not.
Tested against real servers
The client is exercised end to end against both a Giraffe server and a
minimal-API server built from the same endpoint declarations, over real HTTP
through Microsoft.AspNetCore.TestHost.
Public surface
The complete public surface of this package, every value with its full signature
and its documentation, is in Surface.fsi beside this file. It is written by the
build from the implementation, so it is where to learn what a function hands
back without compiling anything.
Licence
MIT.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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 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. |
-
net10.0
- Etymon.Api (>= 0.1.0-preview.13)
- Etymon.Core (>= 0.1.0-preview.13)
- Etymon.Schema (>= 0.1.0-preview.13)
- FSharp.Core (>= 8.0.100)
-
net8.0
- Etymon.Api (>= 0.1.0-preview.13)
- Etymon.Core (>= 0.1.0-preview.13)
- Etymon.Schema (>= 0.1.0-preview.13)
- FSharp.Core (>= 8.0.100)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Etymon.Api.Client:
| Package | Downloads |
|---|---|
|
Etymon
The Etymon suite: one schema definition as the source of truth for JSON codecs, validation, OpenAPI, TypeScript, configuration and database structure. This package has no code of its own; it references the parts of the suite that cost nothing but FSharp.Core. The adapters (Etymon.Api.Giraffe, Etymon.Api.AspNetCore) and the generator package (Etymon.Invariants.FsCheck) are deliberately left out, because each carries a dependency that would then be everyone's. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-preview.13 | 46 | 9/22/2026 |
| 0.1.0-preview.12 | 38 | 9/22/2026 |
| 0.1.0-preview.11 | 45 | 9/22/2026 |
| 0.1.0-preview.10 | 47 | 9/22/2026 |
| 0.1.0-preview.9 | 44 | 9/22/2026 |
| 0.1.0-preview.8 | 41 | 9/22/2026 |
| 0.1.0-preview.7 | 53 | 9/21/2026 |
| 0.1.0-preview.6 | 46 | 9/21/2026 |
| 0.1.0-preview.5 | 53 | 9/21/2026 |
| 0.1.0-preview.4 | 54 | 9/21/2026 |
| 0.1.0-preview.3 | 49 | 9/21/2026 |
| 0.1.0-preview.2 | 61 | 9/21/2026 |
| 0.1.0-preview.1 | 50 | 9/20/2026 |