Skip to content

release: v0.8.0#142

Merged
evansims merged 1 commit intomainfrom
release/v0.8.0
Oct 22, 2025
Merged

release: v0.8.0#142
evansims merged 1 commit intomainfrom
release/v0.8.0

Conversation

@evansims
Copy link
Contributor

  • feat!: add per-request custom headers support
    • DefaultHeaders support to ClientConfiguration for headers sent with every request
    • per-request headers support via Headers property on all client options classes
    • IRequestOptions interface and RequestOptions class for API-level header support
    • IClientRequestOptions interface and ClientRequestOptions class for client-level header support
    • add header validation to prevent overriding of reserved headers
  • feat: add write conflict resolution options
    • ConflictOptions to control behavior for duplicate writes and missing deletes
    • OnDuplicateWrites option: Error (default) or Ignore for handling duplicate tuple writes
    • OnMissingDeletes option: Error (default) or Ignore for handling missing tuple deletes
    • Available in ClientWriteOptions.Conflict property
  • feat: add Retry-After header support for rate limiting
    • Retry logic now respects Retry-After header from HTTP 429 responses
    • Falls back to exponential backoff when Retry-After header is missing or invalid

Warning

BREAKING CHANGES:

  • OpenFgaApi methods: All API methods now accept an IRequestOptions? options parameter. If you are using the low-level OpenFgaApi directly, you may need to update your calls:

    Before:

    await api.Check(storeId, body, cancellationToken);

    After:

    var options = new RequestOptions {
        Headers = new Dictionary<string, string> { { "X-Custom-Header", "value" } }
    };
    await api.Check(storeId, body, options, cancellationToken);
  • ClientRequestOptions renamed: The base client request options interface has been renamed from ClientRequestOptions to IClientRequestOptions to better follow .NET naming conventions. A concrete ClientRequestOptions class is now also available. If you were casting to or implementing this interface, update your code:

    Before:

    var options = obj as ClientRequestOptions;

    After:

    var options = obj as IClientRequestOptions;

Note: If you are using the high-level OpenFgaClient, no changes are required to your existing code. The new headers functionality is additive via the existing options parameters.

Copilot AI review requested due to automatic review settings October 22, 2025 17:09
@evansims evansims requested a review from a team as a code owner October 22, 2025 17:09
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR releases version 0.8.0 of the OpenFGA SDK, introducing support for custom headers, write conflict resolution options, and improved rate limiting retry logic. Key features include per-request headers via new options interfaces, conflict handling controls for duplicate writes and missing deletes, and Retry-After header support for HTTP 429 responses.

  • Added custom headers support at both client and request levels with validation against reserved headers
  • Introduced ConflictOptions for controlling duplicate write and missing delete behavior
  • Enhanced retry logic to respect Retry-After headers from rate limit responses

Reviewed Changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
src/OpenFga.Sdk/OpenFga.Sdk.csproj Updated package version from 0.7.0 to 0.8.0
src/OpenFga.Sdk/Configuration/Configuration.cs Updated SDK version constant and user agent string to 0.8.0
CHANGELOG.md Added v0.8.0 release entry with feature details and breaking changes documentation

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Copy link
Member

@SoulPancake SoulPancake left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LG

@evansims evansims added this pull request to the merge queue Oct 22, 2025
Merged via the queue into main with commit 52546d7 Oct 22, 2025
22 checks passed
@evansims evansims deleted the release/v0.8.0 branch October 22, 2025 17:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

2 participants

Comments