0.5.1 (2024-09-09)
- feat: export OpenTelemetry metrics. Refer to the https://github.com/openfga/dotnet-sdk/blob/main/OpenTelemetry.md for more.
0.5.0 (2024-08-28)
- feat: support consistency parameter (#70)
Note: To use this feature, you need to be running OpenFGA v1.5.7+ with the experimental flag
enable-consistency-params
enabled. See the v1.5.7 release notes for details.
0.4.0 (2024-06-14)
- chore!: remove excluded users from ListUsers response
BREAKING CHANGE:
This version removes the ExcludedUsers
field from the ListUsersResponse
and ClientListUsersResponse
classes,
for more details see the associated API change.
0.3.2 (2024-04-30)
- feat: support the ListUsers endpoint (#57)
- feat: add retries to client credential requests (#51)
- feat: add support for modular models metadata (#53)
0.3.1 (2024-02-13)
- fix: use correct content type for token request
0.3.0 (2023-12-20)
- feat!: initial support for conditions
- feat!: allow overriding storeId per request (#33)
- feat: support specifying a port and path for the API (You can now set the
ApiUrl
to something like:https://api.fga.exampleL8080/some_path
) - feat: validate that store id and auth model id in ulid format (#23)
- fix: exception when using the same configuration with multiple clients (#26)
- fix:
OpenFgaClient.ReadLatestAuthorizationModel
can now return a null if no model has ever been created in that store - fix:
OpenFgaClient.Read
andOpenFgaClient.ReadChanges
now allow a null body - chore!: use latest API interfaces
- chore: dependency updates
- chore: add example project
BREAKING CHANGES: Note: This release comes with substantial breaking changes, especially to the interfaces due to the protobuf changes in the last release.
While the http interfaces did not break (you can still use v0.2.5
SDK with a v1.3.8+
server),
the grpc interface did and this caused a few changes in the interfaces of the SDK.
If you are using OpenFgaClient
, the changes required should be smaller, if you are using OpenFgaApi
a bit more changes will be needed.
You will have to modify some parts of your code, but we hope this will be to the better as a lot of the parameters are now correctly marked as required, and so the Pointer-to-String conversion is no longer needed.
Some of the changes to expect:
- When initializing a client, please use
ApiUrl
. The separateApiScheme
andApiHost
fields have been deprecated
var configuration = new ClientConfiguration() {
ApiUrl = Environment.GetEnvironmentVariable("FGA_API_URL"), // required, e.g. https://api.fga.example
StoreId = Environment.GetEnvironmentVariable("FGA_STORE_ID"), // not needed when calling `CreateStore` or `ListStores`
AuthorizationModelId = Environment.GetEnvironmentVariable("FGA_MODEL_ID"), // Optional, can be overridden per request
};
var fgaClient = new OpenFgaClient(configuration);
OpenFgaApi
now requiresstoreId
as first param when neededConfiguration
no longer acceptsstoreId
(ClientConfiguration
is not affected)- The following request interfaces changed:
CheckRequest
: theTupleKey
field is now of interfaceCheckRequestTupleKey
, you can also now pass inContext
ExpandRequest
: theTupleKey
field is now of interfaceExpandRequestTupleKey
ReadRequest
: theTupleKey
field is now of interfaceReadRequestTupleKey
WriteRequest
: now takesWriteRequestWrites
andWriteRequestDeletes
, the latter of which acceptsTupleKeyWithoutCondition
- And more
- The following interfaces had fields that were pointers are are now the direct value:
CreateStoreResponse
GetStoreResponse
ListStoresResponse
ListObjectsResponse
ReadChangesResponse
ReadResponse
AuthorizationModel
- And more
Take a look at https://github.com/openfga/dotnet-sdk/commit/fa43463ded102df3f660bae6d741e1a8c1dea090 for more model changes.
0.2.5 (2023-12-01)
- fix(client): read with no filter (read all tuples)
- chore(deps): update dependencies
0.2.4 (2023-05-01)
- fix: client credentials token expiry period was being evaluated as ms instead of seconds, leading to token refreshes on every call
0.2.3 (2023-04-13)
- fix: changed interface of contextual tuples in
ClientListObjects
to beClientTupleKey
instead ofTupleKey
- fix: Client
WriteAuthorizationModel
now expectsClientWriteAuthorizationModelRequest
instead ofWriteAuthorizationModelRequest
- chore: changed a few interfaces to expect interfaces instead of classes
0.2.2 (2023-04-12)
- feat(client): add OpenFgaClient wrapper see docs, see the
v0.2.1
docs for the OpenFgaApi docs - feat(client): implement
BatchCheck
to check multiple tuples in parallel - feat(client): implement
ListRelations
to check in one call whether a user has multiple relations to an objects - feat(client): add support for a non-transactional
Write
- chore(config): bump default max retries to
15
- fix: retry on 5xx errors
0.2.1 (2023-01-17)
- chore(deps): upgrade
Microsoft.NET.Test.Sdk
andMoq
dev dependencies
0.2.0 (2022-12-14)
Updated to include support for OpenFGA 0.3.0
Changes:
- [BREAKING] feat(list-objects)!: response has been changed to include the object type
e.g. response that was
{"object_ids":["roadmap"]}
, will now be{"objects":["document:roadmap"]}
Fixes:
- fix(models): update interfaces that had incorrectly optional fields to make them required
Chore:
- chore(deps): update dev dependencies
0.1.2 (2022-11-15)
- feat: regenerate from latest API Document, changes include:
- documentation fixes
- types that represent enabling wildcards in authorization models
- fix: send authorization header to server when ApiToken used (openfga/sdk-generator#58)
- chore: update test dependencies
0.1.1 (2022-10-07)
- Fix for issue in deserializing nullable DateTime (#5)
0.1.0 (2022-09-29)
- BREAKING: exported interface
TypeDefinitions
is nowWriteAuthorizationModelRequest
This is only a breaking change on the SDK, not the API. It was changed to conform to the proto changes in openfga/api. - chore(deps): upgrade dependencies
0.0.3 (2022-09-09)
- Fix for issue in deserializing enums (openfga/sdk-generator#7)
0.0.2 (2022-08-15)
Support for [ListObjects API]](https://openfga.dev/api/service#/Relationship%20Queries/ListObjects)
You call the API and receive the list of object ids from a particular type that the user has a certain relation with.
For example, to find the list of documents that Anne can read:
var body = new ListObjectsRequest{
AuthorizationModelId = "01GAHCE4YVKPQEKZQHT2R89MQV",
User = "anne",
Relation = "can_read",
Type = "document"
};
var response = await openFgaApi.ListObjects(body);
// response.ObjectIds = ["roadmap"]
0.0.1 (2022-06-17)
Initial OpenFGA .NET SDK release
- Support for OpenFGA API
- CRUD stores
- Create, read & list authorization models
- Writing and Reading Tuples
- Checking authorization
- Using Expand to understand why access was granted