diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 51d1ab8..bc7ba1e 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -28,22 +28,12 @@ jobs:
- name: prepare csharp-dotnet-sdk
run: |
- echo 'building'
-
dotnet build --configuration Release
- echo 'packing'
-
- dotnet pack \
- --no-restore \
- --no-build \
- --configuration Release \
- --output .
-
- echo 'testing'
-
dotnet test --configuration Release --no-restore
+ dotnet pack --configuration Release --no-build --no-restore --output .
+
- uses: cycjimmy/semantic-release-action@v4.0.0
with:
semantic_version: 18
diff --git a/AffixApi.Api.sln b/AffixApi.Api.sln
index 27807d2..878b29d 100644
--- a/AffixApi.Api.sln
+++ b/AffixApi.Api.sln
@@ -2,7 +2,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
VisualStudioVersion = 12.0.0.0
MinimumVisualStudioVersion = 10.0.0.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AffixApi.Api", "src\AffixApi.Api\AffixApi.Api.csproj", "{27125DFC-D800-4CFB-AC8D-40AD1F032B62}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AffixApi.Api", "src\AffixApi.Api\AffixApi.Api.csproj", "{97B679BB-DD60-4EA8-8730-26A48A5AC449}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AffixApi.Api.Test", "src\AffixApi.Api.Test\AffixApi.Api.Test.csproj", "{19F1DEBC-DE5E-4517-8062-F000CD499087}"
EndProject
@@ -12,10 +12,10 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {27125DFC-D800-4CFB-AC8D-40AD1F032B62}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {27125DFC-D800-4CFB-AC8D-40AD1F032B62}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {27125DFC-D800-4CFB-AC8D-40AD1F032B62}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {27125DFC-D800-4CFB-AC8D-40AD1F032B62}.Release|Any CPU.Build.0 = Release|Any CPU
+ {97B679BB-DD60-4EA8-8730-26A48A5AC449}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {97B679BB-DD60-4EA8-8730-26A48A5AC449}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {97B679BB-DD60-4EA8-8730-26A48A5AC449}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {97B679BB-DD60-4EA8-8730-26A48A5AC449}.Release|Any CPU.Build.0 = Release|Any CPU
{19F1DEBC-DE5E-4517-8062-F000CD499087}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{19F1DEBC-DE5E-4517-8062-F000CD499087}.Debug|Any CPU.Build.0 = Debug|Any CPU
{19F1DEBC-DE5E-4517-8062-F000CD499087}.Release|Any CPU.ActiveCfg = Release|Any CPU
diff --git a/README.md b/README.md
index 9200814..71ab0b4 100644
--- a/README.md
+++ b/README.md
@@ -195,7 +195,7 @@ Things to keep in mind:
This C# SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
- API version: 2023-03-01
-- SDK version: 1.1.37
+- SDK version: 1.1.38
- Build package: org.openapitools.codegen.languages.CSharpNetCoreClientCodegen
diff --git a/src/AffixApi.Api/AffixApi.Api.csproj b/src/AffixApi.Api/AffixApi.Api.csproj
index 4576ea4..65171cc 100644
--- a/src/AffixApi.Api/AffixApi.Api.csproj
+++ b/src/AffixApi.Api/AffixApi.Api.csproj
@@ -1,7 +1,6 @@
- README.md
false
netcoreapp3.1
AffixApi.Api
@@ -13,7 +12,7 @@
A library generated from a OpenAPI doc
No Copyright
AffixApi.Api
- 1.1.37
+ 1.1.38
bin\$(Configuration)\$(TargetFramework)\AffixApi.Api.xml
https://github.com/GIT_USER_ID/GIT_REPO_ID.git
git
@@ -26,7 +25,6 @@
-
diff --git a/src/AffixApi.Api/Client/Configuration.cs b/src/AffixApi.Api/Client/Configuration.cs
index 8c43246..870a284 100644
--- a/src/AffixApi.Api/Client/Configuration.cs
+++ b/src/AffixApi.Api/Client/Configuration.cs
@@ -32,7 +32,7 @@ public class Configuration : IReadableConfiguration
/// Version of the package.
///
/// Version of the package.
- public const string Version = "1.1.37";
+ public const string Version = "1.1.38";
///
/// Identifier for ISO 8601 DateTime Format
@@ -107,7 +107,7 @@ public class Configuration : IReadableConfiguration
public Configuration()
{
Proxy = null;
- UserAgent = "OpenAPI-Generator/1.1.37/csharp";
+ UserAgent = "OpenAPI-Generator/1.1.38/csharp";
BasePath = "https://api.affixapi.com";
DefaultHeaders = new ConcurrentDictionary();
ApiKey = new ConcurrentDictionary();
@@ -458,7 +458,7 @@ public static String ToDebugReport()
report += " OS: " + System.Environment.OSVersion + "\n";
report += " .NET Framework Version: " + System.Environment.Version + "\n";
report += " Version of the API: 2023-03-01\n";
- report += " SDK Package Version: 1.1.37\n";
+ report += " SDK Package Version: 1.1.38\n";
return report;
}
diff --git a/src/AffixApi.Api/README.md b/src/AffixApi.Api/README.md
new file mode 100644
index 0000000..71ab0b4
--- /dev/null
+++ b/src/AffixApi.Api/README.md
@@ -0,0 +1,422 @@
+# AffixApi.Api - the C# library for the Affix API
+
+The affixapi.com API documentation.
+
+# Introduction
+Affix API is an OAuth 2.1 application that allows developers to access
+customer data, without developers needing to manage or maintain
+integrations; or collect login credentials or API keys from users for these
+third party systems.
+
+# OAuth 2.1
+Affix API follows the [OAuth 2.1 spec](https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-08).
+
+As an OAuth application, Affix API handles not only both the collection of
+sensitive user credentials or API keys, but also builds and maintains the
+integrations with the providers, so you don't have to.
+
+# How to obtain an access token
+in order to get started, you must:
+ - register a `client_id`
+ - direct your user to the sign in flow (`https://connect.affixapi.com`
+ [with the appropriate query
+ parameters](https://github.com/affixapi/starter-kit/tree/master/connect))
+ - capture `authorization_code` we will send to your redirect URI after
+ the sign in flow is complete and exchange that `authorization_code` for
+ a Bearer token
+
+# Sandbox keys (developer mode)
+### dev
+```
+eyJhbGciOiJFUzI1NiIsImtpZCI6Ims5RmxwSFR1YklmZWNsUU5QRVZzeFcxazFZZ0Zfbk1BWllOSGVuOFQxdGciLCJ0eXAiOiJKV1MifQ.eyJwcm92aWRlciI6InNhbmRib3giLCJzY29wZXMiOlsiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL2NvbXBhbnkiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvZW1wbG95ZWUiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvZW1wbG95ZWVzIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL2lkZW50aXR5IiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3BheXJ1bnMiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvcGF5cnVucy86cGF5cnVuX2lkIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3RpbWUtb2ZmLWJhbGFuY2VzIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3RpbWUtb2ZmLWVudHJpZXMiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvdGltZXNoZWV0cyJdLCJ0b2tlbiI6ImQ1OTZhMmYzLWYzNzktNGE1ZC1hMmRhLTk4OWJmYWViYTg1ZCIsImlhdCI6MTcwMjkyMDkwMywiaXNzIjoicHVibGljYXBpLWludGVybWVkaWF0ZS5kZXYuZW5naW5lZXJpbmcuYWZmaXhhcGkuY29tIiwic3ViIjoiZGV2ZWxvcGVyIiwiYXVkIjoiM0ZEQUVERjktMURDQTRGNTQtODc5NDlGNkEtNDEwMjc2NDMifQ.VLWYjCQvBS0C3ZA6_J3-U-idZj5EYI2IlDdTjAWBxSIHGufp6cqaVodKsF2BeIqcIeB3P0lW-KL9mY3xGd7ckQ
+```
+
+#### `employees` endpoint sample:
+```
+curl - -fail \\
+ -X GET \\
+ -H 'Authorization: Bearer eyJhbGciOiJFUzI1NiIsImtpZCI6Ims5RmxwSFR1YklmZWNsUU5QRVZzeFcxazFZZ0Zfbk1BWllOSGVuOFQxdGciLCJ0eXAiOiJKV1MifQ.eyJwcm92aWRlciI6InNhbmRib3giLCJzY29wZXMiOlsiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL2NvbXBhbnkiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvZW1wbG95ZWUiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvZW1wbG95ZWVzIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL2lkZW50aXR5IiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3BheXJ1bnMiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvcGF5cnVucy86cGF5cnVuX2lkIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3RpbWUtb2ZmLWJhbGFuY2VzIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3RpbWUtb2ZmLWVudHJpZXMiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvdGltZXNoZWV0cyJdLCJ0b2tlbiI6ImQ1OTZhMmYzLWYzNzktNGE1ZC1hMmRhLTk4OWJmYWViYTg1ZCIsImlhdCI6MTcwMjkyMDkwMywiaXNzIjoicHVibGljYXBpLWludGVybWVkaWF0ZS5kZXYuZW5naW5lZXJpbmcuYWZmaXhhcGkuY29tIiwic3ViIjoiZGV2ZWxvcGVyIiwiYXVkIjoiM0ZEQUVERjktMURDQTRGNTQtODc5NDlGNkEtNDEwMjc2NDMifQ.VLWYjCQvBS0C3ZA6_J3-U-idZj5EYI2IlDdTjAWBxSIHGufp6cqaVodKsF2BeIqcIeB3P0lW-KL9mY3xGd7ckQ' \\
+ 'https://dev.api.affixapi.com/2023-03-01/developer/employees'
+```
+
+### prod
+```
+eyJhbGciOiJFUzI1NiIsImtpZCI6Ims5RmxwSFR1YklmZWNsUU5QRVZzeFcxazFZZ0Zfbk1BWllOSGVuOFQxdGciLCJ0eXAiOiJKV1MifQ.eyJwcm92aWRlciI6InNhbmRib3giLCJzY29wZXMiOlsiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL2NvbXBhbnkiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvZW1wbG95ZWUiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvZW1wbG95ZWVzIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL2lkZW50aXR5IiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3BheXJ1bnMiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvcGF5cnVucy86cGF5cnVuX2lkIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3RpbWUtb2ZmLWJhbGFuY2VzIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3RpbWUtb2ZmLWVudHJpZXMiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvdGltZXNoZWV0cyJdLCJ0b2tlbiI6IjI5YjFjYTg4LWNlNjktNDgyZC1iNGZjLTkzMWMzZmJkYWM4ZSIsImlhdCI6MTcwMjkyMTA4MywiaXNzIjoicHVibGljYXBpLWludGVybWVkaWF0ZS5wcm9kLmVuZ2luZWVyaW5nLmFmZml4YXBpLmNvbSIsInN1YiI6ImRldmVsb3BlciIsImF1ZCI6IjA4QkIwODFFLUQ5QUI0RDE0LThERjk5MjMzLTY2NjE1Q0U5In0.2zdpFAmiyYiYk6MOcbXNUwwR4M1Fextnaac340x54AidiWXCyw-u9KeavbqfYF6q8a9kcDLrxhJ8Wc_3tIzuVw
+```
+
+#### `employees` endpoint sample:
+```
+curl - -fail \\
+ -X GET \\
+ -H 'Authorization: Bearer eyJhbGciOiJFUzI1NiIsImtpZCI6Ims5RmxwSFR1YklmZWNsUU5QRVZzeFcxazFZZ0Zfbk1BWllOSGVuOFQxdGciLCJ0eXAiOiJKV1MifQ.eyJwcm92aWRlciI6InNhbmRib3giLCJzY29wZXMiOlsiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL2NvbXBhbnkiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvZW1wbG95ZWUiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvZW1wbG95ZWVzIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL2lkZW50aXR5IiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3BheXJ1bnMiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvcGF5cnVucy86cGF5cnVuX2lkIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3RpbWUtb2ZmLWJhbGFuY2VzIiwiLzIwMjMtMDMtMDEvZGV2ZWxvcGVyL3RpbWUtb2ZmLWVudHJpZXMiLCIvMjAyMy0wMy0wMS9kZXZlbG9wZXIvdGltZXNoZWV0cyJdLCJ0b2tlbiI6IjI5YjFjYTg4LWNlNjktNDgyZC1iNGZjLTkzMWMzZmJkYWM4ZSIsImlhdCI6MTcwMjkyMTA4MywiaXNzIjoicHVibGljYXBpLWludGVybWVkaWF0ZS5wcm9kLmVuZ2luZWVyaW5nLmFmZml4YXBpLmNvbSIsInN1YiI6ImRldmVsb3BlciIsImF1ZCI6IjA4QkIwODFFLUQ5QUI0RDE0LThERjk5MjMzLTY2NjE1Q0U5In0.2zdpFAmiyYiYk6MOcbXNUwwR4M1Fextnaac340x54AidiWXCyw-u9KeavbqfYF6q8a9kcDLrxhJ8Wc_3tIzuVw' \\
+ 'https://api.affixapi.com/2023-03-01/developer/employees'
+```
+
+# Compression
+We support `brotli`, `gzip`, and `deflate` compression algorithms.
+
+To enable, pass the `Accept-Encoding` header with one or all of the values:
+`br`, `gzip`, `deflate`, or `identity` (no compression)
+
+In the response, you will receive the `Content-Encoding` response header
+indicating the compression algorithm used in the data payload to enable you
+to decompress the result. If the `Accept-Encoding: identity` header was
+passed, no `Content-Encoding` response header is sent back, as no
+compression algorithm was used.
+
+# Webhooks
+An exciting feature for HR/Payroll modes are webhooks.
+
+If enabled, your `webhook_uri` is set on your `client_id` for the
+respective environment: `dev | prod`
+
+Webhooks are configured to make live requests to the underlying integration
+1x/hr, and if a difference is detected since the last request, we will send a
+request to your `webhook_uri` with this shape:
+
+```
+{
+
+ added: [
+ {
+ ...,
+ date_of_birth: '2010-08-06',
+ display_full_name: 'Daija Rogahn',
+ employee_number: '57993',
+ employment_status: 'pending',
+ employment_type: 'other',
+ employments: [
+ {
+ currency: 'eur',
+ effective_date: '2022-02-25',
+ employment_type: 'other',
+ job_title: 'Dynamic Implementation Manager',
+ pay_frequency: 'semimonthly',
+ pay_period: 'YEAR',
+ pay_rate: 96000,
+ },
+ ],
+ first_name: 'Daija',
+ ...
+ }
+ ],
+ removed: [],
+ updated: [
+ {
+ ...,
+ date_of_birth: '2009-11-09',
+ display_full_name: 'Lourdes Stiedemann',
+ employee_number: '63189',
+ employment_status: 'leave',
+ employment_type: 'full_time',
+ employments: [
+ {
+ currency: 'gbp',
+ effective_date: '2023-01-16',
+ employment_type: 'full_time',
+ job_title: 'Forward Brand Planner',
+ pay_frequency: 'semimonthly',
+ pay_period: 'YEAR',
+ pay_rate: 86000,
+ },
+ ],
+ first_name: 'Lourdes',
+ }
+ ]
+}
+```
+
+the following headers will be sent with webhook requests:
+
+```
+x-affix-api-signature: ab8474e609db95d5df3adc39ea3add7a7544bd215c5c520a30a650ae93a2fba7
+
+x-affix-api-origin: webhooks-employees-webhook
+
+user-agent: affixapi.com
+```
+
+Before trusting the payload, you should sign the payload and verify the
+signature matches the signature sent by the `affixapi.com` service.
+
+This secures that the data sent to your `webhook_uri` is from the
+`affixapi.com` server.
+
+The signature is created by combining the signing secret (your
+`client_secret`) with the body of the request sent using a standard
+HMAC-SHA256 keyed hash.
+
+The signature can be created via:
+ - create an `HMAC` with your `client_secret`
+ - update the `HMAC` with the payload
+ - get the hex digest -> this is the signature
+
+Sample `typescript` code that follows this recipe:
+
+```
+import { createHmac } from 'crypto';
+
+export const computeSignature = ({
+ str,
+ signingSecret,
+}: {
+ signingSecret: string;
+ str: string;
+}): string => {
+ const hmac = createHmac('sha256', signingSecret);
+ hmac.update(str);
+ const signature = hmac.digest('hex');
+
+ return signature;
+};
+```
+
+## Rate limits
+Open endpoints (not gated by an API key) (applied at endpoint level):
+ - 15 requests every 1 minute (by IP address)
+ - 25 requests every 5 minutes (by IP address)
+
+Gated endpoints (require an API key) (applied at endpoint level):
+ - 40 requests every 1 minute (by IP address)
+ - 40 requests every 5 minutes (by `client_id`)
+
+Things to keep in mind:
+ - Open endpoints (not gated by an API key) will likely be called by your
+ users, not you, so rate limits generally would not apply to you.
+ - As a developer, rate limits are applied at the endpoint granularity.
+ - For example, say the rate limits below are 10 requests per minute by ip.
+ from that same ip, within 1 minute, you get:
+ - 10 requests per minute on `/orders`,
+ - another 10 requests per minute on `/items`,
+ - and another 10 requests per minute on `/identity`,
+ - for a total of 30 requests per minute.
+
+
+This C# SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
+
+- API version: 2023-03-01
+- SDK version: 1.1.38
+- Build package: org.openapitools.codegen.languages.CSharpNetCoreClientCodegen
+
+
+## Frameworks supported
+
+
+## Dependencies
+
+- [RestSharp](https://www.nuget.org/packages/RestSharp) - 106.11.7 or later
+- [Json.NET](https://www.nuget.org/packages/Newtonsoft.Json/) - 12.0.3 or later
+- [JsonSubTypes](https://www.nuget.org/packages/JsonSubTypes/) - 1.8.0 or later
+- [System.ComponentModel.Annotations](https://www.nuget.org/packages/System.ComponentModel.Annotations) - 5.0.0 or later
+
+The DLLs included in the package may not be the latest version. We recommend using [NuGet](https://docs.nuget.org/consume/installing-nuget) to obtain the latest version of the packages:
+```
+Install-Package RestSharp
+Install-Package Newtonsoft.Json
+Install-Package JsonSubTypes
+Install-Package System.ComponentModel.Annotations
+```
+
+NOTE: RestSharp versions greater than 105.1.0 have a bug which causes file uploads to fail. See [RestSharp#742](https://github.com/restsharp/RestSharp/issues/742).
+NOTE: RestSharp for .Net Core creates a new socket for each api call, which can lead to a socket exhaustion problem. See [RestSharp#1406](https://github.com/restsharp/RestSharp/issues/1406).
+
+
+## Installation
+Run the following command to generate the DLL
+- [Mac/Linux] `/bin/sh build.sh`
+- [Windows] `build.bat`
+
+Then include the DLL (under the `bin` folder) in the C# project, and use the namespaces:
+```csharp
+using AffixApi.Api.Api;
+using AffixApi.Api.Client;
+using AffixApi.Api.Model;
+```
+
+## Packaging
+
+A `.nuspec` is included with the project. You can follow the Nuget quickstart to [create](https://docs.microsoft.com/en-us/nuget/quickstart/create-and-publish-a-package#create-the-package) and [publish](https://docs.microsoft.com/en-us/nuget/quickstart/create-and-publish-a-package#publish-the-package) packages.
+
+This `.nuspec` uses placeholders from the `.csproj`, so build the `.csproj` directly:
+
+```
+nuget pack -Build -OutputDirectory out AffixApi.Api.csproj
+```
+
+Then, publish to a [local feed](https://docs.microsoft.com/en-us/nuget/hosting-packages/local-feeds) or [other host](https://docs.microsoft.com/en-us/nuget/hosting-packages/overview) and consume the new package via Nuget as usual.
+
+
+## Usage
+
+To use the API client with a HTTP proxy, setup a `System.Net.WebProxy`
+```csharp
+Configuration c = new Configuration();
+System.Net.WebProxy webProxy = new System.Net.WebProxy("http://myProxyUrl:80/");
+webProxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
+c.Proxy = webProxy;
+```
+
+
+## Getting Started
+
+```csharp
+using System.Collections.Generic;
+using System.Diagnostics;
+using AffixApi.Api.Api;
+using AffixApi.Api.Client;
+using AffixApi.Api.Model;
+
+namespace Example
+{
+ public class Example
+ {
+ public static void Main()
+ {
+
+ Configuration config = new Configuration();
+ config.BasePath = "https://api.affixapi.com";
+ // Configure API key authorization: access-token
+ config.ApiKey.Add("Authorization", "YOUR_API_KEY");
+ // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
+ // config.ApiKeyPrefix.Add("Authorization", "Bearer");
+
+ var apiInstance = new Class20230301Api(config);
+
+ try
+ {
+ // Company
+ List result = apiInstance.DeveloperCompanies20230301();
+ Debug.WriteLine(result);
+ }
+ catch (ApiException e)
+ {
+ Debug.Print("Exception when calling Class20230301Api.DeveloperCompanies20230301: " + e.Message );
+ Debug.Print("Status Code: "+ e.ErrorCode);
+ Debug.Print(e.StackTrace);
+ }
+
+ }
+ }
+}
+```
+
+
+## Documentation for API Endpoints
+
+All URIs are relative to *https://api.affixapi.com*
+
+Class | Method | HTTP request | Description
+------------ | ------------- | ------------- | -------------
+*Class20230301Api* | [**DeveloperCompanies20230301**](docs/Class20230301Api.md#developercompanies20230301) | **GET** /2023-03-01/developer/company | Company
+*Class20230301Api* | [**DeveloperCreateEmployee20230301**](docs/Class20230301Api.md#developercreateemployee20230301) | **POST** /2023-03-01/developer/employee | Create employee
+*Class20230301Api* | [**DeveloperEmployees20230301**](docs/Class20230301Api.md#developeremployees20230301) | **GET** /2023-03-01/developer/employees | Employees
+*Class20230301Api* | [**DeveloperGroups20230301**](docs/Class20230301Api.md#developergroups20230301) | **GET** /2023-03-01/developer/groups | Groups
+*Class20230301Api* | [**DeveloperIdentity20230301**](docs/Class20230301Api.md#developeridentity20230301) | **GET** /2023-03-01/developer/identity | Identity
+*Class20230301Api* | [**DeveloperPayruns20230301**](docs/Class20230301Api.md#developerpayruns20230301) | **GET** /2023-03-01/developer/payruns | Payruns
+*Class20230301Api* | [**DeveloperPayslips20230301**](docs/Class20230301Api.md#developerpayslips20230301) | **GET** /2023-03-01/developer/payruns/{payrun_id} | Payslips
+*Class20230301Api* | [**DeveloperTimeOffBalances20230301**](docs/Class20230301Api.md#developertimeoffbalances20230301) | **GET** /2023-03-01/developer/time-off-balances | Time off balances
+*Class20230301Api* | [**DeveloperTimeOffEntries20230301**](docs/Class20230301Api.md#developertimeoffentries20230301) | **GET** /2023-03-01/developer/time-off-entries | Time off entries
+*Class20230301Api* | [**DeveloperTimesheets20230301**](docs/Class20230301Api.md#developertimesheets20230301) | **GET** /2023-03-01/developer/timesheets | Timesheets
+*Class20230301Api* | [**DeveloperWorkLocations20230301**](docs/Class20230301Api.md#developerworklocations20230301) | **GET** /2023-03-01/developer/work-locations | Work locations
+*Class20230301Api* | [**OfficialCompanies20230301**](docs/Class20230301Api.md#officialcompanies20230301) | **GET** /2023-03-01/official/company | Company
+*Class20230301Api* | [**OfficialCreateEmployee20230301**](docs/Class20230301Api.md#officialcreateemployee20230301) | **POST** /2023-03-01/official/employee | Create Employee
+*Class20230301Api* | [**OfficialEmployees20230301**](docs/Class20230301Api.md#officialemployees20230301) | **GET** /2023-03-01/official/employees | Employees
+*Class20230301Api* | [**OfficialGroups20230301**](docs/Class20230301Api.md#officialgroups20230301) | **GET** /2023-03-01/official/groups | Groups
+*Class20230301Api* | [**OfficialTimeOffBalances20230301**](docs/Class20230301Api.md#officialtimeoffbalances20230301) | **GET** /2023-03-01/official/time-off-balances | Time off balances
+*Class20230301Api* | [**OfficialTimeOffEntries20230301**](docs/Class20230301Api.md#officialtimeoffentries20230301) | **GET** /2023-03-01/official/time-off-entries | Time off entries
+*Class20230301Api* | [**OfficialTimesheets20230301**](docs/Class20230301Api.md#officialtimesheets20230301) | **GET** /2023-03-01/official/timesheets | Timesheets
+*Class20230301Api* | [**OfficialWorkLocations20230301**](docs/Class20230301Api.md#officialworklocations20230301) | **GET** /2023-03-01/official/work-locations | Work locations
+*Class20230301Api* | [**Officialdentity20230301**](docs/Class20230301Api.md#officialdentity20230301) | **GET** /2023-03-01/official/identity | Identity
+*CoreApi* | [**Providers**](docs/CoreApi.md#providers) | **GET** /providers | Providers
+*DeveloperApi* | [**DeveloperCompanies20230301**](docs/DeveloperApi.md#developercompanies20230301) | **GET** /2023-03-01/developer/company | Company
+*DeveloperApi* | [**DeveloperCreateEmployee20230301**](docs/DeveloperApi.md#developercreateemployee20230301) | **POST** /2023-03-01/developer/employee | Create employee
+*DeveloperApi* | [**DeveloperEmployees20230301**](docs/DeveloperApi.md#developeremployees20230301) | **GET** /2023-03-01/developer/employees | Employees
+*DeveloperApi* | [**DeveloperGroups20230301**](docs/DeveloperApi.md#developergroups20230301) | **GET** /2023-03-01/developer/groups | Groups
+*DeveloperApi* | [**DeveloperIdentity20230301**](docs/DeveloperApi.md#developeridentity20230301) | **GET** /2023-03-01/developer/identity | Identity
+*DeveloperApi* | [**DeveloperPayruns20230301**](docs/DeveloperApi.md#developerpayruns20230301) | **GET** /2023-03-01/developer/payruns | Payruns
+*DeveloperApi* | [**DeveloperPayslips20230301**](docs/DeveloperApi.md#developerpayslips20230301) | **GET** /2023-03-01/developer/payruns/{payrun_id} | Payslips
+*DeveloperApi* | [**DeveloperTimeOffBalances20230301**](docs/DeveloperApi.md#developertimeoffbalances20230301) | **GET** /2023-03-01/developer/time-off-balances | Time off balances
+*DeveloperApi* | [**DeveloperTimeOffEntries20230301**](docs/DeveloperApi.md#developertimeoffentries20230301) | **GET** /2023-03-01/developer/time-off-entries | Time off entries
+*DeveloperApi* | [**DeveloperTimesheets20230301**](docs/DeveloperApi.md#developertimesheets20230301) | **GET** /2023-03-01/developer/timesheets | Timesheets
+*DeveloperApi* | [**DeveloperWorkLocations20230301**](docs/DeveloperApi.md#developerworklocations20230301) | **GET** /2023-03-01/developer/work-locations | Work locations
+*ManagementApi* | [**CallClient**](docs/ManagementApi.md#callclient) | **GET** /2023-03-01/management/client | Client
+*ManagementApi* | [**Disconnect**](docs/ManagementApi.md#disconnect) | **POST** /2023-03-01/management/disconnect | Disconnect token
+*ManagementApi* | [**Introspect**](docs/ManagementApi.md#introspect) | **GET** /2023-03-01/management/introspect | Inspect token
+*ManagementApi* | [**Token**](docs/ManagementApi.md#token) | **POST** /2023-03-01/management/token | Create token
+*ManagementApi* | [**Tokens**](docs/ManagementApi.md#tokens) | **GET** /2023-03-01/management/tokens | Tokens
+*ManagementApi* | [**UpdateClient**](docs/ManagementApi.md#updateclient) | **POST** /2023-03-01/management/client | Update client
+*OfficialApi* | [**OfficialCompanies20230301**](docs/OfficialApi.md#officialcompanies20230301) | **GET** /2023-03-01/official/company | Company
+*OfficialApi* | [**OfficialCreateEmployee20230301**](docs/OfficialApi.md#officialcreateemployee20230301) | **POST** /2023-03-01/official/employee | Create Employee
+*OfficialApi* | [**OfficialEmployees20230301**](docs/OfficialApi.md#officialemployees20230301) | **GET** /2023-03-01/official/employees | Employees
+*OfficialApi* | [**OfficialGroups20230301**](docs/OfficialApi.md#officialgroups20230301) | **GET** /2023-03-01/official/groups | Groups
+*OfficialApi* | [**OfficialTimeOffBalances20230301**](docs/OfficialApi.md#officialtimeoffbalances20230301) | **GET** /2023-03-01/official/time-off-balances | Time off balances
+*OfficialApi* | [**OfficialTimeOffEntries20230301**](docs/OfficialApi.md#officialtimeoffentries20230301) | **GET** /2023-03-01/official/time-off-entries | Time off entries
+*OfficialApi* | [**OfficialTimesheets20230301**](docs/OfficialApi.md#officialtimesheets20230301) | **GET** /2023-03-01/official/timesheets | Timesheets
+*OfficialApi* | [**OfficialWorkLocations20230301**](docs/OfficialApi.md#officialworklocations20230301) | **GET** /2023-03-01/official/work-locations | Work locations
+*OfficialApi* | [**Officialdentity20230301**](docs/OfficialApi.md#officialdentity20230301) | **GET** /2023-03-01/official/identity | Identity
+
+
+
+## Documentation for Models
+
+ - [Model.AddressNoNonNullRequest](docs/AddressNoNonNullRequest.md)
+ - [Model.AddressResponse](docs/AddressResponse.md)
+ - [Model.ClientRequest](docs/ClientRequest.md)
+ - [Model.ClientResponse](docs/ClientResponse.md)
+ - [Model.CompanyResponse](docs/CompanyResponse.md)
+ - [Model.CreateEmployeeRequest](docs/CreateEmployeeRequest.md)
+ - [Model.CreateEmployeeRequestBankAccount](docs/CreateEmployeeRequestBankAccount.md)
+ - [Model.CreateEmployeeRequestManager](docs/CreateEmployeeRequestManager.md)
+ - [Model.CurrencyRequest](docs/CurrencyRequest.md)
+ - [Model.CurrencyResponse](docs/CurrencyResponse.md)
+ - [Model.DisconnectResponse](docs/DisconnectResponse.md)
+ - [Model.EmployeeResponse](docs/EmployeeResponse.md)
+ - [Model.EmploymentNoNullEnumRequest](docs/EmploymentNoNullEnumRequest.md)
+ - [Model.EmploymentResponse](docs/EmploymentResponse.md)
+ - [Model.GroupNoNullEnumRequest](docs/GroupNoNullEnumRequest.md)
+ - [Model.GroupResponse](docs/GroupResponse.md)
+ - [Model.IdAndMessageResponse](docs/IdAndMessageResponse.md)
+ - [Model.IdentityResponse](docs/IdentityResponse.md)
+ - [Model.InlineResponse400](docs/InlineResponse400.md)
+ - [Model.InlineResponse401](docs/InlineResponse401.md)
+ - [Model.InlineResponse409](docs/InlineResponse409.md)
+ - [Model.IntrospectResponse](docs/IntrospectResponse.md)
+ - [Model.LocationNoNonNullRequest](docs/LocationNoNonNullRequest.md)
+ - [Model.LocationResponse](docs/LocationResponse.md)
+ - [Model.MessageResponse](docs/MessageResponse.md)
+ - [Model.ModeRequest](docs/ModeRequest.md)
+ - [Model.ModeResponse](docs/ModeResponse.md)
+ - [Model.PayrunResponse](docs/PayrunResponse.md)
+ - [Model.PayslipResponse](docs/PayslipResponse.md)
+ - [Model.PayslipResponseContributions](docs/PayslipResponseContributions.md)
+ - [Model.PayslipResponseDeductions](docs/PayslipResponseDeductions.md)
+ - [Model.PayslipResponseEarnings](docs/PayslipResponseEarnings.md)
+ - [Model.PayslipResponseTaxes](docs/PayslipResponseTaxes.md)
+ - [Model.ProviderRequest](docs/ProviderRequest.md)
+ - [Model.ProviderResponse](docs/ProviderResponse.md)
+ - [Model.ScopesRequest](docs/ScopesRequest.md)
+ - [Model.ScopesResponse](docs/ScopesResponse.md)
+ - [Model.TimeOffBalanceResponse](docs/TimeOffBalanceResponse.md)
+ - [Model.TimeOffEntryResponse](docs/TimeOffEntryResponse.md)
+ - [Model.TimesheetResponse](docs/TimesheetResponse.md)
+ - [Model.TokenRequest](docs/TokenRequest.md)
+ - [Model.TokenResponse](docs/TokenResponse.md)
+
+
+
+## Documentation for Authorization
+
+
+### access-token
+
+- **Type**: API key
+- **API key parameter name**: Authorization
+- **Location**: HTTP header
+
+
+### basic
+
+- **Type**: API key
+- **API key parameter name**: Authorization
+- **Location**: HTTP header
+