diff --git a/reference.md b/reference.md
index e6c34c4..73d83b4 100644
--- a/reference.md
+++ b/reference.md
@@ -836,6 +836,209 @@ await client.Squads.UpdateAsync(
+
+
+
+
+## KnowledgeBases
+client.KnowledgeBases.ListAsync(KnowledgeBasesListRequest { ... }) -> IEnumerable
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```csharp
+await client.KnowledgeBases.ListAsync(new KnowledgeBasesListRequest());
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**request:** `KnowledgeBasesListRequest`
+
+
+
+
+
+
+
+
+
+
+
+client.KnowledgeBases.CreateAsync(object { ... }) -> object
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```csharp
+await client.KnowledgeBases.CreateAsync(
+ new CreateCustomKnowledgeBaseDto { Server = new Server { Url = "url" } }
+);
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**request:** `object`
+
+
+
+
+
+
+
+
+
+
+
+client.KnowledgeBases.GetAsync(id) -> object
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```csharp
+await client.KnowledgeBases.GetAsync("id");
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `string`
+
+
+
+
+
+
+
+
+
+
+
+client.KnowledgeBases.DeleteAsync(id) -> object
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```csharp
+await client.KnowledgeBases.DeleteAsync("id");
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `string`
+
+
+
+
+
+
+
+
+
+
+
+client.KnowledgeBases.UpdateAsync(id) -> object
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```csharp
+await client.KnowledgeBases.UpdateAsync("id");
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `string`
+
+
+
+
+
+
+
@@ -1103,7 +1306,14 @@ await client.Tools.ListAsync(new ToolsListRequest());
```csharp
-await client.Tools.CreateAsync(new CreateOutputToolDto { Async = false });
+await client.Tools.CreateAsync(
+ new CreateTextEditorToolDto
+ {
+ Async = false,
+ SubType = "text_editor_20241022",
+ Name = "str_replace_editor",
+ }
+);
```
@@ -1413,7 +1623,7 @@ await client.Files.UpdateAsync("id", new UpdateFileDto());
## Analytics
-client.Analytics.GetAsync(AnalyticsQueryDto { ... }) -> IEnumerable
+client.Analytics.GetAsync()
-
@@ -1426,55 +1636,20 @@ await client.Files.UpdateAsync("id", new UpdateFileDto());
-
```csharp
-await client.Analytics.GetAsync(
- new AnalyticsQueryDto
- {
- Queries = new List()
- {
- new AnalyticsQuery
- {
- Table = "call",
- Name = "name",
- Operations = new List()
- {
- new AnalyticsOperation
- {
- Operation = AnalyticsOperationOperation.Sum,
- Column = AnalyticsOperationColumn.Id,
- },
- },
- },
- },
- }
-);
+await client.Analytics.GetAsync();
```
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**request:** `AnalyticsQueryDto`
-
-
-
-
-
-
## Logs
-client.Logs.GetAsync(LogsGetRequest { ... }) -> LogsPaginatedResponse
+client.Logs.GetAsync(LogsGetRequest { ... }) -> Pager
-
diff --git a/src/Vapi.Net.Test/Core/EnumSerializerTests.cs b/src/Vapi.Net.Test/Core/EnumSerializerTests.cs
new file mode 100644
index 0000000..2ccc2b6
--- /dev/null
+++ b/src/Vapi.Net.Test/Core/EnumSerializerTests.cs
@@ -0,0 +1,61 @@
+using System;
+using System.Runtime.Serialization;
+using System.Text.Json;
+using System.Text.Json.Serialization;
+using NUnit.Framework;
+using Vapi.Net.Core;
+
+namespace Vapi.Net.Test.Core
+{
+ [TestFixture]
+ public class StringEnumSerializerTests
+ {
+ private static readonly JsonSerializerOptions JsonOptions = new() { WriteIndented = true };
+
+ private const DummyEnum KnownEnumValue2 = DummyEnum.KnownValue2;
+ private const string KnownEnumValue2String = "known_value2";
+
+ private static readonly string JsonWithKnownEnum2 = $$"""
+ {
+ "enum_property": "{{KnownEnumValue2String}}"
+ }
+ """;
+
+ [Test]
+ public void ShouldParseKnownEnumValue2()
+ {
+ var obj = JsonSerializer.Deserialize(JsonWithKnownEnum2, JsonOptions);
+ Assert.That(obj, Is.Not.Null);
+ Assert.That(obj.EnumProperty, Is.EqualTo(KnownEnumValue2));
+ }
+
+ [Test]
+ public void ShouldSerializeKnownEnumValue2()
+ {
+ var json = JsonSerializer.SerializeToElement(
+ new DummyObject { EnumProperty = KnownEnumValue2 },
+ JsonOptions
+ );
+ TestContext.Out.WriteLine("Serialized JSON: \n" + json);
+ var enumString = json.GetProperty("enum_property").GetString();
+ Assert.That(enumString, Is.Not.Null);
+ Assert.That(enumString, Is.EqualTo(KnownEnumValue2String));
+ }
+ }
+
+ public class DummyObject
+ {
+ [JsonPropertyName("enum_property")]
+ public DummyEnum EnumProperty { get; set; }
+ }
+
+ [JsonConverter(typeof(EnumSerializer))]
+ public enum DummyEnum
+ {
+ [EnumMember(Value = "known_value1")]
+ KnownValue1,
+
+ [EnumMember(Value = "known_value2")]
+ KnownValue2,
+ }
+}
diff --git a/src/Vapi.Net.Test/Core/Pagination/GuidCursorTest.cs b/src/Vapi.Net.Test/Core/Pagination/GuidCursorTest.cs
new file mode 100644
index 0000000..547ecd5
--- /dev/null
+++ b/src/Vapi.Net.Test/Core/Pagination/GuidCursorTest.cs
@@ -0,0 +1,107 @@
+using NUnit.Framework;
+using Vapi.Net.Core;
+
+namespace Vapi.Net.Test.Core.Pagination;
+
+[TestFixture(Category = "Pagination")]
+public class GuidCursorTest
+{
+ [Test]
+ public async Task CursorPagerShouldWorkWithGuidCursors()
+ {
+ var pager = CreatePager();
+ await AssertPager(pager);
+ }
+
+ private static readonly Guid? Cursor1 = null;
+ private static readonly Guid Cursor2 = new("00000000-0000-0000-0000-000000000001");
+ private static readonly Guid Cursor3 = new("00000000-0000-0000-0000-000000000001");
+ private Guid? _cursorCopy;
+
+ private Pager