diff --git a/.manifest.json b/.manifest.json
index e29aebe..5c156c7 100644
--- a/.manifest.json
+++ b/.manifest.json
@@ -1,24 +1,24 @@
{
- "liblabVersion": "2.1.28",
- "date": "2024-08-21T11:02:23.117Z",
+ "liblabVersion": "2.10.9",
+ "date": "2025-01-15T12:59:44.632Z",
"config": {
- "apiId": 947,
+ "apiId": 1666,
"sdkName": "signplus",
- "sdkVersion": "1.0.0",
+ "sdkVersion": "1.1.0",
+ "languages": ["csharp"],
+ "auth": ["bearer"],
"liblabVersion": "2",
"deliveryMethods": ["zip"],
- "languages": ["csharp"],
- "apiVersion": "2.0.0",
+ "apiVersion": "2.1.0",
"apiName": "signplus-api",
"specFilePath": "openapi.yaml",
- "auth": ["bearer"],
"languageOptions": {
"csharp": {
"packageId": "Alohi.Signplus",
"githubRepoName": "signplus-sharp",
"ignoreFiles": [],
"liblabVersion": "2",
- "sdkVersion": "1.0.0"
+ "sdkVersion": "1.1.0"
},
"go": {
"goModuleName": "github.com/alohihq/signplus-go",
@@ -26,14 +26,23 @@
"githubRepoName": "signplus-go",
"ignoreFiles": [],
"liblabVersion": "2",
- "sdkVersion": "1.0.0"
+ "sdkVersion": "1.1.0"
},
"java": {
- "groupId": "alohi.signplus",
+ "groupId": "com.alohi",
+ "artifactId": "signplus",
+ "developers": [
+ {
+ "name": "Alohi SA",
+ "email": "support@alohi.com",
+ "organization": "Alohi SA",
+ "organizationUrl": "https://www.alohi.com"
+ }
+ ],
"additionalConstructorParameters": [],
"githubRepoName": "signplus-java",
"liblabVersion": "2",
- "sdkVersion": "1.0.0"
+ "sdkVersion": "1.1.0"
},
"python": {
"alwaysInitializeOptionals": false,
@@ -42,7 +51,7 @@
"githubRepoName": "signplus-python",
"ignoreFiles": [],
"liblabVersion": "2",
- "sdkVersion": "1.0.0"
+ "sdkVersion": "1.1.0"
},
"php": {
"packageName": "alohi/signplus",
@@ -50,7 +59,7 @@
"githubRepoName": "signplus-php",
"ignoreFiles": [],
"liblabVersion": "2",
- "sdkVersion": "2.0.0"
+ "sdkVersion": "1.1.0"
},
"typescript": {
"bundle": false,
@@ -62,7 +71,8 @@
"githubRepoName": "signplus-typescript",
"ignoreFiles": [],
"liblabVersion": "2",
- "sdkVersion": "1.0.0"
+ "sdkVersion": "1.1.0",
+ "generateEnumAs": "enum"
}
},
"publishing": {
@@ -96,7 +106,6 @@
"httpMethodsToRetry": ["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"]
},
"multiTenant": true,
- "specUrl": "https://prod-liblab-api-stack-specs.s3.us-east-1.amazonaws.com/947/open-api-spec.yaml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA5P3QKKDKGVNIJ2H7%2F20240821%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240821T110214Z&X-Amz-Expires=43200&X-Amz-Signature=009d5622184bfe1c39e60a5d0a55af4a2e741c467ac7da365003bdd60373a218&X-Amz-SignedHeaders=host&x-id=GetObject",
"includeWatermark": false,
"packageId": "Alohi.Signplus",
"githubRepoName": "signplus-sharp",
@@ -113,7 +122,7 @@
"httpLibrary": {
"name": "axios",
"packages": {
- "axios": "^1.7.4"
+ "axios": "^1.7.7"
},
"languages": ["typescript"]
},
@@ -121,29 +130,30 @@
"paths": [],
"rawQueries": [],
"queriesData": []
- }
+ },
+ "ai": false
},
"files": [
- "Signplus/Signplus.csproj",
+ "Alohi.Signplus/Alohi.Signplus.csproj",
"install.sh",
- "Signplus/Services/BaseService.cs",
- "Signplus/Models/ValueEnum.cs",
- "Signplus/Json/ValueEnumJsonConverter.cs",
- "Signplus/Json/ValueEnumJsonConverterFactory.cs",
- "Signplus/Http/Handlers/TokenHandler.cs",
+ "Alohi.Signplus/Services/BaseService.cs",
+ "Alohi.Signplus/Models/ValueEnum.cs",
+ "Alohi.Signplus/Json/ValueEnumJsonConverter.cs",
+ "Alohi.Signplus/Json/ValueEnumJsonConverterFactory.cs",
+ "Alohi.Signplus/Http/Handlers/TokenHandler.cs",
"Example/Example.csproj",
"Example/Program.cs",
"Example/.gitignore",
- "Signplus/Http/Serialization/SerializationStyle.cs",
- "Signplus/Http/Serialization/QuerySerializationStyle.cs",
- "Signplus/Http/Serialization/PathSerializationStyle.cs",
- "Signplus/Http/Serialization/Serializer.cs",
- "Signplus/Http/RequestBuilder.cs",
- "Signplus/Config/SignplusConfig.cs",
- "Signplus/Http/Environment.cs",
- "Signplus/SignplusClient.cs",
- "Signplus/Http/Handlers/RetryHandler.cs",
- "Signplus/.gitignore",
+ "Alohi.Signplus/Http/Serialization/SerializationStyle.cs",
+ "Alohi.Signplus/Http/Serialization/QuerySerializationStyle.cs",
+ "Alohi.Signplus/Http/Serialization/PathSerializationStyle.cs",
+ "Alohi.Signplus/Http/Serialization/Serializer.cs",
+ "Alohi.Signplus/Http/RequestBuilder.cs",
+ "Alohi.Signplus/Config/SignplusConfig.cs",
+ "Alohi.Signplus/Http/Environment.cs",
+ "Alohi.Signplus/SignplusClient.cs",
+ "Alohi.Signplus/Http/Handlers/RetryHandler.cs",
+ "Alohi.Signplus/.gitignore",
"./LICENSE",
"documentation/models/CreateEnvelopeRequest.md",
"documentation/models/Envelope.md",
@@ -204,67 +214,136 @@
"documentation/models/TemplateRecipientRole.md",
"documentation/models/TemplateOrderField.md",
"documentation/models/WebhookEvent.md",
- "Signplus/Models/CreateEnvelopeRequest.cs",
- "Signplus/Models/Envelope.cs",
- "Signplus/Models/CreateEnvelopeFromTemplateRequest.cs",
- "Signplus/Models/ListEnvelopesRequest.cs",
- "Signplus/Models/ListEnvelopesResponse.cs",
- "Signplus/Models/Document.cs",
- "Signplus/Models/ListEnvelopeDocumentsResponse.cs",
- "Signplus/Models/AddEnvelopeDocumentRequest.cs",
- "Signplus/Models/SetEnvelopeDynamicFieldsRequest.cs",
- "Signplus/Models/AddEnvelopeSigningStepsRequest.cs",
- "Signplus/Models/RenameEnvelopeRequest.cs",
- "Signplus/Models/SetEnvelopeCommentRequest.cs",
- "Signplus/Models/EnvelopeNotification.cs",
- "Signplus/Models/SetEnvelopeExpirationRequest.cs",
- "Signplus/Models/SetEnvelopeLegalityLevelRequest.cs",
- "Signplus/Models/Annotation.cs",
- "Signplus/Models/ListEnvelopeDocumentAnnotationsResponse.cs",
- "Signplus/Models/AddAnnotationRequest.cs",
- "Signplus/Models/CreateTemplateRequest.cs",
- "Signplus/Models/Template.cs",
- "Signplus/Models/ListTemplatesRequest.cs",
- "Signplus/Models/ListTemplatesResponse.cs",
- "Signplus/Models/AddTemplateDocumentRequest.cs",
- "Signplus/Models/ListTemplateDocumentsResponse.cs",
- "Signplus/Models/AddTemplateSigningStepsRequest.cs",
- "Signplus/Models/RenameTemplateRequest.cs",
- "Signplus/Models/SetTemplateCommentRequest.cs",
- "Signplus/Models/ListTemplateAnnotationsResponse.cs",
- "Signplus/Models/ListTemplateDocumentAnnotationsResponse.cs",
- "Signplus/Models/CreateWebhookRequest.cs",
- "Signplus/Models/Webhook.cs",
- "Signplus/Models/ListWebhooksRequest.cs",
- "Signplus/Models/ListWebhooksResponse.cs",
- "Signplus/Models/EnvelopeLegalityLevel.cs",
- "Signplus/Models/EnvelopeFlowType.cs",
- "Signplus/Models/EnvelopeStatus.cs",
- "Signplus/Models/SigningStep.cs",
- "Signplus/Models/Recipient.cs",
- "Signplus/Models/RecipientRole.cs",
- "Signplus/Models/RecipientVerification.cs",
- "Signplus/Models/RecipientVerificationType.cs",
- "Signplus/Models/Page.cs",
- "Signplus/Models/EnvelopeOrderField.cs",
- "Signplus/Models/DynamicField.cs",
- "Signplus/Models/AnnotationType.cs",
- "Signplus/Models/AnnotationSignature.cs",
- "Signplus/Models/AnnotationInitials.cs",
- "Signplus/Models/AnnotationText.cs",
- "Signplus/Models/AnnotationDateTime.cs",
- "Signplus/Models/AnnotationCheckbox.cs",
- "Signplus/Models/AnnotationFont.cs",
- "Signplus/Models/AnnotationFontFamily.cs",
- "Signplus/Models/AnnotationDateTimeFormat.cs",
- "Signplus/Models/AnnotationCheckboxStyle.cs",
- "Signplus/Models/TemplateSigningStep.cs",
- "Signplus/Models/TemplateRecipient.cs",
- "Signplus/Models/TemplateRecipientRole.cs",
- "Signplus/Models/TemplateOrderField.cs",
- "Signplus/Models/WebhookEvent.cs",
+ "Alohi.Signplus/Http/ApiException.cs",
+ "Alohi.Signplus/Http/Extensions/HttpResponseMessageExtensions.cs",
+ "Alohi.Signplus/Http/Extensions/MultipartFormDataContentExtensions.cs",
+ "Alohi.Signplus/Validation/CreateEnvelopeRequestValidator.cs",
+ "Alohi.Signplus/Validation/EnvelopeValidator.cs",
+ "Alohi.Signplus/Validation/CreateEnvelopeFromTemplateRequestValidator.cs",
+ "Alohi.Signplus/Validation/ListEnvelopesRequestValidator.cs",
+ "Alohi.Signplus/Validation/ListEnvelopesResponseValidator.cs",
+ "Alohi.Signplus/Validation/DocumentValidator.cs",
+ "Alohi.Signplus/Validation/ListEnvelopeDocumentsResponseValidator.cs",
+ "Alohi.Signplus/Validation/AddEnvelopeDocumentRequestValidator.cs",
+ "Alohi.Signplus/Validation/SetEnvelopeDynamicFieldsRequestValidator.cs",
+ "Alohi.Signplus/Validation/AddEnvelopeSigningStepsRequestValidator.cs",
+ "Alohi.Signplus/Validation/RenameEnvelopeRequestValidator.cs",
+ "Alohi.Signplus/Validation/SetEnvelopeCommentRequestValidator.cs",
+ "Alohi.Signplus/Validation/EnvelopeNotificationValidator.cs",
+ "Alohi.Signplus/Validation/SetEnvelopeExpirationRequestValidator.cs",
+ "Alohi.Signplus/Validation/SetEnvelopeLegalityLevelRequestValidator.cs",
+ "Alohi.Signplus/Validation/AnnotationValidator.cs",
+ "Alohi.Signplus/Validation/ListEnvelopeDocumentAnnotationsResponseValidator.cs",
+ "Alohi.Signplus/Validation/AddAnnotationRequestValidator.cs",
+ "Alohi.Signplus/Validation/CreateTemplateRequestValidator.cs",
+ "Alohi.Signplus/Validation/TemplateValidator.cs",
+ "Alohi.Signplus/Validation/ListTemplatesRequestValidator.cs",
+ "Alohi.Signplus/Validation/ListTemplatesResponseValidator.cs",
+ "Alohi.Signplus/Validation/AddTemplateDocumentRequestValidator.cs",
+ "Alohi.Signplus/Validation/ListTemplateDocumentsResponseValidator.cs",
+ "Alohi.Signplus/Validation/AddTemplateSigningStepsRequestValidator.cs",
+ "Alohi.Signplus/Validation/RenameTemplateRequestValidator.cs",
+ "Alohi.Signplus/Validation/SetTemplateCommentRequestValidator.cs",
+ "Alohi.Signplus/Validation/ListTemplateAnnotationsResponseValidator.cs",
+ "Alohi.Signplus/Validation/ListTemplateDocumentAnnotationsResponseValidator.cs",
+ "Alohi.Signplus/Validation/CreateWebhookRequestValidator.cs",
+ "Alohi.Signplus/Validation/WebhookValidator.cs",
+ "Alohi.Signplus/Validation/ListWebhooksRequestValidator.cs",
+ "Alohi.Signplus/Validation/ListWebhooksResponseValidator.cs",
+ "Alohi.Signplus/Validation/EnvelopeLegalityLevelValidator.cs",
+ "Alohi.Signplus/Validation/EnvelopeFlowTypeValidator.cs",
+ "Alohi.Signplus/Validation/EnvelopeStatusValidator.cs",
+ "Alohi.Signplus/Validation/SigningStepValidator.cs",
+ "Alohi.Signplus/Validation/RecipientValidator.cs",
+ "Alohi.Signplus/Validation/RecipientRoleValidator.cs",
+ "Alohi.Signplus/Validation/RecipientVerificationValidator.cs",
+ "Alohi.Signplus/Validation/RecipientVerificationTypeValidator.cs",
+ "Alohi.Signplus/Validation/PageValidator.cs",
+ "Alohi.Signplus/Validation/EnvelopeOrderFieldValidator.cs",
+ "Alohi.Signplus/Validation/DynamicFieldValidator.cs",
+ "Alohi.Signplus/Validation/AnnotationTypeValidator.cs",
+ "Alohi.Signplus/Validation/AnnotationSignatureValidator.cs",
+ "Alohi.Signplus/Validation/AnnotationInitialsValidator.cs",
+ "Alohi.Signplus/Validation/AnnotationTextValidator.cs",
+ "Alohi.Signplus/Validation/AnnotationDateTimeValidator.cs",
+ "Alohi.Signplus/Validation/AnnotationCheckboxValidator.cs",
+ "Alohi.Signplus/Validation/AnnotationFontValidator.cs",
+ "Alohi.Signplus/Validation/AnnotationFontFamilyValidator.cs",
+ "Alohi.Signplus/Validation/AnnotationDateTimeFormatValidator.cs",
+ "Alohi.Signplus/Validation/AnnotationCheckboxStyleValidator.cs",
+ "Alohi.Signplus/Validation/TemplateSigningStepValidator.cs",
+ "Alohi.Signplus/Validation/TemplateRecipientValidator.cs",
+ "Alohi.Signplus/Validation/TemplateRecipientRoleValidator.cs",
+ "Alohi.Signplus/Validation/TemplateOrderFieldValidator.cs",
+ "Alohi.Signplus/Validation/WebhookEventValidator.cs",
+ "Alohi.Signplus/Http/ValidationException.cs",
+ "Alohi.Signplus/Validation/FloatValidator.cs",
+ "Alohi.Signplus/Validation/NumberValidator.cs",
+ "Alohi.Signplus/Validation/StringValidator.cs",
+ "Alohi.Signplus/Validation/ListValidator.cs",
+ "Alohi.Signplus/Validation/Extensions/ValidationExtensions.cs",
+ "Alohi.Signplus/Http/Extensions/UriExtensions.cs",
+ "Alohi.Signplus/Models/CreateEnvelopeRequest.cs",
+ "Alohi.Signplus/Models/Envelope.cs",
+ "Alohi.Signplus/Models/CreateEnvelopeFromTemplateRequest.cs",
+ "Alohi.Signplus/Models/ListEnvelopesRequest.cs",
+ "Alohi.Signplus/Models/ListEnvelopesResponse.cs",
+ "Alohi.Signplus/Models/Document.cs",
+ "Alohi.Signplus/Models/ListEnvelopeDocumentsResponse.cs",
+ "Alohi.Signplus/Models/AddEnvelopeDocumentRequest.cs",
+ "Alohi.Signplus/Models/SetEnvelopeDynamicFieldsRequest.cs",
+ "Alohi.Signplus/Models/AddEnvelopeSigningStepsRequest.cs",
+ "Alohi.Signplus/Models/RenameEnvelopeRequest.cs",
+ "Alohi.Signplus/Models/SetEnvelopeCommentRequest.cs",
+ "Alohi.Signplus/Models/EnvelopeNotification.cs",
+ "Alohi.Signplus/Models/SetEnvelopeExpirationRequest.cs",
+ "Alohi.Signplus/Models/SetEnvelopeLegalityLevelRequest.cs",
+ "Alohi.Signplus/Models/Annotation.cs",
+ "Alohi.Signplus/Models/ListEnvelopeDocumentAnnotationsResponse.cs",
+ "Alohi.Signplus/Models/AddAnnotationRequest.cs",
+ "Alohi.Signplus/Models/CreateTemplateRequest.cs",
+ "Alohi.Signplus/Models/Template.cs",
+ "Alohi.Signplus/Models/ListTemplatesRequest.cs",
+ "Alohi.Signplus/Models/ListTemplatesResponse.cs",
+ "Alohi.Signplus/Models/AddTemplateDocumentRequest.cs",
+ "Alohi.Signplus/Models/ListTemplateDocumentsResponse.cs",
+ "Alohi.Signplus/Models/AddTemplateSigningStepsRequest.cs",
+ "Alohi.Signplus/Models/RenameTemplateRequest.cs",
+ "Alohi.Signplus/Models/SetTemplateCommentRequest.cs",
+ "Alohi.Signplus/Models/ListTemplateAnnotationsResponse.cs",
+ "Alohi.Signplus/Models/ListTemplateDocumentAnnotationsResponse.cs",
+ "Alohi.Signplus/Models/CreateWebhookRequest.cs",
+ "Alohi.Signplus/Models/Webhook.cs",
+ "Alohi.Signplus/Models/ListWebhooksRequest.cs",
+ "Alohi.Signplus/Models/ListWebhooksResponse.cs",
+ "Alohi.Signplus/Models/EnvelopeLegalityLevel.cs",
+ "Alohi.Signplus/Models/EnvelopeFlowType.cs",
+ "Alohi.Signplus/Models/EnvelopeStatus.cs",
+ "Alohi.Signplus/Models/SigningStep.cs",
+ "Alohi.Signplus/Models/Recipient.cs",
+ "Alohi.Signplus/Models/RecipientRole.cs",
+ "Alohi.Signplus/Models/RecipientVerification.cs",
+ "Alohi.Signplus/Models/RecipientVerificationType.cs",
+ "Alohi.Signplus/Models/Page.cs",
+ "Alohi.Signplus/Models/EnvelopeOrderField.cs",
+ "Alohi.Signplus/Models/DynamicField.cs",
+ "Alohi.Signplus/Models/AnnotationType.cs",
+ "Alohi.Signplus/Models/AnnotationSignature.cs",
+ "Alohi.Signplus/Models/AnnotationInitials.cs",
+ "Alohi.Signplus/Models/AnnotationText.cs",
+ "Alohi.Signplus/Models/AnnotationDateTime.cs",
+ "Alohi.Signplus/Models/AnnotationCheckbox.cs",
+ "Alohi.Signplus/Models/AnnotationFont.cs",
+ "Alohi.Signplus/Models/AnnotationFontFamily.cs",
+ "Alohi.Signplus/Models/AnnotationDateTimeFormat.cs",
+ "Alohi.Signplus/Models/AnnotationCheckboxStyle.cs",
+ "Alohi.Signplus/Models/TemplateSigningStep.cs",
+ "Alohi.Signplus/Models/TemplateRecipient.cs",
+ "Alohi.Signplus/Models/TemplateRecipientRole.cs",
+ "Alohi.Signplus/Models/TemplateOrderField.cs",
+ "Alohi.Signplus/Models/WebhookEvent.cs",
"README.md",
- "Signplus/Services/SignplusService.cs",
+ "Alohi.Signplus/Services/SignplusService.cs",
"documentation/services/SignplusService.md"
]
}
diff --git a/Signplus/.gitignore b/Alohi.Signplus/.gitignore
similarity index 99%
rename from Signplus/.gitignore
rename to Alohi.Signplus/.gitignore
index 8a30d25..81dc9a0 100644
--- a/Signplus/.gitignore
+++ b/Alohi.Signplus/.gitignore
@@ -396,3 +396,7 @@ FodyWeavers.xsd
# JetBrains Rider
*.sln.iml
+
+# OS generated files
+.DS_Store
+Thumbs.db
diff --git a/Signplus/Signplus.csproj b/Alohi.Signplus/Alohi.Signplus.csproj
similarity index 55%
rename from Signplus/Signplus.csproj
rename to Alohi.Signplus/Alohi.Signplus.csproj
index ee9761c..bb4d2c2 100644
--- a/Signplus/Signplus.csproj
+++ b/Alohi.Signplus/Alohi.Signplus.csproj
@@ -4,15 +4,15 @@
net6.0
enable
enable
- Signplus
- 1.0.0
+ Alohi.Signplus
+ 1.1.0
Alohi.Signplus
README.md
-
-
+
+
+
-
diff --git a/Signplus/Config/SignplusConfig.cs b/Alohi.Signplus/Config/SignplusConfig.cs
similarity index 76%
rename from Signplus/Config/SignplusConfig.cs
rename to Alohi.Signplus/Config/SignplusConfig.cs
index ba9ea70..a0688b9 100644
--- a/Signplus/Config/SignplusConfig.cs
+++ b/Alohi.Signplus/Config/SignplusConfig.cs
@@ -1,6 +1,6 @@
-using Environment = Signplus.Http.Environment;
+using Environment = Alohi.Signplus.Http.Environment;
-namespace Signplus.Config;
+namespace Alohi.Signplus.Config;
///
/// Configuration options for the SignplusClient.
diff --git a/Alohi.Signplus/Http/ApiException.cs b/Alohi.Signplus/Http/ApiException.cs
new file mode 100644
index 0000000..62e9e51
--- /dev/null
+++ b/Alohi.Signplus/Http/ApiException.cs
@@ -0,0 +1,16 @@
+namespace Alohi.Signplus.Http.Exceptions;
+
+public class ApiException : HttpRequestException
+{
+ public HttpResponseMessage Response { get; }
+
+ public ApiException(HttpResponseMessage responseMessage)
+ : base(
+ $"Response status code does not indicate success: {(int)responseMessage.StatusCode} ({responseMessage.StatusCode}).",
+ null,
+ responseMessage.StatusCode
+ )
+ {
+ Response = responseMessage;
+ }
+}
diff --git a/Signplus/Http/Environment.cs b/Alohi.Signplus/Http/Environment.cs
similarity index 66%
rename from Signplus/Http/Environment.cs
rename to Alohi.Signplus/Http/Environment.cs
index 6fd8901..0cc9094 100644
--- a/Signplus/Http/Environment.cs
+++ b/Alohi.Signplus/Http/Environment.cs
@@ -1,4 +1,6 @@
-namespace Signplus.Http;
+namespace Alohi.Signplus.Http;
+
+using Alohi.Signplus.Http.Extensions;
///
/// The environments available for the SDK.
@@ -6,9 +8,11 @@ namespace Signplus.Http;
public class Environment
{
internal Uri Uri { get; private set; }
+ internal string OriginalString { get; private set; }
private Environment(string uri)
{
+ OriginalString = uri;
Uri = new Uri(uri);
}
diff --git a/Alohi.Signplus/Http/Extensions/HttpResponseMessageExtensions.cs b/Alohi.Signplus/Http/Extensions/HttpResponseMessageExtensions.cs
new file mode 100644
index 0000000..12a406d
--- /dev/null
+++ b/Alohi.Signplus/Http/Extensions/HttpResponseMessageExtensions.cs
@@ -0,0 +1,15 @@
+using Alohi.Signplus.Http.Exceptions;
+
+namespace Alohi.Signplus.Http.Extensions;
+
+public static class HttpResponseMessageExtensions
+{
+ public static HttpResponseMessage EnsureSuccessfulResponse(this HttpResponseMessage response)
+ {
+ if (!response.IsSuccessStatusCode)
+ {
+ throw new ApiException(response);
+ }
+ return response;
+ }
+}
diff --git a/Alohi.Signplus/Http/Extensions/MultipartFormDataContentExtensions.cs b/Alohi.Signplus/Http/Extensions/MultipartFormDataContentExtensions.cs
new file mode 100644
index 0000000..adef575
--- /dev/null
+++ b/Alohi.Signplus/Http/Extensions/MultipartFormDataContentExtensions.cs
@@ -0,0 +1,59 @@
+using System.Net.Http.Headers;
+using System.Reflection;
+using System.Text.Json;
+using System.Text.Json.Serialization;
+
+namespace Alohi.Signplus.Http.Extensions;
+
+public static class MultipartFormDataContentExtensions
+{
+ public static MultipartFormDataContent AddObject(
+ this MultipartFormDataContent formData,
+ object content,
+ JsonSerializerOptions? options
+ )
+ {
+ foreach (var property in content.GetType().GetProperties())
+ {
+ var value = property.GetValue(content);
+ var key = property.Name;
+ var mappedKey = GetPropertyName(property);
+
+ if (value is byte[] fileBytes)
+ {
+ var fileContent = new ByteArrayContent(fileBytes);
+ fileContent.Headers.ContentType = new MediaTypeHeaderValue(
+ "application/octet-stream"
+ );
+
+ formData.Add(fileContent, mappedKey, mappedKey);
+ }
+ else if (value != null && !IsPrimitive(property.PropertyType))
+ {
+ var nestedContent = new MultipartFormDataContent().AddObject(value, options);
+ formData.Add(nestedContent, mappedKey);
+ }
+ else
+ {
+ formData.Add(new StringContent(value?.ToString() ?? string.Empty), mappedKey);
+ }
+ }
+
+ return formData;
+ }
+
+ private static bool IsPrimitive(Type type)
+ {
+ return type.IsPrimitive || type.IsValueType || type == typeof(string);
+ }
+
+ private static string GetPropertyName(PropertyInfo property)
+ {
+ var jsonPropertyAttribute = property.GetCustomAttribute();
+ if (jsonPropertyAttribute != null)
+ {
+ return jsonPropertyAttribute.Name;
+ }
+ return property.Name;
+ }
+}
diff --git a/Alohi.Signplus/Http/Extensions/UriExtensions.cs b/Alohi.Signplus/Http/Extensions/UriExtensions.cs
new file mode 100644
index 0000000..16ffc43
--- /dev/null
+++ b/Alohi.Signplus/Http/Extensions/UriExtensions.cs
@@ -0,0 +1,18 @@
+namespace Alohi.Signplus.Http.Extensions;
+
+public static class UriExtensions
+{
+ public static Uri EnsureTrailingSlash(this Uri uri)
+ {
+ if (uri == null)
+ throw new ArgumentNullException(nameof(uri));
+
+ var uriString = uri.ToString();
+ if (!uriString.EndsWith("/"))
+ {
+ uriString += "/";
+ }
+
+ return new Uri(uriString);
+ }
+}
diff --git a/Signplus/Http/Handlers/RetryHandler.cs b/Alohi.Signplus/Http/Handlers/RetryHandler.cs
similarity index 97%
rename from Signplus/Http/Handlers/RetryHandler.cs
rename to Alohi.Signplus/Http/Handlers/RetryHandler.cs
index 03b77d6..c9c3323 100644
--- a/Signplus/Http/Handlers/RetryHandler.cs
+++ b/Alohi.Signplus/Http/Handlers/RetryHandler.cs
@@ -2,7 +2,7 @@
using Polly;
using Polly.Retry;
-namespace Signplus.Http.Handlers;
+namespace Alohi.Signplus.Http.Handlers;
///
/// A handler for retrying requests when they fail.
diff --git a/Signplus/Http/Handlers/TokenHandler.cs b/Alohi.Signplus/Http/Handlers/TokenHandler.cs
similarity index 95%
rename from Signplus/Http/Handlers/TokenHandler.cs
rename to Alohi.Signplus/Http/Handlers/TokenHandler.cs
index 3daf700..4ba8af6 100644
--- a/Signplus/Http/Handlers/TokenHandler.cs
+++ b/Alohi.Signplus/Http/Handlers/TokenHandler.cs
@@ -1,4 +1,4 @@
-namespace Signplus.Http.Handlers;
+namespace Alohi.Signplus.Http.Handlers;
///
/// A handler for adding a token to the request.
diff --git a/Signplus/Http/RequestBuilder.cs b/Alohi.Signplus/Http/RequestBuilder.cs
similarity index 66%
rename from Signplus/Http/RequestBuilder.cs
rename to Alohi.Signplus/Http/RequestBuilder.cs
index 8f47747..4ca4dc0 100644
--- a/Signplus/Http/RequestBuilder.cs
+++ b/Alohi.Signplus/Http/RequestBuilder.cs
@@ -1,8 +1,11 @@
+using System.Net.Http.Headers;
using System.Net.Http.Json;
+using System.Text;
using System.Text.Json;
-using Signplus.Http.Serialization;
+using Alohi.Signplus.Http.Extensions;
+using Alohi.Signplus.Http.Serialization;
-namespace Signplus.Http;
+namespace Alohi.Signplus.Http;
///
/// A builder for creating instances with full support for serialization.
@@ -108,9 +111,72 @@ public RequestBuilder SetOptionalHeader(string key, object? value, bool explode
///
/// Sets the content of the request as JSON.
///
- public RequestBuilder SetContentAsJson(object content, JsonSerializerOptions? options = null)
+ public RequestBuilder SetContentAsJson(
+ object content,
+ JsonSerializerOptions? options = null,
+ MediaTypeHeaderValue? mediaType = null
+ )
+ {
+ _content = JsonContent.Create(content, mediaType, options);
+ return this;
+ }
+
+ ///
+ /// Sets the content of the request as Text.
+ ///
+ public RequestBuilder SetContentAsText(
+ string content,
+ string mediaType,
+ Encoding? encoding = null
+ )
+ {
+ encoding ??= Encoding.UTF8;
+ _content = new StringContent(content, encoding, mediaType);
+ return this;
+ }
+
+ ///
+ /// Sets the content of the request as Binary.
+ ///
+ public RequestBuilder SetContentAsBinary(byte[] content, MediaTypeHeaderValue mediaType)
+ {
+ _content = new ByteArrayContent(content);
+ _content.Headers.ContentType = mediaType;
+ return this;
+ }
+
+ ///
+ /// Sets the content of the request as application/x-www-form-urlencoded.
+ ///
+ public RequestBuilder SetUrlEncodedContent(
+ object content,
+ JsonSerializerOptions? options = null
+ )
+ {
+ var jsonContent = JsonSerializer.Serialize(content, options);
+ var dictionary = JsonSerializer.Deserialize>(
+ jsonContent,
+ options
+ );
+
+ if (dictionary is null)
+ {
+ throw new ArgumentException("Invalid content for form-urlencoded content type.");
+ }
+
+ _content = new FormUrlEncodedContent(dictionary);
+ return this;
+ }
+
+ ///
+ /// Sets the content of the request as multipart/form-data.
+ ///
+ public RequestBuilder SetContentAsMultipartFormData(
+ object content,
+ JsonSerializerOptions? options = null
+ )
{
- _content = JsonContent.Create(content, options: options);
+ _content = new MultipartFormDataContent().AddObject(content, options);
return this;
}
diff --git a/Signplus/Http/Serialization/PathSerializationStyle.cs b/Alohi.Signplus/Http/Serialization/PathSerializationStyle.cs
similarity index 58%
rename from Signplus/Http/Serialization/PathSerializationStyle.cs
rename to Alohi.Signplus/Http/Serialization/PathSerializationStyle.cs
index 66e0218..cb567d9 100644
--- a/Signplus/Http/Serialization/PathSerializationStyle.cs
+++ b/Alohi.Signplus/Http/Serialization/PathSerializationStyle.cs
@@ -1,8 +1,8 @@
-namespace Signplus.Http.Serialization;
+namespace Alohi.Signplus.Http.Serialization;
public enum PathSerializationStyle
{
Simple = SerializationStyle.Simple,
Label = SerializationStyle.Label,
- Matrix = SerializationStyle.Matrix
+ Matrix = SerializationStyle.Matrix,
}
diff --git a/Signplus/Http/Serialization/QuerySerializationStyle.cs b/Alohi.Signplus/Http/Serialization/QuerySerializationStyle.cs
similarity index 66%
rename from Signplus/Http/Serialization/QuerySerializationStyle.cs
rename to Alohi.Signplus/Http/Serialization/QuerySerializationStyle.cs
index ab08194..11e6683 100644
--- a/Signplus/Http/Serialization/QuerySerializationStyle.cs
+++ b/Alohi.Signplus/Http/Serialization/QuerySerializationStyle.cs
@@ -1,9 +1,9 @@
-namespace Signplus.Http.Serialization;
+namespace Alohi.Signplus.Http.Serialization;
public enum QuerySerializationStyle
{
Form = SerializationStyle.Form,
SpaceDelimited = SerializationStyle.SpaceDelimited,
PipeDelimited = SerializationStyle.PipeDelimited,
- DeepObject = SerializationStyle.DeepObject
+ DeepObject = SerializationStyle.DeepObject,
}
diff --git a/Signplus/Http/Serialization/SerializationStyle.cs b/Alohi.Signplus/Http/Serialization/SerializationStyle.cs
similarity index 68%
rename from Signplus/Http/Serialization/SerializationStyle.cs
rename to Alohi.Signplus/Http/Serialization/SerializationStyle.cs
index 1f85577..cb23e51 100644
--- a/Signplus/Http/Serialization/SerializationStyle.cs
+++ b/Alohi.Signplus/Http/Serialization/SerializationStyle.cs
@@ -1,4 +1,4 @@
-namespace Signplus.Http.Serialization;
+namespace Alohi.Signplus.Http.Serialization;
public enum SerializationStyle
{
@@ -8,5 +8,5 @@ public enum SerializationStyle
Form = 3,
SpaceDelimited = 4,
PipeDelimited = 5,
- DeepObject = 6
+ DeepObject = 6,
}
diff --git a/Signplus/Http/Serialization/Serializer.cs b/Alohi.Signplus/Http/Serialization/Serializer.cs
similarity index 91%
rename from Signplus/Http/Serialization/Serializer.cs
rename to Alohi.Signplus/Http/Serialization/Serializer.cs
index 43fe29b..15a1df8 100644
--- a/Signplus/Http/Serialization/Serializer.cs
+++ b/Alohi.Signplus/Http/Serialization/Serializer.cs
@@ -2,7 +2,7 @@
using System.Net;
using System.Text.Json.Serialization;
-namespace Signplus.Http.Serialization;
+namespace Alohi.Signplus.Http.Serialization;
public static class Serializer
{
@@ -20,13 +20,11 @@ public static string Serialize(
{
return value switch
{
- null
- or string
- or bool
- or int
- or long
- or double
- => SerializePrimitive(key, value, style),
+ null or string or bool or int or long or double => SerializePrimitive(
+ key,
+ value,
+ style
+ ),
IEnumerable e => SerializeEnumerable(key, e, style, explode),
object o => SerializeObject(key, o, style, explode),
};
@@ -40,9 +38,13 @@ private static string SerializeValue(object? value)
string s => WebUtility.UrlEncode(s),
bool b => b.ToString().ToLowerInvariant(),
int or long or double => value.ToString(),
- IEnumerable e
- => SerializeEnumerable(string.Empty, e, SerializationStyle.Simple, false),
- not null => SerializeObject(string.Empty, value, SerializationStyle.Simple, false)
+ IEnumerable e => SerializeEnumerable(
+ string.Empty,
+ e,
+ SerializationStyle.Simple,
+ false
+ ),
+ not null => SerializeObject(string.Empty, value, SerializationStyle.Simple, false),
} ?? string.Empty;
}
@@ -53,7 +55,7 @@ private static string SerializePrimitive(string key, object? value, Serializatio
SerializationStyle.Label => $".{SerializeValue(value)}",
SerializationStyle.Matrix => $";{SerializeValue(value)}",
SerializationStyle.Form => $"{key}={SerializeValue(value)}",
- _ => SerializeValue(value)
+ _ => SerializeValue(value),
};
}
@@ -91,7 +93,7 @@ bool explode
{
SerializationStyle.SpaceDelimited => " ",
SerializationStyle.PipeDelimited => "|",
- _ => ","
+ _ => ",",
};
return $"{key}={string.Join(separator, serializedValues)}";
diff --git a/Alohi.Signplus/Http/ValidationException.cs b/Alohi.Signplus/Http/ValidationException.cs
new file mode 100644
index 0000000..0a642ae
--- /dev/null
+++ b/Alohi.Signplus/Http/ValidationException.cs
@@ -0,0 +1,16 @@
+namespace Alohi.Signplus.Http.Exceptions;
+
+using System;
+using FluentValidation.Results;
+
+public class ValidationException : Exception
+{
+ public List ValidationFailure { get; }
+
+ public ValidationException(List validationFailure)
+ : base("Validation failed.")
+ {
+ ValidationFailure =
+ validationFailure ?? throw new ArgumentNullException(nameof(validationFailure));
+ }
+}
diff --git a/Signplus/Json/ValueEnumJsonConverter.cs b/Alohi.Signplus/Json/ValueEnumJsonConverter.cs
similarity index 96%
rename from Signplus/Json/ValueEnumJsonConverter.cs
rename to Alohi.Signplus/Json/ValueEnumJsonConverter.cs
index 9f2c379..a165629 100644
--- a/Signplus/Json/ValueEnumJsonConverter.cs
+++ b/Alohi.Signplus/Json/ValueEnumJsonConverter.cs
@@ -1,8 +1,8 @@
using System.Text.Json;
using System.Text.Json.Serialization;
-using Signplus.Models;
+using Alohi.Signplus.Models;
-namespace Signplus.Json;
+namespace Alohi.Signplus.Json;
internal class ValueEnumJsonConverter : JsonConverter
where TValueEnum : ValueEnum, new()
diff --git a/Signplus/Json/ValueEnumJsonConverterFactory.cs b/Alohi.Signplus/Json/ValueEnumJsonConverterFactory.cs
similarity index 95%
rename from Signplus/Json/ValueEnumJsonConverterFactory.cs
rename to Alohi.Signplus/Json/ValueEnumJsonConverterFactory.cs
index a15d0f3..22601f3 100644
--- a/Signplus/Json/ValueEnumJsonConverterFactory.cs
+++ b/Alohi.Signplus/Json/ValueEnumJsonConverterFactory.cs
@@ -1,9 +1,9 @@
using System.Diagnostics;
using System.Text.Json;
using System.Text.Json.Serialization;
-using Signplus.Models;
+using Alohi.Signplus.Models;
-namespace Signplus.Json;
+namespace Alohi.Signplus.Json;
internal class ValueEnumJsonConverterFactory : JsonConverterFactory
{
diff --git a/Signplus/Models/AddAnnotationRequest.cs b/Alohi.Signplus/Models/AddAnnotationRequest.cs
similarity index 98%
rename from Signplus/Models/AddAnnotationRequest.cs
rename to Alohi.Signplus/Models/AddAnnotationRequest.cs
index 9d682e7..19a7e55 100644
--- a/Signplus/Models/AddAnnotationRequest.cs
+++ b/Alohi.Signplus/Models/AddAnnotationRequest.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record AddAnnotationRequest(
/// ID of the document
diff --git a/Signplus/Models/AddEnvelopeDocumentRequest.cs b/Alohi.Signplus/Models/AddEnvelopeDocumentRequest.cs
similarity index 81%
rename from Signplus/Models/AddEnvelopeDocumentRequest.cs
rename to Alohi.Signplus/Models/AddEnvelopeDocumentRequest.cs
index 89e4eca..f8df193 100644
--- a/Signplus/Models/AddEnvelopeDocumentRequest.cs
+++ b/Alohi.Signplus/Models/AddEnvelopeDocumentRequest.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record AddEnvelopeDocumentRequest(
/// File to upload in binary format
@@ -8,5 +8,5 @@ public record AddEnvelopeDocumentRequest(
JsonPropertyName("file"),
JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)
]
- object? File = null
+ byte[]? File = null
);
diff --git a/Signplus/Models/AddEnvelopeSigningStepsRequest.cs b/Alohi.Signplus/Models/AddEnvelopeSigningStepsRequest.cs
similarity index 90%
rename from Signplus/Models/AddEnvelopeSigningStepsRequest.cs
rename to Alohi.Signplus/Models/AddEnvelopeSigningStepsRequest.cs
index 70851cb..55831c4 100644
--- a/Signplus/Models/AddEnvelopeSigningStepsRequest.cs
+++ b/Alohi.Signplus/Models/AddEnvelopeSigningStepsRequest.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record AddEnvelopeSigningStepsRequest(
/// List of signing steps
diff --git a/Signplus/Models/AddTemplateDocumentRequest.cs b/Alohi.Signplus/Models/AddTemplateDocumentRequest.cs
similarity index 77%
rename from Signplus/Models/AddTemplateDocumentRequest.cs
rename to Alohi.Signplus/Models/AddTemplateDocumentRequest.cs
index b76615a..5dd53dc 100644
--- a/Signplus/Models/AddTemplateDocumentRequest.cs
+++ b/Alohi.Signplus/Models/AddTemplateDocumentRequest.cs
@@ -1,9 +1,9 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record AddTemplateDocumentRequest(
/// File to upload in binary format
[property: JsonPropertyName("file")]
- object File
+ byte[] File
);
diff --git a/Signplus/Models/AddTemplateSigningStepsRequest.cs b/Alohi.Signplus/Models/AddTemplateSigningStepsRequest.cs
similarity index 87%
rename from Signplus/Models/AddTemplateSigningStepsRequest.cs
rename to Alohi.Signplus/Models/AddTemplateSigningStepsRequest.cs
index d483a60..0354a19 100644
--- a/Signplus/Models/AddTemplateSigningStepsRequest.cs
+++ b/Alohi.Signplus/Models/AddTemplateSigningStepsRequest.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record AddTemplateSigningStepsRequest(
/// List of signing steps
diff --git a/Signplus/Models/Annotation.cs b/Alohi.Signplus/Models/Annotation.cs
similarity index 99%
rename from Signplus/Models/Annotation.cs
rename to Alohi.Signplus/Models/Annotation.cs
index 367f7c3..1b49b75 100644
--- a/Signplus/Models/Annotation.cs
+++ b/Alohi.Signplus/Models/Annotation.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record Annotation(
/// Unique identifier of the annotation
diff --git a/Signplus/Models/AnnotationCheckbox.cs b/Alohi.Signplus/Models/AnnotationCheckbox.cs
similarity index 94%
rename from Signplus/Models/AnnotationCheckbox.cs
rename to Alohi.Signplus/Models/AnnotationCheckbox.cs
index 20d5a69..30ece7e 100644
--- a/Signplus/Models/AnnotationCheckbox.cs
+++ b/Alohi.Signplus/Models/AnnotationCheckbox.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
/// Checkbox annotation (null if annotation is not a checkbox)
public record AnnotationCheckbox(
diff --git a/Signplus/Models/AnnotationCheckboxStyle.cs b/Alohi.Signplus/Models/AnnotationCheckboxStyle.cs
similarity index 92%
rename from Signplus/Models/AnnotationCheckboxStyle.cs
rename to Alohi.Signplus/Models/AnnotationCheckboxStyle.cs
index 6a81a17..c3372cc 100644
--- a/Signplus/Models/AnnotationCheckboxStyle.cs
+++ b/Alohi.Signplus/Models/AnnotationCheckboxStyle.cs
@@ -1,7 +1,7 @@
using System.Text.Json.Serialization;
-using Signplus.Json;
+using Alohi.Signplus.Json;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
/// Style of the checkbox
public record AnnotationCheckboxStyle : ValueEnum
diff --git a/Signplus/Models/AnnotationDateTime.cs b/Alohi.Signplus/Models/AnnotationDateTime.cs
similarity index 98%
rename from Signplus/Models/AnnotationDateTime.cs
rename to Alohi.Signplus/Models/AnnotationDateTime.cs
index d4fdf2d..3267808 100644
--- a/Signplus/Models/AnnotationDateTime.cs
+++ b/Alohi.Signplus/Models/AnnotationDateTime.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
/// Date annotation (null if annotation is not a date)
public record AnnotationDateTime(
diff --git a/Signplus/Models/AnnotationDateTimeFormat.cs b/Alohi.Signplus/Models/AnnotationDateTimeFormat.cs
similarity index 96%
rename from Signplus/Models/AnnotationDateTimeFormat.cs
rename to Alohi.Signplus/Models/AnnotationDateTimeFormat.cs
index e33c2c2..168c5cb 100644
--- a/Signplus/Models/AnnotationDateTimeFormat.cs
+++ b/Alohi.Signplus/Models/AnnotationDateTimeFormat.cs
@@ -1,7 +1,7 @@
using System.Text.Json.Serialization;
-using Signplus.Json;
+using Alohi.Signplus.Json;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
/// Format of the date time (DMY_NUMERIC_SLASH is day/month/year with slashes, MDY_NUMERIC_SLASH is month/day/year with slashes, YMD_NUMERIC_SLASH is year/month/day with slashes, DMY_NUMERIC_DASH_SHORT is day/month/year with dashes, DMY_NUMERIC_DASH is day/month/year with dashes, YMD_NUMERIC_DASH is year/month/day with dashes, MDY_TEXT_DASH_SHORT is month/day/year with dashes, MDY_TEXT_SPACE_SHORT is month/day/year with spaces, MDY_TEXT_SPACE is month/day/year with spaces)
public record AnnotationDateTimeFormat : ValueEnum
diff --git a/Signplus/Models/AnnotationFont.cs b/Alohi.Signplus/Models/AnnotationFont.cs
similarity index 95%
rename from Signplus/Models/AnnotationFont.cs
rename to Alohi.Signplus/Models/AnnotationFont.cs
index cc827a0..000785d 100644
--- a/Signplus/Models/AnnotationFont.cs
+++ b/Alohi.Signplus/Models/AnnotationFont.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record AnnotationFont(
/// Font family of the text
diff --git a/Signplus/Models/AnnotationFontFamily.cs b/Alohi.Signplus/Models/AnnotationFontFamily.cs
similarity index 89%
rename from Signplus/Models/AnnotationFontFamily.cs
rename to Alohi.Signplus/Models/AnnotationFontFamily.cs
index c7b1054..c49046a 100644
--- a/Signplus/Models/AnnotationFontFamily.cs
+++ b/Alohi.Signplus/Models/AnnotationFontFamily.cs
@@ -1,7 +1,7 @@
using System.Text.Json.Serialization;
-using Signplus.Json;
+using Alohi.Signplus.Json;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
/// Font family of the text
public record AnnotationFontFamily : ValueEnum
diff --git a/Signplus/Models/AnnotationInitials.cs b/Alohi.Signplus/Models/AnnotationInitials.cs
similarity index 91%
rename from Signplus/Models/AnnotationInitials.cs
rename to Alohi.Signplus/Models/AnnotationInitials.cs
index c7dab0a..f71f0eb 100644
--- a/Signplus/Models/AnnotationInitials.cs
+++ b/Alohi.Signplus/Models/AnnotationInitials.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
/// Initials annotation (null if annotation is not initials)
public record AnnotationInitials(
diff --git a/Signplus/Models/AnnotationSignature.cs b/Alohi.Signplus/Models/AnnotationSignature.cs
similarity index 91%
rename from Signplus/Models/AnnotationSignature.cs
rename to Alohi.Signplus/Models/AnnotationSignature.cs
index fae188c..d60c3d2 100644
--- a/Signplus/Models/AnnotationSignature.cs
+++ b/Alohi.Signplus/Models/AnnotationSignature.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
/// Signature annotation (null if annotation is not a signature)
public record AnnotationSignature(
diff --git a/Signplus/Models/AnnotationText.cs b/Alohi.Signplus/Models/AnnotationText.cs
similarity index 97%
rename from Signplus/Models/AnnotationText.cs
rename to Alohi.Signplus/Models/AnnotationText.cs
index 24674cf..034a6f0 100644
--- a/Signplus/Models/AnnotationText.cs
+++ b/Alohi.Signplus/Models/AnnotationText.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
/// Text annotation (null if annotation is not a text)
public record AnnotationText(
diff --git a/Signplus/Models/AnnotationType.cs b/Alohi.Signplus/Models/AnnotationType.cs
similarity index 90%
rename from Signplus/Models/AnnotationType.cs
rename to Alohi.Signplus/Models/AnnotationType.cs
index 9a8a29d..6d783d7 100644
--- a/Signplus/Models/AnnotationType.cs
+++ b/Alohi.Signplus/Models/AnnotationType.cs
@@ -1,7 +1,7 @@
using System.Text.Json.Serialization;
-using Signplus.Json;
+using Alohi.Signplus.Json;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
/// Type of the annotation
public record AnnotationType : ValueEnum
diff --git a/Signplus/Models/CreateEnvelopeFromTemplateRequest.cs b/Alohi.Signplus/Models/CreateEnvelopeFromTemplateRequest.cs
similarity index 95%
rename from Signplus/Models/CreateEnvelopeFromTemplateRequest.cs
rename to Alohi.Signplus/Models/CreateEnvelopeFromTemplateRequest.cs
index 6646de3..20e11c9 100644
--- a/Signplus/Models/CreateEnvelopeFromTemplateRequest.cs
+++ b/Alohi.Signplus/Models/CreateEnvelopeFromTemplateRequest.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record CreateEnvelopeFromTemplateRequest(
/// Name of the envelope
diff --git a/Signplus/Models/CreateEnvelopeRequest.cs b/Alohi.Signplus/Models/CreateEnvelopeRequest.cs
similarity index 97%
rename from Signplus/Models/CreateEnvelopeRequest.cs
rename to Alohi.Signplus/Models/CreateEnvelopeRequest.cs
index 88e5859..7332cfa 100644
--- a/Signplus/Models/CreateEnvelopeRequest.cs
+++ b/Alohi.Signplus/Models/CreateEnvelopeRequest.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record CreateEnvelopeRequest(
/// Name of the envelope
diff --git a/Signplus/Models/CreateTemplateRequest.cs b/Alohi.Signplus/Models/CreateTemplateRequest.cs
similarity index 79%
rename from Signplus/Models/CreateTemplateRequest.cs
rename to Alohi.Signplus/Models/CreateTemplateRequest.cs
index 6895c23..95f7f6e 100644
--- a/Signplus/Models/CreateTemplateRequest.cs
+++ b/Alohi.Signplus/Models/CreateTemplateRequest.cs
@@ -1,5 +1,5 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record CreateTemplateRequest([property: JsonPropertyName("name")] string Name);
diff --git a/Signplus/Models/CreateWebhookRequest.cs b/Alohi.Signplus/Models/CreateWebhookRequest.cs
similarity index 90%
rename from Signplus/Models/CreateWebhookRequest.cs
rename to Alohi.Signplus/Models/CreateWebhookRequest.cs
index 4371af4..9649835 100644
--- a/Signplus/Models/CreateWebhookRequest.cs
+++ b/Alohi.Signplus/Models/CreateWebhookRequest.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record CreateWebhookRequest(
/// Event of the webhook
diff --git a/Signplus/Models/Document.cs b/Alohi.Signplus/Models/Document.cs
similarity index 97%
rename from Signplus/Models/Document.cs
rename to Alohi.Signplus/Models/Document.cs
index 128de2f..79bd721 100644
--- a/Signplus/Models/Document.cs
+++ b/Alohi.Signplus/Models/Document.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record Document(
/// Unique identifier of the document
diff --git a/Signplus/Models/DynamicField.cs b/Alohi.Signplus/Models/DynamicField.cs
similarity index 93%
rename from Signplus/Models/DynamicField.cs
rename to Alohi.Signplus/Models/DynamicField.cs
index 7849ba6..363d1a9 100644
--- a/Signplus/Models/DynamicField.cs
+++ b/Alohi.Signplus/Models/DynamicField.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record DynamicField(
/// Name of the dynamic field
diff --git a/Signplus/Models/Envelope.cs b/Alohi.Signplus/Models/Envelope.cs
similarity index 99%
rename from Signplus/Models/Envelope.cs
rename to Alohi.Signplus/Models/Envelope.cs
index 74e334f..7a0d29e 100644
--- a/Signplus/Models/Envelope.cs
+++ b/Alohi.Signplus/Models/Envelope.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record Envelope(
/// Unique identifier of the envelope
diff --git a/Signplus/Models/EnvelopeFlowType.cs b/Alohi.Signplus/Models/EnvelopeFlowType.cs
similarity index 89%
rename from Signplus/Models/EnvelopeFlowType.cs
rename to Alohi.Signplus/Models/EnvelopeFlowType.cs
index c49ffae..84d3518 100644
--- a/Signplus/Models/EnvelopeFlowType.cs
+++ b/Alohi.Signplus/Models/EnvelopeFlowType.cs
@@ -1,7 +1,7 @@
using System.Text.Json.Serialization;
-using Signplus.Json;
+using Alohi.Signplus.Json;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
/// Flow type of the envelope (REQUEST_SIGNATURE is a request for signature, SIGN_MYSELF is a self-signing flow)
public record EnvelopeFlowType : ValueEnum
diff --git a/Signplus/Models/EnvelopeLegalityLevel.cs b/Alohi.Signplus/Models/EnvelopeLegalityLevel.cs
similarity index 91%
rename from Signplus/Models/EnvelopeLegalityLevel.cs
rename to Alohi.Signplus/Models/EnvelopeLegalityLevel.cs
index f93ac7e..6b302b7 100644
--- a/Signplus/Models/EnvelopeLegalityLevel.cs
+++ b/Alohi.Signplus/Models/EnvelopeLegalityLevel.cs
@@ -1,7 +1,7 @@
using System.Text.Json.Serialization;
-using Signplus.Json;
+using Alohi.Signplus.Json;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
/// Legal level of the envelope (SES is Simple Electronic Signature, QES_EIDAS is Qualified Electronic Signature, QES_ZERTES is Qualified Electronic Signature with Zertes)
public record EnvelopeLegalityLevel : ValueEnum
diff --git a/Signplus/Models/EnvelopeNotification.cs b/Alohi.Signplus/Models/EnvelopeNotification.cs
similarity index 95%
rename from Signplus/Models/EnvelopeNotification.cs
rename to Alohi.Signplus/Models/EnvelopeNotification.cs
index c9efb6e..8581699 100644
--- a/Signplus/Models/EnvelopeNotification.cs
+++ b/Alohi.Signplus/Models/EnvelopeNotification.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record EnvelopeNotification(
/// Subject of the notification
diff --git a/Signplus/Models/EnvelopeOrderField.cs b/Alohi.Signplus/Models/EnvelopeOrderField.cs
similarity index 91%
rename from Signplus/Models/EnvelopeOrderField.cs
rename to Alohi.Signplus/Models/EnvelopeOrderField.cs
index 73ee5c1..a476448 100644
--- a/Signplus/Models/EnvelopeOrderField.cs
+++ b/Alohi.Signplus/Models/EnvelopeOrderField.cs
@@ -1,7 +1,7 @@
using System.Text.Json.Serialization;
-using Signplus.Json;
+using Alohi.Signplus.Json;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
/// Field to order envelopes by
public record EnvelopeOrderField : ValueEnum
diff --git a/Signplus/Models/EnvelopeStatus.cs b/Alohi.Signplus/Models/EnvelopeStatus.cs
similarity index 91%
rename from Signplus/Models/EnvelopeStatus.cs
rename to Alohi.Signplus/Models/EnvelopeStatus.cs
index a6789a2..fa3493b 100644
--- a/Signplus/Models/EnvelopeStatus.cs
+++ b/Alohi.Signplus/Models/EnvelopeStatus.cs
@@ -1,7 +1,7 @@
using System.Text.Json.Serialization;
-using Signplus.Json;
+using Alohi.Signplus.Json;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
/// Status of the envelope
public record EnvelopeStatus : ValueEnum
diff --git a/Signplus/Models/ListEnvelopeDocumentAnnotationsResponse.cs b/Alohi.Signplus/Models/ListEnvelopeDocumentAnnotationsResponse.cs
similarity index 89%
rename from Signplus/Models/ListEnvelopeDocumentAnnotationsResponse.cs
rename to Alohi.Signplus/Models/ListEnvelopeDocumentAnnotationsResponse.cs
index 83e605b..605ff08 100644
--- a/Signplus/Models/ListEnvelopeDocumentAnnotationsResponse.cs
+++ b/Alohi.Signplus/Models/ListEnvelopeDocumentAnnotationsResponse.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record ListEnvelopeDocumentAnnotationsResponse(
[property:
diff --git a/Signplus/Models/ListEnvelopeDocumentsResponse.cs b/Alohi.Signplus/Models/ListEnvelopeDocumentsResponse.cs
similarity index 88%
rename from Signplus/Models/ListEnvelopeDocumentsResponse.cs
rename to Alohi.Signplus/Models/ListEnvelopeDocumentsResponse.cs
index ae82fba..bd88d90 100644
--- a/Signplus/Models/ListEnvelopeDocumentsResponse.cs
+++ b/Alohi.Signplus/Models/ListEnvelopeDocumentsResponse.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record ListEnvelopeDocumentsResponse(
[property:
diff --git a/Signplus/Models/ListEnvelopesRequest.cs b/Alohi.Signplus/Models/ListEnvelopesRequest.cs
similarity index 99%
rename from Signplus/Models/ListEnvelopesRequest.cs
rename to Alohi.Signplus/Models/ListEnvelopesRequest.cs
index df35d63..428262b 100644
--- a/Signplus/Models/ListEnvelopesRequest.cs
+++ b/Alohi.Signplus/Models/ListEnvelopesRequest.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record ListEnvelopesRequest(
/// Name of the envelope
diff --git a/Signplus/Models/ListEnvelopesResponse.cs b/Alohi.Signplus/Models/ListEnvelopesResponse.cs
similarity index 95%
rename from Signplus/Models/ListEnvelopesResponse.cs
rename to Alohi.Signplus/Models/ListEnvelopesResponse.cs
index d0a2a59..aa50cf4 100644
--- a/Signplus/Models/ListEnvelopesResponse.cs
+++ b/Alohi.Signplus/Models/ListEnvelopesResponse.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record ListEnvelopesResponse(
/// Whether there is a next page
diff --git a/Signplus/Models/ListTemplateAnnotationsResponse.cs b/Alohi.Signplus/Models/ListTemplateAnnotationsResponse.cs
similarity index 88%
rename from Signplus/Models/ListTemplateAnnotationsResponse.cs
rename to Alohi.Signplus/Models/ListTemplateAnnotationsResponse.cs
index b8bb7c9..5becd7a 100644
--- a/Signplus/Models/ListTemplateAnnotationsResponse.cs
+++ b/Alohi.Signplus/Models/ListTemplateAnnotationsResponse.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record ListTemplateAnnotationsResponse(
[property:
diff --git a/Signplus/Models/ListTemplateDocumentAnnotationsResponse.cs b/Alohi.Signplus/Models/ListTemplateDocumentAnnotationsResponse.cs
similarity index 89%
rename from Signplus/Models/ListTemplateDocumentAnnotationsResponse.cs
rename to Alohi.Signplus/Models/ListTemplateDocumentAnnotationsResponse.cs
index d57b4f9..ca47dd2 100644
--- a/Signplus/Models/ListTemplateDocumentAnnotationsResponse.cs
+++ b/Alohi.Signplus/Models/ListTemplateDocumentAnnotationsResponse.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record ListTemplateDocumentAnnotationsResponse(
[property:
diff --git a/Signplus/Models/ListTemplateDocumentsResponse.cs b/Alohi.Signplus/Models/ListTemplateDocumentsResponse.cs
similarity index 88%
rename from Signplus/Models/ListTemplateDocumentsResponse.cs
rename to Alohi.Signplus/Models/ListTemplateDocumentsResponse.cs
index 1e15f3d..c34493d 100644
--- a/Signplus/Models/ListTemplateDocumentsResponse.cs
+++ b/Alohi.Signplus/Models/ListTemplateDocumentsResponse.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record ListTemplateDocumentsResponse(
[property:
diff --git a/Signplus/Models/ListTemplatesRequest.cs b/Alohi.Signplus/Models/ListTemplatesRequest.cs
similarity index 98%
rename from Signplus/Models/ListTemplatesRequest.cs
rename to Alohi.Signplus/Models/ListTemplatesRequest.cs
index 618fd4f..46455bb 100644
--- a/Signplus/Models/ListTemplatesRequest.cs
+++ b/Alohi.Signplus/Models/ListTemplatesRequest.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record ListTemplatesRequest(
/// Name of the template
diff --git a/Signplus/Models/ListTemplatesResponse.cs b/Alohi.Signplus/Models/ListTemplatesResponse.cs
similarity index 95%
rename from Signplus/Models/ListTemplatesResponse.cs
rename to Alohi.Signplus/Models/ListTemplatesResponse.cs
index 0b36499..397b79a 100644
--- a/Signplus/Models/ListTemplatesResponse.cs
+++ b/Alohi.Signplus/Models/ListTemplatesResponse.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record ListTemplatesResponse(
/// Whether there is a next page
diff --git a/Signplus/Models/ListWebhooksRequest.cs b/Alohi.Signplus/Models/ListWebhooksRequest.cs
similarity index 93%
rename from Signplus/Models/ListWebhooksRequest.cs
rename to Alohi.Signplus/Models/ListWebhooksRequest.cs
index a3752bd..25be56d 100644
--- a/Signplus/Models/ListWebhooksRequest.cs
+++ b/Alohi.Signplus/Models/ListWebhooksRequest.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record ListWebhooksRequest(
/// ID of the webhook
diff --git a/Signplus/Models/ListWebhooksResponse.cs b/Alohi.Signplus/Models/ListWebhooksResponse.cs
similarity index 88%
rename from Signplus/Models/ListWebhooksResponse.cs
rename to Alohi.Signplus/Models/ListWebhooksResponse.cs
index c3d1ada..d1a99ff 100644
--- a/Signplus/Models/ListWebhooksResponse.cs
+++ b/Alohi.Signplus/Models/ListWebhooksResponse.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record ListWebhooksResponse(
[property:
diff --git a/Signplus/Models/Page.cs b/Alohi.Signplus/Models/Page.cs
similarity index 93%
rename from Signplus/Models/Page.cs
rename to Alohi.Signplus/Models/Page.cs
index 370dd83..ed86a3c 100644
--- a/Signplus/Models/Page.cs
+++ b/Alohi.Signplus/Models/Page.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record Page(
/// Width of the page in pixels
diff --git a/Signplus/Models/Recipient.cs b/Alohi.Signplus/Models/Recipient.cs
similarity index 97%
rename from Signplus/Models/Recipient.cs
rename to Alohi.Signplus/Models/Recipient.cs
index 187d602..ea4f86a 100644
--- a/Signplus/Models/Recipient.cs
+++ b/Alohi.Signplus/Models/Recipient.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record Recipient(
/// Name of the recipient
diff --git a/Signplus/Models/RecipientRole.cs b/Alohi.Signplus/Models/RecipientRole.cs
similarity index 91%
rename from Signplus/Models/RecipientRole.cs
rename to Alohi.Signplus/Models/RecipientRole.cs
index 68d4273..920f5df 100644
--- a/Signplus/Models/RecipientRole.cs
+++ b/Alohi.Signplus/Models/RecipientRole.cs
@@ -1,7 +1,7 @@
using System.Text.Json.Serialization;
-using Signplus.Json;
+using Alohi.Signplus.Json;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
/// Role of the recipient (SIGNER signs the document, RECEIVES_COPY receives a copy of the document, IN_PERSON_SIGNER signs the document in person, SENDER sends the document)
public record RecipientRole : ValueEnum
diff --git a/Signplus/Models/RecipientVerification.cs b/Alohi.Signplus/Models/RecipientVerification.cs
similarity index 94%
rename from Signplus/Models/RecipientVerification.cs
rename to Alohi.Signplus/Models/RecipientVerification.cs
index 1d49bd6..dbd344c 100644
--- a/Signplus/Models/RecipientVerification.cs
+++ b/Alohi.Signplus/Models/RecipientVerification.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record RecipientVerification(
/// Type of signature verification (SMS sends a code via SMS, PASSCODE requires a code to be entered)
diff --git a/Signplus/Models/RecipientVerificationType.cs b/Alohi.Signplus/Models/RecipientVerificationType.cs
similarity index 89%
rename from Signplus/Models/RecipientVerificationType.cs
rename to Alohi.Signplus/Models/RecipientVerificationType.cs
index 23422dd..32417e6 100644
--- a/Signplus/Models/RecipientVerificationType.cs
+++ b/Alohi.Signplus/Models/RecipientVerificationType.cs
@@ -1,7 +1,7 @@
using System.Text.Json.Serialization;
-using Signplus.Json;
+using Alohi.Signplus.Json;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
/// Type of signature verification (SMS sends a code via SMS, PASSCODE requires a code to be entered)
public record RecipientVerificationType : ValueEnum
diff --git a/Signplus/Models/RenameEnvelopeRequest.cs b/Alohi.Signplus/Models/RenameEnvelopeRequest.cs
similarity index 89%
rename from Signplus/Models/RenameEnvelopeRequest.cs
rename to Alohi.Signplus/Models/RenameEnvelopeRequest.cs
index 2633d73..a50428e 100644
--- a/Signplus/Models/RenameEnvelopeRequest.cs
+++ b/Alohi.Signplus/Models/RenameEnvelopeRequest.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record RenameEnvelopeRequest(
/// Name of the envelope
diff --git a/Signplus/Models/RenameTemplateRequest.cs b/Alohi.Signplus/Models/RenameTemplateRequest.cs
similarity index 84%
rename from Signplus/Models/RenameTemplateRequest.cs
rename to Alohi.Signplus/Models/RenameTemplateRequest.cs
index 98c529d..8e56e8c 100644
--- a/Signplus/Models/RenameTemplateRequest.cs
+++ b/Alohi.Signplus/Models/RenameTemplateRequest.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record RenameTemplateRequest(
/// Name of the template
diff --git a/Signplus/Models/SetEnvelopeCommentRequest.cs b/Alohi.Signplus/Models/SetEnvelopeCommentRequest.cs
similarity index 85%
rename from Signplus/Models/SetEnvelopeCommentRequest.cs
rename to Alohi.Signplus/Models/SetEnvelopeCommentRequest.cs
index 7568210..7479a13 100644
--- a/Signplus/Models/SetEnvelopeCommentRequest.cs
+++ b/Alohi.Signplus/Models/SetEnvelopeCommentRequest.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record SetEnvelopeCommentRequest(
/// Comment for the envelope
diff --git a/Signplus/Models/SetEnvelopeDynamicFieldsRequest.cs b/Alohi.Signplus/Models/SetEnvelopeDynamicFieldsRequest.cs
similarity index 87%
rename from Signplus/Models/SetEnvelopeDynamicFieldsRequest.cs
rename to Alohi.Signplus/Models/SetEnvelopeDynamicFieldsRequest.cs
index 9d8e021..c108a55 100644
--- a/Signplus/Models/SetEnvelopeDynamicFieldsRequest.cs
+++ b/Alohi.Signplus/Models/SetEnvelopeDynamicFieldsRequest.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record SetEnvelopeDynamicFieldsRequest(
/// List of dynamic fields
diff --git a/Signplus/Models/SetEnvelopeExpirationRequest.cs b/Alohi.Signplus/Models/SetEnvelopeExpirationRequest.cs
similarity index 86%
rename from Signplus/Models/SetEnvelopeExpirationRequest.cs
rename to Alohi.Signplus/Models/SetEnvelopeExpirationRequest.cs
index e4e3073..a0c5f07 100644
--- a/Signplus/Models/SetEnvelopeExpirationRequest.cs
+++ b/Alohi.Signplus/Models/SetEnvelopeExpirationRequest.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record SetEnvelopeExpirationRequest(
/// Unix timestamp of the expiration date
diff --git a/Signplus/Models/SetEnvelopeLegalityLevelRequest.cs b/Alohi.Signplus/Models/SetEnvelopeLegalityLevelRequest.cs
similarity index 93%
rename from Signplus/Models/SetEnvelopeLegalityLevelRequest.cs
rename to Alohi.Signplus/Models/SetEnvelopeLegalityLevelRequest.cs
index 1a163d0..61395fd 100644
--- a/Signplus/Models/SetEnvelopeLegalityLevelRequest.cs
+++ b/Alohi.Signplus/Models/SetEnvelopeLegalityLevelRequest.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record SetEnvelopeLegalityLevelRequest(
/// Legal level of the envelope (SES is Simple Electronic Signature, QES_EIDAS is Qualified Electronic Signature, QES_ZERTES is Qualified Electronic Signature with Zertes)
diff --git a/Signplus/Models/SetTemplateCommentRequest.cs b/Alohi.Signplus/Models/SetTemplateCommentRequest.cs
similarity index 85%
rename from Signplus/Models/SetTemplateCommentRequest.cs
rename to Alohi.Signplus/Models/SetTemplateCommentRequest.cs
index cc568e7..5857588 100644
--- a/Signplus/Models/SetTemplateCommentRequest.cs
+++ b/Alohi.Signplus/Models/SetTemplateCommentRequest.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record SetTemplateCommentRequest(
/// Comment for the template
diff --git a/Signplus/Models/SigningStep.cs b/Alohi.Signplus/Models/SigningStep.cs
similarity index 89%
rename from Signplus/Models/SigningStep.cs
rename to Alohi.Signplus/Models/SigningStep.cs
index 66f1e60..0dddd7e 100644
--- a/Signplus/Models/SigningStep.cs
+++ b/Alohi.Signplus/Models/SigningStep.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record SigningStep(
/// List of recipients
diff --git a/Signplus/Models/Template.cs b/Alohi.Signplus/Models/Template.cs
similarity index 98%
rename from Signplus/Models/Template.cs
rename to Alohi.Signplus/Models/Template.cs
index 64c111c..6d1f5ff 100644
--- a/Signplus/Models/Template.cs
+++ b/Alohi.Signplus/Models/Template.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record Template(
/// Unique identifier of the template
diff --git a/Signplus/Models/TemplateOrderField.cs b/Alohi.Signplus/Models/TemplateOrderField.cs
similarity index 91%
rename from Signplus/Models/TemplateOrderField.cs
rename to Alohi.Signplus/Models/TemplateOrderField.cs
index 4fa7150..04a981d 100644
--- a/Signplus/Models/TemplateOrderField.cs
+++ b/Alohi.Signplus/Models/TemplateOrderField.cs
@@ -1,7 +1,7 @@
using System.Text.Json.Serialization;
-using Signplus.Json;
+using Alohi.Signplus.Json;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
/// Field to order templates by
public record TemplateOrderField : ValueEnum
diff --git a/Signplus/Models/TemplateRecipient.cs b/Alohi.Signplus/Models/TemplateRecipient.cs
similarity index 97%
rename from Signplus/Models/TemplateRecipient.cs
rename to Alohi.Signplus/Models/TemplateRecipient.cs
index 13e5e1b..ef73175 100644
--- a/Signplus/Models/TemplateRecipient.cs
+++ b/Alohi.Signplus/Models/TemplateRecipient.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record TemplateRecipient(
/// Unique identifier of the recipient
diff --git a/Signplus/Models/TemplateRecipientRole.cs b/Alohi.Signplus/Models/TemplateRecipientRole.cs
similarity index 91%
rename from Signplus/Models/TemplateRecipientRole.cs
rename to Alohi.Signplus/Models/TemplateRecipientRole.cs
index d789e0c..c1b5cb8 100644
--- a/Signplus/Models/TemplateRecipientRole.cs
+++ b/Alohi.Signplus/Models/TemplateRecipientRole.cs
@@ -1,7 +1,7 @@
using System.Text.Json.Serialization;
-using Signplus.Json;
+using Alohi.Signplus.Json;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
/// Role of the recipient (SIGNER signs the document, RECEIVES_COPY receives a copy of the document, IN_PERSON_SIGNER signs the document in person, SENDER sends the document)
public record TemplateRecipientRole : ValueEnum
diff --git a/Signplus/Models/TemplateSigningStep.cs b/Alohi.Signplus/Models/TemplateSigningStep.cs
similarity index 90%
rename from Signplus/Models/TemplateSigningStep.cs
rename to Alohi.Signplus/Models/TemplateSigningStep.cs
index 5c32b03..0e46df5 100644
--- a/Signplus/Models/TemplateSigningStep.cs
+++ b/Alohi.Signplus/Models/TemplateSigningStep.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record TemplateSigningStep(
/// List of recipients
diff --git a/Signplus/Models/ValueEnum.cs b/Alohi.Signplus/Models/ValueEnum.cs
similarity index 90%
rename from Signplus/Models/ValueEnum.cs
rename to Alohi.Signplus/Models/ValueEnum.cs
index 76672c7..471ee0a 100644
--- a/Signplus/Models/ValueEnum.cs
+++ b/Alohi.Signplus/Models/ValueEnum.cs
@@ -1,4 +1,4 @@
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
///
/// Emulates an enum for a given type.
diff --git a/Signplus/Models/Webhook.cs b/Alohi.Signplus/Models/Webhook.cs
similarity index 95%
rename from Signplus/Models/Webhook.cs
rename to Alohi.Signplus/Models/Webhook.cs
index 383c562..6f56fe7 100644
--- a/Signplus/Models/Webhook.cs
+++ b/Alohi.Signplus/Models/Webhook.cs
@@ -1,6 +1,6 @@
using System.Text.Json.Serialization;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
public record Webhook(
/// Unique identifier of the webhook
diff --git a/Signplus/Models/WebhookEvent.cs b/Alohi.Signplus/Models/WebhookEvent.cs
similarity index 90%
rename from Signplus/Models/WebhookEvent.cs
rename to Alohi.Signplus/Models/WebhookEvent.cs
index 65ae7a7..0a7e03e 100644
--- a/Signplus/Models/WebhookEvent.cs
+++ b/Alohi.Signplus/Models/WebhookEvent.cs
@@ -1,7 +1,7 @@
using System.Text.Json.Serialization;
-using Signplus.Json;
+using Alohi.Signplus.Json;
-namespace Signplus.Models;
+namespace Alohi.Signplus.Models;
/// Event of the webhook
public record WebhookEvent : ValueEnum
diff --git a/Signplus/Services/BaseService.cs b/Alohi.Signplus/Services/BaseService.cs
similarity index 87%
rename from Signplus/Services/BaseService.cs
rename to Alohi.Signplus/Services/BaseService.cs
index 9bf0795..d10e788 100644
--- a/Signplus/Services/BaseService.cs
+++ b/Alohi.Signplus/Services/BaseService.cs
@@ -1,7 +1,7 @@
using System.Text.Json;
-using Signplus.Json;
+using Alohi.Signplus.Json;
-namespace Signplus.Services;
+namespace Alohi.Signplus.Services;
public class BaseService
{
@@ -13,7 +13,7 @@ public BaseService(HttpClient httpClient)
_httpClient = httpClient;
_jsonSerializerOptions = new JsonSerializerOptions(JsonSerializerDefaults.Web)
{
- Converters = { new ValueEnumJsonConverterFactory() }
+ Converters = { new ValueEnumJsonConverterFactory() },
};
}
}
diff --git a/Signplus/Services/SignplusService.cs b/Alohi.Signplus/Services/SignplusService.cs
similarity index 58%
rename from Signplus/Services/SignplusService.cs
rename to Alohi.Signplus/Services/SignplusService.cs
index 3ec4e98..c823d82 100644
--- a/Signplus/Services/SignplusService.cs
+++ b/Alohi.Signplus/Services/SignplusService.cs
@@ -1,9 +1,14 @@
+using System.Net.Http.Headers;
using System.Net.Http.Json;
-using Signplus.Http;
-using Signplus.Http.Serialization;
-using Signplus.Models;
+using Alohi.Signplus.Http;
+using Alohi.Signplus.Http.Exceptions;
+using Alohi.Signplus.Http.Extensions;
+using Alohi.Signplus.Http.Serialization;
+using Alohi.Signplus.Models;
+using Alohi.Signplus.Validation;
+using Alohi.Signplus.Validation.Extensions;
-namespace Signplus.Services;
+namespace Alohi.Signplus.Services;
public class SignplusService : BaseService
{
@@ -17,6 +22,13 @@ public async Task CreateEnvelopeAsync(
)
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
+ var validationResults = new List { };
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Post, "envelope")
.SetContentAsJson(input, _jsonSerializerOptions)
@@ -25,9 +37,9 @@ public async Task CreateEnvelopeAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -41,6 +53,20 @@ public async Task CreateEnvelopeFromTemplateAsync(
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
ArgumentNullException.ThrowIfNull(templateId, nameof(templateId));
+ var validationResults = new List { };
+ var templateIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)templateId
+ );
+ if (templateIdValidationResult != null)
+ {
+ validationResults.Add(templateIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Post, "envelope/from_template/{template_id}")
.SetPathParameter("template_id", templateId)
@@ -50,9 +76,9 @@ public async Task CreateEnvelopeFromTemplateAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -64,6 +90,13 @@ public async Task ListEnvelopesAsync(
)
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
+ var validationResults = new List { };
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Post, "envelopes")
.SetContentAsJson(input, _jsonSerializerOptions)
@@ -72,9 +105,9 @@ public async Task ListEnvelopesAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(
_jsonSerializerOptions,
cancellationToken
@@ -89,6 +122,20 @@ public async Task GetEnvelopeAsync(
)
{
ArgumentNullException.ThrowIfNull(envelopeId, nameof(envelopeId));
+ var validationResults = new List { };
+ var envelopeIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)envelopeId
+ );
+ if (envelopeIdValidationResult != null)
+ {
+ validationResults.Add(envelopeIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Get, "envelope/{envelope_id}")
.SetPathParameter("envelope_id", envelopeId)
@@ -97,9 +144,9 @@ public async Task GetEnvelopeAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -111,6 +158,20 @@ public async Task DeleteEnvelopeAsync(
)
{
ArgumentNullException.ThrowIfNull(envelopeId, nameof(envelopeId));
+ var validationResults = new List { };
+ var envelopeIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)envelopeId
+ );
+ if (envelopeIdValidationResult != null)
+ {
+ validationResults.Add(envelopeIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Delete, "envelope/{envelope_id}")
.SetPathParameter("envelope_id", envelopeId)
@@ -119,7 +180,8 @@ public async Task DeleteEnvelopeAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
+
+ response.EnsureSuccessfulResponse();
}
/// Get envelope document
@@ -131,6 +193,28 @@ public async Task GetEnvelopeDocumentAsync(
{
ArgumentNullException.ThrowIfNull(envelopeId, nameof(envelopeId));
ArgumentNullException.ThrowIfNull(documentId, nameof(documentId));
+ var validationResults = new List { };
+ var envelopeIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)envelopeId
+ );
+ if (envelopeIdValidationResult != null)
+ {
+ validationResults.Add(envelopeIdValidationResult);
+ }
+ ;
+ var documentIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)documentId
+ );
+ if (documentIdValidationResult != null)
+ {
+ validationResults.Add(documentIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(
HttpMethod.Get,
@@ -143,9 +227,9 @@ public async Task GetEnvelopeDocumentAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -157,6 +241,20 @@ public async Task GetEnvelopeDocumentsAsync(
)
{
ArgumentNullException.ThrowIfNull(envelopeId, nameof(envelopeId));
+ var validationResults = new List { };
+ var envelopeIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)envelopeId
+ );
+ if (envelopeIdValidationResult != null)
+ {
+ validationResults.Add(envelopeIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Get, "envelope/{envelope_id}/documents")
.SetPathParameter("envelope_id", envelopeId)
@@ -165,9 +263,9 @@ public async Task GetEnvelopeDocumentsAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(
_jsonSerializerOptions,
cancellationToken
@@ -184,18 +282,32 @@ public async Task AddEnvelopeDocumentAsync(
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
ArgumentNullException.ThrowIfNull(envelopeId, nameof(envelopeId));
+ var validationResults = new List { };
+ var envelopeIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)envelopeId
+ );
+ if (envelopeIdValidationResult != null)
+ {
+ validationResults.Add(envelopeIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Post, "envelope/{envelope_id}/document")
.SetPathParameter("envelope_id", envelopeId)
- .SetContentAsJson(input, _jsonSerializerOptions)
+ .SetContentAsMultipartFormData(input, _jsonSerializerOptions)
.Build();
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -209,6 +321,20 @@ public async Task SetEnvelopeDynamicFieldsAsync(
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
ArgumentNullException.ThrowIfNull(envelopeId, nameof(envelopeId));
+ var validationResults = new List { };
+ var envelopeIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)envelopeId
+ );
+ if (envelopeIdValidationResult != null)
+ {
+ validationResults.Add(envelopeIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Put, "envelope/{envelope_id}/dynamic_fields")
.SetPathParameter("envelope_id", envelopeId)
@@ -218,9 +344,9 @@ public async Task SetEnvelopeDynamicFieldsAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -234,6 +360,20 @@ public async Task AddEnvelopeSigningStepsAsync(
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
ArgumentNullException.ThrowIfNull(envelopeId, nameof(envelopeId));
+ var validationResults = new List { };
+ var envelopeIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)envelopeId
+ );
+ if (envelopeIdValidationResult != null)
+ {
+ validationResults.Add(envelopeIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Post, "envelope/{envelope_id}/signing_steps")
.SetPathParameter("envelope_id", envelopeId)
@@ -243,9 +383,9 @@ public async Task AddEnvelopeSigningStepsAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -257,6 +397,20 @@ public async Task SendEnvelopeAsync(
)
{
ArgumentNullException.ThrowIfNull(envelopeId, nameof(envelopeId));
+ var validationResults = new List { };
+ var envelopeIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)envelopeId
+ );
+ if (envelopeIdValidationResult != null)
+ {
+ validationResults.Add(envelopeIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Post, "envelope/{envelope_id}/send")
.SetPathParameter("envelope_id", envelopeId)
@@ -265,9 +419,9 @@ public async Task SendEnvelopeAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -279,6 +433,20 @@ public async Task DuplicateEnvelopeAsync(
)
{
ArgumentNullException.ThrowIfNull(envelopeId, nameof(envelopeId));
+ var validationResults = new List { };
+ var envelopeIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)envelopeId
+ );
+ if (envelopeIdValidationResult != null)
+ {
+ validationResults.Add(envelopeIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Post, "envelope/{envelope_id}/duplicate")
.SetPathParameter("envelope_id", envelopeId)
@@ -287,9 +455,9 @@ public async Task DuplicateEnvelopeAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -301,6 +469,20 @@ public async Task VoidEnvelopeAsync(
)
{
ArgumentNullException.ThrowIfNull(envelopeId, nameof(envelopeId));
+ var validationResults = new List { };
+ var envelopeIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)envelopeId
+ );
+ if (envelopeIdValidationResult != null)
+ {
+ validationResults.Add(envelopeIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Put, "envelope/{envelope_id}/void")
.SetPathParameter("envelope_id", envelopeId)
@@ -309,9 +491,9 @@ public async Task VoidEnvelopeAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -325,6 +507,20 @@ public async Task RenameEnvelopeAsync(
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
ArgumentNullException.ThrowIfNull(envelopeId, nameof(envelopeId));
+ var validationResults = new List { };
+ var envelopeIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)envelopeId
+ );
+ if (envelopeIdValidationResult != null)
+ {
+ validationResults.Add(envelopeIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Put, "envelope/{envelope_id}/rename")
.SetPathParameter("envelope_id", envelopeId)
@@ -334,9 +530,9 @@ public async Task RenameEnvelopeAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -350,6 +546,20 @@ public async Task SetEnvelopeCommentAsync(
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
ArgumentNullException.ThrowIfNull(envelopeId, nameof(envelopeId));
+ var validationResults = new List { };
+ var envelopeIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)envelopeId
+ );
+ if (envelopeIdValidationResult != null)
+ {
+ validationResults.Add(envelopeIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Put, "envelope/{envelope_id}/set_comment")
.SetPathParameter("envelope_id", envelopeId)
@@ -359,9 +569,9 @@ public async Task SetEnvelopeCommentAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -375,6 +585,20 @@ public async Task SetEnvelopeNotificationAsync(
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
ArgumentNullException.ThrowIfNull(envelopeId, nameof(envelopeId));
+ var validationResults = new List { };
+ var envelopeIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)envelopeId
+ );
+ if (envelopeIdValidationResult != null)
+ {
+ validationResults.Add(envelopeIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Put, "envelope/{envelope_id}/set_notification")
.SetPathParameter("envelope_id", envelopeId)
@@ -384,9 +608,9 @@ public async Task SetEnvelopeNotificationAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -400,6 +624,20 @@ public async Task SetEnvelopeExpirationDateAsync(
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
ArgumentNullException.ThrowIfNull(envelopeId, nameof(envelopeId));
+ var validationResults = new List { };
+ var envelopeIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)envelopeId
+ );
+ if (envelopeIdValidationResult != null)
+ {
+ validationResults.Add(envelopeIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(
HttpMethod.Put,
@@ -412,9 +650,9 @@ public async Task SetEnvelopeExpirationDateAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -428,6 +666,20 @@ public async Task SetEnvelopeLegalityLevelAsync(
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
ArgumentNullException.ThrowIfNull(envelopeId, nameof(envelopeId));
+ var validationResults = new List { };
+ var envelopeIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)envelopeId
+ );
+ if (envelopeIdValidationResult != null)
+ {
+ validationResults.Add(envelopeIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(
HttpMethod.Put,
@@ -440,9 +692,9 @@ public async Task SetEnvelopeLegalityLevelAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -455,6 +707,20 @@ public async Task> GetEnvelopeAnnotationsAsync(
)
{
ArgumentNullException.ThrowIfNull(envelopeId, nameof(envelopeId));
+ var validationResults = new List { };
+ var envelopeIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)envelopeId
+ );
+ if (envelopeIdValidationResult != null)
+ {
+ validationResults.Add(envelopeIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Get, "envelope/{envelope_id}/annotations")
.SetPathParameter("envelope_id", envelopeId)
@@ -463,9 +729,9 @@ public async Task> GetEnvelopeAnnotationsAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync>(
_jsonSerializerOptions,
cancellationToken
@@ -484,6 +750,28 @@ public async Task GetEnvelopeDocumentAn
{
ArgumentNullException.ThrowIfNull(envelopeId, nameof(envelopeId));
ArgumentNullException.ThrowIfNull(documentId, nameof(documentId));
+ var validationResults = new List { };
+ var envelopeIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)envelopeId
+ );
+ if (envelopeIdValidationResult != null)
+ {
+ validationResults.Add(envelopeIdValidationResult);
+ }
+ ;
+ var documentIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)documentId
+ );
+ if (documentIdValidationResult != null)
+ {
+ validationResults.Add(documentIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(
HttpMethod.Get,
@@ -496,9 +784,9 @@ public async Task GetEnvelopeDocumentAn
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(
_jsonSerializerOptions,
cancellationToken
@@ -516,6 +804,20 @@ public async Task AddEnvelopeAnnotationAsync(
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
ArgumentNullException.ThrowIfNull(envelopeId, nameof(envelopeId));
+ var validationResults = new List { };
+ var envelopeIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)envelopeId
+ );
+ if (envelopeIdValidationResult != null)
+ {
+ validationResults.Add(envelopeIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Post, "envelope/{envelope_id}/annotation")
.SetPathParameter("envelope_id", envelopeId)
@@ -525,9 +827,9 @@ public async Task AddEnvelopeAnnotationAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -543,6 +845,28 @@ public async Task DeleteEnvelopeAnnotationAsync(
{
ArgumentNullException.ThrowIfNull(envelopeId, nameof(envelopeId));
ArgumentNullException.ThrowIfNull(annotationId, nameof(annotationId));
+ var validationResults = new List { };
+ var envelopeIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)envelopeId
+ );
+ if (envelopeIdValidationResult != null)
+ {
+ validationResults.Add(envelopeIdValidationResult);
+ }
+ ;
+ var annotationIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)annotationId
+ );
+ if (annotationIdValidationResult != null)
+ {
+ validationResults.Add(annotationIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(
HttpMethod.Delete,
@@ -555,7 +879,8 @@ public async Task DeleteEnvelopeAnnotationAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
+
+ response.EnsureSuccessfulResponse();
}
/// Create new template
@@ -565,6 +890,13 @@ public async Task CreateTemplateAsync(
)
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
+ var validationResults = new List { };
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Post, "template")
.SetContentAsJson(input, _jsonSerializerOptions)
@@ -573,9 +905,9 @@ public async Task CreateTemplateAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -587,6 +919,13 @@ public async Task ListTemplatesAsync(
)
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
+ var validationResults = new List { };
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Post, "templates")
.SetContentAsJson(input, _jsonSerializerOptions)
@@ -595,9 +934,9 @@ public async Task ListTemplatesAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(
_jsonSerializerOptions,
cancellationToken
@@ -612,6 +951,20 @@ public async Task GetTemplateAsync(
)
{
ArgumentNullException.ThrowIfNull(templateId, nameof(templateId));
+ var validationResults = new List { };
+ var templateIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)templateId
+ );
+ if (templateIdValidationResult != null)
+ {
+ validationResults.Add(templateIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Get, "template/{template_id}")
.SetPathParameter("template_id", templateId)
@@ -620,9 +973,9 @@ public async Task GetTemplateAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -634,6 +987,20 @@ public async Task DeleteTemplateAsync(
)
{
ArgumentNullException.ThrowIfNull(templateId, nameof(templateId));
+ var validationResults = new List { };
+ var templateIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)templateId
+ );
+ if (templateIdValidationResult != null)
+ {
+ validationResults.Add(templateIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Delete, "template/{template_id}")
.SetPathParameter("template_id", templateId)
@@ -642,7 +1009,8 @@ public async Task DeleteTemplateAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
+
+ response.EnsureSuccessfulResponse();
}
/// Duplicate template
@@ -652,6 +1020,20 @@ public async Task DuplicateTemplateAsync(
)
{
ArgumentNullException.ThrowIfNull(templateId, nameof(templateId));
+ var validationResults = new List { };
+ var templateIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)templateId
+ );
+ if (templateIdValidationResult != null)
+ {
+ validationResults.Add(templateIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Post, "template/{template_id}/duplicate")
.SetPathParameter("template_id", templateId)
@@ -660,9 +1042,9 @@ public async Task DuplicateTemplateAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -676,18 +1058,32 @@ public async Task AddTemplateDocumentAsync(
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
ArgumentNullException.ThrowIfNull(templateId, nameof(templateId));
+ var validationResults = new List { };
+ var templateIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)templateId
+ );
+ if (templateIdValidationResult != null)
+ {
+ validationResults.Add(templateIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Post, "template/{template_id}/document")
.SetPathParameter("template_id", templateId)
- .SetContentAsJson(input, _jsonSerializerOptions)
+ .SetContentAsMultipartFormData(input, _jsonSerializerOptions)
.Build();
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -701,6 +1097,28 @@ public async Task GetTemplateDocumentAsync(
{
ArgumentNullException.ThrowIfNull(templateId, nameof(templateId));
ArgumentNullException.ThrowIfNull(documentId, nameof(documentId));
+ var validationResults = new List { };
+ var templateIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)templateId
+ );
+ if (templateIdValidationResult != null)
+ {
+ validationResults.Add(templateIdValidationResult);
+ }
+ ;
+ var documentIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)documentId
+ );
+ if (documentIdValidationResult != null)
+ {
+ validationResults.Add(documentIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(
HttpMethod.Get,
@@ -713,9 +1131,9 @@ public async Task GetTemplateDocumentAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -727,6 +1145,20 @@ public async Task GetTemplateDocumentsAsync(
)
{
ArgumentNullException.ThrowIfNull(templateId, nameof(templateId));
+ var validationResults = new List { };
+ var templateIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)templateId
+ );
+ if (templateIdValidationResult != null)
+ {
+ validationResults.Add(templateIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Get, "template/{template_id}/documents")
.SetPathParameter("template_id", templateId)
@@ -735,9 +1167,9 @@ public async Task GetTemplateDocumentsAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(
_jsonSerializerOptions,
cancellationToken
@@ -754,6 +1186,20 @@ public async Task AddTemplateSigningStepsAsync(
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
ArgumentNullException.ThrowIfNull(templateId, nameof(templateId));
+ var validationResults = new List { };
+ var templateIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)templateId
+ );
+ if (templateIdValidationResult != null)
+ {
+ validationResults.Add(templateIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Post, "template/{template_id}/signing_steps")
.SetPathParameter("template_id", templateId)
@@ -763,9 +1209,9 @@ public async Task AddTemplateSigningStepsAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -779,6 +1225,20 @@ public async Task RenameTemplateAsync(
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
ArgumentNullException.ThrowIfNull(templateId, nameof(templateId));
+ var validationResults = new List { };
+ var templateIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)templateId
+ );
+ if (templateIdValidationResult != null)
+ {
+ validationResults.Add(templateIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Put, "template/{template_id}/rename")
.SetPathParameter("template_id", templateId)
@@ -788,9 +1248,9 @@ public async Task RenameTemplateAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -804,6 +1264,20 @@ public async Task SetTemplateCommentAsync(
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
ArgumentNullException.ThrowIfNull(templateId, nameof(templateId));
+ var validationResults = new List { };
+ var templateIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)templateId
+ );
+ if (templateIdValidationResult != null)
+ {
+ validationResults.Add(templateIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Put, "template/{template_id}/set_comment")
.SetPathParameter("template_id", templateId)
@@ -813,9 +1287,9 @@ public async Task SetTemplateCommentAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -829,6 +1303,20 @@ public async Task SetTemplateNotificationAsync(
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
ArgumentNullException.ThrowIfNull(templateId, nameof(templateId));
+ var validationResults = new List { };
+ var templateIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)templateId
+ );
+ if (templateIdValidationResult != null)
+ {
+ validationResults.Add(templateIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Put, "template/{template_id}/set_notification")
.SetPathParameter("template_id", templateId)
@@ -838,9 +1326,9 @@ public async Task SetTemplateNotificationAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -853,6 +1341,20 @@ public async Task GetTemplateAnnotationsAsync(
)
{
ArgumentNullException.ThrowIfNull(templateId, nameof(templateId));
+ var validationResults = new List { };
+ var templateIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)templateId
+ );
+ if (templateIdValidationResult != null)
+ {
+ validationResults.Add(templateIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Get, "template/{template_id}/annotations")
.SetPathParameter("template_id", templateId)
@@ -861,9 +1363,9 @@ public async Task GetTemplateAnnotationsAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(
_jsonSerializerOptions,
cancellationToken
@@ -882,6 +1384,28 @@ public async Task GetDocumentTemplateAn
{
ArgumentNullException.ThrowIfNull(templateId, nameof(templateId));
ArgumentNullException.ThrowIfNull(documentId, nameof(documentId));
+ var validationResults = new List { };
+ var templateIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)templateId
+ );
+ if (templateIdValidationResult != null)
+ {
+ validationResults.Add(templateIdValidationResult);
+ }
+ ;
+ var documentIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)documentId
+ );
+ if (documentIdValidationResult != null)
+ {
+ validationResults.Add(documentIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(
HttpMethod.Get,
@@ -894,9 +1418,9 @@ public async Task GetDocumentTemplateAn
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(
_jsonSerializerOptions,
cancellationToken
@@ -914,6 +1438,20 @@ public async Task AddTemplateAnnotationAsync(
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
ArgumentNullException.ThrowIfNull(templateId, nameof(templateId));
+ var validationResults = new List { };
+ var templateIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)templateId
+ );
+ if (templateIdValidationResult != null)
+ {
+ validationResults.Add(templateIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Post, "template/{template_id}/annotation")
.SetPathParameter("template_id", templateId)
@@ -923,9 +1461,9 @@ public async Task AddTemplateAnnotationAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -941,6 +1479,28 @@ public async Task DeleteTemplateAnnotationAsync(
{
ArgumentNullException.ThrowIfNull(templateId, nameof(templateId));
ArgumentNullException.ThrowIfNull(annotationId, nameof(annotationId));
+ var validationResults = new List { };
+ var templateIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)templateId
+ );
+ if (templateIdValidationResult != null)
+ {
+ validationResults.Add(templateIdValidationResult);
+ }
+ ;
+ var annotationIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)annotationId
+ );
+ if (annotationIdValidationResult != null)
+ {
+ validationResults.Add(annotationIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(
HttpMethod.Delete,
@@ -953,7 +1513,8 @@ public async Task DeleteTemplateAnnotationAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
+
+ response.EnsureSuccessfulResponse();
}
/// Create webhook
@@ -963,6 +1524,13 @@ public async Task CreateWebhookAsync(
)
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
+ var validationResults = new List { };
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Post, "webhook")
.SetContentAsJson(input, _jsonSerializerOptions)
@@ -971,9 +1539,9 @@ public async Task CreateWebhookAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(_jsonSerializerOptions, cancellationToken)
.ConfigureAwait(false) ?? throw new Exception("Failed to deserialize response.");
}
@@ -985,6 +1553,13 @@ public async Task ListWebhooksAsync(
)
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
+ var validationResults = new List { };
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Post, "webhooks")
.SetContentAsJson(input, _jsonSerializerOptions)
@@ -993,9 +1568,9 @@ public async Task ListWebhooksAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
return await response
+ .EnsureSuccessfulResponse()
.Content.ReadFromJsonAsync(
_jsonSerializerOptions,
cancellationToken
@@ -1010,6 +1585,20 @@ public async Task DeleteWebhookAsync(
)
{
ArgumentNullException.ThrowIfNull(webhookId, nameof(webhookId));
+ var validationResults = new List { };
+ var webhookIdValidationResult = new StringValidator().ValidateRequired(
+ (string?)webhookId
+ );
+ if (webhookIdValidationResult != null)
+ {
+ validationResults.Add(webhookIdValidationResult);
+ }
+
+ var combinedFailures = validationResults.SelectMany(result => result.Errors).ToList();
+ if (combinedFailures.Any())
+ {
+ throw new Http.Exceptions.ValidationException(combinedFailures);
+ }
var request = new RequestBuilder(HttpMethod.Delete, "webhook/{webhook_id}")
.SetPathParameter("webhook_id", webhookId)
@@ -1018,6 +1607,7 @@ public async Task DeleteWebhookAsync(
var response = await _httpClient
.SendAsync(request, cancellationToken)
.ConfigureAwait(false);
- response.EnsureSuccessStatusCode();
+
+ response.EnsureSuccessfulResponse();
}
}
diff --git a/Signplus/SignplusClient.cs b/Alohi.Signplus/SignplusClient.cs
similarity index 80%
rename from Signplus/SignplusClient.cs
rename to Alohi.Signplus/SignplusClient.cs
index 89524c4..d487f53 100644
--- a/Signplus/SignplusClient.cs
+++ b/Alohi.Signplus/SignplusClient.cs
@@ -1,9 +1,10 @@
-using Signplus.Config;
-using Signplus.Http.Handlers;
-using Signplus.Services;
-using Environment = Signplus.Http.Environment;
+using Alohi.Signplus.Config;
+using Alohi.Signplus.Http.Extensions;
+using Alohi.Signplus.Http.Handlers;
+using Alohi.Signplus.Services;
+using Environment = Alohi.Signplus.Http.Environment;
-namespace Signplus;
+namespace Alohi.Signplus;
public class SignplusClient : IDisposable
{
@@ -19,13 +20,13 @@ public SignplusClient(SignplusConfig? config = null)
{
Header = "Authorization",
Prefix = "Bearer",
- Token = config?.AccessToken
+ Token = config?.AccessToken,
};
_httpClient = new HttpClient(_accessTokenHandler)
{
BaseAddress = config?.Environment?.Uri ?? Environment.Default.Uri,
- DefaultRequestHeaders = { { "user-agent", "dotnet/7.0" } }
+ DefaultRequestHeaders = { { "user-agent", "dotnet/7.0" } },
};
Signplus = new SignplusService(_httpClient);
@@ -40,7 +41,7 @@ public void SetEnvironment(Environment environment)
}
///
- /// Sets the base URL for entire SDK.
+ /// Sets the base URL for the entire SDK.
///
public void SetBaseUrl(string baseUrl)
{
@@ -52,7 +53,7 @@ public void SetBaseUrl(string baseUrl)
///
public void SetBaseUrl(Uri uri)
{
- _httpClient.BaseAddress = uri;
+ _httpClient.BaseAddress = uri.EnsureTrailingSlash();
}
///
diff --git a/Alohi.Signplus/Validation/AddAnnotationRequestValidator.cs b/Alohi.Signplus/Validation/AddAnnotationRequestValidator.cs
new file mode 100644
index 0000000..09afeac
--- /dev/null
+++ b/Alohi.Signplus/Validation/AddAnnotationRequestValidator.cs
@@ -0,0 +1,33 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class AddAnnotationRequestValidator : AbstractValidator
+{
+ public AddAnnotationRequestValidator()
+ {
+ RuleFor(AddAnnotationRequest => AddAnnotationRequest.DocumentId)
+ .NotNull()
+ .WithMessage("Field document_id is required.");
+ RuleFor(AddAnnotationRequest => AddAnnotationRequest.Page)
+ .NotNull()
+ .WithMessage("Field page is required.");
+ RuleFor(AddAnnotationRequest => AddAnnotationRequest.X)
+ .NotNull()
+ .WithMessage("Field x is required.");
+ RuleFor(AddAnnotationRequest => AddAnnotationRequest.Y)
+ .NotNull()
+ .WithMessage("Field y is required.");
+ RuleFor(AddAnnotationRequest => AddAnnotationRequest.Width)
+ .NotNull()
+ .WithMessage("Field width is required.");
+ RuleFor(AddAnnotationRequest => AddAnnotationRequest.Height)
+ .NotNull()
+ .WithMessage("Field height is required.");
+ RuleFor(AddAnnotationRequest => AddAnnotationRequest.Type_)
+ .NotNull()
+ .WithMessage("Field type is required.");
+ }
+}
diff --git a/Alohi.Signplus/Validation/AddEnvelopeDocumentRequestValidator.cs b/Alohi.Signplus/Validation/AddEnvelopeDocumentRequestValidator.cs
new file mode 100644
index 0000000..29cd4be
--- /dev/null
+++ b/Alohi.Signplus/Validation/AddEnvelopeDocumentRequestValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class AddEnvelopeDocumentRequestValidator : AbstractValidator
+{
+ public AddEnvelopeDocumentRequestValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/AddEnvelopeSigningStepsRequestValidator.cs b/Alohi.Signplus/Validation/AddEnvelopeSigningStepsRequestValidator.cs
new file mode 100644
index 0000000..58d323c
--- /dev/null
+++ b/Alohi.Signplus/Validation/AddEnvelopeSigningStepsRequestValidator.cs
@@ -0,0 +1,11 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class AddEnvelopeSigningStepsRequestValidator
+ : AbstractValidator
+{
+ public AddEnvelopeSigningStepsRequestValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/AddTemplateDocumentRequestValidator.cs b/Alohi.Signplus/Validation/AddTemplateDocumentRequestValidator.cs
new file mode 100644
index 0000000..ced160d
--- /dev/null
+++ b/Alohi.Signplus/Validation/AddTemplateDocumentRequestValidator.cs
@@ -0,0 +1,15 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class AddTemplateDocumentRequestValidator : AbstractValidator
+{
+ public AddTemplateDocumentRequestValidator()
+ {
+ RuleFor(AddTemplateDocumentRequest => AddTemplateDocumentRequest.File)
+ .NotNull()
+ .WithMessage("Field file is required.");
+ }
+}
diff --git a/Alohi.Signplus/Validation/AddTemplateSigningStepsRequestValidator.cs b/Alohi.Signplus/Validation/AddTemplateSigningStepsRequestValidator.cs
new file mode 100644
index 0000000..22d7e9e
--- /dev/null
+++ b/Alohi.Signplus/Validation/AddTemplateSigningStepsRequestValidator.cs
@@ -0,0 +1,16 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class AddTemplateSigningStepsRequestValidator
+ : AbstractValidator
+{
+ public AddTemplateSigningStepsRequestValidator()
+ {
+ RuleFor(AddTemplateSigningStepsRequest => AddTemplateSigningStepsRequest.SigningSteps)
+ .NotNull()
+ .WithMessage("Field signing_steps is required.");
+ }
+}
diff --git a/Alohi.Signplus/Validation/AnnotationCheckboxStyleValidator.cs b/Alohi.Signplus/Validation/AnnotationCheckboxStyleValidator.cs
new file mode 100644
index 0000000..ee7c2ed
--- /dev/null
+++ b/Alohi.Signplus/Validation/AnnotationCheckboxStyleValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class AnnotationCheckboxStyleValidator : AbstractValidator
+{
+ public AnnotationCheckboxStyleValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/AnnotationCheckboxValidator.cs b/Alohi.Signplus/Validation/AnnotationCheckboxValidator.cs
new file mode 100644
index 0000000..23c3625
--- /dev/null
+++ b/Alohi.Signplus/Validation/AnnotationCheckboxValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class AnnotationCheckboxValidator : AbstractValidator
+{
+ public AnnotationCheckboxValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/AnnotationDateTimeFormatValidator.cs b/Alohi.Signplus/Validation/AnnotationDateTimeFormatValidator.cs
new file mode 100644
index 0000000..89edaa4
--- /dev/null
+++ b/Alohi.Signplus/Validation/AnnotationDateTimeFormatValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class AnnotationDateTimeFormatValidator : AbstractValidator
+{
+ public AnnotationDateTimeFormatValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/AnnotationDateTimeValidator.cs b/Alohi.Signplus/Validation/AnnotationDateTimeValidator.cs
new file mode 100644
index 0000000..b5cf1e6
--- /dev/null
+++ b/Alohi.Signplus/Validation/AnnotationDateTimeValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class AnnotationDateTimeValidator : AbstractValidator
+{
+ public AnnotationDateTimeValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/AnnotationFontFamilyValidator.cs b/Alohi.Signplus/Validation/AnnotationFontFamilyValidator.cs
new file mode 100644
index 0000000..e807363
--- /dev/null
+++ b/Alohi.Signplus/Validation/AnnotationFontFamilyValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class AnnotationFontFamilyValidator : AbstractValidator
+{
+ public AnnotationFontFamilyValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/AnnotationFontValidator.cs b/Alohi.Signplus/Validation/AnnotationFontValidator.cs
new file mode 100644
index 0000000..d0e4376
--- /dev/null
+++ b/Alohi.Signplus/Validation/AnnotationFontValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class AnnotationFontValidator : AbstractValidator
+{
+ public AnnotationFontValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/AnnotationInitialsValidator.cs b/Alohi.Signplus/Validation/AnnotationInitialsValidator.cs
new file mode 100644
index 0000000..407c0a4
--- /dev/null
+++ b/Alohi.Signplus/Validation/AnnotationInitialsValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class AnnotationInitialsValidator : AbstractValidator
+{
+ public AnnotationInitialsValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/AnnotationSignatureValidator.cs b/Alohi.Signplus/Validation/AnnotationSignatureValidator.cs
new file mode 100644
index 0000000..39b48a7
--- /dev/null
+++ b/Alohi.Signplus/Validation/AnnotationSignatureValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class AnnotationSignatureValidator : AbstractValidator
+{
+ public AnnotationSignatureValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/AnnotationTextValidator.cs b/Alohi.Signplus/Validation/AnnotationTextValidator.cs
new file mode 100644
index 0000000..9daf851
--- /dev/null
+++ b/Alohi.Signplus/Validation/AnnotationTextValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class AnnotationTextValidator : AbstractValidator
+{
+ public AnnotationTextValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/AnnotationTypeValidator.cs b/Alohi.Signplus/Validation/AnnotationTypeValidator.cs
new file mode 100644
index 0000000..4ac2fb3
--- /dev/null
+++ b/Alohi.Signplus/Validation/AnnotationTypeValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class AnnotationTypeValidator : AbstractValidator
+{
+ public AnnotationTypeValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/AnnotationValidator.cs b/Alohi.Signplus/Validation/AnnotationValidator.cs
new file mode 100644
index 0000000..0625489
--- /dev/null
+++ b/Alohi.Signplus/Validation/AnnotationValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class AnnotationValidator : AbstractValidator
+{
+ public AnnotationValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/CreateEnvelopeFromTemplateRequestValidator.cs b/Alohi.Signplus/Validation/CreateEnvelopeFromTemplateRequestValidator.cs
new file mode 100644
index 0000000..e65f918
--- /dev/null
+++ b/Alohi.Signplus/Validation/CreateEnvelopeFromTemplateRequestValidator.cs
@@ -0,0 +1,16 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class CreateEnvelopeFromTemplateRequestValidator
+ : AbstractValidator
+{
+ public CreateEnvelopeFromTemplateRequestValidator()
+ {
+ RuleFor(CreateEnvelopeFromTemplateRequest => CreateEnvelopeFromTemplateRequest.Name)
+ .NotNull()
+ .WithMessage("Field name is required.");
+ }
+}
diff --git a/Alohi.Signplus/Validation/CreateEnvelopeRequestValidator.cs b/Alohi.Signplus/Validation/CreateEnvelopeRequestValidator.cs
new file mode 100644
index 0000000..60ade7d
--- /dev/null
+++ b/Alohi.Signplus/Validation/CreateEnvelopeRequestValidator.cs
@@ -0,0 +1,18 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class CreateEnvelopeRequestValidator : AbstractValidator
+{
+ public CreateEnvelopeRequestValidator()
+ {
+ RuleFor(CreateEnvelopeRequest => CreateEnvelopeRequest.Name)
+ .NotNull()
+ .WithMessage("Field name is required.");
+ RuleFor(CreateEnvelopeRequest => CreateEnvelopeRequest.LegalityLevel)
+ .NotNull()
+ .WithMessage("Field legality_level is required.");
+ }
+}
diff --git a/Alohi.Signplus/Validation/CreateTemplateRequestValidator.cs b/Alohi.Signplus/Validation/CreateTemplateRequestValidator.cs
new file mode 100644
index 0000000..da556d9
--- /dev/null
+++ b/Alohi.Signplus/Validation/CreateTemplateRequestValidator.cs
@@ -0,0 +1,15 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class CreateTemplateRequestValidator : AbstractValidator
+{
+ public CreateTemplateRequestValidator()
+ {
+ RuleFor(CreateTemplateRequest => CreateTemplateRequest.Name)
+ .NotNull()
+ .WithMessage("Field name is required.");
+ }
+}
diff --git a/Alohi.Signplus/Validation/CreateWebhookRequestValidator.cs b/Alohi.Signplus/Validation/CreateWebhookRequestValidator.cs
new file mode 100644
index 0000000..091315f
--- /dev/null
+++ b/Alohi.Signplus/Validation/CreateWebhookRequestValidator.cs
@@ -0,0 +1,18 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class CreateWebhookRequestValidator : AbstractValidator
+{
+ public CreateWebhookRequestValidator()
+ {
+ RuleFor(CreateWebhookRequest => CreateWebhookRequest.Event_)
+ .NotNull()
+ .WithMessage("Field event is required.");
+ RuleFor(CreateWebhookRequest => CreateWebhookRequest.Target)
+ .NotNull()
+ .WithMessage("Field target is required.");
+ }
+}
diff --git a/Alohi.Signplus/Validation/DocumentValidator.cs b/Alohi.Signplus/Validation/DocumentValidator.cs
new file mode 100644
index 0000000..437f008
--- /dev/null
+++ b/Alohi.Signplus/Validation/DocumentValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class DocumentValidator : AbstractValidator
+{
+ public DocumentValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/DynamicFieldValidator.cs b/Alohi.Signplus/Validation/DynamicFieldValidator.cs
new file mode 100644
index 0000000..9ab352d
--- /dev/null
+++ b/Alohi.Signplus/Validation/DynamicFieldValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class DynamicFieldValidator : AbstractValidator
+{
+ public DynamicFieldValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/EnvelopeFlowTypeValidator.cs b/Alohi.Signplus/Validation/EnvelopeFlowTypeValidator.cs
new file mode 100644
index 0000000..58a85eb
--- /dev/null
+++ b/Alohi.Signplus/Validation/EnvelopeFlowTypeValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class EnvelopeFlowTypeValidator : AbstractValidator
+{
+ public EnvelopeFlowTypeValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/EnvelopeLegalityLevelValidator.cs b/Alohi.Signplus/Validation/EnvelopeLegalityLevelValidator.cs
new file mode 100644
index 0000000..b34525a
--- /dev/null
+++ b/Alohi.Signplus/Validation/EnvelopeLegalityLevelValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class EnvelopeLegalityLevelValidator : AbstractValidator
+{
+ public EnvelopeLegalityLevelValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/EnvelopeNotificationValidator.cs b/Alohi.Signplus/Validation/EnvelopeNotificationValidator.cs
new file mode 100644
index 0000000..2d3492e
--- /dev/null
+++ b/Alohi.Signplus/Validation/EnvelopeNotificationValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class EnvelopeNotificationValidator : AbstractValidator
+{
+ public EnvelopeNotificationValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/EnvelopeOrderFieldValidator.cs b/Alohi.Signplus/Validation/EnvelopeOrderFieldValidator.cs
new file mode 100644
index 0000000..3d26e34
--- /dev/null
+++ b/Alohi.Signplus/Validation/EnvelopeOrderFieldValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class EnvelopeOrderFieldValidator : AbstractValidator
+{
+ public EnvelopeOrderFieldValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/EnvelopeStatusValidator.cs b/Alohi.Signplus/Validation/EnvelopeStatusValidator.cs
new file mode 100644
index 0000000..d21cb7b
--- /dev/null
+++ b/Alohi.Signplus/Validation/EnvelopeStatusValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class EnvelopeStatusValidator : AbstractValidator
+{
+ public EnvelopeStatusValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/EnvelopeValidator.cs b/Alohi.Signplus/Validation/EnvelopeValidator.cs
new file mode 100644
index 0000000..3fa473c
--- /dev/null
+++ b/Alohi.Signplus/Validation/EnvelopeValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class EnvelopeValidator : AbstractValidator
+{
+ public EnvelopeValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/Extensions/ValidationExtensions.cs b/Alohi.Signplus/Validation/Extensions/ValidationExtensions.cs
new file mode 100644
index 0000000..f9dc19f
--- /dev/null
+++ b/Alohi.Signplus/Validation/Extensions/ValidationExtensions.cs
@@ -0,0 +1,30 @@
+namespace Alohi.Signplus.Validation.Extensions;
+
+using FluentValidation;
+using FluentValidation.Results;
+
+public static class ValidatorExtensions
+{
+ public static ValidationResult ValidateOptional(this AbstractValidator validator, T value)
+ {
+ if (value == null)
+ {
+ return new ValidationResult(
+ new[]
+ {
+ new ValidationFailure(nameof(value), "Value is required and cannot be null."),
+ }
+ );
+ }
+ return validator.Validate(value);
+ }
+
+ public static ValidationResult ValidateRequired(this AbstractValidator validator, T value)
+ {
+ if (value == null)
+ {
+ return new ValidationResult();
+ }
+ return validator.Validate(value);
+ }
+}
diff --git a/Alohi.Signplus/Validation/FloatValidator.cs b/Alohi.Signplus/Validation/FloatValidator.cs
new file mode 100644
index 0000000..608868e
--- /dev/null
+++ b/Alohi.Signplus/Validation/FloatValidator.cs
@@ -0,0 +1,74 @@
+namespace Alohi.Signplus.Validation;
+
+using FluentValidation;
+using FluentValidation.Results;
+
+public class FloatValidator : AbstractValidator
+{
+ private readonly string _name;
+
+ public FloatValidator(string name)
+ {
+ _name = name;
+ }
+
+ public FloatValidator WithGreaterThan(double min)
+ {
+ When(
+ num => num != null,
+ () =>
+ {
+ RuleFor(num => num).Must(num => num > min);
+ }
+ );
+ return this;
+ }
+
+ public FloatValidator WithGreaterThanOrEqualTo(double min)
+ {
+ When(
+ num => num != null,
+ () =>
+ {
+ RuleFor(num => num).GreaterThanOrEqualTo(min);
+ }
+ );
+ return this;
+ }
+
+ public FloatValidator WithLessThan(double max)
+ {
+ When(
+ num => num != null,
+ () =>
+ {
+ RuleFor(num => num).Must(num => num < max);
+ }
+ );
+ return this;
+ }
+
+ public FloatValidator WithLessThanOrEqualTo(double max)
+ {
+ When(
+ num => num != null,
+ () =>
+ {
+ RuleFor(num => num).LessThanOrEqualTo(max);
+ }
+ );
+ return this;
+ }
+
+ public FloatValidator WithMultipleOf(double multipleOf)
+ {
+ When(
+ num => num != null,
+ () =>
+ {
+ RuleFor(num => num).Must(value => value % multipleOf == 0);
+ }
+ );
+ return this;
+ }
+}
diff --git a/Alohi.Signplus/Validation/ListEnvelopeDocumentAnnotationsResponseValidator.cs b/Alohi.Signplus/Validation/ListEnvelopeDocumentAnnotationsResponseValidator.cs
new file mode 100644
index 0000000..b028760
--- /dev/null
+++ b/Alohi.Signplus/Validation/ListEnvelopeDocumentAnnotationsResponseValidator.cs
@@ -0,0 +1,11 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class ListEnvelopeDocumentAnnotationsResponseValidator
+ : AbstractValidator
+{
+ public ListEnvelopeDocumentAnnotationsResponseValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/ListEnvelopeDocumentsResponseValidator.cs b/Alohi.Signplus/Validation/ListEnvelopeDocumentsResponseValidator.cs
new file mode 100644
index 0000000..5b7908c
--- /dev/null
+++ b/Alohi.Signplus/Validation/ListEnvelopeDocumentsResponseValidator.cs
@@ -0,0 +1,11 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class ListEnvelopeDocumentsResponseValidator
+ : AbstractValidator
+{
+ public ListEnvelopeDocumentsResponseValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/ListEnvelopesRequestValidator.cs b/Alohi.Signplus/Validation/ListEnvelopesRequestValidator.cs
new file mode 100644
index 0000000..6966eba
--- /dev/null
+++ b/Alohi.Signplus/Validation/ListEnvelopesRequestValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class ListEnvelopesRequestValidator : AbstractValidator
+{
+ public ListEnvelopesRequestValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/ListEnvelopesResponseValidator.cs b/Alohi.Signplus/Validation/ListEnvelopesResponseValidator.cs
new file mode 100644
index 0000000..328e59b
--- /dev/null
+++ b/Alohi.Signplus/Validation/ListEnvelopesResponseValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class ListEnvelopesResponseValidator : AbstractValidator
+{
+ public ListEnvelopesResponseValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/ListTemplateAnnotationsResponseValidator.cs b/Alohi.Signplus/Validation/ListTemplateAnnotationsResponseValidator.cs
new file mode 100644
index 0000000..5549ba9
--- /dev/null
+++ b/Alohi.Signplus/Validation/ListTemplateAnnotationsResponseValidator.cs
@@ -0,0 +1,11 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class ListTemplateAnnotationsResponseValidator
+ : AbstractValidator
+{
+ public ListTemplateAnnotationsResponseValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/ListTemplateDocumentAnnotationsResponseValidator.cs b/Alohi.Signplus/Validation/ListTemplateDocumentAnnotationsResponseValidator.cs
new file mode 100644
index 0000000..2a2f788
--- /dev/null
+++ b/Alohi.Signplus/Validation/ListTemplateDocumentAnnotationsResponseValidator.cs
@@ -0,0 +1,11 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class ListTemplateDocumentAnnotationsResponseValidator
+ : AbstractValidator
+{
+ public ListTemplateDocumentAnnotationsResponseValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/ListTemplateDocumentsResponseValidator.cs b/Alohi.Signplus/Validation/ListTemplateDocumentsResponseValidator.cs
new file mode 100644
index 0000000..45d9a43
--- /dev/null
+++ b/Alohi.Signplus/Validation/ListTemplateDocumentsResponseValidator.cs
@@ -0,0 +1,11 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class ListTemplateDocumentsResponseValidator
+ : AbstractValidator
+{
+ public ListTemplateDocumentsResponseValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/ListTemplatesRequestValidator.cs b/Alohi.Signplus/Validation/ListTemplatesRequestValidator.cs
new file mode 100644
index 0000000..9a13151
--- /dev/null
+++ b/Alohi.Signplus/Validation/ListTemplatesRequestValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class ListTemplatesRequestValidator : AbstractValidator
+{
+ public ListTemplatesRequestValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/ListTemplatesResponseValidator.cs b/Alohi.Signplus/Validation/ListTemplatesResponseValidator.cs
new file mode 100644
index 0000000..3ff5efb
--- /dev/null
+++ b/Alohi.Signplus/Validation/ListTemplatesResponseValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class ListTemplatesResponseValidator : AbstractValidator
+{
+ public ListTemplatesResponseValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/ListValidator.cs b/Alohi.Signplus/Validation/ListValidator.cs
new file mode 100644
index 0000000..0a88881
--- /dev/null
+++ b/Alohi.Signplus/Validation/ListValidator.cs
@@ -0,0 +1,68 @@
+namespace Alohi.Signplus.Validation;
+
+using System.Collections.Generic;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class ListValidator : AbstractValidator?>
+{
+ public ListValidator WithMaximumCount(int maxCount)
+ {
+ When(
+ num => num != null,
+ () =>
+ {
+ RuleFor(list => list).Must(list => list == null || list.Count <= maxCount);
+ }
+ );
+ return this;
+ }
+
+ public ListValidator WithMinimumCount(int minCount)
+ {
+ When(
+ num => num != null,
+ () =>
+ {
+ RuleFor(list => list).Must(list => list == null || list.Count >= minCount);
+ }
+ );
+ return this;
+ }
+
+ public ListValidator WithUniqueItems()
+ {
+ When(
+ num => num != null,
+ () =>
+ {
+ RuleFor(list => list)
+ .Must(list => list == null || list.Distinct().Count() == list.Count);
+ }
+ );
+ return this;
+ }
+
+ public ValidationResult ValidateOptionalList(List? value)
+ {
+ if (value == null)
+ {
+ return new ValidationResult();
+ }
+ return Validate(value);
+ }
+
+ public ValidationResult ValidateRequiredList(List? value)
+ {
+ if (value == null)
+ {
+ return new ValidationResult(
+ new[]
+ {
+ new ValidationFailure(nameof(value), "Value is required and cannot be null."),
+ }
+ );
+ }
+ return Validate(value);
+ }
+}
diff --git a/Alohi.Signplus/Validation/ListWebhooksRequestValidator.cs b/Alohi.Signplus/Validation/ListWebhooksRequestValidator.cs
new file mode 100644
index 0000000..24cb620
--- /dev/null
+++ b/Alohi.Signplus/Validation/ListWebhooksRequestValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class ListWebhooksRequestValidator : AbstractValidator
+{
+ public ListWebhooksRequestValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/ListWebhooksResponseValidator.cs b/Alohi.Signplus/Validation/ListWebhooksResponseValidator.cs
new file mode 100644
index 0000000..102679e
--- /dev/null
+++ b/Alohi.Signplus/Validation/ListWebhooksResponseValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class ListWebhooksResponseValidator : AbstractValidator
+{
+ public ListWebhooksResponseValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/NumberValidator.cs b/Alohi.Signplus/Validation/NumberValidator.cs
new file mode 100644
index 0000000..e9e6f22
--- /dev/null
+++ b/Alohi.Signplus/Validation/NumberValidator.cs
@@ -0,0 +1,66 @@
+namespace Alohi.Signplus.Validation;
+
+using FluentValidation;
+
+public class NumberValidator : AbstractValidator
+{
+ public NumberValidator WithGreaterThan(long min)
+ {
+ When(
+ num => num != null,
+ () =>
+ {
+ RuleFor(num => num).Must(num => num > min);
+ }
+ );
+ return this;
+ }
+
+ public NumberValidator WithGreaterThanOrEqualTo(long min)
+ {
+ When(
+ num => num != null,
+ () =>
+ {
+ RuleFor(num => num).GreaterThanOrEqualTo(min);
+ }
+ );
+ return this;
+ }
+
+ public NumberValidator WithLessThan(long max)
+ {
+ When(
+ num => num != null,
+ () =>
+ {
+ RuleFor(num => num).Must(num => num < max);
+ }
+ );
+ return this;
+ }
+
+ public NumberValidator WithLessThanOrEqualTo(long max)
+ {
+ When(
+ num => num != null,
+ () =>
+ {
+ RuleFor(num => num).LessThanOrEqualTo(max);
+ }
+ );
+ return this;
+ }
+
+ public NumberValidator WithMultipleOf(long multipleOf)
+ {
+ When(
+ num => num != null,
+ () =>
+ {
+ RuleFor(num => num).Must(value => value % multipleOf == 0);
+ }
+ );
+ return this;
+ }
+}
diff --git a/Alohi.Signplus/Validation/PageValidator.cs b/Alohi.Signplus/Validation/PageValidator.cs
new file mode 100644
index 0000000..1cb537f
--- /dev/null
+++ b/Alohi.Signplus/Validation/PageValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class PageValidator : AbstractValidator
+{
+ public PageValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/RecipientRoleValidator.cs b/Alohi.Signplus/Validation/RecipientRoleValidator.cs
new file mode 100644
index 0000000..405bdd4
--- /dev/null
+++ b/Alohi.Signplus/Validation/RecipientRoleValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class RecipientRoleValidator : AbstractValidator
+{
+ public RecipientRoleValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/RecipientValidator.cs b/Alohi.Signplus/Validation/RecipientValidator.cs
new file mode 100644
index 0000000..61d854d
--- /dev/null
+++ b/Alohi.Signplus/Validation/RecipientValidator.cs
@@ -0,0 +1,15 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class RecipientValidator : AbstractValidator
+{
+ public RecipientValidator()
+ {
+ RuleFor(Recipient => Recipient.Name).NotNull().WithMessage("Field name is required.");
+ RuleFor(Recipient => Recipient.Email).NotNull().WithMessage("Field email is required.");
+ RuleFor(Recipient => Recipient.Role).NotNull().WithMessage("Field role is required.");
+ }
+}
diff --git a/Alohi.Signplus/Validation/RecipientVerificationTypeValidator.cs b/Alohi.Signplus/Validation/RecipientVerificationTypeValidator.cs
new file mode 100644
index 0000000..3d9df45
--- /dev/null
+++ b/Alohi.Signplus/Validation/RecipientVerificationTypeValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class RecipientVerificationTypeValidator : AbstractValidator
+{
+ public RecipientVerificationTypeValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/RecipientVerificationValidator.cs b/Alohi.Signplus/Validation/RecipientVerificationValidator.cs
new file mode 100644
index 0000000..1cacdca
--- /dev/null
+++ b/Alohi.Signplus/Validation/RecipientVerificationValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class RecipientVerificationValidator : AbstractValidator
+{
+ public RecipientVerificationValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/RenameEnvelopeRequestValidator.cs b/Alohi.Signplus/Validation/RenameEnvelopeRequestValidator.cs
new file mode 100644
index 0000000..c242e60
--- /dev/null
+++ b/Alohi.Signplus/Validation/RenameEnvelopeRequestValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class RenameEnvelopeRequestValidator : AbstractValidator
+{
+ public RenameEnvelopeRequestValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/RenameTemplateRequestValidator.cs b/Alohi.Signplus/Validation/RenameTemplateRequestValidator.cs
new file mode 100644
index 0000000..c9590db
--- /dev/null
+++ b/Alohi.Signplus/Validation/RenameTemplateRequestValidator.cs
@@ -0,0 +1,15 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class RenameTemplateRequestValidator : AbstractValidator
+{
+ public RenameTemplateRequestValidator()
+ {
+ RuleFor(RenameTemplateRequest => RenameTemplateRequest.Name)
+ .NotNull()
+ .WithMessage("Field name is required.");
+ }
+}
diff --git a/Alohi.Signplus/Validation/SetEnvelopeCommentRequestValidator.cs b/Alohi.Signplus/Validation/SetEnvelopeCommentRequestValidator.cs
new file mode 100644
index 0000000..1ea7b0b
--- /dev/null
+++ b/Alohi.Signplus/Validation/SetEnvelopeCommentRequestValidator.cs
@@ -0,0 +1,15 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class SetEnvelopeCommentRequestValidator : AbstractValidator
+{
+ public SetEnvelopeCommentRequestValidator()
+ {
+ RuleFor(SetEnvelopeCommentRequest => SetEnvelopeCommentRequest.Comment)
+ .NotNull()
+ .WithMessage("Field comment is required.");
+ }
+}
diff --git a/Alohi.Signplus/Validation/SetEnvelopeDynamicFieldsRequestValidator.cs b/Alohi.Signplus/Validation/SetEnvelopeDynamicFieldsRequestValidator.cs
new file mode 100644
index 0000000..9f8021f
--- /dev/null
+++ b/Alohi.Signplus/Validation/SetEnvelopeDynamicFieldsRequestValidator.cs
@@ -0,0 +1,16 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class SetEnvelopeDynamicFieldsRequestValidator
+ : AbstractValidator
+{
+ public SetEnvelopeDynamicFieldsRequestValidator()
+ {
+ RuleFor(SetEnvelopeDynamicFieldsRequest => SetEnvelopeDynamicFieldsRequest.DynamicFields)
+ .NotNull()
+ .WithMessage("Field dynamic_fields is required.");
+ }
+}
diff --git a/Alohi.Signplus/Validation/SetEnvelopeExpirationRequestValidator.cs b/Alohi.Signplus/Validation/SetEnvelopeExpirationRequestValidator.cs
new file mode 100644
index 0000000..0094200
--- /dev/null
+++ b/Alohi.Signplus/Validation/SetEnvelopeExpirationRequestValidator.cs
@@ -0,0 +1,16 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class SetEnvelopeExpirationRequestValidator
+ : AbstractValidator
+{
+ public SetEnvelopeExpirationRequestValidator()
+ {
+ RuleFor(SetEnvelopeExpirationRequest => SetEnvelopeExpirationRequest.ExpiresAt)
+ .NotNull()
+ .WithMessage("Field expires_at is required.");
+ }
+}
diff --git a/Alohi.Signplus/Validation/SetEnvelopeLegalityLevelRequestValidator.cs b/Alohi.Signplus/Validation/SetEnvelopeLegalityLevelRequestValidator.cs
new file mode 100644
index 0000000..491d579
--- /dev/null
+++ b/Alohi.Signplus/Validation/SetEnvelopeLegalityLevelRequestValidator.cs
@@ -0,0 +1,11 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class SetEnvelopeLegalityLevelRequestValidator
+ : AbstractValidator
+{
+ public SetEnvelopeLegalityLevelRequestValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/SetTemplateCommentRequestValidator.cs b/Alohi.Signplus/Validation/SetTemplateCommentRequestValidator.cs
new file mode 100644
index 0000000..c1b84bd
--- /dev/null
+++ b/Alohi.Signplus/Validation/SetTemplateCommentRequestValidator.cs
@@ -0,0 +1,15 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class SetTemplateCommentRequestValidator : AbstractValidator
+{
+ public SetTemplateCommentRequestValidator()
+ {
+ RuleFor(SetTemplateCommentRequest => SetTemplateCommentRequest.Comment)
+ .NotNull()
+ .WithMessage("Field comment is required.");
+ }
+}
diff --git a/Alohi.Signplus/Validation/SigningStepValidator.cs b/Alohi.Signplus/Validation/SigningStepValidator.cs
new file mode 100644
index 0000000..1fe181f
--- /dev/null
+++ b/Alohi.Signplus/Validation/SigningStepValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class SigningStepValidator : AbstractValidator
+{
+ public SigningStepValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/StringValidator.cs b/Alohi.Signplus/Validation/StringValidator.cs
new file mode 100644
index 0000000..1e3d5ff
--- /dev/null
+++ b/Alohi.Signplus/Validation/StringValidator.cs
@@ -0,0 +1,42 @@
+namespace Alohi.Signplus.Validation;
+
+using FluentValidation;
+
+public class StringValidator : AbstractValidator
+{
+ public StringValidator WithMaximumLength(int maxLength)
+ {
+ When(
+ num => num != null,
+ () =>
+ {
+ RuleFor(str => str).MaximumLength(maxLength);
+ }
+ );
+ return this;
+ }
+
+ public StringValidator WithMinimumLength(int minLength)
+ {
+ When(
+ num => num != null,
+ () =>
+ {
+ RuleFor(str => str).MinimumLength(minLength);
+ }
+ );
+ return this;
+ }
+
+ public StringValidator WithMatch(string pattern)
+ {
+ When(
+ str => str != null,
+ () =>
+ {
+ RuleFor(str => str).Matches(pattern);
+ }
+ );
+ return this;
+ }
+}
diff --git a/Alohi.Signplus/Validation/TemplateOrderFieldValidator.cs b/Alohi.Signplus/Validation/TemplateOrderFieldValidator.cs
new file mode 100644
index 0000000..d2dae3e
--- /dev/null
+++ b/Alohi.Signplus/Validation/TemplateOrderFieldValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class TemplateOrderFieldValidator : AbstractValidator
+{
+ public TemplateOrderFieldValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/TemplateRecipientRoleValidator.cs b/Alohi.Signplus/Validation/TemplateRecipientRoleValidator.cs
new file mode 100644
index 0000000..dd7daae
--- /dev/null
+++ b/Alohi.Signplus/Validation/TemplateRecipientRoleValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class TemplateRecipientRoleValidator : AbstractValidator
+{
+ public TemplateRecipientRoleValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/TemplateRecipientValidator.cs b/Alohi.Signplus/Validation/TemplateRecipientValidator.cs
new file mode 100644
index 0000000..477f872
--- /dev/null
+++ b/Alohi.Signplus/Validation/TemplateRecipientValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class TemplateRecipientValidator : AbstractValidator
+{
+ public TemplateRecipientValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/TemplateSigningStepValidator.cs b/Alohi.Signplus/Validation/TemplateSigningStepValidator.cs
new file mode 100644
index 0000000..1df1c99
--- /dev/null
+++ b/Alohi.Signplus/Validation/TemplateSigningStepValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class TemplateSigningStepValidator : AbstractValidator
+{
+ public TemplateSigningStepValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/TemplateValidator.cs b/Alohi.Signplus/Validation/TemplateValidator.cs
new file mode 100644
index 0000000..beb5dc7
--- /dev/null
+++ b/Alohi.Signplus/Validation/TemplateValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class TemplateValidator : AbstractValidator
+{
+ public TemplateValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/WebhookEventValidator.cs b/Alohi.Signplus/Validation/WebhookEventValidator.cs
new file mode 100644
index 0000000..4e24680
--- /dev/null
+++ b/Alohi.Signplus/Validation/WebhookEventValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class WebhookEventValidator : AbstractValidator
+{
+ public WebhookEventValidator() { }
+}
diff --git a/Alohi.Signplus/Validation/WebhookValidator.cs b/Alohi.Signplus/Validation/WebhookValidator.cs
new file mode 100644
index 0000000..6ce54c3
--- /dev/null
+++ b/Alohi.Signplus/Validation/WebhookValidator.cs
@@ -0,0 +1,10 @@
+namespace Alohi.Signplus.Validation;
+
+using Alohi.Signplus.Models;
+using FluentValidation;
+using FluentValidation.Results;
+
+public class WebhookValidator : AbstractValidator
+{
+ public WebhookValidator() { }
+}
diff --git a/Example/.gitignore b/Example/.gitignore
index 8a30d25..81dc9a0 100644
--- a/Example/.gitignore
+++ b/Example/.gitignore
@@ -396,3 +396,7 @@ FodyWeavers.xsd
# JetBrains Rider
*.sln.iml
+
+# OS generated files
+.DS_Store
+Thumbs.db
diff --git a/Example/Example.csproj b/Example/Example.csproj
index ad1a657..64b7633 100644
--- a/Example/Example.csproj
+++ b/Example/Example.csproj
@@ -1,7 +1,7 @@
-
+
diff --git a/Example/Program.cs b/Example/Program.cs
index 1018550..fc399cc 100644
--- a/Example/Program.cs
+++ b/Example/Program.cs
@@ -1,11 +1,11 @@
-using Signplus;
-using Signplus.Config;
-using Environment = Signplus.Http.Environment;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Environment = Alohi.Signplus.Http.Environment;
var config = new SignplusConfig
{
Environment = Environment.Default,
- AccessToken = "YOUR_ACCESS_TOKEN"
+ AccessToken = "YOUR_ACCESS_TOKEN",
};
var client = new SignplusClient(config);
diff --git a/LICENSE b/LICENSE
index db5ca62..2be0553 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2024
+Copyright (c) 2025
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/README.md b/README.md
index 6e60a36..60874b3 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,13 @@
-# Signplus C# SDK 1.0.0
+# Signplus C# SDK 1.1.0
Welcome to the Signplus SDK documentation. This guide will help you get started with integrating and using the Signplus SDK in your project.
+[](https://liblab.com/?utm_source=readme)
+
## Versions
-- API version: `2.0.0`
-- SDK version: `1.0.0`
+- API version: `2.1.0`
+- SDK version: `1.1.0`
## About the API
@@ -41,7 +43,7 @@ dotnet add package Alohi.Signplus
### Access Token Authentication
-The signplus API uses an Access Token for authentication.
+The Signplus API uses an Access Token for authentication.
This token must be provided to authenticate your requests to the API.
@@ -50,10 +52,10 @@ This token must be provided to authenticate your requests to the API.
When you initialize the SDK, you can set the access token as follows:
```cs
-using Signplus;
-using Signplus.Config;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
-var config = new SignplusConfig()
+var config = new Alohi.SignplusConfig()
{
AccessToken = "YOUR_ACCESS_TOKEN"
};
@@ -72,14 +74,14 @@ client.SetAccessToken("YOUR_ACCESS_TOKEN")
Below is a comprehensive example demonstrating how to authenticate and call a simple endpoint:
```cs
-using Signplus;
-using Signplus.Config;
-using Environment = Signplus.Http.Environment;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Environment = Alohi.Signplus.Http.Environment;
var config = new SignplusConfig
{
Environment = Environment.Default,
-AccessToken = "YOUR_ACCESS_TOKEN"
+ AccessToken = "YOUR_ACCESS_TOKEN"
};
var client = new SignplusClient(config);
diff --git a/documentation/models/AddEnvelopeDocumentRequest.md b/documentation/models/AddEnvelopeDocumentRequest.md
index 597a5fa..6b82a8f 100644
--- a/documentation/models/AddEnvelopeDocumentRequest.md
+++ b/documentation/models/AddEnvelopeDocumentRequest.md
@@ -4,4 +4,4 @@
| Name | Type | Required | Description |
| :--- | :----- | :------- | :------------------------------ |
-| File | object | ❌ | File to upload in binary format |
+| File | byte[] | ❌ | File to upload in binary format |
diff --git a/documentation/models/AddTemplateDocumentRequest.md b/documentation/models/AddTemplateDocumentRequest.md
index b7629d8..2c30e59 100644
--- a/documentation/models/AddTemplateDocumentRequest.md
+++ b/documentation/models/AddTemplateDocumentRequest.md
@@ -4,4 +4,4 @@
| Name | Type | Required | Description |
| :--- | :----- | :------- | :------------------------------ |
-| File | object | ✅ | File to upload in binary format |
+| File | byte[] | ✅ | File to upload in binary format |
diff --git a/documentation/services/SignplusService.md b/documentation/services/SignplusService.md
index e3169a0..47985fb 100644
--- a/documentation/services/SignplusService.md
+++ b/documentation/services/SignplusService.md
@@ -66,12 +66,18 @@ Create new envelope
**Example Usage Code Snippet**
```csharp
-using Signplus;
-using Signplus.Models;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Alohi.Signplus.Models;
+using Environment = Alohi.Signplus.Http.Environment;
-var client = new SignplusClient();
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var input = new CreateEnvelopeRequest("name", EnvelopeLegalityLevel.Ses);
+var client = new SignplusClient(config);
+
+var input = new CreateEnvelopeRequest("name", EnvelopeLegalityLevel.Ses, 1, "comment", false);
var response = await client.Signplus.CreateEnvelopeAsync(input);
@@ -99,12 +105,18 @@ Create new envelope from template
**Example Usage Code Snippet**
```csharp
-using Signplus;
-using Signplus.Models;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Alohi.Signplus.Models;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
-var input = new CreateEnvelopeFromTemplateRequest("name");
+var input = new CreateEnvelopeFromTemplateRequest("name", "comment", false);
var response = await client.Signplus.CreateEnvelopeFromTemplateAsync(input, "template_id");
@@ -131,12 +143,22 @@ List envelopes
**Example Usage Code Snippet**
```csharp
-using Signplus;
-using Signplus.Models;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Alohi.Signplus.Models;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
-var input = new ListEnvelopesRequest();
+var tags = new List() { "tags" };
+var ids = new List() { "ids" };
+var statuses = new List() { EnvelopeStatus.Draft };
+var folderIds = new List() { "folder_ids" };
+var input = new ListEnvelopesRequest("name", tags, "comment", ids, statuses, folderIds, false, 7, 10, "uid", 4, 0, "after", "before", EnvelopeOrderField.CreationDate, true, true);
var response = await client.Signplus.ListEnvelopesAsync(input);
@@ -163,9 +185,15 @@ Get envelope
**Example Usage Code Snippet**
```csharp
-using Signplus;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Environment = Alohi.Signplus.Http.Environment;
-var client = new SignplusClient();
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
+
+var client = new SignplusClient(config);
var response = await client.Signplus.GetEnvelopeAsync("envelope_id");
@@ -188,9 +216,15 @@ Delete envelope
**Example Usage Code Snippet**
```csharp
-using Signplus;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
await client.Signplus.DeleteEnvelopeAsync("envelope_id");
```
@@ -216,9 +250,15 @@ Get envelope document
**Example Usage Code Snippet**
```csharp
-using Signplus;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
var response = await client.Signplus.GetEnvelopeDocumentAsync("envelope_id", "document_id");
@@ -245,9 +285,15 @@ Get envelope documents
**Example Usage Code Snippet**
```csharp
-using Signplus;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Environment = Alohi.Signplus.Http.Environment;
-var client = new SignplusClient();
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
+
+var client = new SignplusClient(config);
var response = await client.Signplus.GetEnvelopeDocumentsAsync("envelope_id");
@@ -275,12 +321,18 @@ Add envelope document
**Example Usage Code Snippet**
```csharp
-using Signplus;
-using Signplus.Models;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Alohi.Signplus.Models;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
-var input = new AddEnvelopeDocumentRequest();
+var input = new AddEnvelopeDocumentRequest(new byte[] {});
var response = await client.Signplus.AddEnvelopeDocumentAsync(input, "envelope_id");
@@ -308,12 +360,18 @@ Set envelope dynamic fields
**Example Usage Code Snippet**
```csharp
-using Signplus;
-using Signplus.Models;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Alohi.Signplus.Models;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
-var dynamicFieldsItem = new DynamicField();
+var dynamicFieldsItem = new DynamicField("name", "value");
var dynamicFields = new List() { dynamicFieldsItem };
var input = new SetEnvelopeDynamicFieldsRequest(dynamicFields);
@@ -343,12 +401,23 @@ Add envelope signing steps
**Example Usage Code Snippet**
```csharp
-using Signplus;
-using Signplus.Models;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Alohi.Signplus.Models;
+using Environment = Alohi.Signplus.Http.Environment;
-var client = new SignplusClient();
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var input = new AddEnvelopeSigningStepsRequest();
+var client = new SignplusClient(config);
+
+var verification = new RecipientVerification(RecipientVerificationType.Sms, "value");
+var recipientsItem = new Recipient("name", "email", RecipientRole.Signer, "id", "uid", verification);
+var recipients = new List() { recipientsItem };
+var signingStepsItem = new SigningStep(recipients);
+var signingSteps = new List() { signingStepsItem };
+var input = new AddEnvelopeSigningStepsRequest(signingSteps);
var response = await client.Signplus.AddEnvelopeSigningStepsAsync(input, "envelope_id");
@@ -375,9 +444,15 @@ Send envelope for signature
**Example Usage Code Snippet**
```csharp
-using Signplus;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
var response = await client.Signplus.SendEnvelopeAsync("envelope_id");
@@ -404,9 +479,15 @@ Duplicate envelope
**Example Usage Code Snippet**
```csharp
-using Signplus;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Environment = Alohi.Signplus.Http.Environment;
-var client = new SignplusClient();
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
+
+var client = new SignplusClient(config);
var response = await client.Signplus.DuplicateEnvelopeAsync("envelope_id");
@@ -433,9 +514,15 @@ Void envelope
**Example Usage Code Snippet**
```csharp
-using Signplus;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
var response = await client.Signplus.VoidEnvelopeAsync("envelope_id");
@@ -463,12 +550,18 @@ Rename envelope
**Example Usage Code Snippet**
```csharp
-using Signplus;
-using Signplus.Models;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Alohi.Signplus.Models;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
-var input = new RenameEnvelopeRequest();
+var input = new RenameEnvelopeRequest("name");
var response = await client.Signplus.RenameEnvelopeAsync(input, "envelope_id");
@@ -496,10 +589,16 @@ Set envelope comment
**Example Usage Code Snippet**
```csharp
-using Signplus;
-using Signplus.Models;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Alohi.Signplus.Models;
+using Environment = Alohi.Signplus.Http.Environment;
-var client = new SignplusClient();
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
+
+var client = new SignplusClient(config);
var input = new SetEnvelopeCommentRequest("comment");
@@ -529,12 +628,18 @@ Set envelope notification
**Example Usage Code Snippet**
```csharp
-using Signplus;
-using Signplus.Models;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Alohi.Signplus.Models;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
-var input = new EnvelopeNotification();
+var input = new EnvelopeNotification("subject", "message", 2);
var response = await client.Signplus.SetEnvelopeNotificationAsync(input, "envelope_id");
@@ -562,12 +667,18 @@ Set envelope expiration date
**Example Usage Code Snippet**
```csharp
-using Signplus;
-using Signplus.Models;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Alohi.Signplus.Models;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
-var input = new SetEnvelopeExpirationRequest(6);
+var input = new SetEnvelopeExpirationRequest(1);
var response = await client.Signplus.SetEnvelopeExpirationDateAsync(input, "envelope_id");
@@ -595,12 +706,18 @@ Set envelope legality level
**Example Usage Code Snippet**
```csharp
-using Signplus;
-using Signplus.Models;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Alohi.Signplus.Models;
+using Environment = Alohi.Signplus.Http.Environment;
-var client = new SignplusClient();
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var input = new SetEnvelopeLegalityLevelRequest();
+var client = new SignplusClient(config);
+
+var input = new SetEnvelopeLegalityLevelRequest(EnvelopeLegalityLevel.Ses);
var response = await client.Signplus.SetEnvelopeLegalityLevelAsync(input, "envelope_id");
@@ -627,9 +744,15 @@ Get envelope annotations
**Example Usage Code Snippet**
```csharp
-using Signplus;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
var response = await client.Signplus.GetEnvelopeAnnotationsAsync("envelope_id");
@@ -657,9 +780,15 @@ Get envelope document annotations
**Example Usage Code Snippet**
```csharp
-using Signplus;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
var response = await client.Signplus.GetEnvelopeDocumentAnnotationsAsync("envelope_id", "document_id");
@@ -687,12 +816,25 @@ Add envelope annotation
**Example Usage Code Snippet**
```csharp
-using Signplus;
-using Signplus.Models;
-
-var client = new SignplusClient();
-
-var input = new AddAnnotationRequest("document_id", 5, 2.83, 1.27, 5.18, 4.34, AnnotationType.Text);
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Alohi.Signplus.Models;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
+
+var client = new SignplusClient(config);
+
+var signature = new AnnotationSignature("id");
+var initials = new AnnotationInitials("id");
+var font = new AnnotationFont(AnnotationFontFamily.Unknown, true, false);
+var text = new AnnotationText(8.49, 3.27, "value", "tooltip", "dynamic_field_name", font);
+var font = new AnnotationFont(AnnotationFontFamily.Unknown, true, false);
+var datetime = new AnnotationDateTime(3.21, font, "color", true, "timezone", 4, AnnotationDateTimeFormat.DmyNumericSlash);
+var checkbox = new AnnotationCheckbox(false, AnnotationCheckboxStyle.CircleCheck);
+var input = new AddAnnotationRequest("document_id", 5, 6.53, 8.14, 7.47, 1.42, AnnotationType.Text, "recipient_id", false, signature, initials, text, datetime, checkbox);
var response = await client.Signplus.AddEnvelopeAnnotationAsync(input, "envelope_id");
@@ -716,9 +858,15 @@ Delete envelope annotation
**Example Usage Code Snippet**
```csharp
-using Signplus;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Environment = Alohi.Signplus.Http.Environment;
-var client = new SignplusClient();
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
+
+var client = new SignplusClient(config);
await client.Signplus.DeleteEnvelopeAnnotationAsync("envelope_id", "annotation_id");
```
@@ -743,10 +891,16 @@ Create new template
**Example Usage Code Snippet**
```csharp
-using Signplus;
-using Signplus.Models;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Alohi.Signplus.Models;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
var input = new CreateTemplateRequest("name");
@@ -775,12 +929,20 @@ List templates
**Example Usage Code Snippet**
```csharp
-using Signplus;
-using Signplus.Models;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Alohi.Signplus.Models;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
-var input = new ListTemplatesRequest();
+var tags = new List() { "tags" };
+var ids = new List() { "ids" };
+var input = new ListTemplatesRequest("name", tags, ids, 6, 4, "after", "before", TemplateOrderField.TemplateId, true);
var response = await client.Signplus.ListTemplatesAsync(input);
@@ -807,9 +969,15 @@ Get template
**Example Usage Code Snippet**
```csharp
-using Signplus;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Environment = Alohi.Signplus.Http.Environment;
-var client = new SignplusClient();
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
+
+var client = new SignplusClient(config);
var response = await client.Signplus.GetTemplateAsync("template_id");
@@ -832,9 +1000,15 @@ Delete template
**Example Usage Code Snippet**
```csharp
-using Signplus;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
await client.Signplus.DeleteTemplateAsync("template_id");
```
@@ -859,9 +1033,15 @@ Duplicate template
**Example Usage Code Snippet**
```csharp
-using Signplus;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
var response = await client.Signplus.DuplicateTemplateAsync("template_id");
@@ -889,12 +1069,18 @@ Add template document
**Example Usage Code Snippet**
```csharp
-using Signplus;
-using Signplus.Models;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Alohi.Signplus.Models;
+using Environment = Alohi.Signplus.Http.Environment;
-var client = new SignplusClient();
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var input = new AddTemplateDocumentRequest(file);
+var client = new SignplusClient(config);
+
+var input = new AddTemplateDocumentRequest(new byte[] {});
var response = await client.Signplus.AddTemplateDocumentAsync(input, "template_id");
@@ -922,9 +1108,15 @@ Get template document
**Example Usage Code Snippet**
```csharp
-using Signplus;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
var response = await client.Signplus.GetTemplateDocumentAsync("template_id", "document_id");
@@ -951,9 +1143,15 @@ Get template documents
**Example Usage Code Snippet**
```csharp
-using Signplus;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
var response = await client.Signplus.GetTemplateDocumentsAsync("template_id");
@@ -981,12 +1179,20 @@ Add template signing steps
**Example Usage Code Snippet**
```csharp
-using Signplus;
-using Signplus.Models;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Alohi.Signplus.Models;
+using Environment = Alohi.Signplus.Http.Environment;
-var client = new SignplusClient();
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var signingStepsItem = new TemplateSigningStep();
+var client = new SignplusClient(config);
+
+var recipientsItem = new TemplateRecipient("id", "uid", "name", "email", TemplateRecipientRole.Signer);
+var recipients = new List() { recipientsItem };
+var signingStepsItem = new TemplateSigningStep(recipients);
var signingSteps = new List() { signingStepsItem };
var input = new AddTemplateSigningStepsRequest(signingSteps);
@@ -1016,10 +1222,16 @@ Rename template
**Example Usage Code Snippet**
```csharp
-using Signplus;
-using Signplus.Models;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Alohi.Signplus.Models;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
var input = new RenameTemplateRequest("name");
@@ -1049,10 +1261,16 @@ Set template comment
**Example Usage Code Snippet**
```csharp
-using Signplus;
-using Signplus.Models;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Alohi.Signplus.Models;
+using Environment = Alohi.Signplus.Http.Environment;
-var client = new SignplusClient();
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
+
+var client = new SignplusClient(config);
var input = new SetTemplateCommentRequest("comment");
@@ -1082,12 +1300,18 @@ Set template notification
**Example Usage Code Snippet**
```csharp
-using Signplus;
-using Signplus.Models;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Alohi.Signplus.Models;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
-var input = new EnvelopeNotification();
+var input = new EnvelopeNotification("subject", "message", 2);
var response = await client.Signplus.SetTemplateNotificationAsync(input, "template_id");
@@ -1114,9 +1338,15 @@ Get template annotations
**Example Usage Code Snippet**
```csharp
-using Signplus;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
var response = await client.Signplus.GetTemplateAnnotationsAsync("template_id");
@@ -1144,9 +1374,15 @@ Get document template annotations
**Example Usage Code Snippet**
```csharp
-using Signplus;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Environment = Alohi.Signplus.Http.Environment;
-var client = new SignplusClient();
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
+
+var client = new SignplusClient(config);
var response = await client.Signplus.GetDocumentTemplateAnnotationsAsync("template_id", "document_id");
@@ -1174,12 +1410,25 @@ Add template annotation
**Example Usage Code Snippet**
```csharp
-using Signplus;
-using Signplus.Models;
-
-var client = new SignplusClient();
-
-var input = new AddAnnotationRequest("document_id", 5, 2.83, 1.27, 5.18, 4.34, AnnotationType.Text);
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Alohi.Signplus.Models;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
+
+var client = new SignplusClient(config);
+
+var signature = new AnnotationSignature("id");
+var initials = new AnnotationInitials("id");
+var font = new AnnotationFont(AnnotationFontFamily.Unknown, true, false);
+var text = new AnnotationText(8.49, 3.27, "value", "tooltip", "dynamic_field_name", font);
+var font = new AnnotationFont(AnnotationFontFamily.Unknown, true, false);
+var datetime = new AnnotationDateTime(3.21, font, "color", true, "timezone", 4, AnnotationDateTimeFormat.DmyNumericSlash);
+var checkbox = new AnnotationCheckbox(false, AnnotationCheckboxStyle.CircleCheck);
+var input = new AddAnnotationRequest("document_id", 5, 6.53, 8.14, 7.47, 1.42, AnnotationType.Text, "recipient_id", false, signature, initials, text, datetime, checkbox);
var response = await client.Signplus.AddTemplateAnnotationAsync(input, "template_id");
@@ -1203,9 +1452,15 @@ Delete template annotation
**Example Usage Code Snippet**
```csharp
-using Signplus;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
await client.Signplus.DeleteTemplateAnnotationAsync("template_id", "annotation_id");
```
@@ -1230,10 +1485,16 @@ Create webhook
**Example Usage Code Snippet**
```csharp
-using Signplus;
-using Signplus.Models;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Alohi.Signplus.Models;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
var input = new CreateWebhookRequest(WebhookEvent.EnvelopeExpired, "target");
@@ -1262,12 +1523,18 @@ List webhooks
**Example Usage Code Snippet**
```csharp
-using Signplus;
-using Signplus.Models;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Alohi.Signplus.Models;
+using Environment = Alohi.Signplus.Http.Environment;
-var client = new SignplusClient();
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var input = new ListWebhooksRequest();
+var client = new SignplusClient(config);
+
+var input = new ListWebhooksRequest("webhook_id", WebhookEvent.EnvelopeExpired);
var response = await client.Signplus.ListWebhooksAsync(input);
@@ -1290,9 +1557,15 @@ Delete webhook
**Example Usage Code Snippet**
```csharp
-using Signplus;
+using Alohi.Signplus;
+using Alohi.Signplus.Config;
+using Environment = Alohi.Signplus.Http.Environment;
+
+var config = new SignplusConfig{
+ Environment = Environment.Default
+};
-var client = new SignplusClient();
+var client = new SignplusClient(config);
await client.Signplus.DeleteWebhookAsync("webhook_id");
```
diff --git a/install.sh b/install.sh
index faa8e87..0a179fe 100644
--- a/install.sh
+++ b/install.sh
@@ -1,3 +1,3 @@
-cd ./Signplus
+cd ./Alohi.Signplus
dotnet restore
dotnet build