Skip to content

Commit db51a23

Browse files
committed
merge
2 parents 5b20b5a + 8a69e1d commit db51a23

File tree

99 files changed

+4089
-3287
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

99 files changed

+4089
-3287
lines changed

CHANGELOG.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,45 @@
11
# Release History
22

3+
## 2.8.0 (Unreleased)
4+
5+
### Acknowledgments
6+
7+
### Features Added
8+
9+
### Bugs Fixed
10+
11+
### Other Changes
12+
13+
## 2.7.0 (2025-11-13)
14+
15+
### Acknowledgments
16+
17+
Thank you to our developer community members who helped to make the OpenAI client library better with their contributions to this release:
18+
19+
- Benjamin Pinter _([GitHub](https://github.com/BenjaminDavidPinter))_
20+
21+
### Features Added
22+
23+
- OpenAI.Responses:
24+
- Enabled support for stable web search via the `WebSearchTool` class, with a separate `WebSearchPreviewTool` class for preview web search features.
25+
- Added `Filename` property to `FileCitationMessageAnnotation` to provide the name of the cited file.
26+
- Exposed reasoning streaming events, including:
27+
- `StreamingResponseReasoningTextDeltaUpdate` and `StreamingResponseReasoningTextDoneUpdate` for reasoning text events.
28+
- `StreamingResponseReasoningSummaryPartAddedUpdate` and `StreamingResponseReasoningSummaryPartDoneUpdate` for reasoning summary part events.
29+
- `StreamingResponseReasoningSummaryTextDeltaUpdate` and `StreamingResponseReasoningSummaryTextDoneUpdate` for reasoning summary text events.
30+
31+
### Bugs Fixed
32+
33+
- OpenAI.Assistants:
34+
- Fixed an issue with custom serialization for `MessageCreationAttachment` that prevented proper handling of file attachments in message creation. _(A community contribution, courtesy of [BenjaminDavidPinter](https://github.com/BenjaminDavidPinter))_
35+
- OpenAI.Responses:
36+
- Fixed the generated serialization name of `partial_image_b64` in `StreamingResponseImageGenerationCallPartialImageUpdate` to ensure correct serialization of partial image data in streaming responses.
37+
- Fixed serialization issues with `Patch` properties by adding the `JsonIgnore` attribute, preventing `System.InvalidOperationException` when using `JsonSerializer` without the custom converter.
38+
39+
### Other Changes
40+
41+
- Updated the `System.ClientModel` dependency to version 1.8.1 to adopt bug fixes for JSON Patch. For more context, see the [System.ClientModel ChangeLog](https://github.com/Azure/azure-sdk-for-net/blob/System.ClientModel_1.8.1/sdk/core/System.ClientModel/CHANGELOG.md)
42+
343
## 2.6.0 (2025-10-31)
444

545
### Acknowledgments

api/OpenAI.net8.0.cs

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5464,12 +5464,32 @@ public class ImageGenerationToolInputImageMask : IJsonModel<ImageGenerationToolI
54645464
public override readonly string ToString();
54655465
}
54665466
[Experimental("OPENAI001")]
5467+
<<<<<<< HEAD
54675468
public enum Includable {
54685469
FileSearchCallResults = 0,
54695470
MessageInputImageImageUrl = 1,
54705471
ComputerCallOutputOutputImageUrl = 2,
54715472
ReasoningEncryptedContent = 3,
54725473
CodeInterpreterCallOutputs = 4
5474+
=======
5475+
public readonly partial struct IncludedResponseProperty : IEquatable<IncludedResponseProperty> {
5476+
public IncludedResponseProperty(string value);
5477+
public static IncludedResponseProperty CodeInterpreterCallOutputs { get; }
5478+
public static IncludedResponseProperty ComputerCallOutputImageUri { get; }
5479+
public static IncludedResponseProperty FileSearchCallResults { get; }
5480+
public static IncludedResponseProperty MessageInputImageUri { get; }
5481+
public static IncludedResponseProperty ReasoningEncryptedContent { get; }
5482+
public readonly bool Equals(IncludedResponseProperty other);
5483+
[EditorBrowsable(EditorBrowsableState.Never)]
5484+
public override readonly bool Equals(object obj);
5485+
[EditorBrowsable(EditorBrowsableState.Never)]
5486+
public override readonly int GetHashCode();
5487+
public static bool operator ==(IncludedResponseProperty left, IncludedResponseProperty right);
5488+
public static implicit operator IncludedResponseProperty(string value);
5489+
public static implicit operator IncludedResponseProperty?(string value);
5490+
public static bool operator !=(IncludedResponseProperty left, IncludedResponseProperty right);
5491+
public override readonly string ToString();
5492+
>>>>>>> upstream/main
54735493
}
54745494
[Experimental("OPENAI001")]
54755495
public class McpTool : ResponseTool, IJsonModel<McpTool>, IPersistableModel<McpTool> {
@@ -5625,6 +5645,88 @@ public enum MessageStatus {
56255645
Incomplete = 2
56265646
}
56275647
[Experimental("OPENAI001")]
5648+
<<<<<<< HEAD
5649+
=======
5650+
public class OpenAIResponse : IJsonModel<OpenAIResponse>, IPersistableModel<OpenAIResponse> {
5651+
public bool? BackgroundModeEnabled { get; }
5652+
public DateTimeOffset CreatedAt { get; }
5653+
public string EndUserId { get; }
5654+
public ResponseError Error { get; }
5655+
public string Id { get; }
5656+
public ResponseIncompleteStatusDetails IncompleteStatusDetails { get; }
5657+
public string Instructions { get; }
5658+
public int? MaxOutputTokenCount { get; }
5659+
public IDictionary<string, string> Metadata { get; }
5660+
public string Model { get; }
5661+
public IList<ResponseItem> OutputItems { get; }
5662+
public bool ParallelToolCallsEnabled { get; }
5663+
[Serialization.JsonIgnore]
5664+
[EditorBrowsable(EditorBrowsableState.Never)]
5665+
[Experimental("SCME0001")]
5666+
public ref JsonPatch Patch { get; }
5667+
public string PreviousResponseId { get; }
5668+
public ResponseReasoningOptions ReasoningOptions { get; }
5669+
public ResponseServiceTier? ServiceTier { get; }
5670+
public ResponseStatus? Status { get; }
5671+
public float? Temperature { get; }
5672+
public ResponseTextOptions TextOptions { get; }
5673+
public ResponseToolChoice ToolChoice { get; }
5674+
public IList<ResponseTool> Tools { get; }
5675+
public float? TopP { get; }
5676+
public ResponseTruncationMode? TruncationMode { get; }
5677+
public ResponseTokenUsage Usage { get; }
5678+
public string GetOutputText();
5679+
protected virtual OpenAIResponse JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
5680+
protected virtual void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
5681+
public static explicit operator OpenAIResponse(ClientResult result);
5682+
protected virtual OpenAIResponse PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
5683+
protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
5684+
}
5685+
[Experimental("OPENAI001")]
5686+
public class OpenAIResponseClient {
5687+
protected OpenAIResponseClient();
5688+
protected internal OpenAIResponseClient(ClientPipeline pipeline, string model, OpenAIClientOptions options);
5689+
public OpenAIResponseClient(string model, ApiKeyCredential credential, OpenAIClientOptions options);
5690+
public OpenAIResponseClient(string model, ApiKeyCredential credential);
5691+
public OpenAIResponseClient(string model, AuthenticationPolicy authenticationPolicy, OpenAIClientOptions options);
5692+
public OpenAIResponseClient(string model, AuthenticationPolicy authenticationPolicy);
5693+
public OpenAIResponseClient(string model, string apiKey);
5694+
[Experimental("OPENAI001")]
5695+
public Uri Endpoint { get; }
5696+
[Experimental("OPENAI001")]
5697+
public string Model { get; }
5698+
public ClientPipeline Pipeline { get; }
5699+
public virtual ClientResult CancelResponse(string responseId, RequestOptions options);
5700+
public virtual ClientResult<OpenAIResponse> CancelResponse(string responseId, CancellationToken cancellationToken = default);
5701+
public virtual Task<ClientResult> CancelResponseAsync(string responseId, RequestOptions options);
5702+
public virtual Task<ClientResult<OpenAIResponse>> CancelResponseAsync(string responseId, CancellationToken cancellationToken = default);
5703+
public virtual ClientResult CreateResponse(BinaryContent content, RequestOptions options = null);
5704+
public virtual ClientResult<OpenAIResponse> CreateResponse(IEnumerable<ResponseItem> inputItems, ResponseCreationOptions options = null, CancellationToken cancellationToken = default);
5705+
public virtual ClientResult<OpenAIResponse> CreateResponse(string userInputText, ResponseCreationOptions options = null, CancellationToken cancellationToken = default);
5706+
public virtual Task<ClientResult> CreateResponseAsync(BinaryContent content, RequestOptions options = null);
5707+
public virtual Task<ClientResult<OpenAIResponse>> CreateResponseAsync(IEnumerable<ResponseItem> inputItems, ResponseCreationOptions options = null, CancellationToken cancellationToken = default);
5708+
public virtual Task<ClientResult<OpenAIResponse>> CreateResponseAsync(string userInputText, ResponseCreationOptions options = null, CancellationToken cancellationToken = default);
5709+
public virtual CollectionResult<StreamingResponseUpdate> CreateResponseStreaming(IEnumerable<ResponseItem> inputItems, ResponseCreationOptions options = null, CancellationToken cancellationToken = default);
5710+
public virtual CollectionResult<StreamingResponseUpdate> CreateResponseStreaming(string userInputText, ResponseCreationOptions options = null, CancellationToken cancellationToken = default);
5711+
public virtual AsyncCollectionResult<StreamingResponseUpdate> CreateResponseStreamingAsync(IEnumerable<ResponseItem> inputItems, ResponseCreationOptions options = null, CancellationToken cancellationToken = default);
5712+
public virtual AsyncCollectionResult<StreamingResponseUpdate> CreateResponseStreamingAsync(string userInputText, ResponseCreationOptions options = null, CancellationToken cancellationToken = default);
5713+
public virtual ClientResult DeleteResponse(string responseId, RequestOptions options);
5714+
public virtual ClientResult<ResponseDeletionResult> DeleteResponse(string responseId, CancellationToken cancellationToken = default);
5715+
public virtual Task<ClientResult> DeleteResponseAsync(string responseId, RequestOptions options);
5716+
public virtual Task<ClientResult<ResponseDeletionResult>> DeleteResponseAsync(string responseId, CancellationToken cancellationToken = default);
5717+
public virtual ClientResult GetResponse(string responseId, IEnumerable<IncludedResponseProperty> include, bool? stream, int? startingAfter, bool? includeObfuscation, RequestOptions options);
5718+
public virtual ClientResult<OpenAIResponse> GetResponse(string responseId, IEnumerable<IncludedResponseProperty> include = null, CancellationToken cancellationToken = default);
5719+
public virtual Task<ClientResult> GetResponseAsync(string responseId, IEnumerable<IncludedResponseProperty> include, bool? stream, int? startingAfter, bool? includeObfuscation, RequestOptions options);
5720+
public virtual Task<ClientResult<OpenAIResponse>> GetResponseAsync(string responseId, IEnumerable<IncludedResponseProperty> include = null, CancellationToken cancellationToken = default);
5721+
public virtual CollectionResult<ResponseItem> GetResponseInputItems(string responseId, ResponseItemCollectionOptions options = null, CancellationToken cancellationToken = default);
5722+
public virtual CollectionResult GetResponseInputItems(string responseId, int? limit, string order, string after, string before, RequestOptions options);
5723+
public virtual AsyncCollectionResult<ResponseItem> GetResponseInputItemsAsync(string responseId, ResponseItemCollectionOptions options = null, CancellationToken cancellationToken = default);
5724+
public virtual AsyncCollectionResult GetResponseInputItemsAsync(string responseId, int? limit, string order, string after, string before, RequestOptions options);
5725+
public virtual CollectionResult<StreamingResponseUpdate> GetResponseStreaming(string responseId, IEnumerable<IncludedResponseProperty> include = null, int? startingAfter = null, bool? includeObfuscation = null, CancellationToken cancellationToken = default);
5726+
public virtual AsyncCollectionResult<StreamingResponseUpdate> GetResponseStreamingAsync(string responseId, IEnumerable<IncludedResponseProperty> include = null, int? startingAfter = null, bool? includeObfuscation = null, CancellationToken cancellationToken = default);
5727+
}
5728+
[Experimental("OPENAI001")]
5729+
>>>>>>> upstream/main
56285730
public static class OpenAIResponsesModelFactory {
56295731
public static MessageResponseItem MessageResponseItem(string id = null, MessageRole role = MessageRole.Assistant, MessageStatus? status = null);
56305732
public static ReasoningResponseItem ReasoningResponseItem(string id = null, string encryptedContent = null, ReasoningStatus? status = null, IEnumerable<ReasoningSummaryPart> summaryParts = null);
@@ -5718,6 +5820,37 @@ public enum ResponseContentPartKind {
57185820
Refusal = 5
57195821
}
57205822
[Experimental("OPENAI001")]
5823+
<<<<<<< HEAD
5824+
=======
5825+
public class ResponseCreationOptions : IJsonModel<ResponseCreationOptions>, IPersistableModel<ResponseCreationOptions> {
5826+
public bool? BackgroundModeEnabled { get; set; }
5827+
public string EndUserId { get; set; }
5828+
public IList<IncludedResponseProperty> IncludedProperties { get; }
5829+
public string Instructions { get; set; }
5830+
public int? MaxOutputTokenCount { get; set; }
5831+
public IDictionary<string, string> Metadata { get; }
5832+
public bool? ParallelToolCallsEnabled { get; set; }
5833+
[Serialization.JsonIgnore]
5834+
[EditorBrowsable(EditorBrowsableState.Never)]
5835+
[Experimental("SCME0001")]
5836+
public ref JsonPatch Patch { get; }
5837+
public string PreviousResponseId { get; set; }
5838+
public ResponseReasoningOptions ReasoningOptions { get; set; }
5839+
public ResponseServiceTier? ServiceTier { get; set; }
5840+
public bool? StoredOutputEnabled { get; set; }
5841+
public float? Temperature { get; set; }
5842+
public ResponseTextOptions TextOptions { get; set; }
5843+
public ResponseToolChoice ToolChoice { get; set; }
5844+
public IList<ResponseTool> Tools { get; }
5845+
public float? TopP { get; set; }
5846+
public ResponseTruncationMode? TruncationMode { get; set; }
5847+
protected virtual ResponseCreationOptions JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
5848+
protected virtual void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
5849+
protected virtual ResponseCreationOptions PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
5850+
protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
5851+
}
5852+
[Experimental("OPENAI001")]
5853+
>>>>>>> upstream/main
57215854
public class ResponseDeletionResult : IJsonModel<ResponseDeletionResult>, IPersistableModel<ResponseDeletionResult> {
57225855
public bool Deleted { get; }
57235856
public string Id { get; }

0 commit comments

Comments
 (0)