diff --git a/README.md b/README.md index fcd2476..470e06e 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ directory that corresponds to the file you want updated. This C# SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: - API version: 3.0.0 -- SDK version: 2.1.0 +- SDK version: 2.2.0 - Generator version: 7.12.0 - Build package: org.openapitools.codegen.languages.CSharpClientCodegen @@ -214,6 +214,7 @@ Class | Method | HTTP request | Description - [Model.AccountGetResponse](docs/AccountGetResponse.md) - [Model.AccountResponse](docs/AccountResponse.md) - [Model.AccountResponseQuotas](docs/AccountResponseQuotas.md) + - [Model.AccountResponseSettings](docs/AccountResponseSettings.md) - [Model.AccountResponseUsage](docs/AccountResponseUsage.md) - [Model.AccountUpdateRequest](docs/AccountUpdateRequest.md) - [Model.AccountVerifyRequest](docs/AccountVerifyRequest.md) @@ -357,7 +358,6 @@ Class | Method | HTTP request | Description - [Model.TemplateCreateRequest](docs/TemplateCreateRequest.md) - [Model.TemplateCreateResponse](docs/TemplateCreateResponse.md) - [Model.TemplateCreateResponseTemplate](docs/TemplateCreateResponseTemplate.md) - - [Model.TemplateEditResponse](docs/TemplateEditResponse.md) - [Model.TemplateGetResponse](docs/TemplateGetResponse.md) - [Model.TemplateListResponse](docs/TemplateListResponse.md) - [Model.TemplateRemoveUserRequest](docs/TemplateRemoveUserRequest.md) diff --git a/VERSION b/VERSION index 7ec1d6d..ccbccc3 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.1.0 +2.2.0 diff --git a/bin/copy-constants.php b/bin/copy-constants.php index 8853805..d99fb79 100755 --- a/bin/copy-constants.php +++ b/bin/copy-constants.php @@ -13,17 +13,26 @@ }); /** - * Between openapi-generator v7.8.0 and v7.12.0 a change was made to the way - * a few generators create constant names from values. The original way was - * actually broken. For example "change-field-visibility" would generate a - * constant name of "TYPE_FIELD_VISIBILITY", dropping the "change" part. + * Post-generation patch for SubFormFieldRuleAction.cs. * - * The fix now generates the correct name, "TYPE_CHANGE_FIELD_VISIBILITY". - * However, the fix also gets rid of the previous (incorrect) constant names, - * making the fix a BC break. + * Between openapi-generator v7.8.0 and v7.12.0 a change was made to the + * way a few generators create constant names from values. The original + * way was broken: "change-field-visibility" generated a constant named + * "TYPE_FIELD_VISIBILITY", dropping the "change" part. The fix generates + * the correct name, "TYPE_CHANGE_FIELD_VISIBILITY", but also removes the + * previous (incorrect) names, which is a BC break. * - * This simple script just adds the old constant names back, alongside the new - * ones. + * To preserve source compatibility this script adds the old names back + * as aliases (FieldVisibility = ChangeFieldVisibility, etc.). The aliases + * share a numeric value with their canonical counterparts, which breaks + * StringEnumConverter: Enum.GetName is not guaranteed to pick the + * canonical name for ties, and Newtonsoft rejects duplicate + * [EnumMember] values on the same enum. To make the aliases serialize + * to the correct OpenAPI wire values under all circumstances, this + * script also: + * - swaps StringEnumConverter for a dedicated TypeEnumJsonConverter + * that maps by underlying numeric value, and + * - injects that nested converter class into SubFormFieldRuleAction. */ class CopyConstants { @@ -32,6 +41,57 @@ public function run(): void $file = __DIR__ . '/../src/Dropbox.Sign/Model/SubFormFieldRuleAction.cs'; $contents = file_get_contents($file); + $contents = $this->addAliases($contents); + $contents = $this->swapConverter($contents); + $contents = $this->injectConverterClass($contents); + + file_put_contents($file, $contents); + + $this->stopEmittingDefaultIntValues(__DIR__ . '/../src/Dropbox.Sign/Model'); + } + + /** + * For optional non-nullable int properties on request-side models + * openapi-generator emits + * [DataMember(Name = "foo", EmitDefaultValue = true)] + * public int Foo { get; set; } + * which forces `"foo": 0` onto the wire whenever the caller never + * set a value (C# default for int is 0). For fields like font_size + * the server rejects the default with a 400 ("'font_size' must be + * between 7 and 49"), and more generally any optional int whose + * server-side default is not 0 is misrepresented. + * + * Scope: + * - Only request-side models are patched. Response models keep + * EmitDefaultValue = true so that round-trip serialization + * preserves explicit zero values that the server sent (tests + * under Dropbox.Sign.Test.Api rely on this fidelity). Response + * models are identified by the "Response" substring in the + * file name, which is the convention for all generated + * response types in this SDK. + * - Required int properties are left alone: openapi-generator + * inserts `IsRequired = true,` between the Name and + * EmitDefaultValue tokens, which this regex does not match. + */ + private function stopEmittingDefaultIntValues(string $modelDir): void + { + $pattern = '/(\[DataMember\(Name = "[^"]+", EmitDefaultValue = )true(\)\]\s*\r?\n\s+public int [A-Za-z_][A-Za-z0-9_]* \{ get; set; \})/'; + + foreach (glob($modelDir . '/*.cs') as $path) { + if (strpos(basename($path), 'Response') !== false) { + continue; + } + + $contents = file_get_contents($path); + $patched = preg_replace($pattern, '$1false$2', $contents); + if ($patched !== null && $patched !== $contents) { + file_put_contents($path, $patched); + } + } + } + + private function addAliases(string $contents): string + { $constant_1 = " ChangeFieldVisibility = 1,"; $replace_1 = implode("\n", [ $constant_1, @@ -44,21 +104,99 @@ public function run(): void ' GroupVisibility = ChangeGroupVisibility', ]); - $contents = str_replace( - $constant_1, - $replace_1, - $contents, - ); + $contents = str_replace($constant_1, $replace_1, $contents); + $contents = str_replace($constant_2, $replace_2, $contents); - $contents = str_replace( - $constant_2, - $replace_2, - $contents, - ); + return $contents; + } - file_put_contents($file, $contents); + private function swapConverter(string $contents): string + { + $needle = " [JsonConverter(typeof(StringEnumConverter))]\n" + . " public enum TypeEnum"; + + $replacement = <<<'CS' + // A dedicated converter is used instead of StringEnumConverter + // because this enum intentionally carries alias members + // (FieldVisibility, GroupVisibility) that share a numeric value + // with their canonical counterparts. StringEnumConverter goes + // through Enum.GetName, which is not guaranteed to pick the + // canonical name when multiple members share a value, and + // Newtonsoft rejects duplicate [EnumMember] values on the same + // enum. Mapping by numeric value here is unambiguous: both the + // canonical name and its alias produce the same wire string. + [JsonConverter(typeof(TypeEnumJsonConverter))] + public enum TypeEnum +CS; + + return str_replace($needle, $replacement, $contents); + } + + private function injectConverterClass(string $contents): string + { + // Inject the nested converter immediately after the enum's + // closing brace. Anchor on the enum's tail, which is unique in + // the file. + $needle = " GroupVisibility = ChangeGroupVisibility\n" + . " }\n"; + + $converter = <<<'CS' + GroupVisibility = ChangeGroupVisibility + } + + /// + /// Serializes SubFormFieldRuleAction.TypeEnum to and from the + /// OpenAPI wire values (change-field-visibility, + /// change-group-visibility). The switch is driven by the + /// underlying numeric value so that legacy alias members + /// (FieldVisibility, GroupVisibility) serialize identically to + /// their canonical counterparts. + /// + public class TypeEnumJsonConverter : JsonConverter + { + public override void WriteJson(JsonWriter writer, TypeEnum value, JsonSerializer serializer) + { + switch (value) + { + case TypeEnum.ChangeFieldVisibility: + writer.WriteValue("change-field-visibility"); + return; + case TypeEnum.ChangeGroupVisibility: + writer.WriteValue("change-group-visibility"); + return; + default: + throw new JsonSerializationException( + $"Unknown value for SubFormFieldRuleAction.TypeEnum: {(int)value}"); + } + } + + public override TypeEnum ReadJson(JsonReader reader, Type objectType, TypeEnum existingValue, bool hasExistingValue, JsonSerializer serializer) + { + if (reader.TokenType == JsonToken.Null) + { + throw new JsonSerializationException( + "Cannot deserialize null into SubFormFieldRuleAction.TypeEnum"); + } + + var raw = reader.Value?.ToString(); + switch (raw) + { + case "change-field-visibility": + return TypeEnum.ChangeFieldVisibility; + case "change-group-visibility": + return TypeEnum.ChangeGroupVisibility; + default: + throw new JsonSerializationException( + $"Unknown wire value for SubFormFieldRuleAction.TypeEnum: {raw}"); + } + } + } + +CS; + + return str_replace($needle, $converter, $contents); } } $copier = new CopyConstants(); -$copier->run(); \ No newline at end of file +$copier->run(); diff --git a/docs/AccountResponse.md b/docs/AccountResponse.md index 2f96724..875aa40 100644 --- a/docs/AccountResponse.md +++ b/docs/AccountResponse.md @@ -4,7 +4,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**AccountId** | **string** | The ID of the Account | [optional] **EmailAddress** | **string** | The email address associated with the Account. | [optional] **IsLocked** | **bool** | Returns `true` if the user has been locked out of their account by a team admin. | [optional] **IsPaidHs** | **bool** | Returns `true` if the user has a paid Dropbox Sign account. | [optional] **IsPaidHf** | **bool** | Returns `true` if the user has a paid HelloFax account. | [optional] **Quotas** | [**AccountResponseQuotas**](AccountResponseQuotas.md) | | [optional] **CallbackUrl** | **string** | The URL that Dropbox Sign events will `POST` to. | [optional] **RoleCode** | **string** | The membership role for the team. | [optional] **TeamId** | **string** | The id of the team account belongs to. | [optional] **Locale** | **string** | The locale used in this Account. Check out the list of [supported locales](/api/reference/constants/#supported-locales) to learn more about the possible values. | [optional] **Usage** | [**AccountResponseUsage**](AccountResponseUsage.md) | | [optional] +**AccountId** | **string** | The ID of the Account | [optional] **EmailAddress** | **string** | The email address associated with the Account. | [optional] **IsLocked** | **bool** | Returns `true` if the user has been locked out of their account by a team admin. | [optional] **IsPaidHs** | **bool** | Returns `true` if the user has a paid Dropbox Sign account. | [optional] **IsPaidHf** | **bool** | Returns `true` if the user has a paid HelloFax account. | [optional] **Quotas** | [**AccountResponseQuotas**](AccountResponseQuotas.md) | | [optional] **CallbackUrl** | **string** | The URL that Dropbox Sign events will `POST` to. | [optional] **RoleCode** | **string** | The membership role for the team. | [optional] **TeamId** | **string** | The id of the team account belongs to. | [optional] **Locale** | **string** | The locale used in this Account. Check out the list of [supported locales](/api/reference/constants/#supported-locales) to learn more about the possible values. | [optional] **Usage** | [**AccountResponseUsage**](AccountResponseUsage.md) | | [optional] **Settings** | [**AccountResponseSettings**](AccountResponseSettings.md) | | [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/docs/AccountResponseSettings.md b/docs/AccountResponseSettings.md new file mode 100644 index 0000000..69cc3c2 --- /dev/null +++ b/docs/AccountResponseSettings.md @@ -0,0 +1,11 @@ +# Dropbox.Sign.Model.AccountResponseSettings +Subset of configured settings + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**SignerAccessCodes** | **bool** | Returns `true` if _Custom access codes_ is enabled in Admin Console. [Read more](https://developers.hellosign.com/docs/sms-tools/walkthrough). | [optional] **SmsDelivery** | **bool** | Returns `true` if _Text message_ is enabled in Admin Console. [Read more](https://developers.hellosign.com/docs/sms-tools/walkthrough). | [optional] **SmsAuthentication** | **bool** | Returns `true` if _Signer authentication_ is enabled in Admin Console. [Read more](https://developers.hellosign.com/docs/sms-tools/walkthrough). | [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/docs/OAuthTokenRefreshRequest.md b/docs/OAuthTokenRefreshRequest.md index 5e33e77..adf4229 100644 --- a/docs/OAuthTokenRefreshRequest.md +++ b/docs/OAuthTokenRefreshRequest.md @@ -4,7 +4,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**GrantType** | **string** | When refreshing an existing token use `refresh_token`. | [default to "refresh_token"]**RefreshToken** | **string** | The token provided when you got the expired access token. | **ClientId** | **string** | The client ID for your API app. Mandatory from August 1st, 2025. Until then, required if the "Client Credentials Required" setting is enabled for token refresh; optional if disabled. | [optional] **ClientSecret** | **string** | The client secret for your API app. Mandatory from August 1st, 2025. Until then, required if the "Client Credentials Required" setting is enabled for token refresh; optional if disabled. | [optional] +**GrantType** | **string** | When refreshing an existing token use `refresh_token`. | [default to "refresh_token"]**RefreshToken** | **string** | The token provided when you got the expired access token. | **ClientId** | **string** | The client ID for your API app. Required for new API apps. To enhance security, we recommend making it required for existing apps in your app settings. | [optional] **ClientSecret** | **string** | The client secret for your API app. Required for new API apps. To enhance security, we recommend making it required for existing apps in your app settings. | [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/docs/SignatureRequestApi.md b/docs/SignatureRequestApi.md index fe084fa..68b0c2f 100644 --- a/docs/SignatureRequestApi.md +++ b/docs/SignatureRequestApi.md @@ -504,7 +504,8 @@ public class SignatureRequestCreateEmbeddedExample draw: true, phone: false, type: true, - upload: true + upload: true, + force_advanced_signature_details: false ); var signers1 = new SubSignatureRequestSigner( @@ -647,7 +648,8 @@ public class SignatureRequestCreateEmbeddedWithTemplateExample draw: true, phone: false, type: true, - upload: true + upload: true, + force_advanced_signature_details: false ); var signers1 = new SubSignatureRequestTemplateSigner( @@ -2137,7 +2139,8 @@ public class SignatureRequestSendExample draw: true, phone: false, type: true, - upload: true + upload: true, + force_advanced_signature_details: false, ); var signers1 = new SubSignatureRequestSigner( @@ -2286,7 +2289,8 @@ public class SignatureRequestSendWithTemplateExample draw: true, phone: false, type: true, - upload: true + upload: true, + force_advanced_signature_details: false, ); var signers1 = new SubSignatureRequestTemplateSigner( diff --git a/docs/SignatureRequestEditRequest.md b/docs/SignatureRequestEditRequest.md index 20f2164..bb50808 100644 --- a/docs/SignatureRequestEditRequest.md +++ b/docs/SignatureRequestEditRequest.md @@ -4,7 +4,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**Files** | **List<System.IO.Stream>** | Use `files[]` to indicate the uploaded file(s) to send for signature.

This endpoint requires either **files** or **file_urls[]**, but not both. | [optional] **FileUrls** | **List<string>** | Use `file_urls[]` to have Dropbox Sign download the file(s) to send for signature.

This endpoint requires either **files** or **file_urls[]**, but not both. | [optional] **Signers** | [**List<SubSignatureRequestSigner>**](SubSignatureRequestSigner.md) | Add Signers to your Signature Request.

This endpoint requires either **signers** or **grouped_signers**, but not both. | [optional] **GroupedSigners** | [**List<SubSignatureRequestGroupedSigners>**](SubSignatureRequestGroupedSigners.md) | Add Grouped Signers to your Signature Request.

This endpoint requires either **signers** or **grouped_signers**, but not both. | [optional] **AllowDecline** | **bool** | Allows signers to decline to sign a document if `true`. Defaults to `false`. | [optional] [default to false]**AllowReassign** | **bool** | Allows signers to reassign their signature requests to other signers if set to `true`. Defaults to `false`.

