diff --git a/.env.example b/.env.example
new file mode 100644
index 0000000..0776f1f
--- /dev/null
+++ b/.env.example
@@ -0,0 +1 @@
+TRIBUFU_API_KEY=""
diff --git a/.gitignore b/.gitignore
index c72ee44..b585321 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,5 +3,7 @@ bin/
obj/
.DS_Store
+.env
*.filters
*.user
+desktop.ini
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 7a6d9fc..e95a987 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -3,6 +3,7 @@
true
+
diff --git a/Tribufu.sln b/Tribufu.sln
index 78211d1..5f20314 100644
--- a/Tribufu.sln
+++ b/Tribufu.sln
@@ -3,16 +3,42 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tribufu", "src\Tribufu\Tribufu.csproj", "{7B7890D8-863A-4F1D-98C0-4B7D8C46CB52}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tribufu.Example", "src\Tribufu.Example\Tribufu.Example.csproj", "{D6392A29-E2DC-4050-B4C1-B279DD2D226D}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{7B7890D8-863A-4F1D-98C0-4B7D8C46CB52}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7B7890D8-863A-4F1D-98C0-4B7D8C46CB52}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7B7890D8-863A-4F1D-98C0-4B7D8C46CB52}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {7B7890D8-863A-4F1D-98C0-4B7D8C46CB52}.Debug|x64.Build.0 = Debug|Any CPU
+ {7B7890D8-863A-4F1D-98C0-4B7D8C46CB52}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {7B7890D8-863A-4F1D-98C0-4B7D8C46CB52}.Debug|x86.Build.0 = Debug|Any CPU
{7B7890D8-863A-4F1D-98C0-4B7D8C46CB52}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7B7890D8-863A-4F1D-98C0-4B7D8C46CB52}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7B7890D8-863A-4F1D-98C0-4B7D8C46CB52}.Release|x64.ActiveCfg = Release|Any CPU
+ {7B7890D8-863A-4F1D-98C0-4B7D8C46CB52}.Release|x64.Build.0 = Release|Any CPU
+ {7B7890D8-863A-4F1D-98C0-4B7D8C46CB52}.Release|x86.ActiveCfg = Release|Any CPU
+ {7B7890D8-863A-4F1D-98C0-4B7D8C46CB52}.Release|x86.Build.0 = Release|Any CPU
+ {D6392A29-E2DC-4050-B4C1-B279DD2D226D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D6392A29-E2DC-4050-B4C1-B279DD2D226D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D6392A29-E2DC-4050-B4C1-B279DD2D226D}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D6392A29-E2DC-4050-B4C1-B279DD2D226D}.Debug|x64.Build.0 = Debug|Any CPU
+ {D6392A29-E2DC-4050-B4C1-B279DD2D226D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D6392A29-E2DC-4050-B4C1-B279DD2D226D}.Debug|x86.Build.0 = Debug|Any CPU
+ {D6392A29-E2DC-4050-B4C1-B279DD2D226D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D6392A29-E2DC-4050-B4C1-B279DD2D226D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D6392A29-E2DC-4050-B4C1-B279DD2D226D}.Release|x64.ActiveCfg = Release|Any CPU
+ {D6392A29-E2DC-4050-B4C1-B279DD2D226D}.Release|x64.Build.0 = Release|Any CPU
+ {D6392A29-E2DC-4050-B4C1-B279DD2D226D}.Release|x86.ActiveCfg = Release|Any CPU
+ {D6392A29-E2DC-4050-B4C1-B279DD2D226D}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/src/Tribufu.Example/Program.cs b/src/Tribufu.Example/Program.cs
new file mode 100644
index 0000000..9d5fef8
--- /dev/null
+++ b/src/Tribufu.Example/Program.cs
@@ -0,0 +1,44 @@
+// Copyright (c) Tribufu. All Rights Reserved.
+// SPDX-License-Identifier: UNLICENSED
+
+using dotenv.net;
+using Tribufu.Api;
+using Tribufu.Client;
+
+namespace Tribufu.Test
+{
+ public static class Program
+ {
+ public static async Task Main(string[] args)
+ {
+ DotEnv.Load(new DotEnvOptions(ignoreExceptions: true, envFilePaths: [".env", "../../.env"]));
+
+ var config = new Configuration
+ {
+ BasePath = "https://api.tribufu.com"
+ };
+
+ var apiKey = Environment.GetEnvironmentVariable("TRIBUFU_API_KEY");
+ if (!string.IsNullOrEmpty(apiKey))
+ {
+ config.AddApiKey("Authorization", "DvyTVeT6EBsvqsPE1mRuW7ewwiP1f9playWE9wLTmdXnCuBQqBrluhU0p1KXYaRi");
+ config.AddApiKeyPrefix("Authorization", "ApiKey");
+ }
+
+ var tribufu = new TribufuApi(config);
+
+ try
+ {
+ var result = await tribufu.GetUserInfoAsync();
+ Console.WriteLine("Result:");
+ Console.WriteLine(result);
+ }
+ catch (ApiException e)
+ {
+ Console.WriteLine("---- API Error ----");
+ Console.WriteLine($"Status: {e.ErrorCode}");
+ Console.WriteLine($"Details: {e.Data}");
+ }
+ }
+ }
+}
diff --git a/src/Tribufu.Example/Tribufu.Example.csproj b/src/Tribufu.Example/Tribufu.Example.csproj
new file mode 100644
index 0000000..25a4537
--- /dev/null
+++ b/src/Tribufu.Example/Tribufu.Example.csproj
@@ -0,0 +1,11 @@
+
+
+ enable
+ enable
+ Exe
+ net8.0
+
+
+
+
+
diff --git a/src/Tribufu/Tribufu.csproj b/src/Tribufu/Tribufu.csproj
index dd5f3e8..306fcbd 100644
--- a/src/Tribufu/Tribufu.csproj
+++ b/src/Tribufu/Tribufu.csproj
@@ -17,6 +17,7 @@
+