diff --git a/openapi-raw.yaml b/openapi-raw.yaml index 167663414..629c7a0ac 100644 --- a/openapi-raw.yaml +++ b/openapi-raw.yaml @@ -7697,7 +7697,7 @@ components: type: array items: type: string - maxItems: 2 + maxItems: 10 minItems: 1 name: description: '_t__ApiAppCreate::NAME' @@ -7723,7 +7723,7 @@ components: type: array items: type: string - maxItems: 2 + maxItems: 10 name: description: '_t__ApiAppUpdate::NAME' type: string @@ -8021,6 +8021,7 @@ components: enum: - user_activity - document_status + - sms_activity maxItems: 2 minItems: 1 start_date: @@ -11224,6 +11225,7 @@ components: enum: - user_activity - document_status + - sms_activity type: object x-internal-class: true SignatureRequestResponse: @@ -12286,6 +12288,14 @@ components: - employer_identification_number - custom_regex nullable: true + validation_custom_regex: + description: '_t__TemplateResponseDocumentFormField::CUSTOM_REGEX' + type: string + nullable: true + validation_custom_regex_format_label: + description: '_t__TemplateResponseDocumentFormField::CUSTOM_REGEX_LABEL' + type: string + nullable: true group: description: '_t__TemplateResponseDocumentFormField::GROUP' type: string diff --git a/openapi-sdk.yaml b/openapi-sdk.yaml index c832450e1..f984d4de6 100644 --- a/openapi-sdk.yaml +++ b/openapi-sdk.yaml @@ -7797,7 +7797,7 @@ components: type: array items: type: string - maxItems: 2 + maxItems: 10 minItems: 1 name: description: 'The name you want to assign to the ApiApp.' @@ -7823,7 +7823,7 @@ components: type: array items: type: string - maxItems: 2 + maxItems: 10 name: description: 'The name you want to assign to the ApiApp.' type: string @@ -8135,6 +8135,7 @@ components: enum: - user_activity - document_status + - sms_activity maxItems: 2 minItems: 1 start_date: @@ -11964,6 +11965,7 @@ components: enum: - user_activity - document_status + - sms_activity type: object x-internal-class: true SignatureRequestResponse: @@ -13130,6 +13132,14 @@ components: - employer_identification_number - custom_regex nullable: true + validation_custom_regex: + description: 'When `validation_type` is set to `custom_regex`, this specifies the custom regular expression pattern that will be used to validate the text field.' + type: string + nullable: true + validation_custom_regex_format_label: + description: 'When `validation_type` is set to `custom_regex`, this specifies the error message displayed to the signer when the text does not match the provided regex pattern.' + type: string + nullable: true group: description: 'The name of the group this field is in. If this field is not a group, this defaults to `null` except for Radio fields.' type: string diff --git a/openapi.yaml b/openapi.yaml index 679506241..ec703dbe0 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -7797,7 +7797,7 @@ components: type: array items: type: string - maxItems: 2 + maxItems: 10 minItems: 1 name: description: 'The name you want to assign to the ApiApp.' @@ -7823,7 +7823,7 @@ components: type: array items: type: string - maxItems: 2 + maxItems: 10 name: description: 'The name you want to assign to the ApiApp.' type: string @@ -8135,6 +8135,7 @@ components: enum: - user_activity - document_status + - sms_activity maxItems: 2 minItems: 1 start_date: @@ -11942,6 +11943,7 @@ components: enum: - user_activity - document_status + - sms_activity type: object x-internal-class: true SignatureRequestResponse: @@ -13108,6 +13110,14 @@ components: - employer_identification_number - custom_regex nullable: true + validation_custom_regex: + description: 'When `validation_type` is set to `custom_regex`, this specifies the custom regular expression pattern that will be used to validate the text field.' + type: string + nullable: true + validation_custom_regex_format_label: + description: 'When `validation_type` is set to `custom_regex`, this specifies the error message displayed to the signer when the text does not match the provided regex pattern.' + type: string + nullable: true group: description: 'The name of the group this field is in. If this field is not a group, this defaults to `null` except for Radio fields.' type: string diff --git a/sdks/dotnet/docs/TemplateResponseDocumentFormFieldText.md b/sdks/dotnet/docs/TemplateResponseDocumentFormFieldText.md index 368fec852..3005e1033 100644 --- a/sdks/dotnet/docs/TemplateResponseDocumentFormFieldText.md +++ b/sdks/dotnet/docs/TemplateResponseDocumentFormFieldText.md @@ -13,7 +13,7 @@ Name | Type | Description | Notes **Width** | **int** | The width in pixels of this form field. | [optional] **Height** | **int** | The height in pixels of this form field. | [optional] **Required** | **bool** | Boolean showing whether or not this field is required. | [optional] -**Type** | **string** | The type of this form field. See [field types](/api/reference/constants/#field-types).

* Text Field uses `TemplateResponseDocumentFormFieldText`
* Dropdown Field uses `TemplateResponseDocumentFormFieldDropdown`
* Hyperlink Field uses `TemplateResponseDocumentFormFieldHyperlink`
* Checkbox Field uses `TemplateResponseDocumentFormFieldCheckbox`
* Radio Field uses `TemplateResponseDocumentFormFieldRadio`
* Signature Field uses `TemplateResponseDocumentFormFieldSignature`
* Date Signed Field uses `TemplateResponseDocumentFormFieldDateSigned`
* Initials Field uses `TemplateResponseDocumentFormFieldInitials` | [default to "text"]**AvgTextLength** | [**TemplateResponseFieldAvgTextLength**](TemplateResponseFieldAvgTextLength.md) | | [optional] **IsMultiline** | **bool** | Whether this form field is multiline text. | [optional] **OriginalFontSize** | **int** | Original font size used in this form field's text. | [optional] **FontFamily** | **string** | Font family used in this form field's text. | [optional] **ValidationType** | **string** | Each text field may contain a `validation_type` parameter. Check out the list of [validation types](https://faq.hellosign.com/hc/en-us/articles/217115577) to learn more about the possible values. | [optional] **Group** | **string** | The name of the group this field is in. If this field is not a group, this defaults to `null` except for Radio fields. | [optional] +**Type** | **string** | The type of this form field. See [field types](/api/reference/constants/#field-types).

* Text Field uses `TemplateResponseDocumentFormFieldText`
* Dropdown Field uses `TemplateResponseDocumentFormFieldDropdown`
* Hyperlink Field uses `TemplateResponseDocumentFormFieldHyperlink`
* Checkbox Field uses `TemplateResponseDocumentFormFieldCheckbox`
* Radio Field uses `TemplateResponseDocumentFormFieldRadio`
* Signature Field uses `TemplateResponseDocumentFormFieldSignature`
* Date Signed Field uses `TemplateResponseDocumentFormFieldDateSigned`
* Initials Field uses `TemplateResponseDocumentFormFieldInitials` | [default to "text"]**AvgTextLength** | [**TemplateResponseFieldAvgTextLength**](TemplateResponseFieldAvgTextLength.md) | | [optional] **IsMultiline** | **bool** | Whether this form field is multiline text. | [optional] **OriginalFontSize** | **int** | Original font size used in this form field's text. | [optional] **FontFamily** | **string** | Font family used in this form field's text. | [optional] **ValidationType** | **string** | Each text field may contain a `validation_type` parameter. Check out the list of [validation types](https://faq.hellosign.com/hc/en-us/articles/217115577) to learn more about the possible values. | [optional] **ValidationCustomRegex** | **string** | When `validation_type` is set to `custom_regex`, this specifies the custom regular expression pattern that will be used to validate the text field. | [optional] **ValidationCustomRegexFormatLabel** | **string** | When `validation_type` is set to `custom_regex`, this specifies the error message displayed to the signer when the text does not match the provided regex pattern. | [optional] **Group** | **string** | The name of the group this field is in. If this field is not a group, this defaults to `null` except for Radio fields. | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/sdks/dotnet/src/Dropbox.Sign.Test/Api/FaxApiTests.cs b/sdks/dotnet/src/Dropbox.Sign.Test/Api/FaxApiTests.cs new file mode 100644 index 000000000..1c9882326 --- /dev/null +++ b/sdks/dotnet/src/Dropbox.Sign.Test/Api/FaxApiTests.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.IO; +using Xunit; +using System.Text.Json; + +using Dropbox.Sign.Api; +using Dropbox.Sign.Model; + +namespace Dropbox.Sign.Test.Api +{ + public class FaxApiTests + { + [Fact] + public void SendFaxTest() + { + var requestData = TestHelper.GetJsonContents(nameof(FaxSendRequest)); + var responseData = TestHelper.GetJsonContents(nameof(FaxGetResponse)); + + var obj = FaxSendRequest.Init( + requestData.ToString() + ); + + obj.Files = new List { + new FileStream( + TestHelper.RootPath + "/pdf-sample.pdf", + FileMode.Open, + FileAccess.Read, + FileShare.Read + ) + }; + + var responseObj = FaxGetResponse.Init(responseData.ToString()); + + var api = MockRestClientHelper.CreateApiExpectMultiFormRequest(responseObj); + var response = api.FaxSend(obj); + + TestHelper.AssertJsonSame(responseData.ToString(), response.ToJson()); + } + + [Fact] + public void FaxListTest() + { + var responseData = TestHelper.GetJsonContents(nameof(FaxListResponse)); + + var api = MockRestClientHelper.CreateApi(responseData); + var response = api.FaxList(); + + TestHelper.AssertJsonSame(responseData.ToString(), response.ToJson()); + } + + [Fact] + public void FaxGetTest() + { + var faxId = "c2e9691c85d9d6fa6ae773842e3680b2b8650f1d"; + + var responseData = TestHelper.GetJsonContents(nameof(FaxGetResponse)); + + var api = MockRestClientHelper.CreateApi(responseData); + var response = api.FaxGet(faxId); + + TestHelper.AssertJsonSame(responseData.ToString(), response.ToJson()); + } + } +} diff --git a/sdks/dotnet/src/Dropbox.Sign.Test/Api/FaxLineApiTests.cs b/sdks/dotnet/src/Dropbox.Sign.Test/Api/FaxLineApiTests.cs new file mode 100644 index 000000000..a4e00cccc --- /dev/null +++ b/sdks/dotnet/src/Dropbox.Sign.Test/Api/FaxLineApiTests.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.IO; +using Xunit; +using System.Text.Json; + +using Dropbox.Sign.Api; +using Dropbox.Sign.Model; + +namespace Dropbox.Sign.Test.Api +{ + public class FaxLineApiTests + { + [Fact] + public void FaxLineCreateTest() + { + var requestData = TestHelper.GetJsonContents(nameof(FaxLineCreateRequest)); + var responseData = TestHelper.GetJsonContents(nameof(FaxLineResponse)); + + var obj = FaxLineCreateRequest.Init( + requestData.ToString() + ); + + var api = MockRestClientHelper.CreateApi(responseData); + var response = api.FaxLineCreate(obj); + + TestHelper.AssertJsonSame(responseData.ToString(), response.ToJson()); + } + + [Fact] + public void FaxLineListTest() + { + var responseData = TestHelper.GetJsonContents(nameof(FaxLineListResponse)); + + var api = MockRestClientHelper.CreateApi(responseData); + var response = api.FaxLineList(); + + TestHelper.AssertJsonSame(responseData.ToString(), response.ToJson()); + } + + [Fact] + public void FaxLineGetTest() + { + var faxLineNumber = "14155557897"; + + var responseData = TestHelper.GetJsonContents(nameof(FaxLineResponse)); + + var api = MockRestClientHelper.CreateApi(responseData); + var response = api.FaxLineGet(faxLineNumber); + + TestHelper.AssertJsonSame(responseData.ToString(), response.ToJson()); + } + } +} diff --git a/sdks/dotnet/src/Dropbox.Sign/Model/ReportCreateRequest.cs b/sdks/dotnet/src/Dropbox.Sign/Model/ReportCreateRequest.cs index 0340546e1..8ae648930 100644 --- a/sdks/dotnet/src/Dropbox.Sign/Model/ReportCreateRequest.cs +++ b/sdks/dotnet/src/Dropbox.Sign/Model/ReportCreateRequest.cs @@ -49,7 +49,13 @@ public enum ReportTypeEnum /// Enum DocumentStatus for value: document_status /// [EnumMember(Value = "document_status")] - DocumentStatus = 2 + DocumentStatus = 2, + + /// + /// Enum SmsActivity for value: sms_activity + /// + [EnumMember(Value = "sms_activity")] + SmsActivity = 3 } /// diff --git a/sdks/dotnet/src/Dropbox.Sign/Model/ReportResponse.cs b/sdks/dotnet/src/Dropbox.Sign/Model/ReportResponse.cs index 57c921854..bd63ab7fa 100644 --- a/sdks/dotnet/src/Dropbox.Sign/Model/ReportResponse.cs +++ b/sdks/dotnet/src/Dropbox.Sign/Model/ReportResponse.cs @@ -49,7 +49,13 @@ public enum ReportTypeEnum /// Enum DocumentStatus for value: document_status /// [EnumMember(Value = "document_status")] - DocumentStatus = 2 + DocumentStatus = 2, + + /// + /// Enum SmsActivity for value: sms_activity + /// + [EnumMember(Value = "sms_activity")] + SmsActivity = 3 } /// diff --git a/sdks/dotnet/src/Dropbox.Sign/Model/TemplateResponseDocumentFormFieldText.cs b/sdks/dotnet/src/Dropbox.Sign/Model/TemplateResponseDocumentFormFieldText.cs index 70797b67d..8c7509535 100644 --- a/sdks/dotnet/src/Dropbox.Sign/Model/TemplateResponseDocumentFormFieldText.cs +++ b/sdks/dotnet/src/Dropbox.Sign/Model/TemplateResponseDocumentFormFieldText.cs @@ -122,6 +122,8 @@ protected TemplateResponseDocumentFormFieldText() { } /// Original font size used in this form field's text.. /// Font family used in this form field's text.. /// Each text field may contain a `validation_type` parameter. Check out the list of [validation types](https://faq.hellosign.com/hc/en-us/articles/217115577) to learn more about the possible values.. + /// When `validation_type` is set to `custom_regex`, this specifies the custom regular expression pattern that will be used to validate the text field.. + /// When `validation_type` is set to `custom_regex`, this specifies the error message displayed to the signer when the text does not match the provided regex pattern.. /// The name of the group this field is in. If this field is not a group, this defaults to `null` except for Radio fields.. /// A unique id for the form field.. /// The name of the form field.. @@ -131,7 +133,7 @@ protected TemplateResponseDocumentFormFieldText() { } /// The width in pixels of this form field.. /// The height in pixels of this form field.. /// Boolean showing whether or not this field is required.. - public TemplateResponseDocumentFormFieldText(string type = @"text", TemplateResponseFieldAvgTextLength avgTextLength = default(TemplateResponseFieldAvgTextLength), bool isMultiline = default(bool), int originalFontSize = default(int), string fontFamily = default(string), ValidationTypeEnum? validationType = default(ValidationTypeEnum?), string group = default(string), string apiId = default(string), string name = default(string), Object signer = null, int x = default(int), int y = default(int), int width = default(int), int height = default(int), bool required = default(bool)) + public TemplateResponseDocumentFormFieldText(string type = @"text", TemplateResponseFieldAvgTextLength avgTextLength = default(TemplateResponseFieldAvgTextLength), bool isMultiline = default(bool), int originalFontSize = default(int), string fontFamily = default(string), ValidationTypeEnum? validationType = default(ValidationTypeEnum?), string validationCustomRegex = default(string), string validationCustomRegexFormatLabel = default(string), string group = default(string), string apiId = default(string), string name = default(string), Object signer = null, int x = default(int), int y = default(int), int width = default(int), int height = default(int), bool required = default(bool)) { this.ApiId = apiId; this.Name = name; @@ -153,6 +155,8 @@ protected TemplateResponseDocumentFormFieldText() { } this.OriginalFontSize = originalFontSize; this.FontFamily = fontFamily; this.ValidationType = validationType; + this.ValidationCustomRegex = validationCustomRegex; + this.ValidationCustomRegexFormatLabel = validationCustomRegexFormatLabel; this.Group = group; } @@ -206,6 +210,20 @@ public static TemplateResponseDocumentFormFieldText Init(string jsonData) [DataMember(Name = "fontFamily", EmitDefaultValue = true)] public string FontFamily { get; set; } + /// + /// When `validation_type` is set to `custom_regex`, this specifies the custom regular expression pattern that will be used to validate the text field. + /// + /// When `validation_type` is set to `custom_regex`, this specifies the custom regular expression pattern that will be used to validate the text field. + [DataMember(Name = "validation_custom_regex", EmitDefaultValue = true)] + public string ValidationCustomRegex { get; set; } + + /// + /// When `validation_type` is set to `custom_regex`, this specifies the error message displayed to the signer when the text does not match the provided regex pattern. + /// + /// When `validation_type` is set to `custom_regex`, this specifies the error message displayed to the signer when the text does not match the provided regex pattern. + [DataMember(Name = "validation_custom_regex_format_label", EmitDefaultValue = true)] + public string ValidationCustomRegexFormatLabel { get; set; } + /// /// The name of the group this field is in. If this field is not a group, this defaults to `null` except for Radio fields. /// @@ -228,6 +246,8 @@ public override string ToString() sb.Append(" OriginalFontSize: ").Append(OriginalFontSize).Append("\n"); sb.Append(" FontFamily: ").Append(FontFamily).Append("\n"); sb.Append(" ValidationType: ").Append(ValidationType).Append("\n"); + sb.Append(" ValidationCustomRegex: ").Append(ValidationCustomRegex).Append("\n"); + sb.Append(" ValidationCustomRegexFormatLabel: ").Append(ValidationCustomRegexFormatLabel).Append("\n"); sb.Append(" Group: ").Append(Group).Append("\n"); sb.Append("}\n"); return sb.ToString(); @@ -291,6 +311,16 @@ public bool Equals(TemplateResponseDocumentFormFieldText input) this.ValidationType == input.ValidationType || this.ValidationType.Equals(input.ValidationType) ) && base.Equals(input) && + ( + this.ValidationCustomRegex == input.ValidationCustomRegex || + (this.ValidationCustomRegex != null && + this.ValidationCustomRegex.Equals(input.ValidationCustomRegex)) + ) && base.Equals(input) && + ( + this.ValidationCustomRegexFormatLabel == input.ValidationCustomRegexFormatLabel || + (this.ValidationCustomRegexFormatLabel != null && + this.ValidationCustomRegexFormatLabel.Equals(input.ValidationCustomRegexFormatLabel)) + ) && base.Equals(input) && ( this.Group == input.Group || (this.Group != null && @@ -322,6 +352,14 @@ public override int GetHashCode() hashCode = (hashCode * 59) + this.FontFamily.GetHashCode(); } hashCode = (hashCode * 59) + this.ValidationType.GetHashCode(); + if (this.ValidationCustomRegex != null) + { + hashCode = (hashCode * 59) + this.ValidationCustomRegex.GetHashCode(); + } + if (this.ValidationCustomRegexFormatLabel != null) + { + hashCode = (hashCode * 59) + this.ValidationCustomRegexFormatLabel.GetHashCode(); + } if (this.Group != null) { hashCode = (hashCode * 59) + this.Group.GetHashCode(); @@ -399,6 +437,20 @@ public List GetOpenApiTypes() Value = ValidationType, }); types.Add(new OpenApiType() + { + Name = "validation_custom_regex", + Property = "ValidationCustomRegex", + Type = "string", + Value = ValidationCustomRegex, + }); + types.Add(new OpenApiType() + { + Name = "validation_custom_regex_format_label", + Property = "ValidationCustomRegexFormatLabel", + Type = "string", + Value = ValidationCustomRegexFormatLabel, + }); + types.Add(new OpenApiType() { Name = "group", Property = "Group", diff --git a/sdks/java-v1/docs/ReportCreateRequest.md b/sdks/java-v1/docs/ReportCreateRequest.md index d2f4b67e2..78390304c 100644 --- a/sdks/java-v1/docs/ReportCreateRequest.md +++ b/sdks/java-v1/docs/ReportCreateRequest.md @@ -20,6 +20,7 @@ ---- | ----- | USER_ACTIVITY | "user_activity" | | DOCUMENT_STATUS | "document_status" | +| SMS_ACTIVITY | "sms_activity" | diff --git a/sdks/java-v1/docs/ReportResponse.md b/sdks/java-v1/docs/ReportResponse.md index b48dde6f4..aa74d68e0 100644 --- a/sdks/java-v1/docs/ReportResponse.md +++ b/sdks/java-v1/docs/ReportResponse.md @@ -21,6 +21,7 @@ Contains information about the report request. ---- | ----- | USER_ACTIVITY | "user_activity" | | DOCUMENT_STATUS | "document_status" | +| SMS_ACTIVITY | "sms_activity" | diff --git a/sdks/java-v1/docs/TemplateResponseDocumentFormFieldText.md b/sdks/java-v1/docs/TemplateResponseDocumentFormFieldText.md index 49cdfaad6..1b8d78c02 100644 --- a/sdks/java-v1/docs/TemplateResponseDocumentFormFieldText.md +++ b/sdks/java-v1/docs/TemplateResponseDocumentFormFieldText.md @@ -14,6 +14,8 @@ This class extends `TemplateResponseDocumentFormFieldBase` | `originalFontSize` | ```Integer``` | Original font size used in this form field's text. | | | `fontFamily` | ```String``` | Font family used in this form field's text. | | | `validationType` | [```ValidationTypeEnum```](#ValidationTypeEnum) | Each text field may contain a `validation_type` parameter. Check out the list of [validation types](https://faq.hellosign.com/hc/en-us/articles/217115577) to learn more about the possible values. | | +| `validationCustomRegex` | ```String``` | When `validation_type` is set to `custom_regex`, this specifies the custom regular expression pattern that will be used to validate the text field. | | +| `validationCustomRegexFormatLabel` | ```String``` | When `validation_type` is set to `custom_regex`, this specifies the error message displayed to the signer when the text does not match the provided regex pattern. | | | `group` | ```String``` | The name of the group this field is in. If this field is not a group, this defaults to `null` except for Radio fields. | | diff --git a/sdks/java-v1/src/main/java/com/dropbox/sign/model/ReportCreateRequest.java b/sdks/java-v1/src/main/java/com/dropbox/sign/model/ReportCreateRequest.java index c5c3fd88f..38e625dc3 100644 --- a/sdks/java-v1/src/main/java/com/dropbox/sign/model/ReportCreateRequest.java +++ b/sdks/java-v1/src/main/java/com/dropbox/sign/model/ReportCreateRequest.java @@ -45,7 +45,9 @@ public class ReportCreateRequest { public enum ReportTypeEnum { USER_ACTIVITY(String.valueOf("user_activity")), - DOCUMENT_STATUS(String.valueOf("document_status")); + DOCUMENT_STATUS(String.valueOf("document_status")), + + SMS_ACTIVITY(String.valueOf("sms_activity")); private String value; diff --git a/sdks/java-v1/src/main/java/com/dropbox/sign/model/ReportResponse.java b/sdks/java-v1/src/main/java/com/dropbox/sign/model/ReportResponse.java index 29d5b88cf..6d5079f54 100644 --- a/sdks/java-v1/src/main/java/com/dropbox/sign/model/ReportResponse.java +++ b/sdks/java-v1/src/main/java/com/dropbox/sign/model/ReportResponse.java @@ -52,7 +52,9 @@ public class ReportResponse { public enum ReportTypeEnum { USER_ACTIVITY(String.valueOf("user_activity")), - DOCUMENT_STATUS(String.valueOf("document_status")); + DOCUMENT_STATUS(String.valueOf("document_status")), + + SMS_ACTIVITY(String.valueOf("sms_activity")); private String value; diff --git a/sdks/java-v1/src/main/java/com/dropbox/sign/model/TemplateResponseDocumentFormFieldText.java b/sdks/java-v1/src/main/java/com/dropbox/sign/model/TemplateResponseDocumentFormFieldText.java index 353bd8941..1eb8a426c 100644 --- a/sdks/java-v1/src/main/java/com/dropbox/sign/model/TemplateResponseDocumentFormFieldText.java +++ b/sdks/java-v1/src/main/java/com/dropbox/sign/model/TemplateResponseDocumentFormFieldText.java @@ -34,6 +34,8 @@ TemplateResponseDocumentFormFieldText.JSON_PROPERTY_ORIGINAL_FONT_SIZE, TemplateResponseDocumentFormFieldText.JSON_PROPERTY_FONT_FAMILY, TemplateResponseDocumentFormFieldText.JSON_PROPERTY_VALIDATION_TYPE, + TemplateResponseDocumentFormFieldText.JSON_PROPERTY_VALIDATION_CUSTOM_REGEX, + TemplateResponseDocumentFormFieldText.JSON_PROPERTY_VALIDATION_CUSTOM_REGEX_FORMAT_LABEL, TemplateResponseDocumentFormFieldText.JSON_PROPERTY_GROUP }) @javax.annotation.Generated( @@ -119,6 +121,13 @@ public static ValidationTypeEnum fromValue(String value) { public static final String JSON_PROPERTY_VALIDATION_TYPE = "validation_type"; @javax.annotation.Nullable private ValidationTypeEnum validationType; + public static final String JSON_PROPERTY_VALIDATION_CUSTOM_REGEX = "validation_custom_regex"; + @javax.annotation.Nullable private String validationCustomRegex; + + public static final String JSON_PROPERTY_VALIDATION_CUSTOM_REGEX_FORMAT_LABEL = + "validation_custom_regex_format_label"; + @javax.annotation.Nullable private String validationCustomRegexFormatLabel; + public static final String JSON_PROPERTY_GROUP = "group"; @javax.annotation.Nullable private String group; @@ -289,6 +298,55 @@ public void setValidationType(@javax.annotation.Nullable ValidationTypeEnum vali this.validationType = validationType; } + public TemplateResponseDocumentFormFieldText validationCustomRegex( + @javax.annotation.Nullable String validationCustomRegex) { + this.validationCustomRegex = validationCustomRegex; + return this; + } + + /** + * When `validation_type` is set to `custom_regex`, this specifies the + * custom regular expression pattern that will be used to validate the text field. + * + * @return validationCustomRegex + */ + @javax.annotation.Nullable @JsonProperty(JSON_PROPERTY_VALIDATION_CUSTOM_REGEX) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getValidationCustomRegex() { + return validationCustomRegex; + } + + @JsonProperty(JSON_PROPERTY_VALIDATION_CUSTOM_REGEX) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setValidationCustomRegex(@javax.annotation.Nullable String validationCustomRegex) { + this.validationCustomRegex = validationCustomRegex; + } + + public TemplateResponseDocumentFormFieldText validationCustomRegexFormatLabel( + @javax.annotation.Nullable String validationCustomRegexFormatLabel) { + this.validationCustomRegexFormatLabel = validationCustomRegexFormatLabel; + return this; + } + + /** + * When `validation_type` is set to `custom_regex`, this specifies the error + * message displayed to the signer when the text does not match the provided regex pattern. + * + * @return validationCustomRegexFormatLabel + */ + @javax.annotation.Nullable @JsonProperty(JSON_PROPERTY_VALIDATION_CUSTOM_REGEX_FORMAT_LABEL) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getValidationCustomRegexFormatLabel() { + return validationCustomRegexFormatLabel; + } + + @JsonProperty(JSON_PROPERTY_VALIDATION_CUSTOM_REGEX_FORMAT_LABEL) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setValidationCustomRegexFormatLabel( + @javax.annotation.Nullable String validationCustomRegexFormatLabel) { + this.validationCustomRegexFormatLabel = validationCustomRegexFormatLabel; + } + public TemplateResponseDocumentFormFieldText group(@javax.annotation.Nullable String group) { this.group = group; return this; @@ -334,6 +392,12 @@ public boolean equals(Object o) { && Objects.equals(this.fontFamily, templateResponseDocumentFormFieldText.fontFamily) && Objects.equals( this.validationType, templateResponseDocumentFormFieldText.validationType) + && Objects.equals( + this.validationCustomRegex, + templateResponseDocumentFormFieldText.validationCustomRegex) + && Objects.equals( + this.validationCustomRegexFormatLabel, + templateResponseDocumentFormFieldText.validationCustomRegexFormatLabel) && Objects.equals(this.group, templateResponseDocumentFormFieldText.group) && super.equals(o); } @@ -347,6 +411,8 @@ public int hashCode() { originalFontSize, fontFamily, validationType, + validationCustomRegex, + validationCustomRegexFormatLabel, group, super.hashCode()); } @@ -362,6 +428,12 @@ public String toString() { sb.append(" originalFontSize: ").append(toIndentedString(originalFontSize)).append("\n"); sb.append(" fontFamily: ").append(toIndentedString(fontFamily)).append("\n"); sb.append(" validationType: ").append(toIndentedString(validationType)).append("\n"); + sb.append(" validationCustomRegex: ") + .append(toIndentedString(validationCustomRegex)) + .append("\n"); + sb.append(" validationCustomRegexFormatLabel: ") + .append(toIndentedString(validationCustomRegexFormatLabel)) + .append("\n"); sb.append(" group: ").append(toIndentedString(group)).append("\n"); sb.append("}"); return sb.toString(); @@ -490,6 +562,56 @@ public Map createFormData() throws ApiException { JSON.getDefault().getMapper().writeValueAsString(validationType)); } } + if (validationCustomRegex != null) { + if (isFileTypeOrListOfFiles(validationCustomRegex)) { + fileTypeFound = true; + } + + if (validationCustomRegex.getClass().equals(java.io.File.class) + || validationCustomRegex.getClass().equals(Integer.class) + || validationCustomRegex.getClass().equals(String.class) + || validationCustomRegex.getClass().isEnum()) { + map.put("validation_custom_regex", validationCustomRegex); + } else if (isListOfFile(validationCustomRegex)) { + for (int i = 0; i < getListSize(validationCustomRegex); i++) { + map.put( + "validation_custom_regex[" + i + "]", + getFromList(validationCustomRegex, i)); + } + } else { + map.put( + "validation_custom_regex", + JSON.getDefault() + .getMapper() + .writeValueAsString(validationCustomRegex)); + } + } + if (validationCustomRegexFormatLabel != null) { + if (isFileTypeOrListOfFiles(validationCustomRegexFormatLabel)) { + fileTypeFound = true; + } + + if (validationCustomRegexFormatLabel.getClass().equals(java.io.File.class) + || validationCustomRegexFormatLabel.getClass().equals(Integer.class) + || validationCustomRegexFormatLabel.getClass().equals(String.class) + || validationCustomRegexFormatLabel.getClass().isEnum()) { + map.put( + "validation_custom_regex_format_label", + validationCustomRegexFormatLabel); + } else if (isListOfFile(validationCustomRegexFormatLabel)) { + for (int i = 0; i < getListSize(validationCustomRegexFormatLabel); i++) { + map.put( + "validation_custom_regex_format_label[" + i + "]", + getFromList(validationCustomRegexFormatLabel, i)); + } + } else { + map.put( + "validation_custom_regex_format_label", + JSON.getDefault() + .getMapper() + .writeValueAsString(validationCustomRegexFormatLabel)); + } + } if (group != null) { if (isFileTypeOrListOfFiles(group)) { fileTypeFound = true; diff --git a/sdks/java-v1/src/test/java/com/dropbox/sign/api/FaxApiTest.java b/sdks/java-v1/src/test/java/com/dropbox/sign/api/FaxApiTest.java new file mode 100644 index 000000000..ff1ae8185 --- /dev/null +++ b/sdks/java-v1/src/test/java/com/dropbox/sign/api/FaxApiTest.java @@ -0,0 +1,58 @@ +package com.dropbox.sign.api; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import com.dropbox.sign.ApiClient; +import com.dropbox.sign.TestHelper; +import com.dropbox.sign.model.*; +import com.fasterxml.jackson.databind.JsonNode; +import java.io.File; +import org.junit.jupiter.api.Test; + +public class FaxApiTest { + @Test + public void faxSendTest() throws Exception { + JsonNode expectedResponseData = + TestHelper.getJsonContents(FaxGetResponse.class.getSimpleName()); + FaxGetResponse expectedResponse = FaxGetResponse.init(expectedResponseData.toString()); + ApiClient apiClient = TestHelper.setUpMock(200, expectedResponse); + + JsonNode requestData = TestHelper.getJsonContents(FaxSendRequest.class.getSimpleName()); + + FaxSendRequest request = FaxSendRequest.init(requestData.toString()); + request.addFilesItem(new File("test_fixtures/pdf-sample.pdf")); + + FaxApi api = new FaxApi(apiClient); + FaxGetResponse response = api.faxSend(request); + + assertEquals(expectedResponse, response); + } + + @Test + public void faxGetTest() throws Exception { + String faxId = "c2e9691c85d9d6fa6ae773842e3680b2b8650f1d"; + + JsonNode expectedResponseData = + TestHelper.getJsonContents(FaxGetResponse.class.getSimpleName()); + FaxGetResponse expectedResponse = FaxGetResponse.init(expectedResponseData.toString()); + ApiClient apiClient = TestHelper.setUpMock(200, expectedResponse); + + FaxApi api = new FaxApi(apiClient); + FaxGetResponse response = api.faxGet(faxId); + + assertEquals(expectedResponse, response); + } + + @Test + public void faxListTest() throws Exception { + JsonNode expectedResponseData = + TestHelper.getJsonContents(FaxListResponse.class.getSimpleName()); + FaxListResponse expectedResponse = FaxListResponse.init(expectedResponseData.toString()); + ApiClient apiClient = TestHelper.setUpMock(200, expectedResponse); + + FaxApi api = new FaxApi(apiClient); + FaxListResponse response = api.faxList(); + + assertEquals(expectedResponse, response); + } +} diff --git a/sdks/java-v1/src/test/java/com/dropbox/sign/api/FaxLineApiTest.java b/sdks/java-v1/src/test/java/com/dropbox/sign/api/FaxLineApiTest.java new file mode 100644 index 000000000..50ea98706 --- /dev/null +++ b/sdks/java-v1/src/test/java/com/dropbox/sign/api/FaxLineApiTest.java @@ -0,0 +1,58 @@ +package com.dropbox.sign.api; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import com.dropbox.sign.ApiClient; +import com.dropbox.sign.TestHelper; +import com.dropbox.sign.model.*; +import com.fasterxml.jackson.databind.JsonNode; +import org.junit.jupiter.api.Test; + +public class FaxLineApiTest { + @Test + public void faxLineCreateTest() throws Exception { + JsonNode expectedResponseData = + TestHelper.getJsonContents(FaxLineResponse.class.getSimpleName()); + FaxLineResponse expectedResponse = FaxLineResponse.init(expectedResponseData.toString()); + ApiClient apiClient = TestHelper.setUpMock(200, expectedResponse); + + JsonNode requestData = + TestHelper.getJsonContents(FaxLineCreateRequest.class.getSimpleName()); + + FaxLineCreateRequest request = FaxLineCreateRequest.init(requestData.toString()); + + FaxLineApi api = new FaxLineApi(apiClient); + FaxLineResponse response = api.faxLineCreate(request); + + assertEquals(expectedResponse, response); + } + + @Test + public void faxLineGetTest() throws Exception { + String faxLineNumber = "14155557897"; + + JsonNode expectedResponseData = + TestHelper.getJsonContents(FaxLineResponse.class.getSimpleName()); + FaxLineResponse expectedResponse = FaxLineResponse.init(expectedResponseData.toString()); + ApiClient apiClient = TestHelper.setUpMock(200, expectedResponse); + + FaxLineApi api = new FaxLineApi(apiClient); + FaxLineResponse response = api.faxLineGet(faxLineNumber); + + assertEquals(expectedResponse, response); + } + + @Test + public void faxLineListTest() throws Exception { + JsonNode expectedResponseData = + TestHelper.getJsonContents(FaxLineListResponse.class.getSimpleName()); + FaxLineListResponse expectedResponse = + FaxLineListResponse.init(expectedResponseData.toString()); + ApiClient apiClient = TestHelper.setUpMock(200, expectedResponse); + + FaxLineApi api = new FaxLineApi(apiClient); + FaxLineListResponse response = api.faxLineList(); + + assertEquals(expectedResponse, response); + } +} diff --git a/sdks/java-v2/docs/ReportCreateRequest.md b/sdks/java-v2/docs/ReportCreateRequest.md index d2f4b67e2..78390304c 100644 --- a/sdks/java-v2/docs/ReportCreateRequest.md +++ b/sdks/java-v2/docs/ReportCreateRequest.md @@ -20,6 +20,7 @@ ---- | ----- | USER_ACTIVITY | "user_activity" | | DOCUMENT_STATUS | "document_status" | +| SMS_ACTIVITY | "sms_activity" | diff --git a/sdks/java-v2/docs/ReportResponse.md b/sdks/java-v2/docs/ReportResponse.md index b48dde6f4..aa74d68e0 100644 --- a/sdks/java-v2/docs/ReportResponse.md +++ b/sdks/java-v2/docs/ReportResponse.md @@ -21,6 +21,7 @@ Contains information about the report request. ---- | ----- | USER_ACTIVITY | "user_activity" | | DOCUMENT_STATUS | "document_status" | +| SMS_ACTIVITY | "sms_activity" | diff --git a/sdks/java-v2/docs/TemplateResponseDocumentFormFieldText.md b/sdks/java-v2/docs/TemplateResponseDocumentFormFieldText.md index 49cdfaad6..1b8d78c02 100644 --- a/sdks/java-v2/docs/TemplateResponseDocumentFormFieldText.md +++ b/sdks/java-v2/docs/TemplateResponseDocumentFormFieldText.md @@ -14,6 +14,8 @@ This class extends `TemplateResponseDocumentFormFieldBase` | `originalFontSize` | ```Integer``` | Original font size used in this form field's text. | | | `fontFamily` | ```String``` | Font family used in this form field's text. | | | `validationType` | [```ValidationTypeEnum```](#ValidationTypeEnum) | Each text field may contain a `validation_type` parameter. Check out the list of [validation types](https://faq.hellosign.com/hc/en-us/articles/217115577) to learn more about the possible values. | | +| `validationCustomRegex` | ```String``` | When `validation_type` is set to `custom_regex`, this specifies the custom regular expression pattern that will be used to validate the text field. | | +| `validationCustomRegexFormatLabel` | ```String``` | When `validation_type` is set to `custom_regex`, this specifies the error message displayed to the signer when the text does not match the provided regex pattern. | | | `group` | ```String``` | The name of the group this field is in. If this field is not a group, this defaults to `null` except for Radio fields. | | diff --git a/sdks/java-v2/src/main/java/com/dropbox/sign/model/ReportCreateRequest.java b/sdks/java-v2/src/main/java/com/dropbox/sign/model/ReportCreateRequest.java index e88dbb0e2..020326d82 100644 --- a/sdks/java-v2/src/main/java/com/dropbox/sign/model/ReportCreateRequest.java +++ b/sdks/java-v2/src/main/java/com/dropbox/sign/model/ReportCreateRequest.java @@ -52,7 +52,9 @@ public class ReportCreateRequest { public enum ReportTypeEnum { USER_ACTIVITY(String.valueOf("user_activity")), - DOCUMENT_STATUS(String.valueOf("document_status")); + DOCUMENT_STATUS(String.valueOf("document_status")), + + SMS_ACTIVITY(String.valueOf("sms_activity")); private String value; diff --git a/sdks/java-v2/src/main/java/com/dropbox/sign/model/ReportResponse.java b/sdks/java-v2/src/main/java/com/dropbox/sign/model/ReportResponse.java index 35770fa6c..18b6f39a1 100644 --- a/sdks/java-v2/src/main/java/com/dropbox/sign/model/ReportResponse.java +++ b/sdks/java-v2/src/main/java/com/dropbox/sign/model/ReportResponse.java @@ -61,7 +61,9 @@ public class ReportResponse { public enum ReportTypeEnum { USER_ACTIVITY(String.valueOf("user_activity")), - DOCUMENT_STATUS(String.valueOf("document_status")); + DOCUMENT_STATUS(String.valueOf("document_status")), + + SMS_ACTIVITY(String.valueOf("sms_activity")); private String value; diff --git a/sdks/java-v2/src/main/java/com/dropbox/sign/model/TemplateResponseDocumentFormFieldText.java b/sdks/java-v2/src/main/java/com/dropbox/sign/model/TemplateResponseDocumentFormFieldText.java index 7bbb7ca05..47567e1ba 100644 --- a/sdks/java-v2/src/main/java/com/dropbox/sign/model/TemplateResponseDocumentFormFieldText.java +++ b/sdks/java-v2/src/main/java/com/dropbox/sign/model/TemplateResponseDocumentFormFieldText.java @@ -44,6 +44,8 @@ TemplateResponseDocumentFormFieldText.JSON_PROPERTY_ORIGINAL_FONT_SIZE, TemplateResponseDocumentFormFieldText.JSON_PROPERTY_FONT_FAMILY, TemplateResponseDocumentFormFieldText.JSON_PROPERTY_VALIDATION_TYPE, + TemplateResponseDocumentFormFieldText.JSON_PROPERTY_VALIDATION_CUSTOM_REGEX, + TemplateResponseDocumentFormFieldText.JSON_PROPERTY_VALIDATION_CUSTOM_REGEX_FORMAT_LABEL, TemplateResponseDocumentFormFieldText.JSON_PROPERTY_GROUP }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.12.0") @@ -129,6 +131,14 @@ public static ValidationTypeEnum fromValue(String value) { @jakarta.annotation.Nullable private ValidationTypeEnum validationType; + public static final String JSON_PROPERTY_VALIDATION_CUSTOM_REGEX = "validation_custom_regex"; + @jakarta.annotation.Nullable + private String validationCustomRegex; + + public static final String JSON_PROPERTY_VALIDATION_CUSTOM_REGEX_FORMAT_LABEL = "validation_custom_regex_format_label"; + @jakarta.annotation.Nullable + private String validationCustomRegexFormatLabel; + public static final String JSON_PROPERTY_GROUP = "group"; @jakarta.annotation.Nullable private String group; @@ -301,6 +311,56 @@ public void setValidationType(@jakarta.annotation.Nullable ValidationTypeEnum va } + public TemplateResponseDocumentFormFieldText validationCustomRegex(@jakarta.annotation.Nullable String validationCustomRegex) { + this.validationCustomRegex = validationCustomRegex; + return this; + } + + /** + * When `validation_type` is set to `custom_regex`, this specifies the custom regular expression pattern that will be used to validate the text field. + * @return validationCustomRegex + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_VALIDATION_CUSTOM_REGEX) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public String getValidationCustomRegex() { + return validationCustomRegex; + } + + + @JsonProperty(JSON_PROPERTY_VALIDATION_CUSTOM_REGEX) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setValidationCustomRegex(@jakarta.annotation.Nullable String validationCustomRegex) { + this.validationCustomRegex = validationCustomRegex; + } + + + public TemplateResponseDocumentFormFieldText validationCustomRegexFormatLabel(@jakarta.annotation.Nullable String validationCustomRegexFormatLabel) { + this.validationCustomRegexFormatLabel = validationCustomRegexFormatLabel; + return this; + } + + /** + * When `validation_type` is set to `custom_regex`, this specifies the error message displayed to the signer when the text does not match the provided regex pattern. + * @return validationCustomRegexFormatLabel + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_VALIDATION_CUSTOM_REGEX_FORMAT_LABEL) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public String getValidationCustomRegexFormatLabel() { + return validationCustomRegexFormatLabel; + } + + + @JsonProperty(JSON_PROPERTY_VALIDATION_CUSTOM_REGEX_FORMAT_LABEL) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setValidationCustomRegexFormatLabel(@jakarta.annotation.Nullable String validationCustomRegexFormatLabel) { + this.validationCustomRegexFormatLabel = validationCustomRegexFormatLabel; + } + + public TemplateResponseDocumentFormFieldText group(@jakarta.annotation.Nullable String group) { this.group = group; return this; @@ -344,13 +404,15 @@ public boolean equals(Object o) { Objects.equals(this.originalFontSize, templateResponseDocumentFormFieldText.originalFontSize) && Objects.equals(this.fontFamily, templateResponseDocumentFormFieldText.fontFamily) && Objects.equals(this.validationType, templateResponseDocumentFormFieldText.validationType) && + Objects.equals(this.validationCustomRegex, templateResponseDocumentFormFieldText.validationCustomRegex) && + Objects.equals(this.validationCustomRegexFormatLabel, templateResponseDocumentFormFieldText.validationCustomRegexFormatLabel) && Objects.equals(this.group, templateResponseDocumentFormFieldText.group) && super.equals(o); } @Override public int hashCode() { - return Objects.hash(type, avgTextLength, isMultiline, originalFontSize, fontFamily, validationType, group, super.hashCode()); + return Objects.hash(type, avgTextLength, isMultiline, originalFontSize, fontFamily, validationType, validationCustomRegex, validationCustomRegexFormatLabel, group, super.hashCode()); } @Override @@ -364,6 +426,8 @@ public String toString() { sb.append(" originalFontSize: ").append(toIndentedString(originalFontSize)).append("\n"); sb.append(" fontFamily: ").append(toIndentedString(fontFamily)).append("\n"); sb.append(" validationType: ").append(toIndentedString(validationType)).append("\n"); + sb.append(" validationCustomRegex: ").append(toIndentedString(validationCustomRegex)).append("\n"); + sb.append(" validationCustomRegexFormatLabel: ").append(toIndentedString(validationCustomRegexFormatLabel)).append("\n"); sb.append(" group: ").append(toIndentedString(group)).append("\n"); sb.append("}"); return sb.toString(); @@ -488,6 +552,44 @@ public Map createFormData() throws ApiException { map.put("validation_type", JSON.getDefault().getMapper().writeValueAsString(validationType)); } } + if (validationCustomRegex != null) { + if (isFileTypeOrListOfFiles(validationCustomRegex)) { + fileTypeFound = true; + } + + if (validationCustomRegex.getClass().equals(java.io.File.class) || + validationCustomRegex.getClass().equals(Integer.class) || + validationCustomRegex.getClass().equals(String.class) || + validationCustomRegex.getClass().isEnum()) { + map.put("validation_custom_regex", validationCustomRegex); + } else if (isListOfFile(validationCustomRegex)) { + for(int i = 0; i< getListSize(validationCustomRegex); i++) { + map.put("validation_custom_regex[" + i + "]", getFromList(validationCustomRegex, i)); + } + } + else { + map.put("validation_custom_regex", JSON.getDefault().getMapper().writeValueAsString(validationCustomRegex)); + } + } + if (validationCustomRegexFormatLabel != null) { + if (isFileTypeOrListOfFiles(validationCustomRegexFormatLabel)) { + fileTypeFound = true; + } + + if (validationCustomRegexFormatLabel.getClass().equals(java.io.File.class) || + validationCustomRegexFormatLabel.getClass().equals(Integer.class) || + validationCustomRegexFormatLabel.getClass().equals(String.class) || + validationCustomRegexFormatLabel.getClass().isEnum()) { + map.put("validation_custom_regex_format_label", validationCustomRegexFormatLabel); + } else if (isListOfFile(validationCustomRegexFormatLabel)) { + for(int i = 0; i< getListSize(validationCustomRegexFormatLabel); i++) { + map.put("validation_custom_regex_format_label[" + i + "]", getFromList(validationCustomRegexFormatLabel, i)); + } + } + else { + map.put("validation_custom_regex_format_label", JSON.getDefault().getMapper().writeValueAsString(validationCustomRegexFormatLabel)); + } + } if (group != null) { if (isFileTypeOrListOfFiles(group)) { fileTypeFound = true; diff --git a/sdks/java-v2/src/test/java/com/dropbox/sign/api/FaxApiTest.java b/sdks/java-v2/src/test/java/com/dropbox/sign/api/FaxApiTest.java new file mode 100644 index 000000000..8ddaf5866 --- /dev/null +++ b/sdks/java-v2/src/test/java/com/dropbox/sign/api/FaxApiTest.java @@ -0,0 +1,69 @@ +package com.dropbox.sign.api; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; + +import com.dropbox.sign.ApiClient; +import com.dropbox.sign.TestHelper; +import com.dropbox.sign.model.*; +import com.fasterxml.jackson.databind.JsonNode; +import java.io.File; +import java.util.Arrays; +import java.util.HashMap; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; + +public class FaxApiTest { + @Test + public void faxSendTest() throws Exception { + JsonNode expectedResponseData = + TestHelper.getJsonContents(FaxGetResponse.class.getSimpleName()); + FaxGetResponse expectedResponse = + FaxGetResponse.init(expectedResponseData.toString()); + ApiClient apiClient = TestHelper.setUpMock(200, expectedResponse); + + JsonNode requestData = + TestHelper.getJsonContents( + FaxSendRequest.class.getSimpleName()); + + FaxSendRequest request = + FaxSendRequest.init(requestData.toString()); + request.addFilesItem(new File("test_fixtures/pdf-sample.pdf")); + + FaxApi api = new FaxApi(apiClient); + FaxGetResponse response = api.faxSend(request); + + assertEquals(expectedResponse, response); + } + + @Test + public void faxGetTest() throws Exception { + String faxId = "c2e9691c85d9d6fa6ae773842e3680b2b8650f1d"; + + JsonNode expectedResponseData = + TestHelper.getJsonContents(FaxGetResponse.class.getSimpleName()); + FaxGetResponse expectedResponse = + FaxGetResponse.init(expectedResponseData.toString()); + ApiClient apiClient = TestHelper.setUpMock(200, expectedResponse); + + FaxApi api = new FaxApi(apiClient); + FaxGetResponse response = api.faxGet(faxId); + + assertEquals(expectedResponse, response); + } + + @Test + public void faxListTest() throws Exception { + JsonNode expectedResponseData = + TestHelper.getJsonContents(FaxListResponse.class.getSimpleName()); + FaxListResponse expectedResponse = + FaxListResponse.init(expectedResponseData.toString()); + ApiClient apiClient = TestHelper.setUpMock(200, expectedResponse); + + FaxApi api = new FaxApi(apiClient); + FaxListResponse response = api.faxList(); + + assertEquals(expectedResponse, response); + } +} diff --git a/sdks/java-v2/src/test/java/com/dropbox/sign/api/FaxLineApiTest.java b/sdks/java-v2/src/test/java/com/dropbox/sign/api/FaxLineApiTest.java new file mode 100644 index 000000000..5e805a7f5 --- /dev/null +++ b/sdks/java-v2/src/test/java/com/dropbox/sign/api/FaxLineApiTest.java @@ -0,0 +1,68 @@ +package com.dropbox.sign.api; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; + +import com.dropbox.sign.ApiClient; +import com.dropbox.sign.TestHelper; +import com.dropbox.sign.model.*; +import com.fasterxml.jackson.databind.JsonNode; +import java.io.File; +import java.util.Arrays; +import java.util.HashMap; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; + +public class FaxLineApiTest { + @Test + public void faxLineCreateTest() throws Exception { + JsonNode expectedResponseData = + TestHelper.getJsonContents(FaxLineResponse.class.getSimpleName()); + FaxLineResponse expectedResponse = + FaxLineResponse.init(expectedResponseData.toString()); + ApiClient apiClient = TestHelper.setUpMock(200, expectedResponse); + + JsonNode requestData = + TestHelper.getJsonContents( + FaxLineCreateRequest.class.getSimpleName()); + + FaxLineCreateRequest request = + FaxLineCreateRequest.init(requestData.toString()); + + FaxLineApi api = new FaxLineApi(apiClient); + FaxLineResponse response = api.faxLineCreate(request); + + assertEquals(expectedResponse, response); + } + + @Test + public void faxLineGetTest() throws Exception { + String faxLineNumber = "14155557897"; + + JsonNode expectedResponseData = + TestHelper.getJsonContents(FaxLineResponse.class.getSimpleName()); + FaxLineResponse expectedResponse = + FaxLineResponse.init(expectedResponseData.toString()); + ApiClient apiClient = TestHelper.setUpMock(200, expectedResponse); + + FaxLineApi api = new FaxLineApi(apiClient); + FaxLineResponse response = api.faxLineGet(faxLineNumber); + + assertEquals(expectedResponse, response); + } + + @Test + public void faxLineListTest() throws Exception { + JsonNode expectedResponseData = + TestHelper.getJsonContents(FaxLineListResponse.class.getSimpleName()); + FaxLineListResponse expectedResponse = + FaxLineListResponse.init(expectedResponseData.toString()); + ApiClient apiClient = TestHelper.setUpMock(200, expectedResponse); + + FaxLineApi api = new FaxLineApi(apiClient); + FaxLineListResponse response = api.faxLineList(); + + assertEquals(expectedResponse, response); + } +} diff --git a/sdks/node/dist/api.js b/sdks/node/dist/api.js index 0e8c3dcfd..9876b2698 100644 --- a/sdks/node/dist/api.js +++ b/sdks/node/dist/api.js @@ -19239,6 +19239,7 @@ var ReportCreateRequest = class _ReportCreateRequest { ((ReportTypeEnum2) => { ReportTypeEnum2["UserActivity"] = "user_activity"; ReportTypeEnum2["DocumentStatus"] = "document_status"; + ReportTypeEnum2["SmsActivity"] = "sms_activity"; })(ReportTypeEnum = ReportCreateRequest2.ReportTypeEnum || (ReportCreateRequest2.ReportTypeEnum = {})); })(ReportCreateRequest || (ReportCreateRequest = {})); @@ -19312,6 +19313,7 @@ var ReportResponse = class _ReportResponse { ((ReportTypeEnum2) => { ReportTypeEnum2["UserActivity"] = "user_activity"; ReportTypeEnum2["DocumentStatus"] = "document_status"; + ReportTypeEnum2["SmsActivity"] = "sms_activity"; })(ReportTypeEnum = ReportResponse2.ReportTypeEnum || (ReportResponse2.ReportTypeEnum = {})); })(ReportResponse || (ReportResponse = {})); @@ -25344,6 +25346,16 @@ var TemplateResponseDocumentFormFieldText = class _TemplateResponseDocumentFormF baseName: "validation_type", type: "TemplateResponseDocumentFormFieldText.ValidationTypeEnum" }, + { + name: "validationCustomRegex", + baseName: "validation_custom_regex", + type: "string" + }, + { + name: "validationCustomRegexFormatLabel", + baseName: "validation_custom_regex_format_label", + type: "string" + }, { name: "group", baseName: "group", diff --git a/sdks/node/docs/model/TemplateResponseDocumentFormFieldText.md b/sdks/node/docs/model/TemplateResponseDocumentFormFieldText.md index 25a86e871..07154a227 100644 --- a/sdks/node/docs/model/TemplateResponseDocumentFormFieldText.md +++ b/sdks/node/docs/model/TemplateResponseDocumentFormFieldText.md @@ -12,6 +12,8 @@ Name | Type | Description | Notes | `originalFontSize` | ```number``` | Original font size used in this form field's text. | | | `fontFamily` | ```string``` | Font family used in this form field's text. | | | `validationType` | ```string``` | Each text field may contain a `validation_type` parameter. Check out the list of [validation types](https://faq.hellosign.com/hc/en-us/articles/217115577) to learn more about the possible values. | | +| `validationCustomRegex` | ```string``` | When `validation_type` is set to `custom_regex`, this specifies the custom regular expression pattern that will be used to validate the text field. | | +| `validationCustomRegexFormatLabel` | ```string``` | When `validation_type` is set to `custom_regex`, this specifies the error message displayed to the signer when the text does not match the provided regex pattern. | | | `group` | ```string``` | The name of the group this field is in. If this field is not a group, this defaults to `null` except for Radio fields. | | [[Back to Model list]](../../README.md#models) [[Back to API list]](../../README.md#endpoints) [[Back to README]](../../README.md) diff --git a/sdks/node/model/reportCreateRequest.ts b/sdks/node/model/reportCreateRequest.ts index 48960ccc4..de074447a 100644 --- a/sdks/node/model/reportCreateRequest.ts +++ b/sdks/node/model/reportCreateRequest.ts @@ -72,5 +72,6 @@ export namespace ReportCreateRequest { export enum ReportTypeEnum { UserActivity = "user_activity", DocumentStatus = "document_status", + SmsActivity = "sms_activity", } } diff --git a/sdks/node/model/reportResponse.ts b/sdks/node/model/reportResponse.ts index 589ded1ce..e47c0248f 100644 --- a/sdks/node/model/reportResponse.ts +++ b/sdks/node/model/reportResponse.ts @@ -84,5 +84,6 @@ export namespace ReportResponse { export enum ReportTypeEnum { UserActivity = "user_activity", DocumentStatus = "document_status", + SmsActivity = "sms_activity", } } diff --git a/sdks/node/model/templateResponseDocumentFormFieldText.ts b/sdks/node/model/templateResponseDocumentFormFieldText.ts index e758496f8..a10ace959 100644 --- a/sdks/node/model/templateResponseDocumentFormFieldText.ts +++ b/sdks/node/model/templateResponseDocumentFormFieldText.ts @@ -51,6 +51,14 @@ export class TemplateResponseDocumentFormFieldText extends TemplateResponseDocum * Each text field may contain a `validation_type` parameter. Check out the list of [validation types](https://faq.hellosign.com/hc/en-us/articles/217115577) to learn more about the possible values. */ "validationType"?: TemplateResponseDocumentFormFieldText.ValidationTypeEnum; + /** + * When `validation_type` is set to `custom_regex`, this specifies the custom regular expression pattern that will be used to validate the text field. + */ + "validationCustomRegex"?: string | null; + /** + * When `validation_type` is set to `custom_regex`, this specifies the error message displayed to the signer when the text does not match the provided regex pattern. + */ + "validationCustomRegexFormatLabel"?: string | null; /** * The name of the group this field is in. If this field is not a group, this defaults to `null` except for Radio fields. */ @@ -89,6 +97,16 @@ export class TemplateResponseDocumentFormFieldText extends TemplateResponseDocum baseName: "validation_type", type: "TemplateResponseDocumentFormFieldText.ValidationTypeEnum", }, + { + name: "validationCustomRegex", + baseName: "validation_custom_regex", + type: "string", + }, + { + name: "validationCustomRegexFormatLabel", + baseName: "validation_custom_regex_format_label", + type: "string", + }, { name: "group", baseName: "group", diff --git a/sdks/node/tests/api/faxApi.test.ts b/sdks/node/tests/api/faxApi.test.ts new file mode 100644 index 000000000..a943da17b --- /dev/null +++ b/sdks/node/tests/api/faxApi.test.ts @@ -0,0 +1,89 @@ +import 'jest'; + +import { FaxApi } from '../../api/'; +import * as m from '../../model/'; +import { + getFixtureData, + setExpectedResponse, + diffJson, +} from '../test_utils'; + +const axios = require('axios'); +const fs = require('fs'); +const MockAdapter = require('axios-mock-adapter'); + +describe('FaxApiTest', () => { + let mock: typeof MockAdapter; + + beforeEach(() => { + mock = new MockAdapter(axios); + }); + + const api = new FaxApi(); + const rootFilePath = __dirname + '/../../test_fixtures'; + + it('testFaxSend', () => { + const requestClass = 'FaxSendRequest'; + const requestData = getFixtureData(requestClass)['default']; + + const responseClass = 'FaxGetResponse'; + const responseData = getFixtureData(responseClass)['default']; + + setExpectedResponse(mock, responseData, 200); + + const obj = m.FaxSendRequest.init(requestData); + obj.files = [fs.createReadStream(`${rootFilePath}/pdf-sample.pdf`)]; + + api.faxSend(obj).then(response => { + const diff = diffJson( + response.body, + m.FaxGetResponse.init(responseData), + ); + + expect(response.body.constructor.name).toBe(responseClass); + expect(diff).toBeFalsy(); + }).catch(error => { + throw new Error('Should not have thrown error: ' + error); + }); + }); + + it('testFaxGet', () => { + const faxId = 'c2e9691c85d9d6fa6ae773842e3680b2b8650f1d'; + + const responseClass = 'FaxGetResponse'; + const responseData = getFixtureData(responseClass)['default']; + + setExpectedResponse(mock, responseData, 200); + + api.faxGet(faxId).then(response => { + const diff = diffJson( + response.body, + m.FaxGetResponse.init(responseData), + ); + + expect(response.body.constructor.name).toBe(responseClass); + expect(diff).toBeFalsy(); + }).catch(error => { + throw new Error('Should not have thrown error: ' + error); + }); + }); + + it('testFaxList', () => { + const responseClass = 'FaxListResponse'; + const responseData = getFixtureData(responseClass)['default']; + + setExpectedResponse(mock, responseData, 200); + + api.faxList().then(response => { + const diff = diffJson( + response.body, + m.FaxListResponse.init(responseData), + ); + + expect(response.body.constructor.name).toBe(responseClass); + expect(diff).toBeFalsy(); + }).catch(error => { + throw new Error('Should not have thrown error: ' + error); + }); + }); +}); diff --git a/sdks/node/tests/api/faxLineApi.test.ts b/sdks/node/tests/api/faxLineApi.test.ts new file mode 100644 index 000000000..2d0ff9967 --- /dev/null +++ b/sdks/node/tests/api/faxLineApi.test.ts @@ -0,0 +1,86 @@ +import 'jest'; + +import { FaxLineApi } from '../../api/'; +import * as m from '../../model/'; +import { + getFixtureData, + setExpectedResponse, + diffJson, +} from '../test_utils'; + +const axios = require('axios'); +const fs = require('fs'); +const MockAdapter = require('axios-mock-adapter'); + +describe('FaxLineApiTest', () => { + let mock: typeof MockAdapter; + + beforeEach(() => { + mock = new MockAdapter(axios); + }); + + const api = new FaxLineApi(); + const rootFilePath = __dirname + '/../../test_fixtures'; + + it('testFaxLineCreate', () => { + const requestClass = 'FaxLineCreateRequest'; + const requestData = getFixtureData(requestClass)['default']; + + const responseClass = 'FaxLineResponse'; + const responseData = getFixtureData(responseClass)['default']; + + setExpectedResponse(mock, responseData, 200); + + api.faxLineCreate(requestData).then(response => { + const diff = diffJson( + response.body, + m.FaxLineResponse.init(responseData), + ); + + expect(response.body.constructor.name).toBe(responseClass); + expect(diff).toBeFalsy(); + }).catch(error => { + throw new Error('Should not have thrown error: ' + error); + }); + }); + + it('testFaxLineGet', () => { + const faxLineNumber = '14155557897'; + + const responseClass = 'FaxLineResponse'; + const responseData = getFixtureData(responseClass)['default']; + + setExpectedResponse(mock, responseData, 200); + + api.faxLineGet(faxLineNumber).then(response => { + const diff = diffJson( + response.body, + m.FaxLineResponse.init(responseData), + ); + + expect(response.body.constructor.name).toBe(responseClass); + expect(diff).toBeFalsy(); + }).catch(error => { + throw new Error('Should not have thrown error: ' + error); + }); + }); + + it('testFaxLineList', () => { + const responseClass = 'FaxLineListResponse'; + const responseData = getFixtureData(responseClass)['default']; + + setExpectedResponse(mock, responseData, 200); + + api.faxLineList().then(response => { + const diff = diffJson( + response.body, + m.FaxLineListResponse.init(responseData), + ); + + expect(response.body.constructor.name).toBe(responseClass); + expect(diff).toBeFalsy(); + }).catch(error => { + throw new Error('Should not have thrown error: ' + error); + }); + }); +}); diff --git a/sdks/node/types/model/reportCreateRequest.d.ts b/sdks/node/types/model/reportCreateRequest.d.ts index 7ccc67a50..4bdd1f595 100644 --- a/sdks/node/types/model/reportCreateRequest.d.ts +++ b/sdks/node/types/model/reportCreateRequest.d.ts @@ -11,6 +11,7 @@ export declare class ReportCreateRequest { export declare namespace ReportCreateRequest { enum ReportTypeEnum { UserActivity = "user_activity", - DocumentStatus = "document_status" + DocumentStatus = "document_status", + SmsActivity = "sms_activity" } } diff --git a/sdks/node/types/model/reportResponse.d.ts b/sdks/node/types/model/reportResponse.d.ts index 88546b695..1490e79e9 100644 --- a/sdks/node/types/model/reportResponse.d.ts +++ b/sdks/node/types/model/reportResponse.d.ts @@ -12,6 +12,7 @@ export declare class ReportResponse { export declare namespace ReportResponse { enum ReportTypeEnum { UserActivity = "user_activity", - DocumentStatus = "document_status" + DocumentStatus = "document_status", + SmsActivity = "sms_activity" } } diff --git a/sdks/node/types/model/templateResponseDocumentFormFieldText.d.ts b/sdks/node/types/model/templateResponseDocumentFormFieldText.d.ts index 5f6dcb4f1..2509450f9 100644 --- a/sdks/node/types/model/templateResponseDocumentFormFieldText.d.ts +++ b/sdks/node/types/model/templateResponseDocumentFormFieldText.d.ts @@ -8,6 +8,8 @@ export declare class TemplateResponseDocumentFormFieldText extends TemplateRespo "originalFontSize"?: number; "fontFamily"?: string; "validationType"?: TemplateResponseDocumentFormFieldText.ValidationTypeEnum; + "validationCustomRegex"?: string | null; + "validationCustomRegexFormatLabel"?: string | null; "group"?: string | null; static discriminator: string | undefined; static attributeTypeMap: AttributeTypeMap; diff --git a/sdks/php/docs/Model/TemplateResponseDocumentFormFieldText.md b/sdks/php/docs/Model/TemplateResponseDocumentFormFieldText.md index e6af0e041..630c7a032 100644 --- a/sdks/php/docs/Model/TemplateResponseDocumentFormFieldText.md +++ b/sdks/php/docs/Model/TemplateResponseDocumentFormFieldText.md @@ -12,6 +12,8 @@ Name | Type | Description | Notes | `original_font_size` | ```int``` | Original font size used in this form field's text. | | | `font_family` | ```string``` | Font family used in this form field's text. | | | `validation_type` | ```string``` | Each text field may contain a `validation_type` parameter. Check out the list of [validation types](https://faq.hellosign.com/hc/en-us/articles/217115577) to learn more about the possible values. | | +| `validation_custom_regex` | ```string``` | When `validation_type` is set to `custom_regex`, this specifies the custom regular expression pattern that will be used to validate the text field. | | +| `validation_custom_regex_format_label` | ```string``` | When `validation_type` is set to `custom_regex`, this specifies the error message displayed to the signer when the text does not match the provided regex pattern. | | | `group` | ```string``` | The name of the group this field is in. If this field is not a group, this defaults to `null` except for Radio fields. | | [[Back to Model list]](../../README.md#models) [[Back to API list]](../../README.md#endpoints) [[Back to README]](../../README.md) diff --git a/sdks/php/src/Model/ApiAppCreateRequest.php b/sdks/php/src/Model/ApiAppCreateRequest.php index c6d0cc9a9..39c1c9ace 100644 --- a/sdks/php/src/Model/ApiAppCreateRequest.php +++ b/sdks/php/src/Model/ApiAppCreateRequest.php @@ -329,8 +329,8 @@ public function listInvalidProperties() if ($this->container['domains'] === null) { $invalidProperties[] = "'domains' can't be null"; } - if (count($this->container['domains']) > 2) { - $invalidProperties[] = "invalid value for 'domains', number of items must be less than or equal to 2."; + if (count($this->container['domains']) > 10) { + $invalidProperties[] = "invalid value for 'domains', number of items must be less than or equal to 10."; } if (count($this->container['domains']) < 1) { @@ -377,8 +377,8 @@ public function setDomains(array $domains) throw new InvalidArgumentException('non-nullable domains cannot be null'); } - if (count($domains) > 2) { - throw new InvalidArgumentException('invalid value for $domains when calling ApiAppCreateRequest., number of items must be less than or equal to 2.'); + if (count($domains) > 10) { + throw new InvalidArgumentException('invalid value for $domains when calling ApiAppCreateRequest., number of items must be less than or equal to 10.'); } if (count($domains) < 1) { throw new InvalidArgumentException('invalid length for $domains when calling ApiAppCreateRequest., number of items must be greater than or equal to 1.'); diff --git a/sdks/php/src/Model/ApiAppUpdateRequest.php b/sdks/php/src/Model/ApiAppUpdateRequest.php index 323f28d52..54f0a8c4e 100644 --- a/sdks/php/src/Model/ApiAppUpdateRequest.php +++ b/sdks/php/src/Model/ApiAppUpdateRequest.php @@ -326,8 +326,8 @@ public function listInvalidProperties() { $invalidProperties = []; - if (!is_null($this->container['domains']) && (count($this->container['domains']) > 2)) { - $invalidProperties[] = "invalid value for 'domains', number of items must be less than or equal to 2."; + if (!is_null($this->container['domains']) && (count($this->container['domains']) > 10)) { + $invalidProperties[] = "invalid value for 'domains', number of items must be less than or equal to 10."; } return $invalidProperties; @@ -421,8 +421,8 @@ public function setDomains(?array $domains) throw new InvalidArgumentException('non-nullable domains cannot be null'); } - if (count($domains) > 2) { - throw new InvalidArgumentException('invalid value for $domains when calling ApiAppUpdateRequest., number of items must be less than or equal to 2.'); + if (count($domains) > 10) { + throw new InvalidArgumentException('invalid value for $domains when calling ApiAppUpdateRequest., number of items must be less than or equal to 10.'); } $this->container['domains'] = $domains; diff --git a/sdks/php/src/Model/ReportCreateRequest.php b/sdks/php/src/Model/ReportCreateRequest.php index f2aefab1b..58af6688d 100644 --- a/sdks/php/src/Model/ReportCreateRequest.php +++ b/sdks/php/src/Model/ReportCreateRequest.php @@ -234,6 +234,7 @@ public function getModelName() public const REPORT_TYPE_USER_ACTIVITY = 'user_activity'; public const REPORT_TYPE_DOCUMENT_STATUS = 'document_status'; + public const REPORT_TYPE_SMS_ACTIVITY = 'sms_activity'; /** * Gets allowable values of the enum @@ -245,6 +246,7 @@ public function getReportTypeAllowableValues() return [ self::REPORT_TYPE_USER_ACTIVITY, self::REPORT_TYPE_DOCUMENT_STATUS, + self::REPORT_TYPE_SMS_ACTIVITY, ]; } diff --git a/sdks/php/src/Model/ReportResponse.php b/sdks/php/src/Model/ReportResponse.php index 537eb9293..f64b92272 100644 --- a/sdks/php/src/Model/ReportResponse.php +++ b/sdks/php/src/Model/ReportResponse.php @@ -241,6 +241,7 @@ public function getModelName() public const REPORT_TYPE_USER_ACTIVITY = 'user_activity'; public const REPORT_TYPE_DOCUMENT_STATUS = 'document_status'; + public const REPORT_TYPE_SMS_ACTIVITY = 'sms_activity'; /** * Gets allowable values of the enum @@ -252,6 +253,7 @@ public function getReportTypeAllowableValues() return [ self::REPORT_TYPE_USER_ACTIVITY, self::REPORT_TYPE_DOCUMENT_STATUS, + self::REPORT_TYPE_SMS_ACTIVITY, ]; } diff --git a/sdks/php/src/Model/TemplateResponseDocumentFormFieldText.php b/sdks/php/src/Model/TemplateResponseDocumentFormFieldText.php index afb433174..078f5995d 100644 --- a/sdks/php/src/Model/TemplateResponseDocumentFormFieldText.php +++ b/sdks/php/src/Model/TemplateResponseDocumentFormFieldText.php @@ -62,6 +62,8 @@ class TemplateResponseDocumentFormFieldText extends TemplateResponseDocumentForm 'original_font_size' => 'int', 'font_family' => 'string', 'validation_type' => 'string', + 'validation_custom_regex' => 'string', + 'validation_custom_regex_format_label' => 'string', 'group' => 'string', ]; @@ -79,6 +81,8 @@ class TemplateResponseDocumentFormFieldText extends TemplateResponseDocumentForm 'original_font_size' => null, 'font_family' => null, 'validation_type' => null, + 'validation_custom_regex' => null, + 'validation_custom_regex_format_label' => null, 'group' => null, ]; @@ -94,6 +98,8 @@ class TemplateResponseDocumentFormFieldText extends TemplateResponseDocumentForm 'original_font_size' => false, 'font_family' => false, 'validation_type' => true, + 'validation_custom_regex' => true, + 'validation_custom_regex_format_label' => true, 'group' => true, ]; @@ -181,6 +187,8 @@ public function isNullableSetToNull(string $property): bool 'original_font_size' => 'originalFontSize', 'font_family' => 'fontFamily', 'validation_type' => 'validation_type', + 'validation_custom_regex' => 'validation_custom_regex', + 'validation_custom_regex_format_label' => 'validation_custom_regex_format_label', 'group' => 'group', ]; @@ -196,6 +204,8 @@ public function isNullableSetToNull(string $property): bool 'original_font_size' => 'setOriginalFontSize', 'font_family' => 'setFontFamily', 'validation_type' => 'setValidationType', + 'validation_custom_regex' => 'setValidationCustomRegex', + 'validation_custom_regex_format_label' => 'setValidationCustomRegexFormatLabel', 'group' => 'setGroup', ]; @@ -211,6 +221,8 @@ public function isNullableSetToNull(string $property): bool 'original_font_size' => 'getOriginalFontSize', 'font_family' => 'getFontFamily', 'validation_type' => 'getValidationType', + 'validation_custom_regex' => 'getValidationCustomRegex', + 'validation_custom_regex_format_label' => 'getValidationCustomRegexFormatLabel', 'group' => 'getGroup', ]; @@ -303,6 +315,8 @@ public function __construct(?array $data = null) $this->setIfExists('original_font_size', $data ?? [], null); $this->setIfExists('font_family', $data ?? [], null); $this->setIfExists('validation_type', $data ?? [], null); + $this->setIfExists('validation_custom_regex', $data ?? [], null); + $this->setIfExists('validation_custom_regex_format_label', $data ?? [], null); $this->setIfExists('group', $data ?? [], null); } @@ -556,6 +570,74 @@ public function setValidationType(?string $validation_type) return $this; } + /** + * Gets validation_custom_regex + * + * @return string|null + */ + public function getValidationCustomRegex() + { + return $this->container['validation_custom_regex']; + } + + /** + * Sets validation_custom_regex + * + * @param string|null $validation_custom_regex when `validation_type` is set to `custom_regex`, this specifies the custom regular expression pattern that will be used to validate the text field + * + * @return self + */ + public function setValidationCustomRegex(?string $validation_custom_regex) + { + if (is_null($validation_custom_regex)) { + array_push($this->openAPINullablesSetToNull, 'validation_custom_regex'); + } else { + $nullablesSetToNull = $this->getOpenAPINullablesSetToNull(); + $index = array_search('validation_custom_regex', $nullablesSetToNull); + if ($index !== false) { + unset($nullablesSetToNull[$index]); + $this->setOpenAPINullablesSetToNull($nullablesSetToNull); + } + } + $this->container['validation_custom_regex'] = $validation_custom_regex; + + return $this; + } + + /** + * Gets validation_custom_regex_format_label + * + * @return string|null + */ + public function getValidationCustomRegexFormatLabel() + { + return $this->container['validation_custom_regex_format_label']; + } + + /** + * Sets validation_custom_regex_format_label + * + * @param string|null $validation_custom_regex_format_label when `validation_type` is set to `custom_regex`, this specifies the error message displayed to the signer when the text does not match the provided regex pattern + * + * @return self + */ + public function setValidationCustomRegexFormatLabel(?string $validation_custom_regex_format_label) + { + if (is_null($validation_custom_regex_format_label)) { + array_push($this->openAPINullablesSetToNull, 'validation_custom_regex_format_label'); + } else { + $nullablesSetToNull = $this->getOpenAPINullablesSetToNull(); + $index = array_search('validation_custom_regex_format_label', $nullablesSetToNull); + if ($index !== false) { + unset($nullablesSetToNull[$index]); + $this->setOpenAPINullablesSetToNull($nullablesSetToNull); + } + } + $this->container['validation_custom_regex_format_label'] = $validation_custom_regex_format_label; + + return $this; + } + /** * Gets group * diff --git a/sdks/php/test/Api/FaxApiTest.php b/sdks/php/test/Api/FaxApiTest.php new file mode 100644 index 000000000..fe40e1e45 --- /dev/null +++ b/sdks/php/test/Api/FaxApiTest.php @@ -0,0 +1,90 @@ +client = new GuzzleHttp\Client([ + 'handler' => GuzzleHttp\HandlerStack::create($this->handler), + ]); + + $this->api = new Api\FaxApi( + Configuration::getDefaultConfiguration(), + $this->client, + ); + } + + public function testFaxSend() + { + $requestClass = Model\FaxSendRequest::class; + $requestData = TestUtils::getFixtureData($requestClass)['default']; + + $responseClass = Model\FaxGetResponse::class; + $responseData = TestUtils::getFixtureData($responseClass)['default']; + + $this->setExpectedResponse($responseData); + + $obj = Model\FaxSendRequest::init( + $requestData + ); + $obj->setFiles([ + new SplFileObject(self::ROOT_FILE_PATH . '/pdf-sample.pdf'), + ]); + + $response = $this->api->faxSend($obj); + $serialized = TestUtils::toArray($response); + + $this->assertInstanceOf($responseClass, $response); + $this->assertEquals($responseData, $serialized); + $this->assertEquals($responseData, TestUtils::toArray($response)); + } + + public function testFaxList() + { + $responseClass = Model\FaxListResponse::class; + $responseData = TestUtils::getFixtureData($responseClass)['default']; + + $this->setExpectedResponse($responseData); + + $response = $this->api->faxList(); + $serialized = TestUtils::toArray($response); + + $this->assertInstanceOf($responseClass, $response); + $this->assertEquals($responseData, $serialized); + $this->assertEquals($responseData, TestUtils::toArray($response)); + } + + public function testFaxGet() + { + $faxId = 'c2e9691c85d9d6fa6ae773842e3680b2b8650f1d'; + + $responseClass = Model\FaxGetResponse::class; + $responseData = TestUtils::getFixtureData($responseClass)['default']; + + $this->setExpectedResponse($responseData); + + $response = $this->api->faxGet($faxId); + $serialized = TestUtils::toArray($response); + + $this->assertInstanceOf($responseClass, $response); + $this->assertEquals($responseData, $serialized); + $this->assertEquals($responseData, TestUtils::toArray($response)); + } +} diff --git a/sdks/php/test/Api/FaxLineApiTest.php b/sdks/php/test/Api/FaxLineApiTest.php new file mode 100644 index 000000000..82e5b2fc7 --- /dev/null +++ b/sdks/php/test/Api/FaxLineApiTest.php @@ -0,0 +1,87 @@ +client = new GuzzleHttp\Client([ + 'handler' => GuzzleHttp\HandlerStack::create($this->handler), + ]); + + $this->api = new Api\FaxLineApi( + Configuration::getDefaultConfiguration(), + $this->client, + ); + } + + public function testFaxSend() + { + $requestClass = Model\FaxLineCreateRequest::class; + $requestData = TestUtils::getFixtureData($requestClass)['default']; + + $responseClass = Model\FaxLineResponse::class; + $responseData = TestUtils::getFixtureData($responseClass)['default']; + + $this->setExpectedResponse($responseData); + + $obj = Model\FaxLineCreateRequest::init( + $requestData + ); + + $response = $this->api->faxLineCreate($obj); + $serialized = TestUtils::toArray($response); + + $this->assertInstanceOf($responseClass, $response); + $this->assertEquals($responseData, $serialized); + $this->assertEquals($responseData, TestUtils::toArray($response)); + } + + public function testFaxLineList() + { + $responseClass = Model\FaxLineListResponse::class; + $responseData = TestUtils::getFixtureData($responseClass)['default']; + + $this->setExpectedResponse($responseData); + + $response = $this->api->faxLineList(); + $serialized = TestUtils::toArray($response); + + $this->assertInstanceOf($responseClass, $response); + $this->assertEquals($responseData, $serialized); + $this->assertEquals($responseData, TestUtils::toArray($response)); + } + + public function testFaxLineGet() + { + $faxLineNumber = '14155557897'; + + $responseClass = Model\FaxLineResponse::class; + $responseData = TestUtils::getFixtureData($responseClass)['default']; + + $this->setExpectedResponse($responseData); + + $response = $this->api->faxLineGet($faxLineNumber); + $serialized = TestUtils::toArray($response); + + $this->assertInstanceOf($responseClass, $response); + $this->assertEquals($responseData, $serialized); + $this->assertEquals($responseData, TestUtils::toArray($response)); + } +} diff --git a/sdks/python/docs/TemplateResponseDocumentFormFieldText.md b/sdks/python/docs/TemplateResponseDocumentFormFieldText.md index 8d52035f9..c0ed796ca 100644 --- a/sdks/python/docs/TemplateResponseDocumentFormFieldText.md +++ b/sdks/python/docs/TemplateResponseDocumentFormFieldText.md @@ -11,6 +11,8 @@ Name | Type | Description | Notes | `original_font_size` | ```int``` | Original font size used in this form field's text. | | | `font_family` | ```str``` | Font family used in this form field's text. | | | `validation_type` | ```str``` | Each text field may contain a `validation_type` parameter. Check out the list of [validation types](https://faq.hellosign.com/hc/en-us/articles/217115577) to learn more about the possible values. | | +| `validation_custom_regex` | ```str``` | When `validation_type` is set to `custom_regex`, this specifies the custom regular expression pattern that will be used to validate the text field. | | +| `validation_custom_regex_format_label` | ```str``` | When `validation_type` is set to `custom_regex`, this specifies the error message displayed to the signer when the text does not match the provided regex pattern. | | | `group` | ```str``` | The name of the group this field is in. If this field is not a group, this defaults to `null` except for Radio fields. | | [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/sdks/python/dropbox_sign/models/api_app_create_request.py b/sdks/python/dropbox_sign/models/api_app_create_request.py index 2e8e6a77b..788c74a23 100644 --- a/sdks/python/dropbox_sign/models/api_app_create_request.py +++ b/sdks/python/dropbox_sign/models/api_app_create_request.py @@ -36,7 +36,7 @@ class ApiAppCreateRequest(BaseModel): ApiAppCreateRequest """ # noqa: E501 - domains: Annotated[List[StrictStr], Field(min_length=1, max_length=2)] = Field( + domains: Annotated[List[StrictStr], Field(min_length=1, max_length=10)] = Field( description="The domain names the ApiApp will be associated with." ) name: StrictStr = Field(description="The name you want to assign to the ApiApp.") diff --git a/sdks/python/dropbox_sign/models/api_app_update_request.py b/sdks/python/dropbox_sign/models/api_app_update_request.py index 7e1f87206..7370a7e96 100644 --- a/sdks/python/dropbox_sign/models/api_app_update_request.py +++ b/sdks/python/dropbox_sign/models/api_app_update_request.py @@ -46,7 +46,7 @@ class ApiAppUpdateRequest(BaseModel): default=None, description="An image file to use as a custom logo in embedded contexts. (Only applies to some API plans)", ) - domains: Optional[Annotated[List[StrictStr], Field(max_length=2)]] = Field( + domains: Optional[Annotated[List[StrictStr], Field(max_length=10)]] = Field( default=None, description="The domain names the ApiApp will be associated with." ) name: Optional[StrictStr] = Field( diff --git a/sdks/python/dropbox_sign/models/report_create_request.py b/sdks/python/dropbox_sign/models/report_create_request.py index bdee2101e..9c4e3e1ff 100644 --- a/sdks/python/dropbox_sign/models/report_create_request.py +++ b/sdks/python/dropbox_sign/models/report_create_request.py @@ -48,9 +48,9 @@ class ReportCreateRequest(BaseModel): def report_type_validate_enum(cls, value): """Validates the enum""" for i in value: - if i not in set(["user_activity", "document_status"]): + if i not in set(["user_activity", "document_status", "sms_activity"]): raise ValueError( - "each list item must be one of ('user_activity', 'document_status')" + "each list item must be one of ('user_activity', 'document_status', 'sms_activity')" ) return value diff --git a/sdks/python/dropbox_sign/models/report_response.py b/sdks/python/dropbox_sign/models/report_response.py index f1fbe5148..176195da1 100644 --- a/sdks/python/dropbox_sign/models/report_response.py +++ b/sdks/python/dropbox_sign/models/report_response.py @@ -62,9 +62,9 @@ def report_type_validate_enum(cls, value): return value for i in value: - if i not in set(["user_activity", "document_status"]): + if i not in set(["user_activity", "document_status", "sms_activity"]): raise ValueError( - "each list item must be one of ('user_activity', 'document_status')" + "each list item must be one of ('user_activity', 'document_status', 'sms_activity')" ) return value diff --git a/sdks/python/dropbox_sign/models/template_response_document_form_field_text.py b/sdks/python/dropbox_sign/models/template_response_document_form_field_text.py index e6800d2ed..6280970f4 100644 --- a/sdks/python/dropbox_sign/models/template_response_document_form_field_text.py +++ b/sdks/python/dropbox_sign/models/template_response_document_form_field_text.py @@ -68,6 +68,14 @@ class TemplateResponseDocumentFormFieldText(TemplateResponseDocumentFormFieldBas default=None, description="Each text field may contain a `validation_type` parameter. Check out the list of [validation types](https://faq.hellosign.com/hc/en-us/articles/217115577) to learn more about the possible values.", ) + validation_custom_regex: Optional[StrictStr] = Field( + default=None, + description="When `validation_type` is set to `custom_regex`, this specifies the custom regular expression pattern that will be used to validate the text field.", + ) + validation_custom_regex_format_label: Optional[StrictStr] = Field( + default=None, + description="When `validation_type` is set to `custom_regex`, this specifies the error message displayed to the signer when the text does not match the provided regex pattern.", + ) group: Optional[StrictStr] = Field( default=None, description="The name of the group this field is in. If this field is not a group, this defaults to `null` except for Radio fields.", @@ -87,6 +95,8 @@ class TemplateResponseDocumentFormFieldText(TemplateResponseDocumentFormFieldBas "originalFontSize", "fontFamily", "validation_type", + "validation_custom_regex", + "validation_custom_regex_format_label", "group", ] @@ -199,6 +209,10 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "originalFontSize": obj.get("originalFontSize"), "fontFamily": obj.get("fontFamily"), "validation_type": obj.get("validation_type"), + "validation_custom_regex": obj.get("validation_custom_regex"), + "validation_custom_regex_format_label": obj.get( + "validation_custom_regex_format_label" + ), "group": obj.get("group"), } ) @@ -223,6 +237,8 @@ def openapi_types(cls) -> Dict[str, str]: "original_font_size": "(int,)", "font_family": "(str,)", "validation_type": "(str,)", + "validation_custom_regex": "(str,)", + "validation_custom_regex_format_label": "(str,)", "group": "(str,)", "api_id": "(str,)", "name": "(str,)", diff --git a/sdks/python/tests/test_fax_api.py b/sdks/python/tests/test_fax_api.py new file mode 100644 index 000000000..b97509b1c --- /dev/null +++ b/sdks/python/tests/test_fax_api.py @@ -0,0 +1,71 @@ +import unittest + +from dropbox_sign import ApiClient, Configuration, apis, models as m +from test_utils import get_fixture_data, MockPoolManager, get_base_path + + +class TestFaxApi(unittest.TestCase): + def setUp(self): + self.configuration = Configuration() + self.api_client = ApiClient(self.configuration) + self.mock_pool = MockPoolManager(self) + self.api_client.rest_client.pool_manager = self.mock_pool + + self.api = apis.FaxApi(self.api_client) + + def test_fax_send(self): + request_class = "FaxSendRequest" + request_data = get_fixture_data(request_class)["default"] + + response_class = "FaxGetResponse" + response_data = get_fixture_data(response_class)["default"] + + self.mock_pool.expect_request( + content_type="multipart/form-data", + data=request_data, + response=response_data, + ) + expected = m.FaxGetResponse.init(response_data) + obj = m.FaxSendRequest.init(request_data) + obj.files = [open(f"{get_base_path()}/pdf-sample.pdf", "rb")] + + result = self.api.fax_send(obj) + + self.assertEqual(result.__class__.__name__, response_class) + self.assertEqual(result, expected) + + obj.files[0].close() + + def test_fax_get(self): + fax_id = "c2e9691c85d9d6fa6ae773842e3680b2b8650f1d" + + response_class = "FaxGetResponse" + response_data = get_fixture_data(response_class)["default"] + + self.mock_pool.expect_request( + content_type="application/json", response=response_data + ) + expected = m.FaxGetResponse.init(response_data) + + result = self.api.fax_get(fax_id) + + self.assertEqual(result.__class__.__name__, response_class) + self.assertEqual(result, expected) + + def test_fax_list(self): + response_class = "FaxListResponse" + response_data = get_fixture_data(response_class)["default"] + + self.mock_pool.expect_request( + content_type="application/json", response=response_data + ) + expected = m.FaxListResponse.init(response_data) + + result = self.api.fax_list() + + self.assertEqual(result.__class__.__name__, response_class) + self.assertEqual(result, expected) + + +if __name__ == "__main__": + unittest.main() diff --git a/sdks/python/tests/test_fax_line_api.py b/sdks/python/tests/test_fax_line_api.py new file mode 100644 index 000000000..569a08b76 --- /dev/null +++ b/sdks/python/tests/test_fax_line_api.py @@ -0,0 +1,68 @@ +import unittest + +from dropbox_sign import ApiClient, Configuration, apis, models as m +from test_utils import get_fixture_data, MockPoolManager, get_base_path + + +class TestFaxLineApi(unittest.TestCase): + def setUp(self): + self.configuration = Configuration() + self.api_client = ApiClient(self.configuration) + self.mock_pool = MockPoolManager(self) + self.api_client.rest_client.pool_manager = self.mock_pool + + self.api = apis.FaxLineApi(self.api_client) + + def test_fax_line_create(self): + request_class = "FaxLineCreateRequest" + request_data = get_fixture_data(request_class)["default"] + + response_class = "FaxLineResponse" + response_data = get_fixture_data(response_class)["default"] + + self.mock_pool.expect_request( + content_type="application/json", response=response_data + ) + + expected = m.FaxLineResponse.init(response_data) + + result = self.api.fax_line_create(obj) + + self.assertEqual(result.__class__.__name__, response_class) + self.assertEqual(result, expected) + + obj.files[0].close() + + def test_fax_line_get(self): + fax_line_number = "14155557897" + + response_class = "FaxLineResponse" + response_data = get_fixture_data(response_class)["default"] + + self.mock_pool.expect_request( + content_type="application/json", response=response_data + ) + expected = m.FaxLineResponse.init(response_data) + + result = self.api.fax_line_get(fax_line_number) + + self.assertEqual(result.__class__.__name__, response_class) + self.assertEqual(result, expected) + + def test_fax_line_list(self): + response_class = "FaxLineListResponse" + response_data = get_fixture_data(response_class)["default"] + + self.mock_pool.expect_request( + content_type="application/json", response=response_data + ) + expected = m.FaxLineListResponse.init(response_data) + + result = self.api.fax_line_list() + + self.assertEqual(result.__class__.__name__, response_class) + self.assertEqual(result, expected) + + +if __name__ == "__main__": + unittest.main() diff --git a/sdks/ruby/docs/TemplateResponseDocumentFormFieldText.md b/sdks/ruby/docs/TemplateResponseDocumentFormFieldText.md index 7bfe70283..f63026a61 100644 --- a/sdks/ruby/docs/TemplateResponseDocumentFormFieldText.md +++ b/sdks/ruby/docs/TemplateResponseDocumentFormFieldText.md @@ -12,5 +12,7 @@ This class extends `TemplateResponseDocumentFormFieldBase` | `original_font_size` | ```Integer``` | Original font size used in this form field's text. | | | `font_family` | ```String``` | Font family used in this form field's text. | | | `validation_type` | ```String``` | Each text field may contain a `validation_type` parameter. Check out the list of [validation types](https://faq.hellosign.com/hc/en-us/articles/217115577) to learn more about the possible values. | | +| `validation_custom_regex` | ```String``` | When `validation_type` is set to `custom_regex`, this specifies the custom regular expression pattern that will be used to validate the text field. | | +| `validation_custom_regex_format_label` | ```String``` | When `validation_type` is set to `custom_regex`, this specifies the error message displayed to the signer when the text does not match the provided regex pattern. | | | `group` | ```String``` | The name of the group this field is in. If this field is not a group, this defaults to `null` except for Radio fields. | | diff --git a/sdks/ruby/lib/dropbox-sign/models/api_app_create_request.rb b/sdks/ruby/lib/dropbox-sign/models/api_app_create_request.rb index f37d1a2fc..c9cf7bf08 100644 --- a/sdks/ruby/lib/dropbox-sign/models/api_app_create_request.rb +++ b/sdks/ruby/lib/dropbox-sign/models/api_app_create_request.rb @@ -165,8 +165,8 @@ def list_invalid_properties invalid_properties.push('invalid value for "domains", domains cannot be nil.') end - if @domains.length > 2 - invalid_properties.push('invalid value for "domains", number of items must be less than or equal to 2.') + if @domains.length > 10 + invalid_properties.push('invalid value for "domains", number of items must be less than or equal to 10.') end if @domains.length < 1 @@ -184,7 +184,7 @@ def list_invalid_properties # @return true if the model is valid def valid? return false if @domains.nil? - return false if @domains.length > 2 + return false if @domains.length > 10 return false if @domains.length < 1 return false if @name.nil? true @@ -196,8 +196,8 @@ def domains=(domains) if domains.nil? fail ArgumentError, 'domains cannot be nil' end - if domains.length > 2 - fail ArgumentError, 'invalid value for "domains", number of items must be less than or equal to 2.' + if domains.length > 10 + fail ArgumentError, 'invalid value for "domains", number of items must be less than or equal to 10.' end if domains.length < 1 diff --git a/sdks/ruby/lib/dropbox-sign/models/api_app_update_request.rb b/sdks/ruby/lib/dropbox-sign/models/api_app_update_request.rb index 45b38ce82..4e04ba155 100644 --- a/sdks/ruby/lib/dropbox-sign/models/api_app_update_request.rb +++ b/sdks/ruby/lib/dropbox-sign/models/api_app_update_request.rb @@ -161,8 +161,8 @@ def initialize(attributes = {}) # @return Array for valid properties with the reasons def list_invalid_properties invalid_properties = Array.new - if !@domains.nil? && @domains.length > 2 - invalid_properties.push('invalid value for "domains", number of items must be less than or equal to 2.') + if !@domains.nil? && @domains.length > 10 + invalid_properties.push('invalid value for "domains", number of items must be less than or equal to 10.') end invalid_properties @@ -171,15 +171,15 @@ def list_invalid_properties # Check to see if the all the properties in the model are valid # @return true if the model is valid def valid? - return false if !@domains.nil? && @domains.length > 2 + return false if !@domains.nil? && @domains.length > 10 true end # Custom attribute writer method with validation # @param [Object] domains Value to be assigned def domains=(domains) - if domains.length > 2 - fail ArgumentError, 'invalid value for "domains", number of items must be less than or equal to 2.' + if domains.length > 10 + fail ArgumentError, 'invalid value for "domains", number of items must be less than or equal to 10.' end @domains = domains diff --git a/sdks/ruby/lib/dropbox-sign/models/template_response_document_form_field_text.rb b/sdks/ruby/lib/dropbox-sign/models/template_response_document_form_field_text.rb index 7028169e3..11d6178bb 100644 --- a/sdks/ruby/lib/dropbox-sign/models/template_response_document_form_field_text.rb +++ b/sdks/ruby/lib/dropbox-sign/models/template_response_document_form_field_text.rb @@ -42,6 +42,14 @@ class TemplateResponseDocumentFormFieldText < TemplateResponseDocumentFormFieldB # @return [String, nil] attr_accessor :validation_type + # When `validation_type` is set to `custom_regex`, this specifies the custom regular expression pattern that will be used to validate the text field. + # @return [String, nil] + attr_accessor :validation_custom_regex + + # When `validation_type` is set to `custom_regex`, this specifies the error message displayed to the signer when the text does not match the provided regex pattern. + # @return [String, nil] + attr_accessor :validation_custom_regex_format_label + # The name of the group this field is in. If this field is not a group, this defaults to `null` except for Radio fields. # @return [String, nil] attr_accessor :group @@ -77,6 +85,8 @@ def self.attribute_map :'original_font_size' => :'originalFontSize', :'font_family' => :'fontFamily', :'validation_type' => :'validation_type', + :'validation_custom_regex' => :'validation_custom_regex', + :'validation_custom_regex_format_label' => :'validation_custom_regex_format_label', :'group' => :'group' } end @@ -100,6 +110,8 @@ def self.openapi_types :'original_font_size' => :'Integer', :'font_family' => :'String', :'validation_type' => :'String', + :'validation_custom_regex' => :'String', + :'validation_custom_regex_format_label' => :'String', :'group' => :'String' } end @@ -108,6 +120,8 @@ def self.openapi_types def self.openapi_nullable Set.new([ :'validation_type', + :'validation_custom_regex', + :'validation_custom_regex_format_label', :'group' ]) end @@ -182,6 +196,14 @@ def initialize(attributes = {}) self.validation_type = attributes[:'validation_type'] end + if attributes.key?(:'validation_custom_regex') + self.validation_custom_regex = attributes[:'validation_custom_regex'] + end + + if attributes.key?(:'validation_custom_regex_format_label') + self.validation_custom_regex_format_label = attributes[:'validation_custom_regex_format_label'] + end + if attributes.key?(:'group') self.group = attributes[:'group'] end @@ -238,6 +260,8 @@ def ==(o) original_font_size == o.original_font_size && font_family == o.font_family && validation_type == o.validation_type && + validation_custom_regex == o.validation_custom_regex && + validation_custom_regex_format_label == o.validation_custom_regex_format_label && group == o.group && super(o) end @@ -250,7 +274,7 @@ def eql?(o) # Calculates hash code according to all attributes. # @return [Integer] Hash code def hash - [type, avg_text_length, is_multiline, original_font_size, font_family, validation_type, group].hash + [type, avg_text_length, is_multiline, original_font_size, font_family, validation_type, validation_custom_regex, validation_custom_regex_format_label, group].hash end # Builds the object from hash diff --git a/sdks/ruby/spec/api/fax_api_spec.rb b/sdks/ruby/spec/api/fax_api_spec.rb new file mode 100644 index 000000000..95e673a1e --- /dev/null +++ b/sdks/ruby/spec/api/fax_api_spec.rb @@ -0,0 +1,69 @@ +=begin +#Dropbox Sign API + +#Dropbox Sign v3 API + +The version of the OpenAPI document: 3.0.0 +Contact: apisupport@hellosign.com +Generated by: https://openapi-generator.tech +OpenAPI Generator version: 5.3.0 + +=end + +require 'spec_helper' +require 'json_spec' +require_relative '../test_utils' + +root_file_path = __dir__ + "/../../test_fixtures" + +describe Dropbox::Sign::FaxApi do + context 'FaxApiTest' do + api = Dropbox::Sign::FaxApi.new + + it 'testFaxSend' do + request_class = 'FaxSendRequest' + request_data = get_fixture_data(request_class)[:default] + + response_class = 'FaxGetResponse' + response_data = get_fixture_data(response_class)[:default] + + set_expected_response(200, JSON.dump(response_data)) + expected = Dropbox::Sign::FaxGetResponse.init(response_data) + obj = Dropbox::Sign::FaxSendRequest.init(request_data) + obj.files = [File.new("#{root_file_path}/pdf-sample.pdf", "r")] + + result = api.fax_send(obj) + + expect(result.class.to_s).to eq("Dropbox::Sign::#{response_class}") + expect(result.to_json).to be_json_eql(JSON.dump(expected)) + end + + it 'testFaxGet' do + signature_request_id = 'c2e9691c85d9d6fa6ae773842e3680b2b8650f1d' + + response_class = 'FaxGetResponse' + response_data = get_fixture_data(response_class)[:default] + + set_expected_response(200, JSON.dump(response_data)) + expected = Dropbox::Sign::FaxGetResponse.init(response_data) + + result = api.fax_get(signature_request_id) + + expect(result.class.to_s).to eq("Dropbox::Sign::#{response_class}") + expect(result.to_json).to be_json_eql(JSON.dump(expected)) + end + + it 'testFaxList' do + response_class = 'FaxListResponse' + response_data = get_fixture_data(response_class)[:default] + + set_expected_response(200, JSON.dump(response_data)) + expected = Dropbox::Sign::FaxListResponse.init(response_data) + + result = api.fax_list() + + expect(result.class.to_s).to eq("Dropbox::Sign::#{response_class}") + expect(result.to_json).to be_json_eql(JSON.dump(expected)) + end + end +end diff --git a/sdks/ruby/spec/api/fax_line_api_spec.rb b/sdks/ruby/spec/api/fax_line_api_spec.rb new file mode 100644 index 000000000..a6a6edffc --- /dev/null +++ b/sdks/ruby/spec/api/fax_line_api_spec.rb @@ -0,0 +1,67 @@ +=begin +#Dropbox Sign API + +#Dropbox Sign v3 API + +The version of the OpenAPI document: 3.0.0 +Contact: apisupport@hellosign.com +Generated by: https://openapi-generator.tech +OpenAPI Generator version: 5.3.0 + +=end + +require 'spec_helper' +require 'json_spec' +require_relative '../test_utils' + +root_file_path = __dir__ + "/../../test_fixtures" + +describe Dropbox::Sign::FaxApi do + context 'FaxLineApiTest' do + api = Dropbox::Sign::FaxLineApi.new + + it 'testFaxLineCreate' do + request_class = 'FaxLineCreateRequest' + request_data = get_fixture_data(request_class)[:default] + + response_class = 'FaxLineResponse' + response_data = get_fixture_data(response_class)[:default] + + set_expected_response(200, JSON.dump(response_data)) + expected = Dropbox::Sign::FaxLineResponse.init(response_data) + + result = api.fax_line_create(request_data) + + expect(result.class.to_s).to eq("Dropbox::Sign::#{response_class}") + expect(result.to_json).to be_json_eql(JSON.dump(expected)) + end + + it 'testFaxLineGet' do + fax_line_number = '14155557897' + + response_class = 'FaxLineResponse' + response_data = get_fixture_data(response_class)[:default] + + set_expected_response(200, JSON.dump(response_data)) + expected = Dropbox::Sign::FaxLineResponse.init(response_data) + + result = api.fax_line_get(fax_line_number) + + expect(result.class.to_s).to eq("Dropbox::Sign::#{response_class}") + expect(result.to_json).to be_json_eql(JSON.dump(expected)) + end + + it 'testFaxLineList' do + response_class = 'FaxLineListResponse' + response_data = get_fixture_data(response_class)[:default] + + set_expected_response(200, JSON.dump(response_data)) + expected = Dropbox::Sign::FaxLineListResponse.init(response_data) + + result = api.fax_line_list() + + expect(result.class.to_s).to eq("Dropbox::Sign::#{response_class}") + expect(result.to_json).to be_json_eql(JSON.dump(expected)) + end + end +end diff --git a/test_fixtures/FaxGetResponse.json b/test_fixtures/FaxGetResponse.json index 2eda936be..0d668e0e3 100644 --- a/test_fixtures/FaxGetResponse.json +++ b/test_fixtures/FaxGetResponse.json @@ -20,12 +20,11 @@ "transmissions": [ { "recipient": "recipient@dropboxsign.com", - "sender": "me@dropboxsign.com", "sent_at": 1723231831, "status_code": "success" } ], - "files_url": "https://api.hellosign.com/v3/fax/files/2b388914e3ae3b738bd4e2ee2850c677e6dc53d2", + "files_url": "https://api.hellosign.com/v3/fax/files/2b388914e3ae3b738bd4e2ee2850c677e6dc53d2" } } } diff --git a/test_fixtures/FaxLineCreateRequest.json b/test_fixtures/FaxLineCreateRequest.json new file mode 100644 index 000000000..91d11c8f8 --- /dev/null +++ b/test_fixtures/FaxLineCreateRequest.json @@ -0,0 +1,6 @@ +{ + "default": { + "country": "US", + "area_code": 949 + } +} diff --git a/test_fixtures/FaxLineListResponse.json b/test_fixtures/FaxLineListResponse.json new file mode 100644 index 000000000..c241c1b93 --- /dev/null +++ b/test_fixtures/FaxLineListResponse.json @@ -0,0 +1,26 @@ +{ + "default": { + "list_info": { + "num_pages": 1, + "num_results": 1, + "page": 1, + "page_size": 1 + }, + "fax_lines": [ + { + "number": "14155557897", + "created_at": 1750196223, + "updated_at": 1750196223, + "accounts": [ + { + "account_id": "a3367a4130f3624687ea7de6f09df951a44923dd", + "email_address": "me@dropboxsign.com", + "is_locked": false, + "is_paid_hs": false, + "is_paid_hf": true + } + ] + } + ] + } +} diff --git a/test_fixtures/FaxLineResponse.json b/test_fixtures/FaxLineResponse.json new file mode 100644 index 000000000..3855a8a65 --- /dev/null +++ b/test_fixtures/FaxLineResponse.json @@ -0,0 +1,18 @@ +{ + "default": { + "fax_line": { + "number": "14155557897", + "created_at": 1750196223, + "updated_at": 1750196223, + "accounts": [ + { + "account_id": "a3367a4130f3624687ea7de6f09df951a44923dd", + "email_address": "me@dropboxsign.com", + "is_locked": false, + "is_paid_hs": false, + "is_paid_hf": true + } + ] + } + } +} diff --git a/test_fixtures/FaxListResponse.json b/test_fixtures/FaxListResponse.json index a9ebf63cf..d0ce7feb6 100644 --- a/test_fixtures/FaxListResponse.json +++ b/test_fixtures/FaxListResponse.json @@ -27,12 +27,11 @@ "transmissions": [ { "recipient": "recipient@dropboxsign.com", - "sender": "me@dropboxsign.com", "sent_at": 1723231831, "status_code": "success" } ], - "files_url": "https://api.hellosign.com/v3/fax/files/2b388914e3ae3b738bd4e2ee2850c677e6dc53d2", + "files_url": "https://api.hellosign.com/v3/fax/files/2b388914e3ae3b738bd4e2ee2850c677e6dc53d2" } ] } diff --git a/test_fixtures/FaxResponse.json b/test_fixtures/FaxResponse.json new file mode 100644 index 000000000..32a44d568 --- /dev/null +++ b/test_fixtures/FaxResponse.json @@ -0,0 +1,24 @@ +{ + "default": { + "fax": { + "fax_id": "c2e9691c85d9d6fa6ae773842e3680b2b8650f1d", + "title": "example title", + "original_title": "example original title", + "metadata": {}, + "created_at": 1750105080, + "sender": "14155557068", + "files_url": "https://api.hellosign.com/v3/fax/files/2b388914e3ae3b738bd4e2ee2850c677e6dc53d2", + "final_copy_uri": "/v3/transmission/final_copy/c2e9691c85d9d6fa6ae773842e3680b2b8650f1d", + "transmissions": [ + { + "recipient": "18005550199", + "status_code": "transmitting" + } + ], + "transmission_id": "c2e9691c85d9d6fa6ae773842e3680b2b8650f1d", + "from": "14155557068", + "test_mode": false + } + } +} + diff --git a/test_fixtures/FaxSendResponse.json b/test_fixtures/FaxSendResponse.json deleted file mode 100644 index b651c7836..000000000 --- a/test_fixtures/FaxSendResponse.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "default": { - "fax": { - "fax_id": "c2e9691c85d9d6fa6ae773842e3680b2b8650f1d", - "title": "example title", - "original_title": "example original title", - "subject": "example subject", - "message": "example message", - "metadata": [ ], - "created_at": 1726774555, - "sender": "me@dropboxsign.com", - "transmissions": [], - "files_url": "https://api.hellosign.com/v3/fax/files/2b388914e3ae3b738bd4e2ee2850c677e6dc53d2" - } - } -} diff --git a/translations/en.yaml b/translations/en.yaml index 38f1edc13..3dcaf3ea3 100644 --- a/translations/en.yaml +++ b/translations/en.yaml @@ -1623,7 +1623,8 @@ "TemplateResponseDocumentFormField::FONT_FAMILY": Font family used in this form field's text. # text-only "TemplateResponseDocumentFormField::VALIDATION_TYPE": Each text field may contain a `validation_type` parameter. Check out the list of [validation types](https://faq.hellosign.com/hc/en-us/articles/217115577) to learn more about the possible values. - +"TemplateResponseDocumentFormField::CUSTOM_REGEX": When `validation_type` is set to `custom_regex`, this specifies the custom regular expression pattern that will be used to validate the text field. +"TemplateResponseDocumentFormField::CUSTOM_REGEX_LABEL": When `validation_type` is set to `custom_regex`, this specifies the error message displayed to the signer when the text does not match the provided regex pattern. "TemplateResponseDocumentStaticField::DESCRIPTION": An array describing static overlay fields. **NOTE:** Only available for certain subscriptions. "TemplateResponseDocumentStaticField::DESCRIPTION_EXTENDS": This class extends `TemplateResponseDocumentStaticFieldBase` "TemplateResponseDocumentStaticField::NAME": The name of the static field.