**NOTE:** Only available for Premium plan and higher. | [optional] [default to false]**Attachments** | [**List<SubAttachment>**](SubAttachment.md) | A list describing the attachments | [optional] **CcEmailAddresses** | **List<string>** | The email addresses that should be CCed. | [optional] **ClientId** | **string** | The client id of the API App you want to associate with this request. Used to apply the branding and callback url defined for the app. | [optional] **CustomFields** | [**List<SubCustomField>**](SubCustomField.md) | When used together with merge fields, `custom_fields` allows users to add pre-filled data to their signature requests.

Pre-filled data can be used with "send-once" signature requests by adding merge fields with `form_fields_per_document` or [Text Tags](https://app.hellosign.com/api/textTagsWalkthrough#TextTagIntro) while passing values back with `custom_fields` together in one API call.

For using pre-filled on repeatable signature requests, merge fields are added to templates in the Dropbox Sign UI or by calling [/template/create_embedded_draft](/api/reference/operation/templateCreateEmbeddedDraft) and then passing `custom_fields` on subsequent signature requests referencing that template. | [optional] **FieldOptions** | [**SubFieldOptions**](SubFieldOptions.md) | | [optional] **FormFieldGroups** | [**List<SubFormFieldGroup>**](SubFormFieldGroup.md) | Group information for fields defined in `form_fields_per_document`. String-indexed JSON array with `group_label` and `requirement` keys. `form_fields_per_document` must contain fields referencing a group defined in `form_field_groups`. | [optional] **FormFieldRules** | [**List<SubFormFieldRule>**](SubFormFieldRule.md) | Conditional Logic rules for fields defined in `form_fields_per_document`. | [optional] **FormFieldsPerDocument** | [**List<SubFormFieldsPerDocumentBase>**](SubFormFieldsPerDocumentBase.md) | The fields that should appear on the document, expressed as an array of objects. (For more details you can read about it here: [Using Form Fields per Document](/docs/openapi/form-fields-per-document).)

**NOTE:** Fields like **text**, **dropdown**, **checkbox**, **radio**, and **hyperlink** have additional required and optional parameters. Check out the list of [additional parameters](/api/reference/constants/#form-fields-per-document) for these field types.

* Text Field use `SubFormFieldsPerDocumentText`
* Dropdown Field use `SubFormFieldsPerDocumentDropdown`
* Hyperlink Field use `SubFormFieldsPerDocumentHyperlink`
* Checkbox Field use `SubFormFieldsPerDocumentCheckbox`
* Radio Field use `SubFormFieldsPerDocumentRadio`
* Signature Field use `SubFormFieldsPerDocumentSignature`
* Date Signed Field use `SubFormFieldsPerDocumentDateSigned`
* Initials Field use `SubFormFieldsPerDocumentInitials`
* Text Merge Field use `SubFormFieldsPerDocumentTextMerge`
* Checkbox Merge Field use `SubFormFieldsPerDocumentCheckboxMerge` | [optional] **HideTextTags** | **bool** | Enables automatic Text Tag removal when set to true.

**NOTE:** Removing text tags this way can cause unwanted clipping. We recommend leaving this setting on `false` and instead hiding your text tags using white text or a similar approach. See the [Text Tags Walkthrough](https://app.hellosign.com/api/textTagsWalkthrough#TextTagIntro) for more information. | [optional] [default to false]**IsEid** | **bool** | Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br>
**NOTE:** eID is only available on the Premium API plan. Cannot be used in `test_mode`. Only works on requests with one signer. | [optional] [default to false]**Message** | **string** | The custom message in the email that will be sent to the signers. | [optional] **Metadata** | **Dictionary<string, Object>** | Key-value data that should be attached to the signature request. This metadata is included in all API responses and events involving the signature request. For example, use the metadata field to store a signer's order number for look up when receiving events for the signature request.

Each request can include up to 10 metadata keys (or 50 nested metadata keys), with key names up to 40 characters long and values up to 1000 characters long. | [optional] **SigningOptions** | [**SubSigningOptions**](SubSigningOptions.md) | | [optional] **SigningRedirectUrl** | **string** | The URL you want signers redirected to after they successfully sign. | [optional] **Subject** | **string** | The subject in the email that will be sent to the signers. | [optional] **TestMode** | **bool** | Whether this is a test, the signature request will not be legally binding if set to `true`. Defaults to `false`. | [optional] [default to false]**Title** | **string** | The title you want to assign to the SignatureRequest. | [optional] **UseTextTags** | **bool** | Send with a value of `true` if you wish to enable [Text Tags](https://app.hellosign.com/api/textTagsWalkthrough#TextTagIntro) parsing in your document. Defaults to disabled, or `false`. | [optional] [default to false]**ExpiresAt** | **int?** | When the signature request will expire. Unsigned signatures will be moved to the expired status, and no longer signable. See [Signature Request Expiration Date](https://developers.hellosign.com/docs/signature-request/expiration/) for details. | [optional] +**Files** | **List<System.IO.Stream>** | Use `files[]` to indicate the uploaded file(s) to send for signature.

This endpoint requires either **files** or **file_urls[]**, but not both. | [optional] **FileUrls** | **List<string>** | Use `file_urls[]` to have Dropbox Sign download the file(s) to send for signature.

This endpoint requires either **files** or **file_urls[]**, but not both. | [optional] **Signers** | [**List<SubSignatureRequestSigner>**](SubSignatureRequestSigner.md) | Add Signers to your Signature Request.

This endpoint requires either **signers** or **grouped_signers**, but not both. | [optional] **GroupedSigners** | [**List<SubSignatureRequestGroupedSigners>**](SubSignatureRequestGroupedSigners.md) | Add Grouped Signers to your Signature Request.

This endpoint requires either **signers** or **grouped_signers**, but not both. | [optional] **AllowDecline** | **bool** | Allows signers to decline to sign a document if `true`. Defaults to `false`. | [optional] [default to false]**AllowReassign** | **bool** | Allows signers to reassign their signature requests to other signers if set to `true`. Defaults to `false`.

**NOTE:** Only available for Premium plan and higher. | [optional] [default to false]**Attachments** | [**List<SubAttachment>**](SubAttachment.md) | A list describing the attachments | [optional] **CcEmailAddresses** | **List<string>** | The email addresses that should be CCed. | [optional] **ClientId** | **string** | The client id of the API App you want to associate with this request. Used to apply the branding and callback url defined for the app. | [optional] **CustomFields** | [**List<SubCustomField>**](SubCustomField.md) | When used together with merge fields, `custom_fields` allows users to add pre-filled data to their signature requests.

Pre-filled data can be used with "send-once" signature requests by adding merge fields with `form_fields_per_document` or [Text Tags](https://app.hellosign.com/api/textTagsWalkthrough#TextTagIntro) while passing values back with `custom_fields` together in one API call.

For using pre-filled on repeatable signature requests, merge fields are added to templates in the Dropbox Sign UI or by calling [/template/create_embedded_draft](/api/reference/operation/templateCreateEmbeddedDraft) and then passing `custom_fields` on subsequent signature requests referencing that template. | [optional] **FieldOptions** | [**SubFieldOptions**](SubFieldOptions.md) | | [optional] **FormFieldGroups** | [**List<SubFormFieldGroup>**](SubFormFieldGroup.md) | Group information for fields defined in `form_fields_per_document`. String-indexed JSON array with `group_label` and `requirement` keys. `form_fields_per_document` must contain fields referencing a group defined in `form_field_groups`. | [optional] **FormFieldRules** | [**List<SubFormFieldRule>**](SubFormFieldRule.md) | Conditional Logic rules for fields defined in `form_fields_per_document`. | [optional] **FormFieldsPerDocument** | [**List<SubFormFieldsPerDocumentBase>**](SubFormFieldsPerDocumentBase.md) | The fields that should appear on the document, expressed as an array of objects. (For more details you can read about it here: [Using Form Fields per Document](/docs/openapi/form-fields-per-document).)

**NOTE:** Fields like **text**, **dropdown**, **checkbox**, **radio**, and **hyperlink** have additional required and optional parameters. Check out the list of [additional parameters](/api/reference/constants/#form-fields-per-document) for these field types.

* Text Field use `SubFormFieldsPerDocumentText`
* Dropdown Field use `SubFormFieldsPerDocumentDropdown`
* Hyperlink Field use `SubFormFieldsPerDocumentHyperlink`
* Checkbox Field use `SubFormFieldsPerDocumentCheckbox`
* Radio Field use `SubFormFieldsPerDocumentRadio`
* Signature Field use `SubFormFieldsPerDocumentSignature`
* Date Signed Field use `SubFormFieldsPerDocumentDateSigned`
* Initials Field use `SubFormFieldsPerDocumentInitials`
* Text Merge Field use `SubFormFieldsPerDocumentTextMerge`
* Checkbox Merge Field use `SubFormFieldsPerDocumentCheckboxMerge` | [optional] **HideTextTags** | **bool** | Enables automatic Text Tag removal when set to true.

**NOTE:** Removing text tags this way can cause unwanted clipping. We recommend leaving this setting on `false` and instead hiding your text tags using white text or a similar approach. See the [Text Tags Walkthrough](https://app.hellosign.com/api/textTagsWalkthrough#TextTagIntro) for more information. | [optional] [default to false]**IsEid** | **bool** | Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br>
**NOTE:** You need the eID add-on to use this feature. Please [contact sales](https://sign.dropbox.com/form/contact-sales) for more information. Cannot be used in `test_mode`. Only works on requests with one signer. | [optional] [default to false]**Message** | **string** | The custom message in the email that will be sent to the signers. | [optional] **Metadata** | **Dictionary<string, Object>** | Key-value data that should be attached to the signature request. This metadata is included in all API responses and events involving the signature request. For example, use the metadata field to store a signer's order number for look up when receiving events for the signature request.

Each request can include up to 10 metadata keys (or 50 nested metadata keys), with key names up to 40 characters long and values up to 1000 characters long. | [optional] **SigningOptions** | [**SubSigningOptions**](SubSigningOptions.md) | | [optional] **SigningRedirectUrl** | **string** | The URL you want signers redirected to after they successfully sign. | [optional] **Subject** | **string** | The subject in the email that will be sent to the signers. | [optional] **TestMode** | **bool** | Whether this is a test, the signature request will not be legally binding if set to `true`. Defaults to `false`. | [optional] [default to false]**Title** | **string** | The title you want to assign to the SignatureRequest. | [optional] **UseTextTags** | **bool** | Send with a value of `true` if you wish to enable [Text Tags](https://app.hellosign.com/api/textTagsWalkthrough#TextTagIntro) parsing in your document. Defaults to disabled, or `false`. | [optional] [default to false]**ExpiresAt** | **int?** | When the signature request will expire. Unsigned signatures will be moved to the expired status, and no longer signable. See [Signature Request Expiration Date](https://developers.hellosign.com/docs/signature-request/expiration/) for details. | [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/docs/SignatureRequestEditWithTemplateRequest.md b/docs/SignatureRequestEditWithTemplateRequest.md index d9ac882..1da1fa1 100644 --- a/docs/SignatureRequestEditWithTemplateRequest.md +++ b/docs/SignatureRequestEditWithTemplateRequest.md @@ -4,7 +4,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**TemplateIds** | **List<string>** | Use `template_ids` to create a SignatureRequest from one or more templates, in the order in which the template will be used. | **Signers** | [**List<SubSignatureRequestTemplateSigner>**](SubSignatureRequestTemplateSigner.md) | Add Signers to your Templated-based Signature Request. | **AllowDecline** | **bool** | Allows signers to decline to sign a document if `true`. Defaults to `false`. | [optional] [default to false]**Ccs** | [**List<SubCC>**](SubCC.md) | Add CC email recipients. Required when a CC role exists for the Template. | [optional] **ClientId** | **string** | Client id of the app to associate with the signature request. Used to apply the branding and callback url defined for the app. | [optional] **CustomFields** | [**List<SubCustomField>**](SubCustomField.md) | An array defining values and options for custom fields. Required when a custom field exists in the Template. | [optional] **Files** | **List<System.IO.Stream>** | Use `files[]` to indicate the uploaded file(s) to send for signature.

This endpoint requires either **files** or **file_urls[]**, but not both. | [optional] **FileUrls** | **List<string>** | Use `file_urls[]` to have Dropbox Sign download the file(s) to send for signature.

This endpoint requires either **files** or **file_urls[]**, but not both. | [optional] **IsEid** | **bool** | Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br>
**NOTE:** eID is only available on the Premium API plan. Cannot be used in `test_mode`. Only works on requests with one signer. | [optional] [default to false]**Message** | **string** | The custom message in the email that will be sent to the signers. | [optional] **Metadata** | **Dictionary<string, Object>** | Key-value data that should be attached to the signature request. This metadata is included in all API responses and events involving the signature request. For example, use the metadata field to store a signer's order number for look up when receiving events for the signature request.

Each request can include up to 10 metadata keys (or 50 nested metadata keys), with key names up to 40 characters long and values up to 1000 characters long. | [optional] **SigningOptions** | [**SubSigningOptions**](SubSigningOptions.md) | | [optional] **SigningRedirectUrl** | **string** | The URL you want signers redirected to after they successfully sign. | [optional] **Subject** | **string** | The subject in the email that will be sent to the signers. | [optional] **TestMode** | **bool** | Whether this is a test, the signature request will not be legally binding if set to `true`. Defaults to `false`. | [optional] [default to false]**Title** | **string** | The title you want to assign to the SignatureRequest. | [optional] +**TemplateIds** | **List<string>** | Use `template_ids` to create a SignatureRequest from one or more templates, in the order in which the template will be used. | **Signers** | [**List<SubSignatureRequestTemplateSigner>**](SubSignatureRequestTemplateSigner.md) | Add Signers to your Templated-based Signature Request. | **AllowDecline** | **bool** | Allows signers to decline to sign a document if `true`. Defaults to `false`. | [optional] [default to false]**Ccs** | [**List<SubCC>**](SubCC.md) | Add CC email recipients. Required when a CC role exists for the Template. | [optional] **ClientId** | **string** | Client id of the app to associate with the signature request. Used to apply the branding and callback url defined for the app. | [optional] **CustomFields** | [**List<SubCustomField>**](SubCustomField.md) | An array defining values and options for custom fields. Required when a custom field exists in the Template. | [optional] **Files** | **List<System.IO.Stream>** | Use `files[]` to indicate the uploaded file(s) to send for signature.

This endpoint requires either **files** or **file_urls[]**, but not both. | [optional] **FileUrls** | **List<string>** | Use `file_urls[]` to have Dropbox Sign download the file(s) to send for signature.

This endpoint requires either **files** or **file_urls[]**, but not both. | [optional] **IsEid** | **bool** | Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br>
**NOTE:** You need the eID add-on to use this feature. Please [contact sales](https://sign.dropbox.com/form/contact-sales) for more information. Cannot be used in `test_mode`. Only works on requests with one signer. | [optional] [default to false]**Message** | **string** | The custom message in the email that will be sent to the signers. | [optional] **Metadata** | **Dictionary<string, Object>** | Key-value data that should be attached to the signature request. This metadata is included in all API responses and events involving the signature request. For example, use the metadata field to store a signer's order number for look up when receiving events for the signature request.

Each request can include up to 10 metadata keys (or 50 nested metadata keys), with key names up to 40 characters long and values up to 1000 characters long. | [optional] **SigningOptions** | [**SubSigningOptions**](SubSigningOptions.md) | | [optional] **SigningRedirectUrl** | **string** | The URL you want signers redirected to after they successfully sign. | [optional] **Subject** | **string** | The subject in the email that will be sent to the signers. | [optional] **TestMode** | **bool** | Whether this is a test, the signature request will not be legally binding if set to `true`. Defaults to `false`. | [optional] [default to false]**Title** | **string** | The title you want to assign to the SignatureRequest. | [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/docs/SignatureRequestSendRequest.md b/docs/SignatureRequestSendRequest.md index 000c7ad..5261aeb 100644 --- a/docs/SignatureRequestSendRequest.md +++ b/docs/SignatureRequestSendRequest.md @@ -4,7 +4,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**Files** | **List<System.IO.Stream>** | Use `files[]` to indicate the uploaded file(s) to send for signature.

This endpoint requires either **files** or **file_urls[]**, but not both. | [optional] **FileUrls** | **List<string>** | Use `file_urls[]` to have Dropbox Sign download the file(s) to send for signature.

This endpoint requires either **files** or **file_urls[]**, but not both. | [optional] **Signers** | [**List<SubSignatureRequestSigner>**](SubSignatureRequestSigner.md) | Add Signers to your Signature Request.

This endpoint requires either **signers** or **grouped_signers**, but not both. | [optional] **GroupedSigners** | [**List<SubSignatureRequestGroupedSigners>**](SubSignatureRequestGroupedSigners.md) | Add Grouped Signers to your Signature Request.

This endpoint requires either **signers** or **grouped_signers**, but not both. | [optional] **AllowDecline** | **bool** | Allows signers to decline to sign a document if `true`. Defaults to `false`. | [optional] [default to false]**AllowReassign** | **bool** | Allows signers to reassign their signature requests to other signers if set to `true`. Defaults to `false`.

**NOTE:** Only available for Premium plan and higher. | [optional] [default to false]**Attachments** | [**List<SubAttachment>**](SubAttachment.md) | A list describing the attachments | [optional] **CcEmailAddresses** | **List<string>** | The email addresses that should be CCed. | [optional] **ClientId** | **string** | The client id of the API App you want to associate with this request. Used to apply the branding and callback url defined for the app. | [optional] **CustomFields** | [**List<SubCustomField>**](SubCustomField.md) | When used together with merge fields, `custom_fields` allows users to add pre-filled data to their signature requests.

Pre-filled data can be used with "send-once" signature requests by adding merge fields with `form_fields_per_document` or [Text Tags](https://app.hellosign.com/api/textTagsWalkthrough#TextTagIntro) while passing values back with `custom_fields` together in one API call.

For using pre-filled on repeatable signature requests, merge fields are added to templates in the Dropbox Sign UI or by calling [/template/create_embedded_draft](/api/reference/operation/templateCreateEmbeddedDraft) and then passing `custom_fields` on subsequent signature requests referencing that template. | [optional] **FieldOptions** | [**SubFieldOptions**](SubFieldOptions.md) | | [optional] **FormFieldGroups** | [**List<SubFormFieldGroup>**](SubFormFieldGroup.md) | Group information for fields defined in `form_fields_per_document`. String-indexed JSON array with `group_label` and `requirement` keys. `form_fields_per_document` must contain fields referencing a group defined in `form_field_groups`. | [optional] **FormFieldRules** | [**List<SubFormFieldRule>**](SubFormFieldRule.md) | Conditional Logic rules for fields defined in `form_fields_per_document`. | [optional] **FormFieldsPerDocument** | [**List<SubFormFieldsPerDocumentBase>**](SubFormFieldsPerDocumentBase.md) | The fields that should appear on the document, expressed as an array of objects. (For more details you can read about it here: [Using Form Fields per Document](/docs/openapi/form-fields-per-document).)

**NOTE:** Fields like **text**, **dropdown**, **checkbox**, **radio**, and **hyperlink** have additional required and optional parameters. Check out the list of [additional parameters](/api/reference/constants/#form-fields-per-document) for these field types.

* Text Field use `SubFormFieldsPerDocumentText`
* Dropdown Field use `SubFormFieldsPerDocumentDropdown`
* Hyperlink Field use `SubFormFieldsPerDocumentHyperlink`
* Checkbox Field use `SubFormFieldsPerDocumentCheckbox`
* Radio Field use `SubFormFieldsPerDocumentRadio`
* Signature Field use `SubFormFieldsPerDocumentSignature`
* Date Signed Field use `SubFormFieldsPerDocumentDateSigned`
* Initials Field use `SubFormFieldsPerDocumentInitials`
* Text Merge Field use `SubFormFieldsPerDocumentTextMerge`
* Checkbox Merge Field use `SubFormFieldsPerDocumentCheckboxMerge` | [optional] **HideTextTags** | **bool** | Enables automatic Text Tag removal when set to true.

**NOTE:** Removing text tags this way can cause unwanted clipping. We recommend leaving this setting on `false` and instead hiding your text tags using white text or a similar approach. See the [Text Tags Walkthrough](https://app.hellosign.com/api/textTagsWalkthrough#TextTagIntro) for more information. | [optional] [default to false]**IsQualifiedSignature** | **bool** | Send with a value of `true` if you wish to enable [Qualified Electronic Signatures](https://www.hellosign.com/features/qualified-electronic-signatures) (QES), which requires a face-to-face call to verify the signer's identity.<br>
**NOTE:** QES is only available on the Premium API plan as an add-on purchase. Cannot be used in `test_mode`. Only works on requests with one signer. | [optional] [default to false]**IsEid** | **bool** | Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br>
**NOTE:** eID is only available on the Premium API plan. Cannot be used in `test_mode`. Only works on requests with one signer. | [optional] [default to false]**Message** | **string** | The custom message in the email that will be sent to the signers. | [optional] **Metadata** | **Dictionary<string, Object>** | Key-value data that should be attached to the signature request. This metadata is included in all API responses and events involving the signature request. For example, use the metadata field to store a signer's order number for look up when receiving events for the signature request.

Each request can include up to 10 metadata keys (or 50 nested metadata keys), with key names up to 40 characters long and values up to 1000 characters long. | [optional] **SigningOptions** | [**SubSigningOptions**](SubSigningOptions.md) | | [optional] **SigningRedirectUrl** | **string** | The URL you want signers redirected to after they successfully sign. | [optional] **Subject** | **string** | The subject in the email that will be sent to the signers. | [optional] **TestMode** | **bool** | Whether this is a test, the signature request will not be legally binding if set to `true`. Defaults to `false`. | [optional] [default to false]**Title** | **string** | The title you want to assign to the SignatureRequest. | [optional] **UseTextTags** | **bool** | Send with a value of `true` if you wish to enable [Text Tags](https://app.hellosign.com/api/textTagsWalkthrough#TextTagIntro) parsing in your document. Defaults to disabled, or `false`. | [optional] [default to false]**ExpiresAt** | **int?** | When the signature request will expire. Unsigned signatures will be moved to the expired status, and no longer signable. See [Signature Request Expiration Date](https://developers.hellosign.com/docs/signature-request/expiration/) for details. | [optional] +**Files** | **List<System.IO.Stream>** | Use `files[]` to indicate the uploaded file(s) to send for signature.

This endpoint requires either **files** or **file_urls[]**, but not both. | [optional] **FileUrls** | **List<string>** | Use `file_urls[]` to have Dropbox Sign download the file(s) to send for signature.

This endpoint requires either **files** or **file_urls[]**, but not both. | [optional] **Signers** | [**List<SubSignatureRequestSigner>**](SubSignatureRequestSigner.md) | Add Signers to your Signature Request.

This endpoint requires either **signers** or **grouped_signers**, but not both. | [optional] **GroupedSigners** | [**List<SubSignatureRequestGroupedSigners>**](SubSignatureRequestGroupedSigners.md) | Add Grouped Signers to your Signature Request.

This endpoint requires either **signers** or **grouped_signers**, but not both. | [optional] **AllowDecline** | **bool** | Allows signers to decline to sign a document if `true`. Defaults to `false`. | [optional] [default to false]**AllowReassign** | **bool** | Allows signers to reassign their signature requests to other signers if set to `true`. Defaults to `false`.

**NOTE:** Only available for Premium plan and higher. | [optional] [default to false]**Attachments** | [**List<SubAttachment>**](SubAttachment.md) | A list describing the attachments | [optional] **CcEmailAddresses** | **List<string>** | The email addresses that should be CCed. | [optional] **ClientId** | **string** | The client id of the API App you want to associate with this request. Used to apply the branding and callback url defined for the app. | [optional] **CustomFields** | [**List<SubCustomField>**](SubCustomField.md) | When used together with merge fields, `custom_fields` allows users to add pre-filled data to their signature requests.

Pre-filled data can be used with "send-once" signature requests by adding merge fields with `form_fields_per_document` or [Text Tags](https://app.hellosign.com/api/textTagsWalkthrough#TextTagIntro) while passing values back with `custom_fields` together in one API call.

For using pre-filled on repeatable signature requests, merge fields are added to templates in the Dropbox Sign UI or by calling [/template/create_embedded_draft](/api/reference/operation/templateCreateEmbeddedDraft) and then passing `custom_fields` on subsequent signature requests referencing that template. | [optional] **FieldOptions** | [**SubFieldOptions**](SubFieldOptions.md) | | [optional] **FormFieldGroups** | [**List<SubFormFieldGroup>**](SubFormFieldGroup.md) | Group information for fields defined in `form_fields_per_document`. String-indexed JSON array with `group_label` and `requirement` keys. `form_fields_per_document` must contain fields referencing a group defined in `form_field_groups`. | [optional] **FormFieldRules** | [**List<SubFormFieldRule>**](SubFormFieldRule.md) | Conditional Logic rules for fields defined in `form_fields_per_document`. | [optional] **FormFieldsPerDocument** | [**List<SubFormFieldsPerDocumentBase>**](SubFormFieldsPerDocumentBase.md) | The fields that should appear on the document, expressed as an array of objects. (For more details you can read about it here: [Using Form Fields per Document](/docs/openapi/form-fields-per-document).)

**NOTE:** Fields like **text**, **dropdown**, **checkbox**, **radio**, and **hyperlink** have additional required and optional parameters. Check out the list of [additional parameters](/api/reference/constants/#form-fields-per-document) for these field types.

* Text Field use `SubFormFieldsPerDocumentText`
* Dropdown Field use `SubFormFieldsPerDocumentDropdown`
* Hyperlink Field use `SubFormFieldsPerDocumentHyperlink`
* Checkbox Field use `SubFormFieldsPerDocumentCheckbox`
* Radio Field use `SubFormFieldsPerDocumentRadio`
* Signature Field use `SubFormFieldsPerDocumentSignature`
* Date Signed Field use `SubFormFieldsPerDocumentDateSigned`
* Initials Field use `SubFormFieldsPerDocumentInitials`
* Text Merge Field use `SubFormFieldsPerDocumentTextMerge`
* Checkbox Merge Field use `SubFormFieldsPerDocumentCheckboxMerge` | [optional] **HideTextTags** | **bool** | Enables automatic Text Tag removal when set to true.

**NOTE:** Removing text tags this way can cause unwanted clipping. We recommend leaving this setting on `false` and instead hiding your text tags using white text or a similar approach. See the [Text Tags Walkthrough](https://app.hellosign.com/api/textTagsWalkthrough#TextTagIntro) for more information. | [optional] [default to false]**IsQualifiedSignature** | **bool** | Send with a value of `true` if you wish to enable [Qualified Electronic Signatures](https://www.hellosign.com/features/qualified-electronic-signatures) (QES), which requires a face-to-face call to verify the signer's identity.<br>
**NOTE:** QES is only available on the Premium API plan as an add-on purchase. Cannot be used in `test_mode`. Only works on requests with one signer. | [optional] [default to false]**IsEid** | **bool** | Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br>
**NOTE:** You need the eID add-on to use this feature. Please [contact sales](https://sign.dropbox.com/form/contact-sales) for more information. Cannot be used in `test_mode`. Only works on requests with one signer. | [optional] [default to false]**Message** | **string** | The custom message in the email that will be sent to the signers. | [optional] **Metadata** | **Dictionary<string, Object>** | Key-value data that should be attached to the signature request. This metadata is included in all API responses and events involving the signature request. For example, use the metadata field to store a signer's order number for look up when receiving events for the signature request.

Each request can include up to 10 metadata keys (or 50 nested metadata keys), with key names up to 40 characters long and values up to 1000 characters long. | [optional] **SigningOptions** | [**SubSigningOptions**](SubSigningOptions.md) | | [optional] **SigningRedirectUrl** | **string** | The URL you want signers redirected to after they successfully sign. | [optional] **Subject** | **string** | The subject in the email that will be sent to the signers. | [optional] **TestMode** | **bool** | Whether this is a test, the signature request will not be legally binding if set to `true`. Defaults to `false`. | [optional] [default to false]**Title** | **string** | The title you want to assign to the SignatureRequest. | [optional] **UseTextTags** | **bool** | Send with a value of `true` if you wish to enable [Text Tags](https://app.hellosign.com/api/textTagsWalkthrough#TextTagIntro) parsing in your document. Defaults to disabled, or `false`. | [optional] [default to false]**ExpiresAt** | **int?** | When the signature request will expire. Unsigned signatures will be moved to the expired status, and no longer signable. See [Signature Request Expiration Date](https://developers.hellosign.com/docs/signature-request/expiration/) for details. | [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/docs/SignatureRequestSendWithTemplateRequest.md b/docs/SignatureRequestSendWithTemplateRequest.md index 12fc09b..89bbdcc 100644 --- a/docs/SignatureRequestSendWithTemplateRequest.md +++ b/docs/SignatureRequestSendWithTemplateRequest.md @@ -4,7 +4,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**TemplateIds** | **List<string>** | Use `template_ids` to create a SignatureRequest from one or more templates, in the order in which the template will be used. | **Signers** | [**List<SubSignatureRequestTemplateSigner>**](SubSignatureRequestTemplateSigner.md) | Add Signers to your Templated-based Signature Request. | **AllowDecline** | **bool** | Allows signers to decline to sign a document if `true`. Defaults to `false`. | [optional] [default to false]**Ccs** | [**List<SubCC>**](SubCC.md) | Add CC email recipients. Required when a CC role exists for the Template. | [optional] **ClientId** | **string** | Client id of the app to associate with the signature request. Used to apply the branding and callback url defined for the app. | [optional] **CustomFields** | [**List<SubCustomField>**](SubCustomField.md) | An array defining values and options for custom fields. Required when a custom field exists in the Template. | [optional] **Files** | **List<System.IO.Stream>** | Use `files[]` to indicate the uploaded file(s) to send for signature.

This endpoint requires either **files** or **file_urls[]**, but not both. | [optional] **FileUrls** | **List<string>** | Use `file_urls[]` to have Dropbox Sign download the file(s) to send for signature.

This endpoint requires either **files** or **file_urls[]**, but not both. | [optional] **IsQualifiedSignature** | **bool** | Send with a value of `true` if you wish to enable [Qualified Electronic Signatures](https://www.hellosign.com/features/qualified-electronic-signatures) (QES), which requires a face-to-face call to verify the signer's identity.<br>
**NOTE:** QES is only available on the Premium API plan as an add-on purchase. Cannot be used in `test_mode`. Only works on requests with one signer. | [optional] [default to false]**IsEid** | **bool** | Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br>
**NOTE:** eID is only available on the Premium API plan. Cannot be used in `test_mode`. Only works on requests with one signer. | [optional] [default to false]**Message** | **string** | The custom message in the email that will be sent to the signers. | [optional] **Metadata** | **Dictionary<string, Object>** | Key-value data that should be attached to the signature request. This metadata is included in all API responses and events involving the signature request. For example, use the metadata field to store a signer's order number for look up when receiving events for the signature request.

Each request can include up to 10 metadata keys (or 50 nested metadata keys), with key names up to 40 characters long and values up to 1000 characters long. | [optional] **SigningOptions** | [**SubSigningOptions**](SubSigningOptions.md) | | [optional] **SigningRedirectUrl** | **string** | The URL you want signers redirected to after they successfully sign. | [optional] **Subject** | **string** | The subject in the email that will be sent to the signers. | [optional] **TestMode** | **bool** | Whether this is a test, the signature request will not be legally binding if set to `true`. Defaults to `false`. | [optional] [default to false]**Title** | **string** | The title you want to assign to the SignatureRequest. | [optional] +**TemplateIds** | **List<string>** | Use `template_ids` to create a SignatureRequest from one or more templates, in the order in which the template will be used. | **Signers** | [**List<SubSignatureRequestTemplateSigner>**](SubSignatureRequestTemplateSigner.md) | Add Signers to your Templated-based Signature Request. | **AllowDecline** | **bool** | Allows signers to decline to sign a document if `true`. Defaults to `false`. | [optional] [default to false]**Ccs** | [**List<SubCC>**](SubCC.md) | Add CC email recipients. Required when a CC role exists for the Template. | [optional] **ClientId** | **string** | Client id of the app to associate with the signature request. Used to apply the branding and callback url defined for the app. | [optional] **CustomFields** | [**List<SubCustomField>**](SubCustomField.md) | An array defining values and options for custom fields. Required when a custom field exists in the Template. | [optional] **Files** | **List<System.IO.Stream>** | Use `files[]` to indicate the uploaded file(s) to send for signature.

This endpoint requires either **files** or **file_urls[]**, but not both. | [optional] **FileUrls** | **List<string>** | Use `file_urls[]` to have Dropbox Sign download the file(s) to send for signature.

This endpoint requires either **files** or **file_urls[]**, but not both. | [optional] **IsQualifiedSignature** | **bool** | Send with a value of `true` if you wish to enable [Qualified Electronic Signatures](https://www.hellosign.com/features/qualified-electronic-signatures) (QES), which requires a face-to-face call to verify the signer's identity.<br>
**NOTE:** QES is only available on the Premium API plan as an add-on purchase. Cannot be used in `test_mode`. Only works on requests with one signer. | [optional] [default to false]**IsEid** | **bool** | Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br>
**NOTE:** You need the eID add-on to use this feature. Please [contact sales](https://sign.dropbox.com/form/contact-sales) for more information. Cannot be used in `test_mode`. Only works on requests with one signer. | [optional] [default to false]**Message** | **string** | The custom message in the email that will be sent to the signers. | [optional] **Metadata** | **Dictionary<string, Object>** | Key-value data that should be attached to the signature request. This metadata is included in all API responses and events involving the signature request. For example, use the metadata field to store a signer's order number for look up when receiving events for the signature request.

Each request can include up to 10 metadata keys (or 50 nested metadata keys), with key names up to 40 characters long and values up to 1000 characters long. | [optional] **SigningOptions** | [**SubSigningOptions**](SubSigningOptions.md) | | [optional] **SigningRedirectUrl** | **string** | The URL you want signers redirected to after they successfully sign. | [optional] **Subject** | **string** | The subject in the email that will be sent to the signers. | [optional] **TestMode** | **bool** | Whether this is a test, the signature request will not be legally binding if set to `true`. Defaults to `false`. | [optional] [default to false]**Title** | **string** | The title you want to assign to the SignatureRequest. | [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/docs/SubSigningOptions.md b/docs/SubSigningOptions.md index a656741..7ae5fa9 100644 --- a/docs/SubSigningOptions.md +++ b/docs/SubSigningOptions.md @@ -1,11 +1,11 @@ # Dropbox.Sign.Model.SubSigningOptions -This allows the requester to specify the types allowed for creating a signature. **NOTE:** If `signing_options` are not defined in the request, the allowed types will default to those specified in the account settings. +This allows the requester to specify the types allowed for creating a signature and specify another signing options. **NOTE:** If `signing_options` are not defined in the request, the allowed types will default to those specified in the account settings. **NOTE:** If `force_advanced_signature_details` is set, allowed types has to be defined too. ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**DefaultType** | **string** | The default type shown (limited to the listed types) | **Draw** | **bool** | Allows drawing the signature | [optional] [default to false]**Phone** | **bool** | Allows using a smartphone to email the signature | [optional] [default to false]**Type** | **bool** | Allows typing the signature | [optional] [default to false]**Upload** | **bool** | Allows uploading the signature | [optional] [default to false] +**DefaultType** | **string** | The default type shown (limited to the listed types) | **Draw** | **bool** | Allows drawing the signature | [optional] [default to false]**Phone** | **bool** | Allows using a smartphone to email the signature | [optional] [default to false]**Type** | **bool** | Allows typing the signature | [optional] [default to false]**Upload** | **bool** | Allows uploading the signature | [optional] [default to false]**ForceAdvancedSignatureDetails** | **bool** | Turning on advanced signature details for the signature request | [optional] [default to false] [[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/docs/TemplateApi.md b/docs/TemplateApi.md index f9c66e1..133b641 100644 --- a/docs/TemplateApi.md +++ b/docs/TemplateApi.md @@ -124,7 +124,7 @@ catch (ApiException e) Create Template -Creates a template that can then be used. +Creates a template that can be used in future signature requests. If `client_id` is provided, the template will be created as an embedded template. Embedded templates can be used for embedded signature requests and can be edited later by generating a new `edit_url` with [/embedded/edit_url/{template_id}](/api/reference/operation/embeddedEditUrl/). Template creation may complete asynchronously after the initial request is accepted. It is recommended that a callback be implemented to listen for the callback event. A `template_created` event indicates the template is ready to use, while a `template_error` event indicates there was a problem while creating the template. If a callback handler has been configured and the event has not been received within 60 minutes of making the call, check the status of the request in the API dashboard and retry the request if necessary. ### Example ```csharp diff --git a/docs/TemplateEditResponse.md b/docs/TemplateEditResponse.md deleted file mode 100644 index 830c7a9..0000000 --- a/docs/TemplateEditResponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# Dropbox.Sign.Model.TemplateEditResponse - -## Properties - -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**TemplateId** | **string** | The id of the Template. | - -[[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/examples/SignatureRequestCreateEmbeddedExample.cs b/examples/SignatureRequestCreateEmbeddedExample.cs index 7f9786c..cd3badd 100644 --- a/examples/SignatureRequestCreateEmbeddedExample.cs +++ b/examples/SignatureRequestCreateEmbeddedExample.cs @@ -22,7 +22,8 @@ public static void Run() draw: true, phone: false, type: true, - upload: true + upload: true, + force_advanced_signature_details: false ); var signers1 = new SubSignatureRequestSigner( diff --git a/examples/SignatureRequestCreateEmbeddedWithTemplateExample.cs b/examples/SignatureRequestCreateEmbeddedWithTemplateExample.cs index d40f342..5138e9e 100644 --- a/examples/SignatureRequestCreateEmbeddedWithTemplateExample.cs +++ b/examples/SignatureRequestCreateEmbeddedWithTemplateExample.cs @@ -22,7 +22,8 @@ public static void Run() draw: true, phone: false, type: true, - upload: true + upload: true, + force_advanced_signature_details: false ); var signers1 = new SubSignatureRequestTemplateSigner( diff --git a/examples/SignatureRequestSendExample.cs b/examples/SignatureRequestSendExample.cs index 2958c26..d5e8ad8 100644 --- a/examples/SignatureRequestSendExample.cs +++ b/examples/SignatureRequestSendExample.cs @@ -26,7 +26,8 @@ public static void Run() draw: true, phone: false, type: true, - upload: true + upload: true, + force_advanced_signature_details: false, ); var signers1 = new SubSignatureRequestSigner( diff --git a/examples/SignatureRequestSendWithTemplateExample.cs b/examples/SignatureRequestSendWithTemplateExample.cs index 024b92c..72d43c3 100644 --- a/examples/SignatureRequestSendWithTemplateExample.cs +++ b/examples/SignatureRequestSendWithTemplateExample.cs @@ -22,7 +22,8 @@ public static void Run() draw: true, phone: false, type: true, - upload: true + upload: true, + force_advanced_signature_details: false, ); var signers1 = new SubSignatureRequestTemplateSigner( diff --git a/openapi-config.yaml b/openapi-config.yaml index 2429dde..792c24f 100644 --- a/openapi-config.yaml +++ b/openapi-config.yaml @@ -6,7 +6,7 @@ additionalProperties: packageCompany: Dropbox Sign API Team packageCopyright: Dropbox 2024 packageDescription: Client library for using the Dropbox Sign API - packageVersion: 2.1.0 + packageVersion: 2.2.0 packageTitle: Dropbox Sign .Net SDK sortModelPropertiesByRequiredFlag: true optionalEmitDefaultValues: true diff --git a/openapi-sdk.yaml b/openapi-sdk.yaml index f984d4d..ed174d3 100644 --- a/openapi-sdk.yaml +++ b/openapi-sdk.yaml @@ -65,6 +65,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -173,6 +175,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -269,6 +273,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 409_example: $ref: '#/components/examples/Error409Response' 4XX_example: @@ -369,6 +375,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -468,6 +476,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 4XX_example: @@ -566,10 +576,10 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' - 404_example: - $ref: '#/components/examples/Error404Response' 429_example: $ref: '#/components/examples/Error429Response' + 404_example: + $ref: '#/components/examples/Error404Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -677,10 +687,10 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' - 409_example: - $ref: '#/components/examples/Error409Response' 429_example: $ref: '#/components/examples/Error429Response' + 409_example: + $ref: '#/components/examples/Error409Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -769,6 +779,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 4XX_example: @@ -873,6 +885,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -983,6 +997,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -1086,6 +1102,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -1192,6 +1210,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 4XX_example: @@ -1290,12 +1310,12 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 409_example: $ref: '#/components/examples/Error409Response' - 429_example: - $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -1392,10 +1412,10 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' - 404_example: - $ref: '#/components/examples/Error404Response' 429_example: $ref: '#/components/examples/Error429Response' + 404_example: + $ref: '#/components/examples/Error404Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -1481,10 +1501,10 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' - 404_example: - $ref: '#/components/examples/Error404Response' 429_example: $ref: '#/components/examples/Error429Response' + 404_example: + $ref: '#/components/examples/Error404Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -1576,12 +1596,12 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 410_example: $ref: '#/components/examples/Error410Response' - 429_example: - $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -1675,6 +1695,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 4XX_example: @@ -1858,6 +1880,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -1951,6 +1975,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 4XX_example: @@ -2046,6 +2072,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 4XX_example: @@ -2135,6 +2163,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 4XX_example: @@ -2251,6 +2281,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -2344,6 +2376,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 4XX_example: @@ -2450,6 +2484,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -2546,10 +2582,10 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' - 404_example: - $ref: '#/components/examples/Error404Response' 429_example: $ref: '#/components/examples/Error429Response' + 404_example: + $ref: '#/components/examples/Error404Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -2643,6 +2679,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: [] @@ -2738,6 +2776,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: [] @@ -2836,6 +2876,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -2935,12 +2977,12 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 409_example: $ref: '#/components/examples/Error409Response' - 429_example: - $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -3040,6 +3082,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 4XX_example: @@ -3143,6 +3187,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 409_example: @@ -3251,10 +3297,10 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' - 409_example: - $ref: '#/components/examples/Error409Response' 429_example: $ref: '#/components/examples/Error429Response' + 409_example: + $ref: '#/components/examples/Error409Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -3354,10 +3400,10 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' - 409_example: - $ref: '#/components/examples/Error409Response' 429_example: $ref: '#/components/examples/Error429Response' + 409_example: + $ref: '#/components/examples/Error409Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -3471,12 +3517,12 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 409_example: $ref: '#/components/examples/Error409Response' - 429_example: - $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -3591,12 +3637,12 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 409_example: $ref: '#/components/examples/Error409Response' - 429_example: - $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -3708,12 +3754,12 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 409_example: $ref: '#/components/examples/Error409Response' - 429_example: - $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -3825,12 +3871,12 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 409_example: $ref: '#/components/examples/Error409Response' - 429_example: - $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -3943,14 +3989,14 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 409_example: $ref: '#/components/examples/Error409Response' 410_example: $ref: '#/components/examples/Error410Response' - 429_example: - $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -4051,14 +4097,14 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 409_example: $ref: '#/components/examples/Error409Response' 410_example: $ref: '#/components/examples/Error410Response' - 429_example: - $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -4166,14 +4212,14 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 409_example: $ref: '#/components/examples/Error409Response' 410_example: $ref: '#/components/examples/Error410Response' - 429_example: - $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -4271,6 +4317,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 410_example: @@ -4394,6 +4442,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 409_example: $ref: '#/components/examples/Error409Response' 4XX_example: @@ -4493,6 +4543,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 4XX_example: @@ -4603,14 +4655,14 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 409_example: $ref: '#/components/examples/Error409Response' 410_example: $ref: '#/components/examples/Error410Response' - 429_example: - $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -4708,6 +4760,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 409_example: @@ -4812,10 +4866,10 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' - 409_example: - $ref: '#/components/examples/Error409Response' 429_example: $ref: '#/components/examples/Error429Response' + 409_example: + $ref: '#/components/examples/Error409Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -5029,6 +5083,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 4XX_example: @@ -5138,6 +5194,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 4XX_example: @@ -5236,6 +5294,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -5316,6 +5376,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -5403,6 +5465,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 4XX_example: @@ -5500,6 +5564,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -5596,10 +5662,10 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' - 409_example: - $ref: '#/components/examples/Error409Response' 429_example: $ref: '#/components/examples/Error429Response' + 409_example: + $ref: '#/components/examples/Error409Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -5695,6 +5761,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -5808,10 +5876,10 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' - 409_example: - $ref: '#/components/examples/Error409Response' 429_example: $ref: '#/components/examples/Error429Response' + 409_example: + $ref: '#/components/examples/Error409Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -5910,6 +5978,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 4XX_example: @@ -6024,10 +6094,10 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' - 409_example: - $ref: '#/components/examples/Error409Response' 429_example: $ref: '#/components/examples/Error429Response' + 409_example: + $ref: '#/components/examples/Error409Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -6133,6 +6203,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 4XX_example: @@ -6188,7 +6260,12 @@ paths: tags: - Template summary: 'Create Template' - description: 'Creates a template that can then be used.' + description: |- + Creates a template that can be used in future signature requests. + + If `client_id` is provided, the template will be created as an embedded template. Embedded templates can be used for embedded signature requests and can be edited later by generating a new `edit_url` with [/embedded/edit_url/{template_id}](/api/reference/operation/embeddedEditUrl/). + + Template creation may complete asynchronously after the initial request is accepted. It is recommended that a callback be implemented to listen for the callback event. A `template_created` event indicates the template is ready to use, while a `template_error` event indicates there was a problem while creating the template. If a callback handler has been configured and the event has not been received within 60 minutes of making the call, check the status of the request in the API dashboard and retry the request if necessary. operationId: templateCreate requestBody: required: true @@ -6240,6 +6317,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 409_example: @@ -6349,6 +6428,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 409_example: @@ -6444,6 +6525,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 409_example: @@ -6558,14 +6641,14 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 409_example: $ref: '#/components/examples/Error409Response' 422_example: $ref: '#/components/examples/Error422Response' - 429_example: - $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -6665,14 +6748,14 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 409_example: $ref: '#/components/examples/Error409Response' 422_example: $ref: '#/components/examples/Error422Response' - 429_example: - $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -6779,14 +6862,14 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 409_example: $ref: '#/components/examples/Error409Response' 422_example: $ref: '#/components/examples/Error422Response' - 429_example: - $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -6883,10 +6966,10 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' - 404_example: - $ref: '#/components/examples/Error404Response' 429_example: $ref: '#/components/examples/Error429Response' + 404_example: + $ref: '#/components/examples/Error404Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -7006,10 +7089,10 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' - 409_example: - $ref: '#/components/examples/Error409Response' 429_example: $ref: '#/components/examples/Error429Response' + 409_example: + $ref: '#/components/examples/Error409Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -7115,6 +7198,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 4XX_example: @@ -7237,12 +7322,12 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 409_example: $ref: '#/components/examples/Error409Response' - 429_example: - $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -7348,6 +7433,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -7456,6 +7543,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 409_example: @@ -7563,12 +7652,12 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 409_example: $ref: '#/components/examples/Error409Response' - 429_example: - $ref: '#/components/examples/Error429Response' 4XX_example: $ref: '#/components/examples/Error4XXResponse' security: @@ -7677,6 +7766,8 @@ paths: $ref: '#/components/examples/Error402Response' 403_example: $ref: '#/components/examples/Error403Response' + 429_example: + $ref: '#/components/examples/Error429Response' 404_example: $ref: '#/components/examples/Error404Response' 409_example: @@ -8112,10 +8203,10 @@ components: description: 'The token provided when you got the expired access token.' type: string client_id: - description: 'The client ID for your API app. Mandatory from August 1st, 2025. Until then, required if the "Client Credentials Required" setting is enabled for token refresh; optional if disabled.' + description: 'The client ID for your API app. Required for new API apps. To enhance security, we recommend making it required for existing apps in your app settings.' type: string client_secret: - description: 'The client secret for your API app. Mandatory from August 1st, 2025. Until then, required if the "Client Credentials Required" setting is enabled for token refresh; optional if disabled.' + description: 'The client secret for your API app. Required for new API apps. To enhance security, we recommend making it required for existing apps in your app settings.' type: string type: object ReportCreateRequest: @@ -8136,6 +8227,7 @@ components: - user_activity - document_status - sms_activity + - fax_usage maxItems: 2 minItems: 1 start_date: @@ -8670,7 +8762,7 @@ components: Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.
- **NOTE:** eID is only available on the Premium API plan. Cannot be used in `test_mode`. Only works on requests with one signer. + **NOTE:** You need the eID add-on to use this feature. Please [contact sales](https://sign.dropbox.com/form/contact-sales) for more information. Cannot be used in `test_mode`. Only works on requests with one signer. type: boolean default: false message: @@ -8997,7 +9089,7 @@ components: Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.
- **NOTE:** eID is only available on the Premium API plan. Cannot be used in `test_mode`. Only works on requests with one signer. + **NOTE:** You need the eID add-on to use this feature. Please [contact sales](https://sign.dropbox.com/form/contact-sales) for more information. Cannot be used in `test_mode`. Only works on requests with one signer. type: boolean default: false message: @@ -9165,13 +9257,12 @@ components: type: boolean default: false deprecated: true - x-hideOn: doc is_eid: description: |- Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.
- **NOTE:** eID is only available on the Premium API plan. Cannot be used in `test_mode`. Only works on requests with one signer. + **NOTE:** You need the eID add-on to use this feature. Please [contact sales](https://sign.dropbox.com/form/contact-sales) for more information. Cannot be used in `test_mode`. Only works on requests with one signer. type: boolean default: false message: @@ -9267,13 +9358,12 @@ components: type: boolean default: false deprecated: true - x-hideOn: doc is_eid: description: |- Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.
- **NOTE:** eID is only available on the Premium API plan. Cannot be used in `test_mode`. Only works on requests with one signer. + **NOTE:** You need the eID add-on to use this feature. Please [contact sales](https://sign.dropbox.com/form/contact-sales) for more information. Cannot be used in `test_mode`. Only works on requests with one signer. type: boolean default: false message: @@ -10266,9 +10356,11 @@ components: type: object SubSigningOptions: description: |- - This allows the requester to specify the types allowed for creating a signature. + This allows the requester to specify the types allowed for creating a signature and specify another signing options. **NOTE:** If `signing_options` are not defined in the request, the allowed types will default to those specified in the account settings. + + **NOTE:** If `force_advanced_signature_details` is set, allowed types has to be defined too. required: - default_type properties: @@ -10296,6 +10388,10 @@ components: description: 'Allows uploading the signature' type: boolean default: false + force_advanced_signature_details: + description: 'Turning on advanced signature details for the signature request' + type: boolean + default: false type: object SubWhiteLabelingOptions: description: |- @@ -11590,6 +11686,8 @@ components: nullable: true usage: $ref: '#/components/schemas/AccountResponseUsage' + settings: + $ref: '#/components/schemas/AccountResponseSettings' type: object x-internal-class: true OAuthTokenResponse: @@ -11637,6 +11735,20 @@ components: nullable: true type: object x-internal-class: true + AccountResponseSettings: + description: 'Subset of configured settings' + properties: + signer_access_codes: + description: 'Returns `true` if _Custom access codes_ is enabled in Admin Console. [Read more](https://developers.hellosign.com/docs/sms-tools/walkthrough).' + type: boolean + sms_delivery: + description: 'Returns `true` if _Text message_ is enabled in Admin Console. [Read more](https://developers.hellosign.com/docs/sms-tools/walkthrough).' + type: boolean + sms_authentication: + description: 'Returns `true` if _Signer authentication_ is enabled in Admin Console. [Read more](https://developers.hellosign.com/docs/sms-tools/walkthrough).' + type: boolean + type: object + x-internal-class: true AccountResponseUsage: description: 'Details concerning monthly usage' properties: @@ -11966,6 +12078,7 @@ components: - user_activity - document_status - sms_activity + - fax_usage type: object x-internal-class: true SignatureRequestResponse: @@ -13565,14 +13678,6 @@ components: $ref: '#/components/schemas/WarningResponse' type: object x-internal-class: true - TemplateEditResponse: - required: - - template_id - properties: - template_id: - description: 'The id of the Template.' - type: string - type: object TemplateGetResponse: required: - template diff --git a/src/Dropbox.Sign.Test/Model/SubFormFieldRuleActionTests.cs b/src/Dropbox.Sign.Test/Model/SubFormFieldRuleActionTests.cs new file mode 100644 index 0000000..6e5a65c --- /dev/null +++ b/src/Dropbox.Sign.Test/Model/SubFormFieldRuleActionTests.cs @@ -0,0 +1,84 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using Xunit; +using Dropbox.Sign.Model; + +namespace Dropbox.Sign.Test.Model +{ + public class SubFormFieldRuleActionTests + { + // SubFormFieldRuleAction.TypeEnum must serialize to the exact + // wire values accepted by the Dropbox Sign API + // (change-field-visibility, change-group-visibility). The enum + // intentionally carries legacy alias members (FieldVisibility, + // GroupVisibility) that share a numeric value with the canonical + // members, so at runtime they are indistinguishable (xUnit also + // dedups the alias rows because [InlineData] compares enums by + // their underlying int). The dedicated TypeEnumJsonConverter + // maps by underlying value so both names produce the same wire + // string; pinning the canonical members is therefore sufficient. + [Theory] + [InlineData(SubFormFieldRuleAction.TypeEnum.ChangeFieldVisibility, "change-field-visibility")] + [InlineData(SubFormFieldRuleAction.TypeEnum.ChangeGroupVisibility, "change-group-visibility")] + public void TypeEnum_Serializes_To_EnumMember_Value( + SubFormFieldRuleAction.TypeEnum value, + string expected) + { + var json = JsonConvert.SerializeObject(value); + + Assert.Equal($"\"{expected}\"", json); + } + + [Theory] + [InlineData(SubFormFieldRuleAction.TypeEnum.ChangeFieldVisibility, "change-field-visibility")] + [InlineData(SubFormFieldRuleAction.TypeEnum.ChangeGroupVisibility, "change-group-visibility")] + public void Action_Payload_Uses_EnumMember_Value_For_Type( + SubFormFieldRuleAction.TypeEnum value, + string expected) + { + var action = new SubFormFieldRuleAction( + fieldId: "api_id_2", + hidden: true, + type: value + ); + + var json = JObject.Parse(action.ToJson()); + + Assert.Equal(expected, (string)json["type"]); + } + + [Theory] + [InlineData("change-field-visibility", SubFormFieldRuleAction.TypeEnum.ChangeFieldVisibility)] + [InlineData("change-group-visibility", SubFormFieldRuleAction.TypeEnum.ChangeGroupVisibility)] + public void Action_Payload_Deserializes_EnumMember_Value_For_Type( + string wireValue, + SubFormFieldRuleAction.TypeEnum expected) + { + var payload = new JObject( + new JProperty("field_id", "api_id_2"), + new JProperty("hidden", true), + new JProperty("type", wireValue) + ).ToString(); + + var action = SubFormFieldRuleAction.Init(payload); + + Assert.Equal(expected, action.Type); + } + + [Theory] + [InlineData("FieldVisibility")] + [InlineData("GroupVisibility")] + [InlineData("change-unknown-thing")] + [InlineData("")] + public void Action_Payload_Rejects_Unknown_Type_Values(string wireValue) + { + var payload = new JObject( + new JProperty("field_id", "api_id_2"), + new JProperty("hidden", true), + new JProperty("type", wireValue) + ).ToString(); + + Assert.ThrowsAny(() => SubFormFieldRuleAction.Init(payload)); + } + } +} diff --git a/src/Dropbox.Sign/Api/TemplateApi.cs b/src/Dropbox.Sign/Api/TemplateApi.cs index f98f067..80da826 100644 --- a/src/Dropbox.Sign/Api/TemplateApi.cs +++ b/src/Dropbox.Sign/Api/TemplateApi.cs @@ -56,7 +56,7 @@ public interface ITemplateApiSync : IApiAccessor /// Create Template /// /// - /// Creates a template that can then be used. + /// Creates a template that can be used in future signature requests. If `client_id` is provided, the template will be created as an embedded template. Embedded templates can be used for embedded signature requests and can be edited later by generating a new `edit_url` with [/embedded/edit_url/{template_id}](/api/reference/operation/embeddedEditUrl/). Template creation may complete asynchronously after the initial request is accepted. It is recommended that a callback be implemented to listen for the callback event. A `template_created` event indicates the template is ready to use, while a `template_error` event indicates there was a problem while creating the template. If a callback handler has been configured and the event has not been received within 60 minutes of making the call, check the status of the request in the API dashboard and retry the request if necessary. /// /// Thrown when fails to make API call /// @@ -68,7 +68,7 @@ public interface ITemplateApiSync : IApiAccessor /// Create Template /// /// - /// Creates a template that can then be used. + /// Creates a template that can be used in future signature requests. If `client_id` is provided, the template will be created as an embedded template. Embedded templates can be used for embedded signature requests and can be edited later by generating a new `edit_url` with [/embedded/edit_url/{template_id}](/api/reference/operation/embeddedEditUrl/). Template creation may complete asynchronously after the initial request is accepted. It is recommended that a callback be implemented to listen for the callback event. A `template_created` event indicates the template is ready to use, while a `template_error` event indicates there was a problem while creating the template. If a callback handler has been configured and the event has not been received within 60 minutes of making the call, check the status of the request in the API dashboard and retry the request if necessary. /// /// Thrown when fails to make API call /// @@ -336,7 +336,7 @@ public interface ITemplateApiAsync : IApiAccessor /// Create Template /// /// - /// Creates a template that can then be used. + /// Creates a template that can be used in future signature requests. If `client_id` is provided, the template will be created as an embedded template. Embedded templates can be used for embedded signature requests and can be edited later by generating a new `edit_url` with [/embedded/edit_url/{template_id}](/api/reference/operation/embeddedEditUrl/). Template creation may complete asynchronously after the initial request is accepted. It is recommended that a callback be implemented to listen for the callback event. A `template_created` event indicates the template is ready to use, while a `template_error` event indicates there was a problem while creating the template. If a callback handler has been configured and the event has not been received within 60 minutes of making the call, check the status of the request in the API dashboard and retry the request if necessary. /// /// Thrown when fails to make API call /// @@ -349,7 +349,7 @@ public interface ITemplateApiAsync : IApiAccessor /// Create Template /// /// - /// Creates a template that can then be used. + /// Creates a template that can be used in future signature requests. If `client_id` is provided, the template will be created as an embedded template. Embedded templates can be used for embedded signature requests and can be edited later by generating a new `edit_url` with [/embedded/edit_url/{template_id}](/api/reference/operation/embeddedEditUrl/). Template creation may complete asynchronously after the initial request is accepted. It is recommended that a callback be implemented to listen for the callback event. A `template_created` event indicates the template is ready to use, while a `template_error` event indicates there was a problem while creating the template. If a callback handler has been configured and the event has not been received within 60 minutes of making the call, check the status of the request in the API dashboard and retry the request if necessary. /// /// Thrown when fails to make API call /// @@ -919,7 +919,7 @@ public Dropbox.Sign.Client.ApiResponse TemplateAddUserWithH } /// - /// Create Template Creates a template that can then be used. + /// Create Template Creates a template that can be used in future signature requests. If `client_id` is provided, the template will be created as an embedded template. Embedded templates can be used for embedded signature requests and can be edited later by generating a new `edit_url` with [/embedded/edit_url/{template_id}](/api/reference/operation/embeddedEditUrl/). Template creation may complete asynchronously after the initial request is accepted. It is recommended that a callback be implemented to listen for the callback event. A `template_created` event indicates the template is ready to use, while a `template_error` event indicates there was a problem while creating the template. If a callback handler has been configured and the event has not been received within 60 minutes of making the call, check the status of the request in the API dashboard and retry the request if necessary. /// /// Thrown when fails to make API call /// @@ -932,7 +932,7 @@ public TemplateCreateResponse TemplateCreate(TemplateCreateRequest templateCreat } /// - /// Create Template Creates a template that can then be used. + /// Create Template Creates a template that can be used in future signature requests. If `client_id` is provided, the template will be created as an embedded template. Embedded templates can be used for embedded signature requests and can be edited later by generating a new `edit_url` with [/embedded/edit_url/{template_id}](/api/reference/operation/embeddedEditUrl/). Template creation may complete asynchronously after the initial request is accepted. It is recommended that a callback be implemented to listen for the callback event. A `template_created` event indicates the template is ready to use, while a `template_error` event indicates there was a problem while creating the template. If a callback handler has been configured and the event has not been received within 60 minutes of making the call, check the status of the request in the API dashboard and retry the request if necessary. /// /// Thrown when fails to make API call /// @@ -1009,7 +1009,7 @@ public Dropbox.Sign.Client.ApiResponse TemplateCreateWit } /// - /// Create Template Creates a template that can then be used. + /// Create Template Creates a template that can be used in future signature requests. If `client_id` is provided, the template will be created as an embedded template. Embedded templates can be used for embedded signature requests and can be edited later by generating a new `edit_url` with [/embedded/edit_url/{template_id}](/api/reference/operation/embeddedEditUrl/). Template creation may complete asynchronously after the initial request is accepted. It is recommended that a callback be implemented to listen for the callback event. A `template_created` event indicates the template is ready to use, while a `template_error` event indicates there was a problem while creating the template. If a callback handler has been configured and the event has not been received within 60 minutes of making the call, check the status of the request in the API dashboard and retry the request if necessary. /// /// Thrown when fails to make API call /// @@ -1023,7 +1023,7 @@ public Dropbox.Sign.Client.ApiResponse TemplateCreateWit } /// - /// Create Template Creates a template that can then be used. + /// Create Template Creates a template that can be used in future signature requests. If `client_id` is provided, the template will be created as an embedded template. Embedded templates can be used for embedded signature requests and can be edited later by generating a new `edit_url` with [/embedded/edit_url/{template_id}](/api/reference/operation/embeddedEditUrl/). Template creation may complete asynchronously after the initial request is accepted. It is recommended that a callback be implemented to listen for the callback event. A `template_created` event indicates the template is ready to use, while a `template_error` event indicates there was a problem while creating the template. If a callback handler has been configured and the event has not been received within 60 minutes of making the call, check the status of the request in the API dashboard and retry the request if necessary. /// /// Thrown when fails to make API call /// diff --git a/src/Dropbox.Sign/Client/Configuration.cs b/src/Dropbox.Sign/Client/Configuration.cs index 2115d02..ab0d3dd 100644 --- a/src/Dropbox.Sign/Client/Configuration.cs +++ b/src/Dropbox.Sign/Client/Configuration.cs @@ -36,7 +36,7 @@ public class Configuration : IReadableConfiguration /// Version of the package. /// /// Version of the package. - public const string Version = "2.1.0"; + public const string Version = "2.2.0"; /// /// Identifier for ISO 8601 DateTime Format @@ -120,7 +120,7 @@ public class Configuration : IReadableConfiguration public Configuration() { Proxy = null; - UserAgent = WebUtility.UrlEncode("OpenAPI-Generator/2.1.0/csharp"); + UserAgent = WebUtility.UrlEncode("OpenAPI-Generator/2.2.0/csharp"); BasePath = "https://api.hellosign.com/v3"; DefaultHeaders = new ConcurrentDictionary(); ApiKey = new ConcurrentDictionary(); @@ -567,7 +567,7 @@ public static string ToDebugReport() report += " OS: " + System.Environment.OSVersion + "\n"; report += " .NET Framework Version: " + System.Environment.Version + "\n"; report += " Version of the API: 3.0.0\n"; - report += " SDK Package Version: 2.1.0\n"; + report += " SDK Package Version: 2.2.0\n"; return report; } diff --git a/src/Dropbox.Sign/Dropbox.Sign.csproj b/src/Dropbox.Sign/Dropbox.Sign.csproj index 1456657..ba3326d 100644 --- a/src/Dropbox.Sign/Dropbox.Sign.csproj +++ b/src/Dropbox.Sign/Dropbox.Sign.csproj @@ -12,7 +12,7 @@ Client library for using the Dropbox Sign API Dropbox 2024 Dropbox.Sign - 2.1.0 + 2.2.0 bin\$(Configuration)\$(TargetFramework)\Dropbox.Sign.xml https://github.com/hellosign/dropbox-sign-dotnet.git git diff --git a/src/Dropbox.Sign/Model/AccountResponse.cs b/src/Dropbox.Sign/Model/AccountResponse.cs index 6d65726..e4af829 100644 --- a/src/Dropbox.Sign/Model/AccountResponse.cs +++ b/src/Dropbox.Sign/Model/AccountResponse.cs @@ -52,7 +52,8 @@ protected AccountResponse() { } /// The id of the team account belongs to.. /// The locale used in this Account. Check out the list of [supported locales](/api/reference/constants/#supported-locales) to learn more about the possible values.. /// usage. - public AccountResponse(string accountId = default(string), string emailAddress = default(string), bool isLocked = default(bool), bool isPaidHs = default(bool), bool isPaidHf = default(bool), AccountResponseQuotas quotas = default(AccountResponseQuotas), string callbackUrl = default(string), string roleCode = default(string), string teamId = default(string), string locale = default(string), AccountResponseUsage usage = default(AccountResponseUsage)) + /// settings. + public AccountResponse(string accountId = default(string), string emailAddress = default(string), bool isLocked = default(bool), bool isPaidHs = default(bool), bool isPaidHf = default(bool), AccountResponseQuotas quotas = default(AccountResponseQuotas), string callbackUrl = default(string), string roleCode = default(string), string teamId = default(string), string locale = default(string), AccountResponseUsage usage = default(AccountResponseUsage), AccountResponseSettings settings = default(AccountResponseSettings)) { this.AccountId = accountId; @@ -66,6 +67,7 @@ protected AccountResponse() { } this.TeamId = teamId; this.Locale = locale; this.Usage = usage; + this.Settings = settings; } /// @@ -159,6 +161,12 @@ public static AccountResponse Init(string jsonData) [DataMember(Name = "usage", EmitDefaultValue = true)] public AccountResponseUsage Usage { get; set; } + /// + /// Gets or Sets Settings + /// + [DataMember(Name = "settings", EmitDefaultValue = true)] + public AccountResponseSettings Settings { get; set; } + /// /// Returns the string presentation of the object /// @@ -178,6 +186,7 @@ public override string ToString() sb.Append(" TeamId: ").Append(TeamId).Append("\n"); sb.Append(" Locale: ").Append(Locale).Append("\n"); sb.Append(" Usage: ").Append(Usage).Append("\n"); + sb.Append(" Settings: ").Append(Settings).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -264,6 +273,11 @@ public bool Equals(AccountResponse input) this.Usage == input.Usage || (this.Usage != null && this.Usage.Equals(input.Usage)) + ) && + ( + this.Settings == input.Settings || + (this.Settings != null && + this.Settings.Equals(input.Settings)) ); } @@ -311,6 +325,10 @@ public override int GetHashCode() { hashCode = (hashCode * 59) + this.Usage.GetHashCode(); } + if (this.Settings != null) + { + hashCode = (hashCode * 59) + this.Settings.GetHashCode(); + } return hashCode; } } @@ -404,6 +422,13 @@ public List GetOpenApiTypes() Type = "AccountResponseUsage", Value = Usage, }); + types.Add(new OpenApiType() + { + Name = "settings", + Property = "Settings", + Type = "AccountResponseSettings", + Value = Settings, + }); return types; } diff --git a/src/Dropbox.Sign/Model/AccountResponseSettings.cs b/src/Dropbox.Sign/Model/AccountResponseSettings.cs new file mode 100644 index 0000000..0359d73 --- /dev/null +++ b/src/Dropbox.Sign/Model/AccountResponseSettings.cs @@ -0,0 +1,206 @@ +/* + * Dropbox Sign API + * + * Dropbox Sign v3 API + * + * The version of the OpenAPI document: 3.0.0 + * Contact: apisupport@hellosign.com + * Generated by: https://github.com/openapitools/openapi-generator.git + */ + + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.IO; +using System.Runtime.Serialization; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; +using System.ComponentModel.DataAnnotations; +using OpenAPIDateConverter = Dropbox.Sign.Client.OpenAPIDateConverter; + +namespace Dropbox.Sign.Model +{ + /// + /// Subset of configured settings + /// + [DataContract(Name = "AccountResponseSettings")] + [JsonObject(ItemNullValueHandling = NullValueHandling.Ignore)] + public partial class AccountResponseSettings : IEquatable, IValidatableObject + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected AccountResponseSettings() { } + /// + /// Initializes a new instance of the class. + /// + /// Returns `true` if _Custom access codes_ is enabled in Admin Console. [Read more](https://developers.hellosign.com/docs/sms-tools/walkthrough).. + /// Returns `true` if _Text message_ is enabled in Admin Console. [Read more](https://developers.hellosign.com/docs/sms-tools/walkthrough).. + /// Returns `true` if _Signer authentication_ is enabled in Admin Console. [Read more](https://developers.hellosign.com/docs/sms-tools/walkthrough).. + public AccountResponseSettings(bool signerAccessCodes = default(bool), bool smsDelivery = default(bool), bool smsAuthentication = default(bool)) + { + + this.SignerAccessCodes = signerAccessCodes; + this.SmsDelivery = smsDelivery; + this.SmsAuthentication = smsAuthentication; + } + + /// + /// Attempt to instantiate and hydrate a new instance of this class + /// + /// String of JSON data representing target object + public static AccountResponseSettings Init(string jsonData) + { + var obj = JsonConvert.DeserializeObject(jsonData); + + if (obj == null) + { + throw new Exception("Unable to deserialize JSON to instance of AccountResponseSettings"); + } + + return obj; + } + + /// + /// Returns `true` if _Custom access codes_ is enabled in Admin Console. [Read more](https://developers.hellosign.com/docs/sms-tools/walkthrough). + /// + /// Returns `true` if _Custom access codes_ is enabled in Admin Console. [Read more](https://developers.hellosign.com/docs/sms-tools/walkthrough). + [DataMember(Name = "signer_access_codes", EmitDefaultValue = true)] + public bool SignerAccessCodes { get; set; } + + /// + /// Returns `true` if _Text message_ is enabled in Admin Console. [Read more](https://developers.hellosign.com/docs/sms-tools/walkthrough). + /// + /// Returns `true` if _Text message_ is enabled in Admin Console. [Read more](https://developers.hellosign.com/docs/sms-tools/walkthrough). + [DataMember(Name = "sms_delivery", EmitDefaultValue = true)] + public bool SmsDelivery { get; set; } + + /// + /// Returns `true` if _Signer authentication_ is enabled in Admin Console. [Read more](https://developers.hellosign.com/docs/sms-tools/walkthrough). + /// + /// Returns `true` if _Signer authentication_ is enabled in Admin Console. [Read more](https://developers.hellosign.com/docs/sms-tools/walkthrough). + [DataMember(Name = "sms_authentication", EmitDefaultValue = true)] + public bool SmsAuthentication { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.Append("class AccountResponseSettings {\n"); + sb.Append(" SignerAccessCodes: ").Append(SignerAccessCodes).Append("\n"); + sb.Append(" SmsDelivery: ").Append(SmsDelivery).Append("\n"); + sb.Append(" SmsAuthentication: ").Append(SmsAuthentication).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as AccountResponseSettings); + } + + /// + /// Returns true if AccountResponseSettings instances are equal + /// + /// Instance of AccountResponseSettings to be compared + /// Boolean + public bool Equals(AccountResponseSettings input) + { + if (input == null) + { + return false; + } + return + ( + this.SignerAccessCodes == input.SignerAccessCodes || + this.SignerAccessCodes.Equals(input.SignerAccessCodes) + ) && + ( + this.SmsDelivery == input.SmsDelivery || + this.SmsDelivery.Equals(input.SmsDelivery) + ) && + ( + this.SmsAuthentication == input.SmsAuthentication || + this.SmsAuthentication.Equals(input.SmsAuthentication) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + hashCode = (hashCode * 59) + this.SignerAccessCodes.GetHashCode(); + hashCode = (hashCode * 59) + this.SmsDelivery.GetHashCode(); + hashCode = (hashCode * 59) + this.SmsAuthentication.GetHashCode(); + return hashCode; + } + } + + /// + /// To validate all properties of the instance + /// + /// Validation context + /// Validation Result + IEnumerable IValidatableObject.Validate(ValidationContext validationContext) + { + yield break; + } + public List GetOpenApiTypes() + { + var types = new List(); + types.Add(new OpenApiType() + { + Name = "signer_access_codes", + Property = "SignerAccessCodes", + Type = "bool", + Value = SignerAccessCodes, + }); + types.Add(new OpenApiType() + { + Name = "sms_delivery", + Property = "SmsDelivery", + Type = "bool", + Value = SmsDelivery, + }); + types.Add(new OpenApiType() + { + Name = "sms_authentication", + Property = "SmsAuthentication", + Type = "bool", + Value = SmsAuthentication, + }); + + return types; + } + } + +} diff --git a/src/Dropbox.Sign/Model/OAuthTokenRefreshRequest.cs b/src/Dropbox.Sign/Model/OAuthTokenRefreshRequest.cs index 934de0d..9be4f77 100644 --- a/src/Dropbox.Sign/Model/OAuthTokenRefreshRequest.cs +++ b/src/Dropbox.Sign/Model/OAuthTokenRefreshRequest.cs @@ -43,8 +43,8 @@ protected OAuthTokenRefreshRequest() { } /// /// When refreshing an existing token use `refresh_token`. (required) (default to "refresh_token"). /// The token provided when you got the expired access token. (required). - /// The client ID for your API app. Mandatory from August 1st, 2025. Until then, required if the \"Client Credentials Required\" setting is enabled for token refresh; optional if disabled.. - /// The client secret for your API app. Mandatory from August 1st, 2025. Until then, required if the \"Client Credentials Required\" setting is enabled for token refresh; optional if disabled.. + /// The client ID for your API app. Required for new API apps. To enhance security, we recommend making it required for existing apps in your app settings.. + /// The client secret for your API app. Required for new API apps. To enhance security, we recommend making it required for existing apps in your app settings.. public OAuthTokenRefreshRequest(string grantType = @"refresh_token", string refreshToken = default(string), string clientId = default(string), string clientSecret = default(string)) { @@ -95,16 +95,16 @@ public static OAuthTokenRefreshRequest Init(string jsonData) public string RefreshToken { get; set; } /// - /// The client ID for your API app. Mandatory from August 1st, 2025. Until then, required if the \"Client Credentials Required\" setting is enabled for token refresh; optional if disabled. + /// The client ID for your API app. Required for new API apps. To enhance security, we recommend making it required for existing apps in your app settings. /// - /// The client ID for your API app. Mandatory from August 1st, 2025. Until then, required if the \"Client Credentials Required\" setting is enabled for token refresh; optional if disabled. + /// The client ID for your API app. Required for new API apps. To enhance security, we recommend making it required for existing apps in your app settings. [DataMember(Name = "client_id", EmitDefaultValue = true)] public string ClientId { get; set; } /// - /// The client secret for your API app. Mandatory from August 1st, 2025. Until then, required if the \"Client Credentials Required\" setting is enabled for token refresh; optional if disabled. + /// The client secret for your API app. Required for new API apps. To enhance security, we recommend making it required for existing apps in your app settings. /// - /// The client secret for your API app. Mandatory from August 1st, 2025. Until then, required if the \"Client Credentials Required\" setting is enabled for token refresh; optional if disabled. + /// The client secret for your API app. Required for new API apps. To enhance security, we recommend making it required for existing apps in your app settings. [DataMember(Name = "client_secret", EmitDefaultValue = true)] public string ClientSecret { get; set; } diff --git a/src/Dropbox.Sign/Model/ReportCreateRequest.cs b/src/Dropbox.Sign/Model/ReportCreateRequest.cs index 8ae6489..010db6e 100644 --- a/src/Dropbox.Sign/Model/ReportCreateRequest.cs +++ b/src/Dropbox.Sign/Model/ReportCreateRequest.cs @@ -55,7 +55,13 @@ public enum ReportTypeEnum /// Enum SmsActivity for value: sms_activity /// [EnumMember(Value = "sms_activity")] - SmsActivity = 3 + SmsActivity = 3, + + /// + /// Enum FaxUsage for value: fax_usage + /// + [EnumMember(Value = "fax_usage")] + FaxUsage = 4 } /// diff --git a/src/Dropbox.Sign/Model/ReportResponse.cs b/src/Dropbox.Sign/Model/ReportResponse.cs index bd63ab7..5ec9d96 100644 --- a/src/Dropbox.Sign/Model/ReportResponse.cs +++ b/src/Dropbox.Sign/Model/ReportResponse.cs @@ -55,7 +55,13 @@ public enum ReportTypeEnum /// Enum SmsActivity for value: sms_activity /// [EnumMember(Value = "sms_activity")] - SmsActivity = 3 + SmsActivity = 3, + + /// + /// Enum FaxUsage for value: fax_usage + /// + [EnumMember(Value = "fax_usage")] + FaxUsage = 4 } /// diff --git a/src/Dropbox.Sign/Model/SignatureRequestEditRequest.cs b/src/Dropbox.Sign/Model/SignatureRequestEditRequest.cs index f239fcf..585c78c 100644 --- a/src/Dropbox.Sign/Model/SignatureRequestEditRequest.cs +++ b/src/Dropbox.Sign/Model/SignatureRequestEditRequest.cs @@ -56,7 +56,7 @@ protected SignatureRequestEditRequest() { } /// Conditional Logic rules for fields defined in `form_fields_per_document`.. /// The fields that should appear on the document, expressed as an array of objects. (For more details you can read about it here: [Using Form Fields per Document](/docs/openapi/form-fields-per-document).) **NOTE:** Fields like **text**, **dropdown**, **checkbox**, **radio**, and **hyperlink** have additional required and optional parameters. Check out the list of [additional parameters](/api/reference/constants/#form-fields-per-document) for these field types. * Text Field use `SubFormFieldsPerDocumentText` * Dropdown Field use `SubFormFieldsPerDocumentDropdown` * Hyperlink Field use `SubFormFieldsPerDocumentHyperlink` * Checkbox Field use `SubFormFieldsPerDocumentCheckbox` * Radio Field use `SubFormFieldsPerDocumentRadio` * Signature Field use `SubFormFieldsPerDocumentSignature` * Date Signed Field use `SubFormFieldsPerDocumentDateSigned` * Initials Field use `SubFormFieldsPerDocumentInitials` * Text Merge Field use `SubFormFieldsPerDocumentTextMerge` * Checkbox Merge Field use `SubFormFieldsPerDocumentCheckboxMerge`. /// Enables automatic Text Tag removal when set to true. **NOTE:** Removing text tags this way can cause unwanted clipping. We recommend leaving this setting on `false` and instead hiding your text tags using white text or a similar approach. See the [Text Tags Walkthrough](https://app.hellosign.com/api/textTagsWalkthrough#TextTagIntro) for more information. (default to false). - /// Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br> **NOTE:** eID is only available on the Premium API plan. Cannot be used in `test_mode`. Only works on requests with one signer. (default to false). + /// Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br> **NOTE:** You need the eID add-on to use this feature. Please [contact sales](https://sign.dropbox.com/form/contact-sales) for more information. Cannot be used in `test_mode`. Only works on requests with one signer. (default to false). /// The custom message in the email that will be sent to the signers.. /// Key-value data that should be attached to the signature request. This metadata is included in all API responses and events involving the signature request. For example, use the metadata field to store a signer's order number for look up when receiving events for the signature request. Each request can include up to 10 metadata keys (or 50 nested metadata keys), with key names up to 40 characters long and values up to 1000 characters long.. /// signingOptions. @@ -217,9 +217,9 @@ public static SignatureRequestEditRequest Init(string jsonData) public bool HideTextTags { get; set; } /// - /// Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br> **NOTE:** eID is only available on the Premium API plan. Cannot be used in `test_mode`. Only works on requests with one signer. + /// Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br> **NOTE:** You need the eID add-on to use this feature. Please [contact sales](https://sign.dropbox.com/form/contact-sales) for more information. Cannot be used in `test_mode`. Only works on requests with one signer. /// - /// Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br> **NOTE:** eID is only available on the Premium API plan. Cannot be used in `test_mode`. Only works on requests with one signer. + /// Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br> **NOTE:** You need the eID add-on to use this feature. Please [contact sales](https://sign.dropbox.com/form/contact-sales) for more information. Cannot be used in `test_mode`. Only works on requests with one signer. [DataMember(Name = "is_eid", EmitDefaultValue = true)] public bool IsEid { get; set; } diff --git a/src/Dropbox.Sign/Model/SignatureRequestEditWithTemplateRequest.cs b/src/Dropbox.Sign/Model/SignatureRequestEditWithTemplateRequest.cs index 84990b8..ca88879 100644 --- a/src/Dropbox.Sign/Model/SignatureRequestEditWithTemplateRequest.cs +++ b/src/Dropbox.Sign/Model/SignatureRequestEditWithTemplateRequest.cs @@ -48,7 +48,7 @@ protected SignatureRequestEditWithTemplateRequest() { } /// An array defining values and options for custom fields. Required when a custom field exists in the Template.. /// Use `files[]` to indicate the uploaded file(s) to send for signature. This endpoint requires either **files** or **file_urls[]**, but not both.. /// Use `file_urls[]` to have Dropbox Sign download the file(s) to send for signature. This endpoint requires either **files** or **file_urls[]**, but not both.. - /// Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br> **NOTE:** eID is only available on the Premium API plan. Cannot be used in `test_mode`. Only works on requests with one signer. (default to false). + /// Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br> **NOTE:** You need the eID add-on to use this feature. Please [contact sales](https://sign.dropbox.com/form/contact-sales) for more information. Cannot be used in `test_mode`. Only works on requests with one signer. (default to false). /// The custom message in the email that will be sent to the signers.. /// Key-value data that should be attached to the signature request. This metadata is included in all API responses and events involving the signature request. For example, use the metadata field to store a signer's order number for look up when receiving events for the signature request. Each request can include up to 10 metadata keys (or 50 nested metadata keys), with key names up to 40 characters long and values up to 1000 characters long.. /// Add Signers to your Templated-based Signature Request. (required). @@ -161,9 +161,9 @@ public static SignatureRequestEditWithTemplateRequest Init(string jsonData) public List FileUrls { get; set; } /// - /// Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br> **NOTE:** eID is only available on the Premium API plan. Cannot be used in `test_mode`. Only works on requests with one signer. + /// Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br> **NOTE:** You need the eID add-on to use this feature. Please [contact sales](https://sign.dropbox.com/form/contact-sales) for more information. Cannot be used in `test_mode`. Only works on requests with one signer. /// - /// Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br> **NOTE:** eID is only available on the Premium API plan. Cannot be used in `test_mode`. Only works on requests with one signer. + /// Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br> **NOTE:** You need the eID add-on to use this feature. Please [contact sales](https://sign.dropbox.com/form/contact-sales) for more information. Cannot be used in `test_mode`. Only works on requests with one signer. [DataMember(Name = "is_eid", EmitDefaultValue = true)] public bool IsEid { get; set; } diff --git a/src/Dropbox.Sign/Model/SignatureRequestSendRequest.cs b/src/Dropbox.Sign/Model/SignatureRequestSendRequest.cs index 51c0d97..9719a29 100644 --- a/src/Dropbox.Sign/Model/SignatureRequestSendRequest.cs +++ b/src/Dropbox.Sign/Model/SignatureRequestSendRequest.cs @@ -57,7 +57,7 @@ protected SignatureRequestSendRequest() { } /// The fields that should appear on the document, expressed as an array of objects. (For more details you can read about it here: [Using Form Fields per Document](/docs/openapi/form-fields-per-document).) **NOTE:** Fields like **text**, **dropdown**, **checkbox**, **radio**, and **hyperlink** have additional required and optional parameters. Check out the list of [additional parameters](/api/reference/constants/#form-fields-per-document) for these field types. * Text Field use `SubFormFieldsPerDocumentText` * Dropdown Field use `SubFormFieldsPerDocumentDropdown` * Hyperlink Field use `SubFormFieldsPerDocumentHyperlink` * Checkbox Field use `SubFormFieldsPerDocumentCheckbox` * Radio Field use `SubFormFieldsPerDocumentRadio` * Signature Field use `SubFormFieldsPerDocumentSignature` * Date Signed Field use `SubFormFieldsPerDocumentDateSigned` * Initials Field use `SubFormFieldsPerDocumentInitials` * Text Merge Field use `SubFormFieldsPerDocumentTextMerge` * Checkbox Merge Field use `SubFormFieldsPerDocumentCheckboxMerge`. /// Enables automatic Text Tag removal when set to true. **NOTE:** Removing text tags this way can cause unwanted clipping. We recommend leaving this setting on `false` and instead hiding your text tags using white text or a similar approach. See the [Text Tags Walkthrough](https://app.hellosign.com/api/textTagsWalkthrough#TextTagIntro) for more information. (default to false). /// Send with a value of `true` if you wish to enable [Qualified Electronic Signatures](https://www.hellosign.com/features/qualified-electronic-signatures) (QES), which requires a face-to-face call to verify the signer's identity.<br> **NOTE:** QES is only available on the Premium API plan as an add-on purchase. Cannot be used in `test_mode`. Only works on requests with one signer. (default to false). - /// Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br> **NOTE:** eID is only available on the Premium API plan. Cannot be used in `test_mode`. Only works on requests with one signer. (default to false). + /// Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br> **NOTE:** You need the eID add-on to use this feature. Please [contact sales](https://sign.dropbox.com/form/contact-sales) for more information. Cannot be used in `test_mode`. Only works on requests with one signer. (default to false). /// The custom message in the email that will be sent to the signers.. /// Key-value data that should be attached to the signature request. This metadata is included in all API responses and events involving the signature request. For example, use the metadata field to store a signer's order number for look up when receiving events for the signature request. Each request can include up to 10 metadata keys (or 50 nested metadata keys), with key names up to 40 characters long and values up to 1000 characters long.. /// signingOptions. @@ -227,9 +227,9 @@ public static SignatureRequestSendRequest Init(string jsonData) public bool IsQualifiedSignature { get; set; } /// - /// Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br> **NOTE:** eID is only available on the Premium API plan. Cannot be used in `test_mode`. Only works on requests with one signer. + /// Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br> **NOTE:** You need the eID add-on to use this feature. Please [contact sales](https://sign.dropbox.com/form/contact-sales) for more information. Cannot be used in `test_mode`. Only works on requests with one signer. /// - /// Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br> **NOTE:** eID is only available on the Premium API plan. Cannot be used in `test_mode`. Only works on requests with one signer. + /// Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br> **NOTE:** You need the eID add-on to use this feature. Please [contact sales](https://sign.dropbox.com/form/contact-sales) for more information. Cannot be used in `test_mode`. Only works on requests with one signer. [DataMember(Name = "is_eid", EmitDefaultValue = true)] public bool IsEid { get; set; } diff --git a/src/Dropbox.Sign/Model/SignatureRequestSendWithTemplateRequest.cs b/src/Dropbox.Sign/Model/SignatureRequestSendWithTemplateRequest.cs index 071627d..681de91 100644 --- a/src/Dropbox.Sign/Model/SignatureRequestSendWithTemplateRequest.cs +++ b/src/Dropbox.Sign/Model/SignatureRequestSendWithTemplateRequest.cs @@ -49,7 +49,7 @@ protected SignatureRequestSendWithTemplateRequest() { } /// Use `files[]` to indicate the uploaded file(s) to send for signature. This endpoint requires either **files** or **file_urls[]**, but not both.. /// Use `file_urls[]` to have Dropbox Sign download the file(s) to send for signature. This endpoint requires either **files** or **file_urls[]**, but not both.. /// Send with a value of `true` if you wish to enable [Qualified Electronic Signatures](https://www.hellosign.com/features/qualified-electronic-signatures) (QES), which requires a face-to-face call to verify the signer's identity.<br> **NOTE:** QES is only available on the Premium API plan as an add-on purchase. Cannot be used in `test_mode`. Only works on requests with one signer. (default to false). - /// Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br> **NOTE:** eID is only available on the Premium API plan. Cannot be used in `test_mode`. Only works on requests with one signer. (default to false). + /// Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br> **NOTE:** You need the eID add-on to use this feature. Please [contact sales](https://sign.dropbox.com/form/contact-sales) for more information. Cannot be used in `test_mode`. Only works on requests with one signer. (default to false). /// The custom message in the email that will be sent to the signers.. /// Key-value data that should be attached to the signature request. This metadata is included in all API responses and events involving the signature request. For example, use the metadata field to store a signer's order number for look up when receiving events for the signature request. Each request can include up to 10 metadata keys (or 50 nested metadata keys), with key names up to 40 characters long and values up to 1000 characters long.. /// Add Signers to your Templated-based Signature Request. (required). @@ -171,9 +171,9 @@ public static SignatureRequestSendWithTemplateRequest Init(string jsonData) public bool IsQualifiedSignature { get; set; } /// - /// Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br> **NOTE:** eID is only available on the Premium API plan. Cannot be used in `test_mode`. Only works on requests with one signer. + /// Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br> **NOTE:** You need the eID add-on to use this feature. Please [contact sales](https://sign.dropbox.com/form/contact-sales) for more information. Cannot be used in `test_mode`. Only works on requests with one signer. /// - /// Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br> **NOTE:** eID is only available on the Premium API plan. Cannot be used in `test_mode`. Only works on requests with one signer. + /// Send with a value of `true` if you wish to enable [electronic identification (eID)](https://www.hellosign.com/features/electronic-id), which requires the signer to verify their identity with an eID provider to sign a document.<br> **NOTE:** You need the eID add-on to use this feature. Please [contact sales](https://sign.dropbox.com/form/contact-sales) for more information. Cannot be used in `test_mode`. Only works on requests with one signer. [DataMember(Name = "is_eid", EmitDefaultValue = true)] public bool IsEid { get; set; } diff --git a/src/Dropbox.Sign/Model/SubFormFieldRuleAction.cs b/src/Dropbox.Sign/Model/SubFormFieldRuleAction.cs index b6af36b..34634d1 100644 --- a/src/Dropbox.Sign/Model/SubFormFieldRuleAction.cs +++ b/src/Dropbox.Sign/Model/SubFormFieldRuleAction.cs @@ -36,7 +36,16 @@ public partial class SubFormFieldRuleAction : IEquatable /// /// Defines Type /// - [JsonConverter(typeof(StringEnumConverter))] + // A dedicated converter is used instead of StringEnumConverter + // because this enum intentionally carries alias members + // (FieldVisibility, GroupVisibility) that share a numeric value + // with their canonical counterparts. StringEnumConverter goes + // through Enum.GetName, which is not guaranteed to pick the + // canonical name when multiple members share a value, and + // Newtonsoft rejects duplicate [EnumMember] values on the same + // enum. Mapping by numeric value here is unambiguous: both the + // canonical name and its alias produce the same wire string. + [JsonConverter(typeof(TypeEnumJsonConverter))] public enum TypeEnum { /// @@ -54,6 +63,54 @@ public enum TypeEnum GroupVisibility = ChangeGroupVisibility } + /// + /// Serializes SubFormFieldRuleAction.TypeEnum to and from the + /// OpenAPI wire values (change-field-visibility, + /// change-group-visibility). The switch is driven by the + /// underlying numeric value so that legacy alias members + /// (FieldVisibility, GroupVisibility) serialize identically to + /// their canonical counterparts. + /// + public class TypeEnumJsonConverter : JsonConverter + { + public override void WriteJson(JsonWriter writer, TypeEnum value, JsonSerializer serializer) + { + switch (value) + { + case TypeEnum.ChangeFieldVisibility: + writer.WriteValue("change-field-visibility"); + return; + case TypeEnum.ChangeGroupVisibility: + writer.WriteValue("change-group-visibility"); + return; + default: + throw new JsonSerializationException( + $"Unknown value for SubFormFieldRuleAction.TypeEnum: {(int)value}"); + } + } + + public override TypeEnum ReadJson(JsonReader reader, Type objectType, TypeEnum existingValue, bool hasExistingValue, JsonSerializer serializer) + { + if (reader.TokenType == JsonToken.Null) + { + throw new JsonSerializationException( + "Cannot deserialize null into SubFormFieldRuleAction.TypeEnum"); + } + + var raw = reader.Value?.ToString(); + switch (raw) + { + case "change-field-visibility": + return TypeEnum.ChangeFieldVisibility; + case "change-group-visibility": + return TypeEnum.ChangeGroupVisibility; + default: + throw new JsonSerializationException( + $"Unknown wire value for SubFormFieldRuleAction.TypeEnum: {raw}"); + } + } + } + /// /// Gets or Sets Type diff --git a/src/Dropbox.Sign/Model/SubFormFieldsPerDocumentDateSigned.cs b/src/Dropbox.Sign/Model/SubFormFieldsPerDocumentDateSigned.cs index 485c02d..83cfccf 100644 --- a/src/Dropbox.Sign/Model/SubFormFieldsPerDocumentDateSigned.cs +++ b/src/Dropbox.Sign/Model/SubFormFieldsPerDocumentDateSigned.cs @@ -215,7 +215,7 @@ public static SubFormFieldsPerDocumentDateSigned Init(string jsonData) /// The initial px font size for the field contents. Can be any integer value between `7` and `49`. **NOTE:** Font size may be reduced during processing in order to fit the contents within the dimensions of the field. /// /// The initial px font size for the field contents. Can be any integer value between `7` and `49`. **NOTE:** Font size may be reduced during processing in order to fit the contents within the dimensions of the field. - [DataMember(Name = "font_size", EmitDefaultValue = true)] + [DataMember(Name = "font_size", EmitDefaultValue = false)] public int FontSize { get; set; } /// diff --git a/src/Dropbox.Sign/Model/SubFormFieldsPerDocumentDropdown.cs b/src/Dropbox.Sign/Model/SubFormFieldsPerDocumentDropdown.cs index 4671037..91869c0 100644 --- a/src/Dropbox.Sign/Model/SubFormFieldsPerDocumentDropdown.cs +++ b/src/Dropbox.Sign/Model/SubFormFieldsPerDocumentDropdown.cs @@ -238,7 +238,7 @@ public static SubFormFieldsPerDocumentDropdown Init(string jsonData) /// The initial px font size for the field contents. Can be any integer value between `7` and `49`. **NOTE:** Font size may be reduced during processing in order to fit the contents within the dimensions of the field. /// /// The initial px font size for the field contents. Can be any integer value between `7` and `49`. **NOTE:** Font size may be reduced during processing in order to fit the contents within the dimensions of the field. - [DataMember(Name = "font_size", EmitDefaultValue = true)] + [DataMember(Name = "font_size", EmitDefaultValue = false)] public int FontSize { get; set; } /// diff --git a/src/Dropbox.Sign/Model/SubFormFieldsPerDocumentHyperlink.cs b/src/Dropbox.Sign/Model/SubFormFieldsPerDocumentHyperlink.cs index d766865..7ab930e 100644 --- a/src/Dropbox.Sign/Model/SubFormFieldsPerDocumentHyperlink.cs +++ b/src/Dropbox.Sign/Model/SubFormFieldsPerDocumentHyperlink.cs @@ -243,7 +243,7 @@ public static SubFormFieldsPerDocumentHyperlink Init(string jsonData) /// The initial px font size for the field contents. Can be any integer value between `7` and `49`. **NOTE:** Font size may be reduced during processing in order to fit the contents within the dimensions of the field. /// /// The initial px font size for the field contents. Can be any integer value between `7` and `49`. **NOTE:** Font size may be reduced during processing in order to fit the contents within the dimensions of the field. - [DataMember(Name = "font_size", EmitDefaultValue = true)] + [DataMember(Name = "font_size", EmitDefaultValue = false)] public int FontSize { get; set; } /// diff --git a/src/Dropbox.Sign/Model/SubFormFieldsPerDocumentText.cs b/src/Dropbox.Sign/Model/SubFormFieldsPerDocumentText.cs index c514d0f..429b9c7 100644 --- a/src/Dropbox.Sign/Model/SubFormFieldsPerDocumentText.cs +++ b/src/Dropbox.Sign/Model/SubFormFieldsPerDocumentText.cs @@ -353,7 +353,7 @@ public static SubFormFieldsPerDocumentText Init(string jsonData) /// The initial px font size for the field contents. Can be any integer value between `7` and `49`. **NOTE:** Font size may be reduced during processing in order to fit the contents within the dimensions of the field. /// /// The initial px font size for the field contents. Can be any integer value between `7` and `49`. **NOTE:** Font size may be reduced during processing in order to fit the contents within the dimensions of the field. - [DataMember(Name = "font_size", EmitDefaultValue = true)] + [DataMember(Name = "font_size", EmitDefaultValue = false)] public int FontSize { get; set; } /// diff --git a/src/Dropbox.Sign/Model/SubFormFieldsPerDocumentTextMerge.cs b/src/Dropbox.Sign/Model/SubFormFieldsPerDocumentTextMerge.cs index d2d0c64..ac96ff2 100644 --- a/src/Dropbox.Sign/Model/SubFormFieldsPerDocumentTextMerge.cs +++ b/src/Dropbox.Sign/Model/SubFormFieldsPerDocumentTextMerge.cs @@ -215,7 +215,7 @@ public static SubFormFieldsPerDocumentTextMerge Init(string jsonData) /// The initial px font size for the field contents. Can be any integer value between `7` and `49`. **NOTE:** Font size may be reduced during processing in order to fit the contents within the dimensions of the field. /// /// The initial px font size for the field contents. Can be any integer value between `7` and `49`. **NOTE:** Font size may be reduced during processing in order to fit the contents within the dimensions of the field. - [DataMember(Name = "font_size", EmitDefaultValue = true)] + [DataMember(Name = "font_size", EmitDefaultValue = false)] public int FontSize { get; set; } /// diff --git a/src/Dropbox.Sign/Model/SubSigningOptions.cs b/src/Dropbox.Sign/Model/SubSigningOptions.cs index 03e60af..da27f47 100644 --- a/src/Dropbox.Sign/Model/SubSigningOptions.cs +++ b/src/Dropbox.Sign/Model/SubSigningOptions.cs @@ -27,7 +27,7 @@ namespace Dropbox.Sign.Model { /// - /// This allows the requester to specify the types allowed for creating a signature. **NOTE:** If `signing_options` are not defined in the request, the allowed types will default to those specified in the account settings. + /// This allows the requester to specify the types allowed for creating a signature and specify another signing options. **NOTE:** If `signing_options` are not defined in the request, the allowed types will default to those specified in the account settings. **NOTE:** If `force_advanced_signature_details` is set, allowed types has to be defined too. /// [DataContract(Name = "SubSigningOptions")] [JsonObject(ItemNullValueHandling = NullValueHandling.Ignore)] @@ -85,7 +85,8 @@ protected SubSigningOptions() { } /// Allows using a smartphone to email the signature (default to false). /// Allows typing the signature (default to false). /// Allows uploading the signature (default to false). - public SubSigningOptions(DefaultTypeEnum defaultType = default(DefaultTypeEnum), bool draw = false, bool phone = false, bool type = false, bool upload = false) + /// Turning on advanced signature details for the signature request (default to false). + public SubSigningOptions(DefaultTypeEnum defaultType = default(DefaultTypeEnum), bool draw = false, bool phone = false, bool type = false, bool upload = false, bool forceAdvancedSignatureDetails = false) { this.DefaultType = defaultType; @@ -93,6 +94,7 @@ protected SubSigningOptions() { } this.Phone = phone; this.Type = type; this.Upload = upload; + this.ForceAdvancedSignatureDetails = forceAdvancedSignatureDetails; } /// @@ -139,6 +141,13 @@ public static SubSigningOptions Init(string jsonData) [DataMember(Name = "upload", EmitDefaultValue = true)] public bool Upload { get; set; } + /// + /// Turning on advanced signature details for the signature request + /// + /// Turning on advanced signature details for the signature request + [DataMember(Name = "force_advanced_signature_details", EmitDefaultValue = true)] + public bool ForceAdvancedSignatureDetails { get; set; } + /// /// Returns the string presentation of the object /// @@ -152,6 +161,7 @@ public override string ToString() sb.Append(" Phone: ").Append(Phone).Append("\n"); sb.Append(" Type: ").Append(Type).Append("\n"); sb.Append(" Upload: ").Append(Upload).Append("\n"); + sb.Append(" ForceAdvancedSignatureDetails: ").Append(ForceAdvancedSignatureDetails).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -206,6 +216,10 @@ public bool Equals(SubSigningOptions input) ( this.Upload == input.Upload || this.Upload.Equals(input.Upload) + ) && + ( + this.ForceAdvancedSignatureDetails == input.ForceAdvancedSignatureDetails || + this.ForceAdvancedSignatureDetails.Equals(input.ForceAdvancedSignatureDetails) ); } @@ -223,6 +237,7 @@ public override int GetHashCode() hashCode = (hashCode * 59) + this.Phone.GetHashCode(); hashCode = (hashCode * 59) + this.Type.GetHashCode(); hashCode = (hashCode * 59) + this.Upload.GetHashCode(); + hashCode = (hashCode * 59) + this.ForceAdvancedSignatureDetails.GetHashCode(); return hashCode; } } @@ -274,6 +289,13 @@ public List GetOpenApiTypes() Type = "bool", Value = Upload, }); + types.Add(new OpenApiType() + { + Name = "force_advanced_signature_details", + Property = "ForceAdvancedSignatureDetails", + Type = "bool", + Value = ForceAdvancedSignatureDetails, + }); return types; } diff --git a/src/Dropbox.Sign/Model/TemplateEditResponse.cs b/src/Dropbox.Sign/Model/TemplateEditResponse.cs deleted file mode 100644 index f76b5eb..0000000 --- a/src/Dropbox.Sign/Model/TemplateEditResponse.cs +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Dropbox Sign API - * - * Dropbox Sign v3 API - * - * The version of the OpenAPI document: 3.0.0 - * Contact: apisupport@hellosign.com - * Generated by: https://github.com/openapitools/openapi-generator.git - */ - - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.IO; -using System.Runtime.Serialization; -using System.Text; -using System.Text.RegularExpressions; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; -using Newtonsoft.Json.Linq; -using System.ComponentModel.DataAnnotations; -using OpenAPIDateConverter = Dropbox.Sign.Client.OpenAPIDateConverter; - -namespace Dropbox.Sign.Model -{ - /// - /// TemplateEditResponse - /// - [DataContract(Name = "TemplateEditResponse")] - [JsonObject(ItemNullValueHandling = NullValueHandling.Ignore)] - public partial class TemplateEditResponse : IEquatable, IValidatableObject - { - /// - /// Initializes a new instance of the class. - /// - [JsonConstructorAttribute] - protected TemplateEditResponse() { } - /// - /// Initializes a new instance of the class. - /// - /// The id of the Template. (required). - public TemplateEditResponse(string templateId = default(string)) - { - - // to ensure "templateId" is required (not null) - if (templateId == null) - { - throw new ArgumentNullException("templateId is a required property for TemplateEditResponse and cannot be null"); - } - this.TemplateId = templateId; - } - - /// - /// Attempt to instantiate and hydrate a new instance of this class - /// - /// String of JSON data representing target object - public static TemplateEditResponse Init(string jsonData) - { - var obj = JsonConvert.DeserializeObject(jsonData); - - if (obj == null) - { - throw new Exception("Unable to deserialize JSON to instance of TemplateEditResponse"); - } - - return obj; - } - - /// - /// The id of the Template. - /// - /// The id of the Template. - [DataMember(Name = "template_id", IsRequired = true, EmitDefaultValue = true)] - public string TemplateId { get; set; } - - /// - /// Returns the string presentation of the object - /// - /// String presentation of the object - public override string ToString() - { - StringBuilder sb = new StringBuilder(); - sb.Append("class TemplateEditResponse {\n"); - sb.Append(" TemplateId: ").Append(TemplateId).Append("\n"); - sb.Append("}\n"); - return sb.ToString(); - } - - /// - /// Returns the JSON string presentation of the object - /// - /// JSON string presentation of the object - public virtual string ToJson() - { - return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented); - } - - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as TemplateEditResponse); - } - - /// - /// Returns true if TemplateEditResponse instances are equal - /// - /// Instance of TemplateEditResponse to be compared - /// Boolean - public bool Equals(TemplateEditResponse input) - { - if (input == null) - { - return false; - } - return - ( - this.TemplateId == input.TemplateId || - (this.TemplateId != null && - this.TemplateId.Equals(input.TemplateId)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.TemplateId != null) - { - hashCode = (hashCode * 59) + this.TemplateId.GetHashCode(); - } - return hashCode; - } - } - - /// - /// To validate all properties of the instance - /// - /// Validation context - /// Validation Result - IEnumerable IValidatableObject.Validate(ValidationContext validationContext) - { - yield break; - } - public List GetOpenApiTypes() - { - var types = new List(); - types.Add(new OpenApiType() - { - Name = "template_id", - Property = "TemplateId", - Type = "string", - Value = TemplateId, - }); - - return types; - } - } - -} diff --git a/test_fixtures/SignatureRequestCreateEmbeddedRequest.json b/test_fixtures/SignatureRequestCreateEmbeddedRequest.json index 16e8037..097446a 100644 --- a/test_fixtures/SignatureRequestCreateEmbeddedRequest.json +++ b/test_fixtures/SignatureRequestCreateEmbeddedRequest.json @@ -116,7 +116,8 @@ "type": true, "upload": true, "phone": false, - "default_type": "draw" + "default_type": "draw", + "force_advanced_signature_details": false }, "subject": "The NDA we talked about", "test_mode": true, @@ -252,7 +253,8 @@ "type": true, "upload": true, "phone": false, - "default_type": "draw" + "default_type": "draw", + "force_advanced_signature_details": false }, "subject": "The NDA we talked about", "test_mode": true, diff --git a/test_fixtures/SignatureRequestCreateEmbeddedWithTemplateRequest.json b/test_fixtures/SignatureRequestCreateEmbeddedWithTemplateRequest.json index a9597ea..f997b28 100644 --- a/test_fixtures/SignatureRequestCreateEmbeddedWithTemplateRequest.json +++ b/test_fixtures/SignatureRequestCreateEmbeddedWithTemplateRequest.json @@ -54,7 +54,8 @@ "type": true, "upload": true, "phone": false, - "default_type": "draw" + "default_type": "draw", + "force_advanced_signature_details": false }, "subject": "Purchase Order", "template_ids": [ diff --git a/test_fixtures/SignatureRequestSendRequest.json b/test_fixtures/SignatureRequestSendRequest.json index 98d12db..1f56eb7 100644 --- a/test_fixtures/SignatureRequestSendRequest.json +++ b/test_fixtures/SignatureRequestSendRequest.json @@ -229,7 +229,8 @@ "type": true, "upload": true, "phone": false, - "default_type": "draw" + "default_type": "draw", + "force_advanced_signature_details": false }, "signing_redirect_url": "https://example.com/redirect", "subject": "The NDA we talked about", @@ -468,7 +469,8 @@ "type": true, "upload": true, "phone": false, - "default_type": "draw" + "default_type": "draw", + "force_advanced_signature_details": false }, "signing_redirect_url": "https://example.com/redirect", "subject": "The NDA we talked about", diff --git a/test_fixtures/SignatureRequestSendWithTemplateRequest.json b/test_fixtures/SignatureRequestSendWithTemplateRequest.json index 4d1cc86..df8e207 100644 --- a/test_fixtures/SignatureRequestSendWithTemplateRequest.json +++ b/test_fixtures/SignatureRequestSendWithTemplateRequest.json @@ -42,7 +42,8 @@ "type": true, "upload": true, "phone": false, - "default_type": "draw" + "default_type": "draw", + "force_advanced_signature_details": false }, "signing_redirect_url": "https://example.com/redirect", "subject": "Purchase Order", diff --git a/test_fixtures/TemplateUpdateRequest.json b/test_fixtures/TemplateUpdateRequest.json new file mode 100644 index 0000000..9c9afbf --- /dev/null +++ b/test_fixtures/TemplateUpdateRequest.json @@ -0,0 +1,18 @@ +{ + "default": { + "title": "Test Title", + "subject": "Test Subject", + "message": "Test Message", + "cc_roles": ["one", "two"], + "form_fields": [ + { + "api_id": "uniqueIdHere_1", + "name": "New name 1" + }, + { + "api_id": "uniqueIdHere_2", + "name": "New name 2" + } + ] + } +} \ No newline at end of file diff --git a/test_fixtures/UnclaimedDraftCreateEmbeddedRequest.json b/test_fixtures/UnclaimedDraftCreateEmbeddedRequest.json index e18890b..addbe6a 100644 --- a/test_fixtures/UnclaimedDraftCreateEmbeddedRequest.json +++ b/test_fixtures/UnclaimedDraftCreateEmbeddedRequest.json @@ -127,7 +127,8 @@ "type": true, "upload": true, "phone": false, - "default_type": "draw" + "default_type": "draw", + "force_advanced_signature_details": false }, "signing_redirect_url": "https://example.com/redirect", "show_progress_stepper": true, diff --git a/test_fixtures/UnclaimedDraftCreateEmbeddedWithTemplateRequest.json b/test_fixtures/UnclaimedDraftCreateEmbeddedWithTemplateRequest.json index 7c72649..d4f26cd 100644 --- a/test_fixtures/UnclaimedDraftCreateEmbeddedWithTemplateRequest.json +++ b/test_fixtures/UnclaimedDraftCreateEmbeddedWithTemplateRequest.json @@ -58,7 +58,8 @@ "type": true, "upload": true, "phone": false, - "default_type": "draw" + "default_type": "draw", + "force_advanced_signature_details": false }, "show_progress_stepper": true, "skip_me_now": true, diff --git a/test_fixtures/UnclaimedDraftCreateRequest.json b/test_fixtures/UnclaimedDraftCreateRequest.json index b74d377..a9ab5b5 100644 --- a/test_fixtures/UnclaimedDraftCreateRequest.json +++ b/test_fixtures/UnclaimedDraftCreateRequest.json @@ -114,7 +114,8 @@ "type": true, "upload": true, "phone": false, - "default_type": "draw" + "default_type": "draw", + "force_advanced_signature_details": false }, "signing_redirect_url": "https://example.com/redirect", "subject": "The NDA we talked about",